{"version":3,"file":"js/chunk-vendors.ed13faa3.js","mappings":"6FAAC,SAASA,GAAG,IAAIC,EAAE,CAAC,EAAE,SAASC,EAAEC,GAAG,GAAGF,EAAEE,GAAG,OAAOF,EAAEE,GAAGC,QAAQ,IAAIC,EAAEJ,EAAEE,GAAG,CAACG,EAAEH,EAAEI,GAAE,EAAGH,QAAQ,CAAC,GAAG,OAAOJ,EAAEG,GAAGK,KAAKH,EAAED,QAAQC,EAAEA,EAAED,QAAQF,GAAGG,EAAEE,GAAE,EAAGF,EAAED,OAAO,CAACF,EAAEO,EAAET,EAAEE,EAAEQ,EAAET,EAAEC,EAAES,EAAE,SAASX,EAAEC,EAAEE,GAAGD,EAAEG,EAAEL,EAAEC,IAAIW,OAAOC,eAAeb,EAAEC,EAAE,CAACa,YAAW,EAAGC,IAAIZ,GAAG,EAAED,EAAEC,EAAE,SAASH,GAAG,oBAAoBgB,QAAQA,OAAOC,aAAaL,OAAOC,eAAeb,EAAEgB,OAAOC,YAAY,CAACC,MAAM,WAAWN,OAAOC,eAAeb,EAAE,aAAa,CAACkB,OAAM,GAAI,EAAEhB,EAAEF,EAAE,SAASA,EAAEC,GAAG,GAAG,EAAEA,IAAID,EAAEE,EAAEF,IAAI,EAAEC,EAAE,OAAOD,EAAE,GAAG,EAAEC,GAAG,iBAAiBD,GAAGA,GAAGA,EAAEmB,WAAW,OAAOnB,EAAE,IAAIG,EAAES,OAAOQ,OAAO,MAAM,GAAGlB,EAAEC,EAAEA,GAAGS,OAAOC,eAAeV,EAAE,UAAU,CAACW,YAAW,EAAGI,MAAMlB,IAAI,EAAEC,GAAG,iBAAiBD,EAAE,IAAI,IAAIK,KAAKL,EAAEE,EAAES,EAAER,EAAEE,EAAE,SAASJ,GAAG,OAAOD,EAAEC,EAAE,EAAEoB,KAAK,KAAKhB,IAAI,OAAOF,CAAC,EAAED,EAAEA,EAAE,SAASF,GAAG,IAAIC,EAAED,GAAGA,EAAEmB,WAAW,WAAW,OAAOnB,EAAEsB,OAAO,EAAE,WAAW,OAAOtB,CAAC,EAAE,OAAOE,EAAES,EAAEV,EAAE,IAAIA,GAAGA,CAAC,EAAEC,EAAEG,EAAE,SAASL,EAAEC,GAAG,OAAOW,OAAOW,UAAUC,eAAehB,KAAKR,EAAEC,EAAE,EAAEC,EAAEuB,EAAE,GAAGvB,EAAEA,EAAEwB,EAAE,EAAE,CAA54B,CAA84B,CAAC,SAAS1B,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGG,EAAEH,EAAE,IAAII,EAAEM,OAAOW,UAAUI,SAAS,SAASC,EAAE5B,GAAG,MAAM,mBAAmBM,EAAEE,KAAKR,EAAE,CAAC,SAAS6B,EAAE7B,GAAG,OAAO,OAAOA,GAAG,iBAAiBA,CAAC,CAAC,SAASU,EAAEV,GAAG,MAAM,sBAAsBM,EAAEE,KAAKR,EAAE,CAAC,SAAS0B,EAAE1B,EAAEC,GAAG,GAAG,OAAOD,QAAG,IAASA,EAAE,GAAG,iBAAiBA,IAAIA,EAAE,CAACA,IAAI4B,EAAE5B,GAAG,IAAI,IAAIE,EAAE,EAAEC,EAAEH,EAAE8B,OAAO5B,EAAEC,EAAED,IAAID,EAAEO,KAAK,KAAKR,EAAEE,GAAGA,EAAEF,QAAQ,IAAI,IAAIK,KAAKL,EAAEY,OAAOW,UAAUC,eAAehB,KAAKR,EAAEK,IAAIJ,EAAEO,KAAK,KAAKR,EAAEK,GAAGA,EAAEL,EAAE,CAACA,EAAEI,QAAQ,CAAC2B,QAAQH,EAAEI,cAAc,SAAShC,GAAG,MAAM,yBAAyBM,EAAEE,KAAKR,EAAE,EAAEiC,SAAS5B,EAAE6B,WAAW,SAASlC,GAAG,MAAM,oBAAoBmC,UAAUnC,aAAamC,QAAQ,EAAEC,kBAAkB,SAASpC,GAAG,MAAM,oBAAoBqC,aAAaA,YAAYC,OAAOD,YAAYC,OAAOtC,GAAGA,GAAGA,EAAEuC,QAAQvC,EAAEuC,kBAAkBF,WAAW,EAAEG,SAAS,SAASxC,GAAG,MAAM,iBAAiBA,CAAC,EAAEyC,SAAS,SAASzC,GAAG,MAAM,iBAAiBA,CAAC,EAAE0C,SAASb,EAAEc,YAAY,SAAS3C,GAAG,YAAO,IAASA,CAAC,EAAE4C,OAAO,SAAS5C,GAAG,MAAM,kBAAkBM,EAAEE,KAAKR,EAAE,EAAE6C,OAAO,SAAS7C,GAAG,MAAM,kBAAkBM,EAAEE,KAAKR,EAAE,EAAE8C,OAAO,SAAS9C,GAAG,MAAM,kBAAkBM,EAAEE,KAAKR,EAAE,EAAE+C,WAAWrC,EAAEsC,SAAS,SAAShD,GAAG,OAAO6B,EAAE7B,IAAIU,EAAEV,EAAEiD,KAAK,EAAEC,kBAAkB,SAASlD,GAAG,MAAM,oBAAoBmD,iBAAiBnD,aAAamD,eAAe,EAAEC,qBAAqB,WAAW,OAAO,oBAAoBC,WAAW,gBAAgBA,UAAUC,UAAU,oBAAoBC,QAAQ,oBAAoBC,QAAQ,EAAEC,QAAQ/B,EAAEgC,MAAM,SAAS1D,IAAI,IAAIC,EAAE,CAAC,EAAE,SAASC,EAAEA,EAAEC,GAAG,iBAAiBF,EAAEE,IAAI,iBAAiBD,EAAED,EAAEE,GAAGH,EAAEC,EAAEE,GAAGD,GAAGD,EAAEE,GAAGD,CAAC,CAAC,IAAI,IAAIC,EAAE,EAAEE,EAAEsD,UAAU7B,OAAO3B,EAAEE,EAAEF,IAAIuB,EAAEiC,UAAUxD,GAAGD,GAAG,OAAOD,CAAC,EAAE2D,OAAO,SAAS5D,EAAEC,EAAEC,GAAG,OAAOwB,EAAEzB,GAAE,SAASA,EAAEI,GAAGL,EAAEK,GAAGH,GAAG,mBAAmBD,EAAEE,EAAEF,EAAEC,GAAGD,CAAC,IAAGD,CAAC,EAAE6D,KAAK,SAAS7D,GAAG,OAAOA,EAAE8D,QAAQ,OAAO,IAAIA,QAAQ,OAAO,GAAG,EAAE,EAAE,SAAS9D,EAAEC,EAAEC,GAAG,cAAa,SAAUD,GAAG,IAAIE,EAAED,EAAE,GAAGG,EAAEH,EAAE,IAAII,EAAE,CAAC,eAAe,qCAAqC,SAASsB,EAAE5B,EAAEC,IAAIE,EAAEwC,YAAY3C,IAAIG,EAAEwC,YAAY3C,EAAE,mBAAmBA,EAAE,gBAAgBC,EAAE,CAAC,IAAI4B,EAAE,CAACkC,QAAQ,WAAW,IAAI/D,EAAE,OAAM,oBAAoBgE,qBAAsB,IAAS/D,KAAhBD,EAAEE,EAAE,IAAwBF,CAAC,CAAvF,GAA2FiE,iBAAiB,CAAC,SAASjE,EAAEC,GAAG,OAAOI,EAAEJ,EAAE,gBAAgBE,EAAE+B,WAAWlC,IAAIG,EAAE6B,cAAchC,IAAIG,EAAE8B,SAASjC,IAAIG,EAAE6C,SAAShD,IAAIG,EAAE0C,OAAO7C,IAAIG,EAAE2C,OAAO9C,GAAGA,EAAEG,EAAEiC,kBAAkBpC,GAAGA,EAAEuC,OAAOpC,EAAE+C,kBAAkBlD,IAAI4B,EAAE3B,EAAE,mDAAmDD,EAAE2B,YAAYxB,EAAEuC,SAAS1C,IAAI4B,EAAE3B,EAAE,kCAAkCiE,KAAKC,UAAUnE,IAAIA,CAAC,GAAGoE,kBAAkB,CAAC,SAASpE,GAAG,GAAG,iBAAiBA,EAAE,IAAIA,EAAEkE,KAAKG,MAAMrE,EAAE,CAAC,MAAMA,GAAG,CAAC,OAAOA,CAAC,GAAGsE,QAAQ,EAAEC,eAAe,aAAaC,eAAe,eAAeC,kBAAkB,EAAEC,eAAe,SAAS1E,GAAG,OAAOA,GAAG,KAAKA,EAAE,GAAG,EAAE2E,QAAQ,CAACC,OAAO,CAACC,OAAO,uCAAuC1E,EAAEsD,QAAQ,CAAC,SAAS,MAAM,SAAQ,SAASzD,GAAG6B,EAAE8C,QAAQ3E,GAAG,CAAC,CAAC,IAAGG,EAAEsD,QAAQ,CAAC,OAAO,MAAM,UAAS,SAASzD,GAAG6B,EAAE8C,QAAQ3E,GAAGG,EAAEuD,MAAMpD,EAAE,IAAGN,EAAEI,QAAQyB,CAAE,GAAErB,KAAKsE,KAAK5E,EAAE,IAAI,EAAE,SAASF,EAAEC,EAAEC,GAAG,aAAaF,EAAEI,QAAQ,SAASJ,EAAEC,GAAG,OAAO,WAAW,IAAI,IAAIC,EAAE,IAAI6E,MAAMpB,UAAU7B,QAAQ3B,EAAE,EAAEA,EAAED,EAAE4B,OAAO3B,IAAID,EAAEC,GAAGwD,UAAUxD,GAAG,OAAOH,EAAEgF,MAAM/E,EAAEC,EAAE,CAAC,CAAC,EAAE,SAASF,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGG,EAAEH,EAAE,IAAII,EAAEJ,EAAE,IAAI0B,EAAE1B,EAAE,IAAI2B,EAAE3B,EAAE,IAAIQ,EAAER,EAAE,GAAGwB,EAAE,oBAAoB6B,QAAQA,OAAO0B,MAAM1B,OAAO0B,KAAK5D,KAAKkC,SAASrD,EAAE,IAAIF,EAAEI,QAAQ,SAASJ,GAAG,OAAO,IAAIkF,SAAQ,SAASjF,EAAEkF,GAAG,IAAI5E,EAAEP,EAAEoF,KAAK3D,EAAEzB,EAAE2E,QAAQxE,EAAE+B,WAAW3B,WAAWkB,EAAE,gBAAgB,IAAId,EAAE,IAAIqD,eAAeqB,EAAE,qBAAqBC,GAAE,EAAG,GAAG,oBAAoB/B,SAASA,OAAOgC,gBAAgB,oBAAoB5E,GAAGkB,EAAE7B,EAAEwF,OAAO7E,EAAE,IAAI4C,OAAOgC,eAAeF,EAAE,SAASC,GAAE,EAAG3E,EAAE8E,WAAW,WAAW,EAAE9E,EAAE+E,UAAU,WAAW,GAAG1F,EAAE2F,KAAK,CAAC,IAAIC,EAAE5F,EAAE2F,KAAKE,UAAU,GAAGpF,EAAET,EAAE2F,KAAKG,UAAU,GAAGrE,EAAEsE,cAAc,SAASrE,EAAEkE,EAAE,IAAInF,EAAE,CAAC,GAAGE,EAAEqF,KAAKhG,EAAEiG,OAAOC,cAAc5F,EAAEN,EAAEwF,IAAIxF,EAAEmG,OAAOnG,EAAEoG,mBAAkB,GAAIzF,EAAE2D,QAAQtE,EAAEsE,QAAQ3D,EAAE0E,GAAG,WAAW,GAAG1E,IAAI,IAAIA,EAAE0F,YAAYf,KAAK,IAAI3E,EAAE2F,QAAQ3F,EAAE4F,aAAa,IAAI5F,EAAE4F,YAAYC,QAAQ,UAAU,CAAC,IAAItG,EAAE,0BAA0BS,EAAEiB,EAAEjB,EAAE8F,yBAAyB,KAAKtG,EAAE,CAACiF,KAAKpF,EAAE0G,cAAc,SAAS1G,EAAE0G,aAAa/F,EAAEgG,SAAShG,EAAEiG,aAAaN,OAAO,OAAO3F,EAAE2F,OAAO,IAAI3F,EAAE2F,OAAOO,WAAW,OAAOlG,EAAE2F,OAAO,aAAa3F,EAAEkG,WAAWlC,QAAQzE,EAAE4G,OAAO9G,EAAE+G,QAAQpG,GAAGN,EAAEJ,EAAEkF,EAAEhF,GAAGQ,EAAE,IAAI,CAAC,EAAEA,EAAEqG,QAAQ,WAAW7B,EAAEzE,EAAE,gBAAgBV,EAAE,KAAKW,IAAIA,EAAE,IAAI,EAAEA,EAAE+E,UAAU,WAAWP,EAAEzE,EAAE,cAAcV,EAAEsE,QAAQ,cAActE,EAAE,eAAeW,IAAIA,EAAE,IAAI,EAAER,EAAEiD,uBAAuB,CAAC,IAAI6D,EAAE/G,EAAE,IAAIgH,GAAGlH,EAAEmH,iBAAiBtF,EAAE7B,EAAEwF,OAAOxF,EAAEuE,eAAe0C,EAAEG,KAAKpH,EAAEuE,qBAAgB,EAAO2C,IAAIzF,EAAEzB,EAAEwE,gBAAgB0C,EAAE,CAAC,GAAG,qBAAqBvG,GAAGR,EAAEsD,QAAQhC,GAAE,SAASzB,EAAEC,QAAG,IAASM,GAAG,iBAAiBN,EAAEoH,qBAAqB5F,EAAExB,GAAGU,EAAE2G,iBAAiBrH,EAAED,EAAE,IAAGA,EAAEmH,kBAAkBxG,EAAEwG,iBAAgB,GAAInH,EAAE0G,aAAa,IAAI/F,EAAE+F,aAAa1G,EAAE0G,YAAY,CAAC,MAAMzG,GAAG,GAAG,SAASD,EAAE0G,aAAa,MAAMzG,CAAC,CAAC,mBAAmBD,EAAEuH,oBAAoB5G,EAAE6G,iBAAiB,WAAWxH,EAAEuH,oBAAoB,mBAAmBvH,EAAEyH,kBAAkB9G,EAAE+G,QAAQ/G,EAAE+G,OAAOF,iBAAiB,WAAWxH,EAAEyH,kBAAkBzH,EAAE2H,aAAa3H,EAAE2H,YAAYC,QAAQC,MAAK,SAAS7H,GAAGW,IAAIA,EAAEmH,QAAQ3C,EAAEnF,GAAGW,EAAE,KAAK,SAAG,IAASJ,IAAIA,EAAE,MAAMI,EAAEoH,KAAKxH,EAAE,GAAE,CAAC,EAAE,SAASP,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,IAAIF,EAAEI,QAAQ,SAASJ,EAAEC,EAAEC,EAAEG,EAAEC,GAAG,IAAIsB,EAAE,IAAIoG,MAAMhI,GAAG,OAAOG,EAAEyB,EAAE3B,EAAEC,EAAEG,EAAEC,EAAE,CAAC,EAAE,SAASN,EAAEC,EAAEC,GAAG,aAAaF,EAAEI,QAAQ,SAASJ,GAAG,SAASA,IAAIA,EAAEiI,WAAW,CAAC,EAAE,SAASjI,EAAEC,EAAEC,GAAG,aAAa,SAASC,EAAEH,GAAG8E,KAAKoD,QAAQlI,CAAC,CAACG,EAAEoB,UAAUI,SAAS,WAAW,MAAM,UAAUmD,KAAKoD,QAAQ,KAAKpD,KAAKoD,QAAQ,GAAG,EAAE/H,EAAEoB,UAAU0G,YAAW,EAAGjI,EAAEI,QAAQD,CAAC,EAAE,SAASH,EAAEC,EAAEC,GAAG,IAAIC,EAAEE,EAAEF,EAAE,CAACD,EAAED,EAAEC,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIA,EAAE,UAAK,KAAUG,EAAE,SAASL,EAAEC,EAAEC,EAAEC,EAAEE,EAAEC,GAAG,aAAaM,OAAOC,eAAeZ,EAAE,aAAa,CAACiB,OAAM,IAAKZ,EAAEJ,EAAEiI,gBAAgB7H,GAAG,IAAIsB,EAAE,WAAW,SAAS5B,EAAEA,EAAEC,GAAG6E,KAAKsD,IAAI,GAAGtD,KAAKuD,OAAO,GAAGvD,KAAKwD,OAAO,GAAG,IAAIpI,EAAE,sBAAsB,OAAOF,GAAG,IAAI,QAAQ8E,KAAKsD,IAAI,wBAAwBtD,KAAKuD,OAAO,sBAAsBnI,EAAE,MAAM,IAAI,OAAO4E,KAAKsD,IAAI,sCAAsCtD,KAAKuD,OAAO,mBAAmBnI,EAAE,MAAM,IAAI,UAAU4E,KAAKsD,IAAI,yCAAyCtD,KAAKuD,OAAO,sBAAsBnI,EAAE,MAAM,IAAI,OAAO4E,KAAKsD,IAAI,iCAAiCtD,KAAKuD,OAAO,cAAcnI,EAAE4E,KAAKyD,IAAI,IAAIjI,EAAEgB,QAAQwD,KAAKuD,QAAQvD,KAAK0D,kBAAkBvI,EAAE,CAAC,OAAOD,EAAEyI,WAAW,SAASzI,EAAEC,EAAEC,EAAEC,QAAG,IAASF,IAAIA,EAAE,uBAAkB,IAASC,IAAIA,EAAE,UAAK,IAASC,IAAIA,EAAE,KAAK,IAAIE,EAAEqI,OAAOC,MAAM,EAAEzI,EAAE,EAAEI,EAAE,gGAAgGA,GAAG,yBAAyBJ,EAAE,YAAYC,EAAE,UAAUuI,OAAOE,OAAO,EAAEzI,EAAE,GAAG,UAAUE,EAAE,IAAIuB,EAAE2B,OAAOyC,KAAK,GAAG/F,EAAEK,GAAG,OAAOsB,IAAIA,EAAEiH,SAASC,KAAK9I,GAAG4B,CAAC,EAAE5B,EAAEuB,UAAUiH,kBAAkB,SAASxI,GAAG8E,KAAKwD,OAAOtI,EAAE8E,KAAKyD,IAAIQ,KAAKC,SAASrE,QAAQC,OAAO,CAACmB,cAAc,UAAUjB,KAAKwD,OAAO,EAAEtI,EAAEuB,UAAU0H,WAAW,WAAW,OAAO/I,EAAEgJ,UAAUpE,UAAK,OAAO,GAAO,WAAW,OAAO5E,EAAEiJ,YAAYrE,MAAK,SAAS9E,GAAG,MAAM,CAAC,EAAE8E,KAAKyD,IAAIQ,KAAKhI,IAAI,WAAW,GAAE,GAAE,EAAEf,EAAEuB,UAAU6H,wBAAwB,SAASpJ,GAAG,OAAOE,EAAEgJ,UAAUpE,UAAK,OAAO,GAAO,WAAW,IAAI7E,EAAE6E,KAAK,OAAO5E,EAAEiJ,YAAYrE,MAAK,SAAS5E,GAAG,MAAM,CAAC,EAAE4E,KAAKuE,iBAAgB,WAAWpJ,EAAEqJ,cAActJ,EAAE,IAAG,GAAE,GAAE,EAAEA,EAAEuB,UAAUgI,uBAAuB,SAASvJ,GAAG,OAAOE,EAAEgJ,UAAUpE,UAAK,OAAO,GAAO,WAAW,IAAI7E,EAAE6E,KAAK,OAAO5E,EAAEiJ,YAAYrE,MAAK,SAAS5E,GAAG,MAAM,CAAC,EAAE4E,KAAKuE,iBAAgB,WAAWpJ,EAAEuJ,kBAAkBxJ,EAAE,IAAG,GAAE,GAAE,EAAEA,EAAEuB,UAAU8H,gBAAgB,SAASpJ,GAAG,OAAOC,EAAEgJ,UAAUpE,UAAK,OAAO,GAAO,WAAW,IAAI3E,EAAE2E,KAAK,OAAO5E,EAAEiJ,YAAYrE,MAAK,SAAS5E,GAAG,OAAO4E,KAAK2E,OAAO3E,KAAK2E,MAAMC,QAAQ,CAAC,EAAE,CAACC,SAAQ,EAAGC,OAAO,CAAC,yBAAyB,CAAC,EAAE,IAAI1E,SAAQ,SAAShF,EAAEG,GAAG,IAAIC,EAAEH,EAAEiI,IAAI,qBAAqBjI,EAAEmI,OAAOnI,EAAEsJ,MAAMzJ,EAAEyI,WAAWnI,GAAG,IAAIsB,EAAE3B,IAAIE,EAAEqH,iBAAiB5F,EAAE1B,EAAEG,EAAE,IAAG,GAAE,GAAE,EAAEL,EAAEuB,UAAU+H,cAAc,SAAStJ,GAAG,OAAO8E,KAAK+E,YAAY,CAACC,KAAK3J,EAAE4J,YAAYC,YAAYC,MAAM5J,EAAE6J,YAAYC,SAAShE,OAAOnG,GAAG,EAAEA,EAAEuB,UAAUiI,kBAAkB,SAASxJ,GAAG,OAAO8E,KAAK+E,YAAY,CAACC,KAAK3J,EAAE4J,YAAYC,YAAYC,MAAM5J,EAAE6J,YAAYE,QAAQjE,OAAOnG,GAAG,EAAEA,EAAEuB,UAAUsI,YAAY,SAAS7J,GAAG,IAAIC,EAAE6E,KAAK5E,EAAEmK,aAAY,WAAWpK,EAAEwJ,MAAMxJ,EAAEwJ,MAAMa,YAAYtK,EAAEC,EAAEmI,KAAKmC,cAAcrK,EAAE,GAAE,KAAK,OAAOA,CAAC,EAAEF,EAAEuB,UAAUiG,iBAAiB,SAASxH,EAAEC,EAAEC,GAAG,IAAIC,EAAE2E,KAAKvB,OAAOiE,iBAAiB,WAAU,SAASnH,GAAG,GAAGA,EAAEmK,SAASrK,EAAEiI,IAAI,CAAC,IAAI9H,EAAEH,EAAEsK,eAAepK,GAAGC,IAAIiK,cAAcvK,GAAGM,GAAGA,EAAEqJ,QAAQ1J,EAAEK,GAAGJ,EAAEI,GAAG,CAAC,IAAE,EAAG,EAAEN,EAAEuB,UAAUkJ,eAAe,SAASzK,GAAG,IAAIC,EAAED,EAAEoF,MAAMlF,EAAEwK,SAAS,CAAC,EAAE1K,EAAEoF,KAAKA,MAAM,OAAOpF,EAAEoF,MAAMpF,EAAEoF,KAAK0E,MAAM,KAAK3J,EAAE4J,YAAYY,mBAAmB,OAAO7F,KAAK2E,MAAMmB,QAAQ3K,EAAE,KAAKE,EAAE4J,YAAYc,aAAa,cAAc/F,KAAK2E,MAAM,CAACE,SAAQ,EAAGC,OAAO,CAAC,gBAAgBkB,OAAO,CAAC,GAAG,QAAQ,OAAM,EAAG,EAAE9K,CAAC,CAA92F,GAAk3FC,EAAEqB,QAAQM,EAAE2B,SAASA,OAAOwH,cAAcnJ,EAAE,EAAEoD,MAAM/E,EAAEE,MAAMH,EAAEI,QAAQC,EAAE,EAAE,SAASL,EAAEC,EAAEC,GAAG,aAAaA,EAAEC,EAAEF,GAAGC,EAAES,EAAEV,EAAE,aAAY,WAAW,OAAOI,CAAC,IAAGH,EAAES,EAAEV,EAAE,YAAW,WAAW,OAAOK,CAAC,IAAGJ,EAAES,EAAEV,EAAE,UAAS,WAAW,OAAO2B,CAAC,IAAG1B,EAAES,EAAEV,EAAE,cAAa,WAAW,OAAO4B,CAAC,IAAG3B,EAAES,EAAEV,EAAE,WAAU,WAAW,OAAOS,CAAC,IAAGR,EAAES,EAAEV,EAAE,cAAa,WAAW,OAAOyB,CAAC,IAAGxB,EAAES,EAAEV,EAAE,aAAY,WAAW,OAAOkF,CAAC,IAAGjF,EAAES,EAAEV,EAAE,eAAc,WAAW,OAAOM,CAAC,IAAGL,EAAES,EAAEV,EAAE,gBAAe,WAAW,OAAOwB,CAAC,IAAGvB,EAAES,EAAEV,EAAE,YAAW,WAAW,OAAOU,CAAC,IAAGT,EAAES,EAAEV,EAAE,UAAS,WAAW,OAAOoF,CAAC,IAAGnF,EAAES,EAAEV,EAAE,YAAW,WAAW,OAAOqF,CAAC,IAAGpF,EAAES,EAAEV,EAAE,WAAU,WAAW,OAAO2F,CAAC,IAAG1F,EAAES,EAAEV,EAAE,oBAAmB,WAAW,OAAOQ,CAAC,IAAGP,EAAES,EAAEV,EAAE,oBAAmB,WAAW,OAAOgH,CAAC,IAAG/G,EAAES,EAAEV,EAAE,iBAAgB,WAAW,OAAOiH,CAAC,IAAGhH,EAAES,EAAEV,EAAE,wBAAuB,WAAW,OAAO+K,CAAC,IAAG9K,EAAES,EAAEV,EAAE,gBAAe,WAAW,OAAOgL,CAAC,IAAG/K,EAAES,EAAEV,EAAE,mBAAkB,WAAW,OAAOiL,CAAC;;;;;;;;;;;;;;;AAevlU,IAAI/K,EAAE,SAASH,EAAEC,GAAG,OAAOE,EAAES,OAAOuK,gBAAgB,CAACC,UAAU,cAAcrG,OAAO,SAAS/E,EAAEC,GAAGD,EAAEoL,UAAUnL,CAAC,GAAG,SAASD,EAAEC,GAAG,IAAI,IAAIC,KAAKD,EAAEA,EAAEuB,eAAetB,KAAKF,EAAEE,GAAGD,EAAEC,GAAG,GAAGF,EAAEC,EAAE,EAAE,SAASI,EAAEL,EAAEC,GAAG,SAASC,IAAI4E,KAAKuG,YAAYrL,CAAC,CAACG,EAAEH,EAAEC,GAAGD,EAAEuB,UAAU,OAAOtB,EAAEW,OAAOQ,OAAOnB,IAAIC,EAAEqB,UAAUtB,EAAEsB,UAAU,IAAIrB,EAAE,CAAC,IAAII,EAAE,WAAW,OAAOA,EAAEM,OAAO0K,QAAQ,SAAStL,GAAG,IAAI,IAAIC,EAAEC,EAAE,EAAEC,EAAEwD,UAAU7B,OAAO5B,EAAEC,EAAED,IAAI,IAAI,IAAIG,KAAKJ,EAAE0D,UAAUzD,GAAGU,OAAOW,UAAUC,eAAehB,KAAKP,EAAEI,KAAKL,EAAEK,GAAGJ,EAAEI,IAAI,OAAOL,CAAC,GAAGgF,MAAMF,KAAKnB,UAAU,EAAE,SAAS/B,EAAE5B,EAAEC,GAAG,IAAIC,EAAE,CAAC,EAAE,IAAI,IAAIC,KAAKH,EAAEY,OAAOW,UAAUC,eAAehB,KAAKR,EAAEG,IAAIF,EAAEuG,QAAQrG,GAAG,IAAID,EAAEC,GAAGH,EAAEG,IAAI,GAAG,MAAMH,GAAG,mBAAmBY,OAAO2K,sBAAsB,CAAC,IAAIlL,EAAE,EAAE,IAAIF,EAAES,OAAO2K,sBAAsBvL,GAAGK,EAAEF,EAAE2B,OAAOzB,IAAIJ,EAAEuG,QAAQrG,EAAEE,IAAI,IAAIH,EAAEC,EAAEE,IAAIL,EAAEG,EAAEE,IAAI,CAAC,OAAOH,CAAC,CAAC,SAAS2B,EAAE7B,EAAEC,EAAEC,EAAEC,GAAG,IAAIE,EAAEC,EAAEqD,UAAU7B,OAAOF,EAAEtB,EAAE,EAAEL,EAAE,OAAOE,EAAEA,EAAES,OAAO4K,yBAAyBvL,EAAEC,GAAGC,EAAE,GAAG,iBAAiBsL,SAAS,mBAAmBA,QAAQC,SAAS9J,EAAE6J,QAAQC,SAAS1L,EAAEC,EAAEC,EAAEC,QAAQ,IAAI,IAAI0B,EAAE7B,EAAE8B,OAAO,EAAED,GAAG,EAAEA,KAAKxB,EAAEL,EAAE6B,MAAMD,GAAGtB,EAAE,EAAED,EAAEuB,GAAGtB,EAAE,EAAED,EAAEJ,EAAEC,EAAE0B,GAAGvB,EAAEJ,EAAEC,KAAK0B,GAAG,OAAOtB,EAAE,GAAGsB,GAAGhB,OAAOC,eAAeZ,EAAEC,EAAE0B,GAAGA,CAAC,CAAC,SAASlB,EAAEV,EAAEC,GAAG,OAAO,SAASC,EAAEC,GAAGF,EAAEC,EAAEC,EAAEH,EAAE,CAAC,CAAC,SAAS0B,EAAE1B,EAAEC,GAAG,GAAG,iBAAiBwL,SAAS,mBAAmBA,QAAQE,SAAS,OAAOF,QAAQE,SAAS3L,EAAEC,EAAE,CAAC,SAASkF,EAAEnF,EAAEC,EAAEC,EAAEC,GAAG,OAAO,IAAID,IAAIA,EAAEgF,WAAU,SAAS7E,EAAEC,GAAG,SAASsB,EAAE5B,GAAG,IAAIU,EAAEP,EAAEyL,KAAK5L,GAAG,CAAC,MAAMA,GAAGM,EAAEN,EAAE,CAAC,CAAC,SAAS6B,EAAE7B,GAAG,IAAIU,EAAEP,EAAE0L,MAAM7L,GAAG,CAAC,MAAMA,GAAGM,EAAEN,EAAE,CAAC,CAAC,SAASU,EAAEV,GAAGA,EAAE8L,KAAKzL,EAAEL,EAAEkB,OAAO,IAAIhB,GAAE,SAASD,GAAGA,EAAED,EAAEkB,MAAM,IAAG2G,KAAKjG,EAAEC,EAAE,CAACnB,GAAGP,EAAEA,EAAE6E,MAAMhF,EAAEC,GAAG,KAAK2L,OAAO,GAAE,CAAC,SAASrL,EAAEP,EAAEC,GAAG,IAAIC,EAAEC,EAAEE,EAAEC,EAAEsB,EAAE,CAACmK,MAAM,EAAEC,KAAK,WAAW,GAAG,EAAE3L,EAAE,GAAG,MAAMA,EAAE,GAAG,OAAOA,EAAE,EAAE,EAAE4L,KAAK,GAAGC,IAAI,IAAI,OAAO5L,EAAE,CAACsL,KAAK/J,EAAE,GAAGgK,MAAMhK,EAAE,GAAGsK,OAAOtK,EAAE,IAAI,mBAAmBb,SAASV,EAAEU,OAAOoL,UAAU,WAAW,OAAOtH,IAAI,GAAGxE,EAAE,SAASuB,EAAEvB,GAAG,OAAO,SAASuB,GAAG,OAAO,SAASvB,GAAG,GAAGJ,EAAE,MAAM,IAAImM,UAAU,mCAAmC,KAAKzK,GAAG,IAAI,GAAG1B,EAAE,EAAEC,IAAIE,EAAE,EAAEC,EAAE,GAAGH,EAAEgM,OAAO7L,EAAE,GAAGH,EAAE0L,SAASxL,EAAEF,EAAEgM,SAAS9L,EAAEG,KAAKL,GAAG,GAAGA,EAAEyL,SAASvL,EAAEA,EAAEG,KAAKL,EAAEG,EAAE,KAAKwL,KAAK,OAAOzL,EAAE,OAAOF,EAAE,EAAEE,IAAIC,EAAE,CAAC,EAAEA,EAAE,GAAGD,EAAEa,QAAQZ,EAAE,IAAI,KAAK,EAAE,KAAK,EAAED,EAAEC,EAAE,MAAM,KAAK,EAAE,OAAOsB,EAAEmK,QAAQ,CAAC7K,MAAMZ,EAAE,GAAGwL,MAAK,GAAI,KAAK,EAAElK,EAAEmK,QAAQ5L,EAAEG,EAAE,GAAGA,EAAE,CAAC,GAAG,SAAS,KAAK,EAAEA,EAAEsB,EAAEsK,IAAII,MAAM1K,EAAEqK,KAAKK,MAAM,SAAS,QAAQ,KAAKjM,GAAGA,EAAEuB,EAAEqK,MAAMnK,OAAO,GAAGzB,EAAEA,EAAEyB,OAAO,MAAM,IAAIxB,EAAE,IAAI,IAAIA,EAAE,IAAI,CAACsB,EAAE,EAAE,QAAQ,CAAC,GAAG,IAAItB,EAAE,MAAMD,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,IAAI,CAACuB,EAAEmK,MAAMzL,EAAE,GAAG,KAAK,CAAC,GAAG,IAAIA,EAAE,IAAIsB,EAAEmK,MAAM1L,EAAE,GAAG,CAACuB,EAAEmK,MAAM1L,EAAE,GAAGA,EAAEC,EAAE,KAAK,CAAC,GAAGD,GAAGuB,EAAEmK,MAAM1L,EAAE,GAAG,CAACuB,EAAEmK,MAAM1L,EAAE,GAAGuB,EAAEsK,IAAIK,KAAKjM,GAAG,KAAK,CAACD,EAAE,IAAIuB,EAAEsK,IAAII,MAAM1K,EAAEqK,KAAKK,MAAM,SAAShM,EAAEL,EAAEO,KAAKR,EAAE4B,EAAE,CAAC,MAAM5B,GAAGM,EAAE,CAAC,EAAEN,GAAGG,EAAE,CAAC,CAAC,QAAQD,EAAEG,EAAE,CAAC,CAAC,GAAG,EAAEC,EAAE,GAAG,MAAMA,EAAE,GAAG,MAAM,CAACY,MAAMZ,EAAE,GAAGA,EAAE,QAAG,EAAOwL,MAAK,EAAG,CAApxB,CAAsxB,CAACxL,EAAEuB,GAAG,CAAC,CAAC,CAAC,SAASJ,EAAEzB,EAAEC,GAAG,IAAI,IAAIC,KAAKF,EAAEC,EAAEuB,eAAetB,KAAKD,EAAEC,GAAGF,EAAEE,GAAG,CAAC,SAASS,EAAEX,GAAG,IAAIC,EAAE,mBAAmBe,QAAQhB,EAAEgB,OAAOoL,UAAUlM,EAAE,EAAE,OAAOD,EAAEA,EAAEO,KAAKR,GAAG,CAAC4L,KAAK,WAAW,OAAO5L,GAAGE,GAAGF,EAAE8B,SAAS9B,OAAE,GAAQ,CAACkB,MAAMlB,GAAGA,EAAEE,KAAK4L,MAAM9L,EAAE,EAAE,CAAC,SAASqF,EAAErF,EAAEC,GAAG,IAAIC,EAAE,mBAAmBc,QAAQhB,EAAEgB,OAAOoL,UAAU,IAAIlM,EAAE,OAAOF,EAAE,IAAIG,EAAEE,EAAEC,EAAEJ,EAAEM,KAAKR,GAAG4B,EAAE,GAAG,IAAI,WAAM,IAAS3B,GAAGA,KAAK,MAAME,EAAEG,EAAEsL,QAAQE,MAAMlK,EAAE2K,KAAKpM,EAAEe,MAAM,CAAC,MAAMlB,GAAGK,EAAE,CAACmM,MAAMxM,EAAE,CAAC,QAAQ,IAAIG,IAAIA,EAAE2L,OAAO5L,EAAEI,EAAE6L,SAASjM,EAAEM,KAAKF,EAAE,CAAC,QAAQ,GAAGD,EAAE,MAAMA,EAAEmM,KAAK,CAAC,CAAC,OAAO5K,CAAC,CAAC,SAAS0D,IAAI,IAAI,IAAItF,EAAE,GAAGC,EAAE,EAAEA,EAAE0D,UAAU7B,OAAO7B,IAAID,EAAEA,EAAEyM,OAAOpH,EAAE1B,UAAU1D,KAAK,OAAOD,CAAC,CAAC,SAAS4F,EAAE5F,GAAG,OAAO8E,gBAAgBc,GAAGd,KAAKc,EAAE5F,EAAE8E,MAAM,IAAIc,EAAE5F,EAAE,CAAC,SAASS,EAAET,EAAEC,EAAEC,GAAG,IAAIc,OAAO0L,cAAc,MAAM,IAAIL,UAAU,wCAAwC,IAAIlM,EAAEE,EAAEH,EAAE8E,MAAMhF,EAAEC,GAAG,IAAIK,EAAE,GAAG,OAAOH,EAAE,CAAC,EAAEyB,EAAE,QAAQA,EAAE,SAASA,EAAE,UAAUzB,EAAEa,OAAO0L,eAAe,WAAW,OAAO5H,IAAI,EAAE3E,EAAE,SAASyB,EAAE5B,GAAGK,EAAEL,KAAKG,EAAEH,GAAG,SAASC,GAAG,OAAO,IAAIiF,SAAQ,SAAShF,EAAEC,GAAGG,EAAEiM,KAAK,CAACvM,EAAEC,EAAEC,EAAEC,IAAI,GAAG0B,EAAE7B,EAAEC,EAAE,GAAE,EAAE,CAAC,SAAS4B,EAAE7B,EAAEC,GAAG,KAAK,SAASD,GAAGA,EAAEkB,iBAAiB0E,EAAEV,QAAQyH,QAAQ3M,EAAEkB,MAAM0E,GAAGiC,KAAKnH,EAAEgB,GAAGyD,EAAE7E,EAAE,GAAG,GAAGN,EAAE,CAAlF,CAAoFK,EAAEL,GAAGC,GAAG,CAAC,MAAMD,GAAGmF,EAAE7E,EAAE,GAAG,GAAGN,EAAE,CAAC,CAAC,SAASU,EAAEV,GAAG6B,EAAE,OAAO7B,EAAE,CAAC,SAAS0B,EAAE1B,GAAG6B,EAAE,QAAQ7B,EAAE,CAAC,SAASmF,EAAEnF,EAAEC,GAAGD,EAAEC,GAAGK,EAAEsM,QAAQtM,EAAEwB,QAAQD,EAAEvB,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,CAAC,SAAS2G,EAAEjH,GAAG,IAAIC,EAAEC,EAAE,OAAOD,EAAE,CAAC,EAAEE,EAAE,QAAQA,EAAE,SAAQ,SAASH,GAAG,MAAMA,CAAC,IAAGG,EAAE,UAAUF,EAAEe,OAAOoL,UAAU,WAAW,OAAOtH,IAAI,EAAE7E,EAAE,SAASE,EAAEA,EAAEE,GAAGJ,EAAEE,GAAGH,EAAEG,GAAG,SAASF,GAAG,OAAOC,GAAGA,GAAG,CAACgB,MAAM0E,EAAE5F,EAAEG,GAAGF,IAAI6L,KAAK,WAAW3L,GAAGE,EAAEA,EAAEJ,GAAGA,CAAC,EAAEI,CAAC,CAAC,CAAC,SAAS6G,EAAElH,GAAG,IAAIgB,OAAO0L,cAAc,MAAM,IAAIL,UAAU,wCAAwC,IAAIpM,EAAEC,EAAEF,EAAEgB,OAAO0L,eAAe,OAAOxM,EAAEA,EAAEM,KAAKR,IAAIA,EAAEW,EAAEX,GAAGC,EAAE,CAAC,EAAEE,EAAE,QAAQA,EAAE,SAASA,EAAE,UAAUF,EAAEe,OAAO0L,eAAe,WAAW,OAAO5H,IAAI,EAAE7E,GAAG,SAASE,EAAED,GAAGD,EAAEC,GAAGF,EAAEE,IAAI,SAASD,GAAG,OAAO,IAAIiF,SAAQ,SAAS/E,EAAEE,IAAG,SAAUL,EAAEC,EAAEC,EAAEC,GAAG+E,QAAQyH,QAAQxM,GAAG0H,MAAK,SAAS5H,GAAGD,EAAE,CAACkB,MAAMjB,EAAE6L,KAAK5L,GAAG,GAAED,EAAG,EAA/E,CAAiFE,EAAEE,GAAGJ,EAAED,EAAEE,GAAGD,IAAI6L,KAAK7L,EAAEiB,MAAM,GAAE,CAAC,CAAC,CAAC,SAAS8J,EAAEhL,EAAEC,GAAG,OAAOW,OAAOC,eAAeD,OAAOC,eAAeb,EAAE,MAAM,CAACkB,MAAMjB,IAAID,EAAE6M,IAAI5M,EAAED,CAAC,CAAC,SAASiL,EAAEjL,GAAG,GAAGA,GAAGA,EAAEmB,WAAW,OAAOnB,EAAE,IAAIC,EAAE,CAAC,EAAE,GAAG,MAAMD,EAAE,IAAI,IAAIE,KAAKF,EAAEY,OAAOY,eAAehB,KAAKR,EAAEE,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,EAAEqB,QAAQtB,EAAEC,CAAC,CAAC,SAASiL,EAAElL,GAAG,OAAOA,GAAGA,EAAEmB,WAAWnB,EAAE,CAACsB,QAAQtB,EAAE,CAAC,EAAE,SAASA,EAAEC,EAAEC,GAAG,IAAIC,OAAE,KAAUA,EAAE,SAASH,EAAEC,GAAG,aAAaW,OAAOC,eAAeZ,EAAE,aAAa,CAACiB,OAAM,IAAK,SAASlB,GAAGA,EAAEA,EAAE2K,mBAAmB,GAAG,qBAAqB3K,EAAEA,EAAEgK,YAAY,GAAG,cAAchK,EAAEA,EAAE6K,aAAa,GAAG,cAAc,CAA9H,CAAgI5K,EAAE8J,cAAc9J,EAAE8J,YAAY,CAAC,GAAG,EAAE/E,MAAM/E,EAAE,CAACC,EAAED,OAAOD,EAAEI,QAAQD,EAAE,EAAE,SAASH,EAAEC,EAAEC,GAAG,IAAIC,OAAE,KAAUA,EAAE,SAASH,EAAEC,GAAG,aAAaW,OAAOC,eAAeZ,EAAE,aAAa,CAACiB,OAAM,IAAK,SAASlB,GAAGA,EAAEA,EAAEmK,SAAS,GAAG,WAAWnK,EAAEA,EAAEoK,QAAQ,GAAG,SAAS,CAA/D,CAAiEnK,EAAEiK,cAAcjK,EAAEiK,YAAY,CAAC,GAAG,EAAElF,MAAM/E,EAAE,CAACC,EAAED,OAAOD,EAAEI,QAAQD,EAAE,EAAE,SAASH,EAAEC,EAAEC,GAAG,IAAIC,EAAEE,EAAEF,EAAE,CAACD,EAAED,EAAEC,EAAE,IAAIA,EAAE,UAAK,KAAUG,EAAE,SAASL,EAAEC,EAAEC,EAAEC,GAAG,aAAaS,OAAOC,eAAeZ,EAAE,aAAa,CAACiB,OAAM,IAAKf,EAAED,EAAEiI,gBAAgBhI,GAAG,IAAIE,EAAE,WAAW,SAASL,EAAEA,EAAEC,GAAG,IAAIC,EAAEF,EAAE8M,SAAS,KAAK9M,EAAE+M,UAAU,EAAE/M,EAAE8B,OAAO,GAAG9B,EAAE8E,KAAKiE,KAAK5I,EAAEmB,QAAQF,OAAO,CAAC4L,QAAQ/M,EAAEC,EAAE,IAAID,EAAEC,IAAI4E,KAAKiE,KAAKkE,aAAatG,SAASuG,SAAI,EAAOpI,KAAKqI,aAAa,CAAC,OAAOnN,EAAEuB,UAAU4L,aAAa,SAASnN,GAAG,OAAOkF,QAAQyH,aAAQ,EAAO,EAAE3M,CAAC,CAA1Q,GAA8QC,EAAEqB,QAAQjB,CAAC,EAAE2E,MAAM/E,EAAEE,MAAMH,EAAEI,QAAQC,EAAE,EAAE,SAASL,EAAEC,EAAEC,GAAG,aAAaA,EAAEC,EAAEF,GAAGC,EAAES,EAAEV,EAAE,aAAY,WAAW,OAAOI,CAAC,IAAGH,EAAES,EAAEV,EAAE,YAAW,WAAW,OAAOK,CAAC,IAAGJ,EAAES,EAAEV,EAAE,UAAS,WAAW,OAAO2B,CAAC,IAAG1B,EAAES,EAAEV,EAAE,cAAa,WAAW,OAAO4B,CAAC,IAAG3B,EAAES,EAAEV,EAAE,WAAU,WAAW,OAAOS,CAAC,IAAGR,EAAES,EAAEV,EAAE,cAAa,WAAW,OAAOyB,CAAC,IAAGxB,EAAES,EAAEV,EAAE,aAAY,WAAW,OAAOkF,CAAC,IAAGjF,EAAES,EAAEV,EAAE,eAAc,WAAW,OAAOM,CAAC,IAAGL,EAAES,EAAEV,EAAE,gBAAe,WAAW,OAAOwB,CAAC,IAAGvB,EAAES,EAAEV,EAAE,YAAW,WAAW,OAAOU,CAAC,IAAGT,EAAES,EAAEV,EAAE,UAAS,WAAW,OAAOoF,CAAC,IAAGnF,EAAES,EAAEV,EAAE,YAAW,WAAW,OAAOqF,CAAC,IAAGpF,EAAES,EAAEV,EAAE,WAAU,WAAW,OAAO2F,CAAC,IAAG1F,EAAES,EAAEV,EAAE,oBAAmB,WAAW,OAAOQ,CAAC,IAAGP,EAAES,EAAEV,EAAE,oBAAmB,WAAW,OAAOgH,CAAC,IAAG/G,EAAES,EAAEV,EAAE,iBAAgB,WAAW,OAAOiH,CAAC,IAAGhH,EAAES,EAAEV,EAAE,wBAAuB,WAAW,OAAO+K,CAAC,IAAG9K,EAAES,EAAEV,EAAE,gBAAe,WAAW,OAAOgL,CAAC,IAAG/K,EAAES,EAAEV,EAAE,mBAAkB,WAAW,OAAOiL,CAAC;;;;;;;;;;;;;;;AAepgN,IAAI/K,EAAE,SAASH,EAAEC,GAAG,OAAOE,EAAES,OAAOuK,gBAAgB,CAACC,UAAU,cAAcrG,OAAO,SAAS/E,EAAEC,GAAGD,EAAEoL,UAAUnL,CAAC,GAAG,SAASD,EAAEC,GAAG,IAAI,IAAIC,KAAKD,EAAEA,EAAEuB,eAAetB,KAAKF,EAAEE,GAAGD,EAAEC,GAAG,GAAGF,EAAEC,EAAE,EAAE,SAASI,EAAEL,EAAEC,GAAG,SAASC,IAAI4E,KAAKuG,YAAYrL,CAAC,CAACG,EAAEH,EAAEC,GAAGD,EAAEuB,UAAU,OAAOtB,EAAEW,OAAOQ,OAAOnB,IAAIC,EAAEqB,UAAUtB,EAAEsB,UAAU,IAAIrB,EAAE,CAAC,IAAII,EAAE,WAAW,OAAOA,EAAEM,OAAO0K,QAAQ,SAAStL,GAAG,IAAI,IAAIC,EAAEC,EAAE,EAAEC,EAAEwD,UAAU7B,OAAO5B,EAAEC,EAAED,IAAI,IAAI,IAAIG,KAAKJ,EAAE0D,UAAUzD,GAAGU,OAAOW,UAAUC,eAAehB,KAAKP,EAAEI,KAAKL,EAAEK,GAAGJ,EAAEI,IAAI,OAAOL,CAAC,GAAGgF,MAAMF,KAAKnB,UAAU,EAAE,SAAS/B,EAAE5B,EAAEC,GAAG,IAAIC,EAAE,CAAC,EAAE,IAAI,IAAIC,KAAKH,EAAEY,OAAOW,UAAUC,eAAehB,KAAKR,EAAEG,IAAIF,EAAEuG,QAAQrG,GAAG,IAAID,EAAEC,GAAGH,EAAEG,IAAI,GAAG,MAAMH,GAAG,mBAAmBY,OAAO2K,sBAAsB,CAAC,IAAIlL,EAAE,EAAE,IAAIF,EAAES,OAAO2K,sBAAsBvL,GAAGK,EAAEF,EAAE2B,OAAOzB,IAAIJ,EAAEuG,QAAQrG,EAAEE,IAAI,IAAIH,EAAEC,EAAEE,IAAIL,EAAEG,EAAEE,IAAI,CAAC,OAAOH,CAAC,CAAC,SAAS2B,EAAE7B,EAAEC,EAAEC,EAAEC,GAAG,IAAIE,EAAEC,EAAEqD,UAAU7B,OAAOF,EAAEtB,EAAE,EAAEL,EAAE,OAAOE,EAAEA,EAAES,OAAO4K,yBAAyBvL,EAAEC,GAAGC,EAAE,GAAG,iBAAiBsL,SAAS,mBAAmBA,QAAQC,SAAS9J,EAAE6J,QAAQC,SAAS1L,EAAEC,EAAEC,EAAEC,QAAQ,IAAI,IAAI0B,EAAE7B,EAAE8B,OAAO,EAAED,GAAG,EAAEA,KAAKxB,EAAEL,EAAE6B,MAAMD,GAAGtB,EAAE,EAAED,EAAEuB,GAAGtB,EAAE,EAAED,EAAEJ,EAAEC,EAAE0B,GAAGvB,EAAEJ,EAAEC,KAAK0B,GAAG,OAAOtB,EAAE,GAAGsB,GAAGhB,OAAOC,eAAeZ,EAAEC,EAAE0B,GAAGA,CAAC,CAAC,SAASlB,EAAEV,EAAEC,GAAG,OAAO,SAASC,EAAEC,GAAGF,EAAEC,EAAEC,EAAEH,EAAE,CAAC,CAAC,SAAS0B,EAAE1B,EAAEC,GAAG,GAAG,iBAAiBwL,SAAS,mBAAmBA,QAAQE,SAAS,OAAOF,QAAQE,SAAS3L,EAAEC,EAAE,CAAC,SAASkF,EAAEnF,EAAEC,EAAEC,EAAEC,GAAG,OAAO,IAAID,IAAIA,EAAEgF,WAAU,SAAS7E,EAAEC,GAAG,SAASsB,EAAE5B,GAAG,IAAIU,EAAEP,EAAEyL,KAAK5L,GAAG,CAAC,MAAMA,GAAGM,EAAEN,EAAE,CAAC,CAAC,SAAS6B,EAAE7B,GAAG,IAAIU,EAAEP,EAAE0L,MAAM7L,GAAG,CAAC,MAAMA,GAAGM,EAAEN,EAAE,CAAC,CAAC,SAASU,EAAEV,GAAGA,EAAE8L,KAAKzL,EAAEL,EAAEkB,OAAO,IAAIhB,GAAE,SAASD,GAAGA,EAAED,EAAEkB,MAAM,IAAG2G,KAAKjG,EAAEC,EAAE,CAACnB,GAAGP,EAAEA,EAAE6E,MAAMhF,EAAEC,GAAG,KAAK2L,OAAO,GAAE,CAAC,SAASrL,EAAEP,EAAEC,GAAG,IAAIC,EAAEC,EAAEE,EAAEC,EAAEsB,EAAE,CAACmK,MAAM,EAAEC,KAAK,WAAW,GAAG,EAAE3L,EAAE,GAAG,MAAMA,EAAE,GAAG,OAAOA,EAAE,EAAE,EAAE4L,KAAK,GAAGC,IAAI,IAAI,OAAO5L,EAAE,CAACsL,KAAK/J,EAAE,GAAGgK,MAAMhK,EAAE,GAAGsK,OAAOtK,EAAE,IAAI,mBAAmBb,SAASV,EAAEU,OAAOoL,UAAU,WAAW,OAAOtH,IAAI,GAAGxE,EAAE,SAASuB,EAAEvB,GAAG,OAAO,SAASuB,GAAG,OAAO,SAASvB,GAAG,GAAGJ,EAAE,MAAM,IAAImM,UAAU,mCAAmC,KAAKzK,GAAG,IAAI,GAAG1B,EAAE,EAAEC,IAAIE,EAAE,EAAEC,EAAE,GAAGH,EAAEgM,OAAO7L,EAAE,GAAGH,EAAE0L,SAASxL,EAAEF,EAAEgM,SAAS9L,EAAEG,KAAKL,GAAG,GAAGA,EAAEyL,SAASvL,EAAEA,EAAEG,KAAKL,EAAEG,EAAE,KAAKwL,KAAK,OAAOzL,EAAE,OAAOF,EAAE,EAAEE,IAAIC,EAAE,CAAC,EAAEA,EAAE,GAAGD,EAAEa,QAAQZ,EAAE,IAAI,KAAK,EAAE,KAAK,EAAED,EAAEC,EAAE,MAAM,KAAK,EAAE,OAAOsB,EAAEmK,QAAQ,CAAC7K,MAAMZ,EAAE,GAAGwL,MAAK,GAAI,KAAK,EAAElK,EAAEmK,QAAQ5L,EAAEG,EAAE,GAAGA,EAAE,CAAC,GAAG,SAAS,KAAK,EAAEA,EAAEsB,EAAEsK,IAAII,MAAM1K,EAAEqK,KAAKK,MAAM,SAAS,QAAQ,KAAKjM,GAAGA,EAAEuB,EAAEqK,MAAMnK,OAAO,GAAGzB,EAAEA,EAAEyB,OAAO,MAAM,IAAIxB,EAAE,IAAI,IAAIA,EAAE,IAAI,CAACsB,EAAE,EAAE,QAAQ,CAAC,GAAG,IAAItB,EAAE,MAAMD,GAAGC,EAAE,GAAGD,EAAE,IAAIC,EAAE,GAAGD,EAAE,IAAI,CAACuB,EAAEmK,MAAMzL,EAAE,GAAG,KAAK,CAAC,GAAG,IAAIA,EAAE,IAAIsB,EAAEmK,MAAM1L,EAAE,GAAG,CAACuB,EAAEmK,MAAM1L,EAAE,GAAGA,EAAEC,EAAE,KAAK,CAAC,GAAGD,GAAGuB,EAAEmK,MAAM1L,EAAE,GAAG,CAACuB,EAAEmK,MAAM1L,EAAE,GAAGuB,EAAEsK,IAAIK,KAAKjM,GAAG,KAAK,CAACD,EAAE,IAAIuB,EAAEsK,IAAII,MAAM1K,EAAEqK,KAAKK,MAAM,SAAShM,EAAEL,EAAEO,KAAKR,EAAE4B,EAAE,CAAC,MAAM5B,GAAGM,EAAE,CAAC,EAAEN,GAAGG,EAAE,CAAC,CAAC,QAAQD,EAAEG,EAAE,CAAC,CAAC,GAAG,EAAEC,EAAE,GAAG,MAAMA,EAAE,GAAG,MAAM,CAACY,MAAMZ,EAAE,GAAGA,EAAE,QAAG,EAAOwL,MAAK,EAAG,CAApxB,CAAsxB,CAACxL,EAAEuB,GAAG,CAAC,CAAC,CAAC,SAASJ,EAAEzB,EAAEC,GAAG,IAAI,IAAIC,KAAKF,EAAEC,EAAEuB,eAAetB,KAAKD,EAAEC,GAAGF,EAAEE,GAAG,CAAC,SAASS,EAAEX,GAAG,IAAIC,EAAE,mBAAmBe,QAAQhB,EAAEgB,OAAOoL,UAAUlM,EAAE,EAAE,OAAOD,EAAEA,EAAEO,KAAKR,GAAG,CAAC4L,KAAK,WAAW,OAAO5L,GAAGE,GAAGF,EAAE8B,SAAS9B,OAAE,GAAQ,CAACkB,MAAMlB,GAAGA,EAAEE,KAAK4L,MAAM9L,EAAE,EAAE,CAAC,SAASqF,EAAErF,EAAEC,GAAG,IAAIC,EAAE,mBAAmBc,QAAQhB,EAAEgB,OAAOoL,UAAU,IAAIlM,EAAE,OAAOF,EAAE,IAAIG,EAAEE,EAAEC,EAAEJ,EAAEM,KAAKR,GAAG4B,EAAE,GAAG,IAAI,WAAM,IAAS3B,GAAGA,KAAK,MAAME,EAAEG,EAAEsL,QAAQE,MAAMlK,EAAE2K,KAAKpM,EAAEe,MAAM,CAAC,MAAMlB,GAAGK,EAAE,CAACmM,MAAMxM,EAAE,CAAC,QAAQ,IAAIG,IAAIA,EAAE2L,OAAO5L,EAAEI,EAAE6L,SAASjM,EAAEM,KAAKF,EAAE,CAAC,QAAQ,GAAGD,EAAE,MAAMA,EAAEmM,KAAK,CAAC,CAAC,OAAO5K,CAAC,CAAC,SAAS0D,IAAI,IAAI,IAAItF,EAAE,GAAGC,EAAE,EAAEA,EAAE0D,UAAU7B,OAAO7B,IAAID,EAAEA,EAAEyM,OAAOpH,EAAE1B,UAAU1D,KAAK,OAAOD,CAAC,CAAC,SAAS4F,EAAE5F,GAAG,OAAO8E,gBAAgBc,GAAGd,KAAKc,EAAE5F,EAAE8E,MAAM,IAAIc,EAAE5F,EAAE,CAAC,SAASS,EAAET,EAAEC,EAAEC,GAAG,IAAIc,OAAO0L,cAAc,MAAM,IAAIL,UAAU,wCAAwC,IAAIlM,EAAEE,EAAEH,EAAE8E,MAAMhF,EAAEC,GAAG,IAAIK,EAAE,GAAG,OAAOH,EAAE,CAAC,EAAEyB,EAAE,QAAQA,EAAE,SAASA,EAAE,UAAUzB,EAAEa,OAAO0L,eAAe,WAAW,OAAO5H,IAAI,EAAE3E,EAAE,SAASyB,EAAE5B,GAAGK,EAAEL,KAAKG,EAAEH,GAAG,SAASC,GAAG,OAAO,IAAIiF,SAAQ,SAAShF,EAAEC,GAAGG,EAAEiM,KAAK,CAACvM,EAAEC,EAAEC,EAAEC,IAAI,GAAG0B,EAAE7B,EAAEC,EAAE,GAAE,EAAE,CAAC,SAAS4B,EAAE7B,EAAEC,GAAG,KAAK,SAASD,GAAGA,EAAEkB,iBAAiB0E,EAAEV,QAAQyH,QAAQ3M,EAAEkB,MAAM0E,GAAGiC,KAAKnH,EAAEgB,GAAGyD,EAAE7E,EAAE,GAAG,GAAGN,EAAE,CAAlF,CAAoFK,EAAEL,GAAGC,GAAG,CAAC,MAAMD,GAAGmF,EAAE7E,EAAE,GAAG,GAAGN,EAAE,CAAC,CAAC,SAASU,EAAEV,GAAG6B,EAAE,OAAO7B,EAAE,CAAC,SAAS0B,EAAE1B,GAAG6B,EAAE,QAAQ7B,EAAE,CAAC,SAASmF,EAAEnF,EAAEC,GAAGD,EAAEC,GAAGK,EAAEsM,QAAQtM,EAAEwB,QAAQD,EAAEvB,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,CAAC,SAAS2G,EAAEjH,GAAG,IAAIC,EAAEC,EAAE,OAAOD,EAAE,CAAC,EAAEE,EAAE,QAAQA,EAAE,SAAQ,SAASH,GAAG,MAAMA,CAAC,IAAGG,EAAE,UAAUF,EAAEe,OAAOoL,UAAU,WAAW,OAAOtH,IAAI,EAAE7E,EAAE,SAASE,EAAEA,EAAEE,GAAGJ,EAAEE,GAAGH,EAAEG,GAAG,SAASF,GAAG,OAAOC,GAAGA,GAAG,CAACgB,MAAM0E,EAAE5F,EAAEG,GAAGF,IAAI6L,KAAK,WAAW3L,GAAGE,EAAEA,EAAEJ,GAAGA,CAAC,EAAEI,CAAC,CAAC,CAAC,SAAS6G,EAAElH,GAAG,IAAIgB,OAAO0L,cAAc,MAAM,IAAIL,UAAU,wCAAwC,IAAIpM,EAAEC,EAAEF,EAAEgB,OAAO0L,eAAe,OAAOxM,EAAEA,EAAEM,KAAKR,IAAIA,EAAEW,EAAEX,GAAGC,EAAE,CAAC,EAAEE,EAAE,QAAQA,EAAE,SAASA,EAAE,UAAUF,EAAEe,OAAO0L,eAAe,WAAW,OAAO5H,IAAI,EAAE7E,GAAG,SAASE,EAAED,GAAGD,EAAEC,GAAGF,EAAEE,IAAI,SAASD,GAAG,OAAO,IAAIiF,SAAQ,SAAS/E,EAAEE,IAAG,SAAUL,EAAEC,EAAEC,EAAEC,GAAG+E,QAAQyH,QAAQxM,GAAG0H,MAAK,SAAS5H,GAAGD,EAAE,CAACkB,MAAMjB,EAAE6L,KAAK5L,GAAG,GAAED,EAAG,EAA/E,CAAiFE,EAAEE,GAAGJ,EAAED,EAAEE,GAAGD,IAAI6L,KAAK7L,EAAEiB,MAAM,GAAE,CAAC,CAAC,CAAC,SAAS8J,EAAEhL,EAAEC,GAAG,OAAOW,OAAOC,eAAeD,OAAOC,eAAeb,EAAE,MAAM,CAACkB,MAAMjB,IAAID,EAAE6M,IAAI5M,EAAED,CAAC,CAAC,SAASiL,EAAEjL,GAAG,GAAGA,GAAGA,EAAEmB,WAAW,OAAOnB,EAAE,IAAIC,EAAE,CAAC,EAAE,GAAG,MAAMD,EAAE,IAAI,IAAIE,KAAKF,EAAEY,OAAOY,eAAehB,KAAKR,EAAEE,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,EAAEqB,QAAQtB,EAAEC,CAAC,CAAC,SAASiL,EAAElL,GAAG,OAAOA,GAAGA,EAAEmB,WAAWnB,EAAE,CAACsB,QAAQtB,EAAE,CAAC,EAAE,SAASA,EAAEC,EAAEC,GAAGF,EAAEI,QAAQF,EAAE,GAAG,EAAE,SAASF,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGG,EAAEH,EAAE,GAAGI,EAAEJ,EAAE,IAAI0B,EAAE1B,EAAE,GAAG,SAAS2B,EAAE7B,GAAG,IAAIC,EAAE,IAAIK,EAAEN,GAAGE,EAAEG,EAAEC,EAAEiB,UAAUwF,QAAQ9G,GAAG,OAAOE,EAAEyD,OAAO1D,EAAEI,EAAEiB,UAAUtB,GAAGE,EAAEyD,OAAO1D,EAAED,GAAGC,CAAC,CAAC,IAAIQ,EAAEmB,EAAED,GAAGlB,EAAE0M,MAAM9M,EAAEI,EAAEU,OAAO,SAASpB,GAAG,OAAO6B,EAAE1B,EAAEuD,MAAM9B,EAAE5B,GAAG,EAAEU,EAAE2M,OAAOnN,EAAE,GAAGQ,EAAE4M,YAAYpN,EAAE,IAAIQ,EAAE6M,SAASrN,EAAE,GAAGQ,EAAE8M,IAAI,SAASxN,GAAG,OAAOkF,QAAQsI,IAAIxN,EAAE,EAAEU,EAAE+M,OAAOvN,EAAE,IAAIF,EAAEI,QAAQM,EAAEV,EAAEI,QAAQkB,QAAQZ,CAAC,EAAE,SAASV,EAAEC,GAAG,SAASC,EAAEF,GAAG,QAAQA,EAAEqL,aAAa,mBAAmBrL,EAAEqL,YAAYpJ,UAAUjC,EAAEqL,YAAYpJ,SAASjC,EAAE;;;;;;GAOttKA,EAAEI,QAAQ,SAASJ,GAAG,OAAO,MAAMA,IAAIE,EAAEF,IAAI,SAASA,GAAG,MAAM,mBAAmBA,EAAE0N,aAAa,mBAAmB1N,EAAE2N,OAAOzN,EAAEF,EAAE2N,MAAM,EAAE,GAAG,CAA/F,CAAiG3N,MAAMA,EAAE4N,UAAU,CAAC,EAAE,SAAS5N,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGG,EAAEH,EAAE,GAAGI,EAAEJ,EAAE,IAAI0B,EAAE1B,EAAE,IAAI,SAAS2B,EAAE7B,GAAG8E,KAAKkE,SAAShJ,EAAE8E,KAAKmI,aAAa,CAAClG,QAAQ,IAAIzG,EAAEqG,SAAS,IAAIrG,EAAE,CAACuB,EAAEN,UAAUwF,QAAQ,SAAS/G,GAAG,iBAAiBA,IAAIA,EAAEK,EAAEqD,MAAM,CAAC8B,IAAI7B,UAAU,IAAIA,UAAU,MAAM3D,EAAEK,EAAEqD,MAAMvD,EAAE,CAAC8F,OAAO,OAAOnB,KAAKkE,SAAShJ,IAAIiG,OAAOjG,EAAEiG,OAAOoB,cAAc,IAAIpH,EAAE,CAAC2B,OAAE,GAAQ1B,EAAEgF,QAAQyH,QAAQ3M,GAAG,IAAI8E,KAAKmI,aAAalG,QAAQtD,SAAQ,SAASzD,GAAGC,EAAE4N,QAAQ7N,EAAE8N,UAAU9N,EAAE+N,SAAS,IAAGjJ,KAAKmI,aAAatG,SAASlD,SAAQ,SAASzD,GAAGC,EAAEsM,KAAKvM,EAAE8N,UAAU9N,EAAE+N,SAAS,IAAG9N,EAAE6B,QAAQ5B,EAAEA,EAAE2H,KAAK5H,EAAE2M,QAAQ3M,EAAE2M,SAAS,OAAO1M,CAAC,EAAEG,EAAEoD,QAAQ,CAAC,SAAS,MAAM,OAAO,YAAW,SAASzD,GAAG6B,EAAEN,UAAUvB,GAAG,SAASC,EAAEC,GAAG,OAAO4E,KAAKiC,QAAQ1G,EAAEqD,MAAMxD,GAAG,CAAC,EAAE,CAAC+F,OAAOjG,EAAEwF,IAAIvF,IAAI,CAAC,IAAGI,EAAEoD,QAAQ,CAAC,OAAO,MAAM,UAAS,SAASzD,GAAG6B,EAAEN,UAAUvB,GAAG,SAASC,EAAEC,EAAEC,GAAG,OAAO2E,KAAKiC,QAAQ1G,EAAEqD,MAAMvD,GAAG,CAAC,EAAE,CAAC8F,OAAOjG,EAAEwF,IAAIvF,EAAEmF,KAAKlF,IAAI,CAAC,IAAGF,EAAEI,QAAQyB,CAAC,EAAE,SAAS7B,EAAEC,GAAG,IAAIC,EAAEC,EAAEE,EAAEL,EAAEI,QAAQ,CAAC,EAAE,SAASE,IAAI,MAAM,IAAI0H,MAAM,kCAAkC,CAAC,SAASpG,IAAI,MAAM,IAAIoG,MAAM,oCAAoC,CAAC,SAASnG,EAAE7B,GAAG,GAAGE,IAAI8N,WAAW,OAAOA,WAAWhO,EAAE,GAAG,IAAIE,IAAII,IAAIJ,IAAI8N,WAAW,OAAO9N,EAAE8N,WAAWA,WAAWhO,EAAE,GAAG,IAAI,OAAOE,EAAEF,EAAE,EAAE,CAAC,MAAMC,GAAG,IAAI,OAAOC,EAAEM,KAAK,KAAKR,EAAE,EAAE,CAAC,MAAMC,GAAG,OAAOC,EAAEM,KAAKsE,KAAK9E,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,IAAIE,EAAE,mBAAmB8N,WAAWA,WAAW1N,CAAC,CAAC,MAAMN,GAAGE,EAAEI,CAAC,CAAC,IAAIH,EAAE,mBAAmB8N,aAAaA,aAAarM,CAAC,CAAC,MAAM5B,GAAGG,EAAEyB,CAAC,CAAC,CAA3I,GAA+I,IAAIlB,EAAEgB,EAAE,GAAGyD,GAAE,EAAG5E,GAAG,EAAE,SAASkB,IAAI0D,GAAGzE,IAAIyE,GAAE,EAAGzE,EAAEoB,OAAOJ,EAAEhB,EAAE+L,OAAO/K,GAAGnB,GAAG,EAAEmB,EAAEI,QAAQnB,IAAI,CAAC,SAASA,IAAI,IAAIwE,EAAE,CAAC,IAAInF,EAAE6B,EAAEJ,GAAG0D,GAAE,EAAG,IAAI,IAAIlF,EAAEyB,EAAEI,OAAO7B,GAAG,CAAC,IAAIS,EAAEgB,EAAEA,EAAE,KAAKnB,EAAEN,GAAGS,GAAGA,EAAEH,GAAG2N,MAAM3N,GAAG,EAAEN,EAAEyB,EAAEI,MAAM,CAACpB,EAAE,KAAKyE,GAAE,EAAG,SAASnF,GAAG,GAAGG,IAAI8N,aAAa,OAAOA,aAAajO,GAAG,IAAIG,IAAIyB,IAAIzB,IAAI8N,aAAa,OAAO9N,EAAE8N,aAAaA,aAAajO,GAAG,IAAIG,EAAEH,EAAE,CAAC,MAAMC,GAAG,IAAI,OAAOE,EAAEK,KAAK,KAAKR,EAAE,CAAC,MAAMC,GAAG,OAAOE,EAAEK,KAAKsE,KAAK9E,EAAE,CAAC,CAAC,CAAtM,CAAwMA,EAAE,CAAC,CAAC,SAASqF,EAAErF,EAAEC,GAAG6E,KAAKqJ,IAAInO,EAAE8E,KAAKsJ,MAAMnO,CAAC,CAAC,SAASqF,IAAI,CAACjF,EAAEgO,SAAS,SAASrO,GAAG,IAAIC,EAAE,IAAI8E,MAAMpB,UAAU7B,OAAO,GAAG,GAAG6B,UAAU7B,OAAO,EAAE,IAAI,IAAI5B,EAAE,EAAEA,EAAEyD,UAAU7B,OAAO5B,IAAID,EAAEC,EAAE,GAAGyD,UAAUzD,GAAGwB,EAAE6K,KAAK,IAAIlH,EAAErF,EAAEC,IAAI,IAAIyB,EAAEI,QAAQqD,GAAGtD,EAAElB,EAAE,EAAE0E,EAAE9D,UAAU2M,IAAI,WAAWpJ,KAAKqJ,IAAInJ,MAAM,KAAKF,KAAKsJ,MAAM,EAAE/N,EAAEiO,MAAM,UAAUjO,EAAEkO,SAAQ,EAAGlO,EAAEmO,IAAI,CAAC,EAAEnO,EAAEoO,KAAK,GAAGpO,EAAEqO,QAAQ,GAAGrO,EAAEsO,SAAS,CAAC,EAAEtO,EAAEuO,GAAGtJ,EAAEjF,EAAEwO,YAAYvJ,EAAEjF,EAAEyO,KAAKxJ,EAAEjF,EAAE0O,IAAIzJ,EAAEjF,EAAE2O,eAAe1J,EAAEjF,EAAE4O,mBAAmB3J,EAAEjF,EAAE6O,KAAK5J,EAAEjF,EAAE8O,gBAAgB7J,EAAEjF,EAAE+O,oBAAoB9J,EAAEjF,EAAEgP,UAAU,SAASrP,GAAG,MAAM,EAAE,EAAEK,EAAEiP,QAAQ,SAAStP,GAAG,MAAM,IAAIgI,MAAM,mCAAmC,EAAE3H,EAAEkP,IAAI,WAAW,MAAM,GAAG,EAAElP,EAAEmP,MAAM,SAASxP,GAAG,MAAM,IAAIgI,MAAM,iCAAiC,EAAE3H,EAAEoP,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,SAASzP,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGF,EAAEI,QAAQ,SAASJ,EAAEC,GAAGE,EAAEsD,QAAQzD,GAAE,SAASE,EAAEC,GAAGA,IAAIF,GAAGE,EAAE+F,gBAAgBjG,EAAEiG,gBAAgBlG,EAAEC,GAAGC,SAASF,EAAEG,GAAG,GAAE,CAAC,EAAE,SAASH,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGF,EAAEI,QAAQ,SAASJ,EAAEC,EAAEC,GAAG,IAAIG,EAAEH,EAAE4G,OAAOpC,eAAexE,EAAEoG,QAAQjG,IAAIA,EAAEH,EAAEoG,QAAQrG,EAAEE,EAAE,mCAAmCD,EAAEoG,OAAOpG,EAAE4G,OAAO,KAAK5G,EAAE6G,QAAQ7G,IAAIF,EAAEE,EAAE,CAAC,EAAE,SAASF,EAAEC,EAAEC,GAAG,aAAaF,EAAEI,QAAQ,SAASJ,EAAEC,EAAEC,EAAEC,EAAEE,GAAG,OAAOL,EAAE8G,OAAO7G,EAAEC,IAAIF,EAAE0P,KAAKxP,GAAGF,EAAE+G,QAAQ5G,EAAEH,EAAE2G,SAAStG,EAAEL,CAAC,CAAC,EAAE,SAASA,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAG,SAASG,EAAEL,GAAG,OAAO2P,mBAAmB3P,GAAG8D,QAAQ,QAAQ,KAAKA,QAAQ,QAAQ,KAAKA,QAAQ,OAAO,KAAKA,QAAQ,QAAQ,KAAKA,QAAQ,OAAO,KAAKA,QAAQ,QAAQ,KAAKA,QAAQ,QAAQ,IAAI,CAAC9D,EAAEI,QAAQ,SAASJ,EAAEC,EAAEC,GAAG,IAAID,EAAE,OAAOD,EAAE,IAAIM,EAAE,GAAGJ,EAAEI,EAAEJ,EAAED,QAAQ,GAAGE,EAAE+C,kBAAkBjD,GAAGK,EAAEL,EAAE0B,eAAe,CAAC,IAAIC,EAAE,GAAGzB,EAAEsD,QAAQxD,GAAE,SAASD,EAAEC,GAAG,OAAOD,QAAG,IAASA,IAAIG,EAAE4B,QAAQ/B,GAAGC,GAAG,KAAKD,EAAE,CAACA,GAAGG,EAAEsD,QAAQzD,GAAE,SAASA,GAAGG,EAAEyC,OAAO5C,GAAGA,EAAEA,EAAE4P,cAAczP,EAAEuC,SAAS1C,KAAKA,EAAEkE,KAAKC,UAAUnE,IAAI4B,EAAE2K,KAAKlM,EAAEJ,GAAG,IAAII,EAAEL,GAAG,IAAG,IAAGM,EAAEsB,EAAEiO,KAAK,IAAI,CAAC,OAAOvP,IAAIN,KAAK,IAAIA,EAAEwG,QAAQ,KAAK,IAAI,KAAKlG,GAAGN,CAAC,CAAC,EAAE,SAASA,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGG,EAAE,CAAC,MAAM,gBAAgB,iBAAiB,eAAe,OAAO,UAAU,OAAO,OAAO,oBAAoB,sBAAsB,gBAAgB,WAAW,eAAe,sBAAsB,UAAU,cAAc,cAAcL,EAAEI,QAAQ,SAASJ,GAAG,IAAIC,EAAEC,EAAEI,EAAEsB,EAAE,CAAC,EAAE,OAAO5B,GAAGG,EAAEsD,QAAQzD,EAAE8P,MAAM,OAAM,SAAS9P,GAAG,GAAGM,EAAEN,EAAEwG,QAAQ,KAAKvG,EAAEE,EAAE0D,KAAK7D,EAAE+P,OAAO,EAAEzP,IAAI+G,cAAcnH,EAAEC,EAAE0D,KAAK7D,EAAE+P,OAAOzP,EAAE,IAAIL,EAAE,CAAC,GAAG2B,EAAE3B,IAAII,EAAEmG,QAAQvG,IAAI,EAAE,OAAO2B,EAAE3B,GAAG,eAAeA,GAAG2B,EAAE3B,GAAG2B,EAAE3B,GAAG,IAAIwM,OAAO,CAACvM,IAAI0B,EAAE3B,GAAG2B,EAAE3B,GAAG,KAAKC,EAAEA,CAAC,CAAC,IAAG0B,GAAGA,CAAC,CAAC,EAAE,SAAS5B,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGF,EAAEI,QAAQD,EAAEiD,uBAAuB,WAAW,IAAIpD,EAAEC,EAAE,kBAAkB+P,KAAK3M,UAAU4M,WAAW/P,EAAEsD,SAAS0M,cAAc,KAAK,SAAS7P,EAAEL,GAAG,IAAIG,EAAEH,EAAE,OAAOC,IAAIC,EAAEiQ,aAAa,OAAOhQ,GAAGA,EAAED,EAAE4I,MAAM5I,EAAEiQ,aAAa,OAAOhQ,GAAG,CAAC2I,KAAK5I,EAAE4I,KAAKsH,SAASlQ,EAAEkQ,SAASlQ,EAAEkQ,SAAStM,QAAQ,KAAK,IAAI,GAAGuM,KAAKnQ,EAAEmQ,KAAKC,OAAOpQ,EAAEoQ,OAAOpQ,EAAEoQ,OAAOxM,QAAQ,MAAM,IAAI,GAAGyM,KAAKrQ,EAAEqQ,KAAKrQ,EAAEqQ,KAAKzM,QAAQ,KAAK,IAAI,GAAG0M,SAAStQ,EAAEsQ,SAASC,KAAKvQ,EAAEuQ,KAAKC,SAAS,MAAMxQ,EAAEwQ,SAASC,OAAO,GAAGzQ,EAAEwQ,SAAS,IAAIxQ,EAAEwQ,SAAS,CAAC,OAAO1Q,EAAEK,EAAEkD,OAAOsF,SAASC,MAAM,SAAS7I,GAAG,IAAIC,EAAEC,EAAEqC,SAASvC,GAAGI,EAAEJ,GAAGA,EAAE,OAAOC,EAAEkQ,WAAWpQ,EAAEoQ,UAAUlQ,EAAEmQ,OAAOrQ,EAAEqQ,IAAI,CAAC,CAAljB,GAAsjB,WAAW,OAAM,CAAE,CAAC,EAAE,SAASrQ,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAE,oEAAoE,SAASE,IAAIyE,KAAKoD,QAAQ,sCAAsC,CAAC7H,EAAEkB,UAAU,IAAIyG,MAAM3H,EAAEkB,UAAUmO,KAAK,EAAErP,EAAEkB,UAAUqP,KAAK,wBAAwB5Q,EAAEI,QAAQ,SAASJ,GAAG,IAAI,IAAIC,EAAEC,EAAEI,EAAEuQ,OAAO7Q,GAAG4B,EAAE,GAAGC,EAAE,EAAEnB,EAAEP,EAAEG,EAAEqQ,OAAO,EAAE9O,KAAKnB,EAAE,IAAImB,EAAE,GAAGD,GAAGlB,EAAEiQ,OAAO,GAAG1Q,GAAG,EAAE4B,EAAE,EAAE,GAAG,CAAC,IAAI3B,EAAEI,EAAEwQ,WAAWjP,GAAG,MAAM,IAAI,MAAM,IAAIxB,EAAEJ,EAAEA,GAAG,EAAEC,CAAC,CAAC,OAAO0B,CAAC,CAAC,EAAE,SAAS5B,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGF,EAAEI,QAAQD,EAAEiD,uBAAuB,CAAC2N,MAAM,SAAS/Q,EAAEC,EAAEC,EAAEG,EAAEC,EAAEsB,GAAG,IAAIC,EAAE,GAAGA,EAAE0K,KAAKvM,EAAE,IAAI2P,mBAAmB1P,IAAIE,EAAEsC,SAASvC,IAAI2B,EAAE0K,KAAK,WAAW,IAAIyE,KAAK9Q,GAAG+Q,eAAe9Q,EAAEqC,SAASnC,IAAIwB,EAAE0K,KAAK,QAAQlM,GAAGF,EAAEqC,SAASlC,IAAIuB,EAAE0K,KAAK,UAAUjM,IAAG,IAAKsB,GAAGC,EAAE0K,KAAK,UAAU/I,SAAS0N,OAAOrP,EAAEgO,KAAK,KAAK,EAAEzI,KAAK,SAASpH,GAAG,IAAIC,EAAEuD,SAAS0N,OAAOC,MAAM,IAAIC,OAAO,aAAapR,EAAE,cAAc,OAAOC,EAAEoR,mBAAmBpR,EAAE,IAAI,IAAI,EAAEqR,OAAO,SAAStR,GAAG8E,KAAKiM,MAAM/Q,EAAE,GAAGgR,KAAKO,MAAM,MAAM,GAAG,CAACR,MAAM,WAAW,EAAE3J,KAAK,WAAW,OAAO,IAAI,EAAEkK,OAAO,WAAW,EAAE,EAAE,SAAStR,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAG,SAASG,IAAIyE,KAAK0M,SAAS,EAAE,CAACnR,EAAEkB,UAAU2L,IAAI,SAASlN,EAAEC,GAAG,OAAO6E,KAAK0M,SAASjF,KAAK,CAACuB,UAAU9N,EAAE+N,SAAS9N,IAAI6E,KAAK0M,SAAS1P,OAAO,CAAC,EAAEzB,EAAEkB,UAAUkQ,MAAM,SAASzR,GAAG8E,KAAK0M,SAASxR,KAAK8E,KAAK0M,SAASxR,GAAG,KAAK,EAAEK,EAAEkB,UAAUkC,QAAQ,SAASzD,GAAGG,EAAEsD,QAAQqB,KAAK0M,UAAS,SAASvR,GAAG,OAAOA,GAAGD,EAAEC,EAAE,GAAE,EAAED,EAAEI,QAAQC,CAAC,EAAE,SAASL,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGG,EAAEH,EAAE,IAAII,EAAEJ,EAAE,GAAG0B,EAAE1B,EAAE,GAAG2B,EAAE3B,EAAE,IAAIQ,EAAER,EAAE,IAAI,SAASwB,EAAE1B,GAAGA,EAAE2H,aAAa3H,EAAE2H,YAAY+J,kBAAkB,CAAC1R,EAAEI,QAAQ,SAASJ,GAAG,OAAO0B,EAAE1B,GAAGA,EAAEgN,UAAUnL,EAAE7B,EAAEwF,OAAOxF,EAAEwF,IAAI9E,EAAEV,EAAEgN,QAAQhN,EAAEwF,MAAMxF,EAAE2E,QAAQ3E,EAAE2E,SAAS,CAAC,EAAE3E,EAAEoF,KAAK/E,EAAEL,EAAEoF,KAAKpF,EAAE2E,QAAQ3E,EAAEiE,kBAAkBjE,EAAE2E,QAAQxE,EAAEuD,MAAM1D,EAAE2E,QAAQC,QAAQ,CAAC,EAAE5E,EAAE2E,QAAQ3E,EAAEiG,SAAS,CAAC,EAAEjG,EAAE2E,SAAS,CAAC,GAAGxE,EAAEsD,QAAQ,CAAC,SAAS,MAAM,OAAO,OAAO,MAAM,QAAQ,WAAU,SAASxD,UAAUD,EAAE2E,QAAQ1E,EAAE,KAAID,EAAE+D,SAASnC,EAAEmC,SAAS/D,GAAG6H,MAAK,SAAS5H,GAAG,OAAOyB,EAAE1B,GAAGC,EAAEmF,KAAK/E,EAAEJ,EAAEmF,KAAKnF,EAAE0E,QAAQ3E,EAAEoE,mBAAmBnE,CAAC,IAAE,SAASA,GAAG,OAAOK,EAAEL,KAAKyB,EAAE1B,GAAGC,GAAGA,EAAE0G,WAAW1G,EAAE0G,SAASvB,KAAK/E,EAAEJ,EAAE0G,SAASvB,KAAKnF,EAAE0G,SAAShC,QAAQ3E,EAAEoE,qBAAqBc,QAAQyM,OAAO1R,EAAE,GAAE,CAAC,EAAE,SAASD,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAGF,EAAEI,QAAQ,SAASJ,EAAEC,EAAEC,GAAG,OAAOC,EAAEsD,QAAQvD,GAAE,SAASA,GAAGF,EAAEE,EAAEF,EAAEC,EAAE,IAAGD,CAAC,CAAC,EAAE,SAASA,EAAEC,EAAEC,GAAG,aAAaF,EAAEI,QAAQ,SAASJ,GAAG,MAAM,gCAAgCgQ,KAAKhQ,EAAE,CAAC,EAAE,SAASA,EAAEC,EAAEC,GAAG,aAAaF,EAAEI,QAAQ,SAASJ,EAAEC,GAAG,OAAOA,EAAED,EAAE8D,QAAQ,OAAO,IAAI,IAAI7D,EAAE6D,QAAQ,OAAO,IAAI9D,CAAC,CAAC,EAAE,SAASA,EAAEC,EAAEC,GAAG,aAAa,IAAIC,EAAED,EAAE,GAAG,SAASG,EAAEL,GAAG,GAAG,mBAAmBA,EAAE,MAAM,IAAIqM,UAAU,gCAAgC,IAAIpM,EAAE6E,KAAK8C,QAAQ,IAAI1C,SAAQ,SAASlF,GAAGC,EAAED,CAAC,IAAG,IAAIE,EAAE4E,KAAK9E,GAAE,SAASA,GAAGE,EAAE0R,SAAS1R,EAAE0R,OAAO,IAAIzR,EAAEH,GAAGC,EAAEC,EAAE0R,QAAQ,GAAE,CAACvR,EAAEkB,UAAUmQ,iBAAiB,WAAW,GAAG5M,KAAK8M,OAAO,MAAM9M,KAAK8M,MAAM,EAAEvR,EAAEwR,OAAO,WAAW,IAAI7R,EAAE,MAAM,CAAC8R,MAAM,IAAIzR,GAAE,SAASJ,GAAGD,EAAEC,CAAC,IAAG8R,OAAO/R,EAAE,EAAEA,EAAEI,QAAQC,CAAC,EAAE,SAASL,EAAEC,EAAEC,GAAG,aAAaF,EAAEI,QAAQ,SAASJ,GAAG,OAAO,SAASC,GAAG,OAAOD,EAAEgF,MAAM,KAAK/E,EAAE,CAAC,CAAC,G,qCCrC1tP,IAAI+R,EAkBAC,ECfAC,EAWJ,SAASC,IACZ,MAAMC,EAAM,IAAIpK,MAAM,qEAEtB,OADAoK,EAAIxB,KAAOsB,EAAiBG,kBACrBD,CACX,CACO,SAASE,IACZ,MAAMF,EAAM,IAAIpK,MAAM,+CAEtB,OADAoK,EAAIxB,KAAOsB,EAAiBK,UACrBH,CACX,C,mFDtBA,SAAWJ,GACPA,EAAW,aAAe,YAC1BA,EAAW,UAAY,SACvBA,EAAW,iBAAmB,gBAC9BA,EAAW,oBAAsB,mBACjCA,EAAW,cAAgB,aAC3BA,EAAW,kBAAoB,iBAC/BA,EAAW,oBAAsB,mBACjCA,EAAW,mBAAqB,kBAChCA,EAAW,mBAAqB,kBAChCA,EAAW,cAAgB,aAC3BA,EAAW,mBAAqB,kBAChCA,EAAW,aAAe,YAC1BA,EAAW,gBAAkB,eAC7BA,EAAW,oBAAsB,mBACjCA,EAAW,sBAAwB,oBACtC,CAhBD,CAgBGA,IAAeA,EAAa,CAAC,IAEhC,SAAWC,GACPA,EAAWA,EAAW,gBAAkB,KAAO,eAC/CA,EAAWA,EAAW,aAAe,KAAO,YAC5CA,EAAWA,EAAW,aAAe,KAAO,YAC5CA,EAAWA,EAAW,UAAY,KAAO,SACzCA,EAAWA,EAAW,oBAAsB,KAAO,mBACnDA,EAAWA,EAAW,qBAAuB,KAAO,mBACvD,CAPD,CAOGA,IAAeA,EAAa,CAAC,ICtBhC,SAAWC,GAIPA,EAAiB,qBAAuB,oBAIxCA,EAAiB,aAAe,iBACnC,CATD,CASGA,IAAqBA,EAAmB,CAAC,I,eCbrC,SAASnP,EAAW7B,GACvB,MAAwB,oBAAVA,CAClB,CCFO,SAASsR,EAAiBC,GAC7B,IAAIC,EAAS,SAAUC,GACnB3K,MAAMxH,KAAKmS,GACXA,EAASC,OAAQ,IAAI5K,OAAQ4K,KACjC,EACIC,EAAWJ,EAAWC,GAG1B,OAFAG,EAAStR,UAAYX,OAAOQ,OAAO4G,MAAMzG,WACzCsR,EAAStR,UAAU8J,YAAcwH,EAC1BA,CACX,CCRO,IAAIC,EAAsBN,GAAiB,SAAUE,GACxD,OAAO,SAAiC9I,GACpC8I,EAAO5N,MACPA,KAAKoD,QAAU0B,EACTA,EAAO9H,OAAS,4CAA8C8H,EAAOmJ,KAAI,SAAUX,EAAK9R,GAAK,OAAOA,EAAI,EAAI,KAAO8R,EAAIzQ,UAAY,IAAGkO,KAAK,QAC3I,GACN/K,KAAK8L,KAAO,sBACZ9L,KAAK8E,OAASA,CAClB,CACJ,ICVO,SAASoJ,EAAUC,EAAKC,GAC3B,GAAID,EAAK,CACL,IAAIE,EAAQF,EAAIzM,QAAQ0M,GACxB,GAAKC,GAASF,EAAIG,OAAOD,EAAO,EACpC,CACJ,CCDA,IAAIE,EAAgB,WAChB,SAASA,EAAaC,GAClBxO,KAAKwO,gBAAkBA,EACvBxO,KAAKyO,QAAS,EACdzO,KAAK0O,WAAa,KAClB1O,KAAK2O,YAAc,IACvB,CAoHA,OAnHAJ,EAAa9R,UAAUmS,YAAc,WACjC,IAAIC,EAAKC,EAAIC,EAAKC,EACdlK,EACJ,IAAK9E,KAAKyO,OAAQ,CACdzO,KAAKyO,QAAS,EACd,IAAIC,EAAa1O,KAAK0O,WACtB,GAAIA,EAEA,GADA1O,KAAK0O,WAAa,KACdzO,MAAMhD,QAAQyR,GACd,IACI,IAAK,IAAIO,GAAe,IAAAC,UAASR,GAAaS,EAAiBF,EAAanI,QAASqI,EAAenI,KAAMmI,EAAiBF,EAAanI,OAAQ,CAC5I,IAAIsI,EAAWD,EAAe/S,MAC9BgT,EAAS5C,OAAOxM,KACpB,CACJ,CACA,MAAOqP,GAASR,EAAM,CAAEnH,MAAO2H,EAAS,CACxC,QACI,IACQF,IAAmBA,EAAenI,OAAS8H,EAAKG,EAAa5H,SAASyH,EAAGpT,KAAKuT,EACtF,CACA,QAAU,GAAIJ,EAAK,MAAMA,EAAInH,KAAO,CACxC,MAGAgH,EAAWlC,OAAOxM,MAG1B,IAAIsP,EAAmBtP,KAAKwO,gBAC5B,GAAIvQ,EAAWqR,GACX,IACIA,GACJ,CACA,MAAOnU,GACH2J,EAAS3J,aAAa6S,EAAsB7S,EAAE2J,OAAS,CAAC3J,EAC5D,CAEJ,IAAIwT,EAAc3O,KAAK2O,YACvB,GAAIA,EAAa,CACb3O,KAAK2O,YAAc,KACnB,IACI,IAAK,IAAIY,GAAgB,IAAAL,UAASP,GAAca,EAAkBD,EAAczI,QAAS0I,EAAgBxI,KAAMwI,EAAkBD,EAAczI,OAAQ,CACnJ,IAAI2I,EAAYD,EAAgBpT,MAChC,IACIsT,EAAcD,EAClB,CACA,MAAOnC,GACHxI,EAAoB,OAAXA,QAA8B,IAAXA,EAAoBA,EAAS,GACrDwI,aAAeU,EACflJ,GAAS,IAAA6K,gBAAc,IAAAA,eAAc,IAAI,IAAAC,QAAO9K,KAAU,IAAA8K,QAAOtC,EAAIxI,SAGrEA,EAAO2C,KAAK6F,EAEpB,CACJ,CACJ,CACA,MAAOuC,GAASd,EAAM,CAAErH,MAAOmI,EAAS,CACxC,QACI,IACQL,IAAoBA,EAAgBxI,OAASgI,EAAKO,EAAclI,SAAS2H,EAAGtT,KAAK6T,EACzF,CACA,QAAU,GAAIR,EAAK,MAAMA,EAAIrH,KAAO,CACxC,CACJ,CACA,GAAI5C,EACA,MAAM,IAAIkJ,EAAoBlJ,EAEtC,CACJ,EACAyJ,EAAa9R,UAAUqT,IAAM,SAAUC,GACnC,IAAIjB,EACJ,GAAIiB,GAAYA,IAAa/P,KACzB,GAAIA,KAAKyO,OACLiB,EAAcK,OAEb,CACD,GAAIA,aAAoBxB,EAAc,CAClC,GAAIwB,EAAStB,QAAUsB,EAASC,WAAWhQ,MACvC,OAEJ+P,EAASE,WAAWjQ,KACxB,EACCA,KAAK2O,YAA0C,QAA3BG,EAAK9O,KAAK2O,mBAAgC,IAAPG,EAAgBA,EAAK,IAAIrH,KAAKsI,EAC1F,CAER,EACAxB,EAAa9R,UAAUuT,WAAa,SAAUE,GAC1C,IAAIxB,EAAa1O,KAAK0O,WACtB,OAAOA,IAAewB,GAAWjQ,MAAMhD,QAAQyR,IAAeA,EAAWyB,SAASD,EACtF,EACA3B,EAAa9R,UAAUwT,WAAa,SAAUC,GAC1C,IAAIxB,EAAa1O,KAAK0O,WACtB1O,KAAK0O,WAAazO,MAAMhD,QAAQyR,IAAeA,EAAWjH,KAAKyI,GAASxB,GAAcA,EAAa,CAACA,EAAYwB,GAAUA,CAC9H,EACA3B,EAAa9R,UAAU2T,cAAgB,SAAUF,GAC7C,IAAIxB,EAAa1O,KAAK0O,WAClBA,IAAewB,EACflQ,KAAK0O,WAAa,KAEbzO,MAAMhD,QAAQyR,IACnBR,EAAUQ,EAAYwB,EAE9B,EACA3B,EAAa9R,UAAU+P,OAAS,SAAUuD,GACtC,IAAIpB,EAAc3O,KAAK2O,YACvBA,GAAeT,EAAUS,EAAaoB,GAClCA,aAAoBxB,GACpBwB,EAASK,cAAcpQ,KAE/B,EACAuO,EAAa8B,MAAQ,WACjB,IAAIC,EAAQ,IAAI/B,EAEhB,OADA+B,EAAM7B,QAAS,EACR6B,CACV,CAJoB,GAKd/B,CACX,CA3HmB,GA6HaA,EAAa8B,MACtC,SAASE,EAAenU,GAC3B,OAAQA,aAAiBmS,GACpBnS,GAAS,WAAYA,GAAS6B,EAAW7B,EAAMoQ,SAAWvO,EAAW7B,EAAM0T,MAAQ7R,EAAW7B,EAAMwS,YAC7G,CACA,SAASc,EAAcD,GACfxR,EAAWwR,GACXA,IAGAA,EAAUb,aAElB,CC7IO,IAAI5M,EAAS,CAChBwO,iBAAkB,KAClBC,sBAAuB,KACvBrQ,aAASsQ,EACTC,uCAAuC,EACvCC,0BAA0B,GCJnBC,EAAkB,CACzB3H,WAAY,SAAU4H,EAAStR,GAE3B,IADA,IAAIuR,EAAO,GACFC,EAAK,EAAGA,EAAKnS,UAAU7B,OAAQgU,IACpCD,EAAKC,EAAK,GAAKnS,UAAUmS,GAE7B,IAAIC,EAAWJ,EAAgBI,SAC/B,OAAiB,OAAbA,QAAkC,IAAbA,OAAsB,EAASA,EAAS/H,YACtD+H,EAAS/H,WAAWhJ,MAAM+Q,GAAU,IAAAtB,eAAc,CAACmB,EAAStR,IAAU,IAAAoQ,QAAOmB,KAEjF7H,WAAWhJ,WAAM,GAAQ,IAAAyP,eAAc,CAACmB,EAAStR,IAAU,IAAAoQ,QAAOmB,IAC7E,EACA5H,aAAc,SAAU+H,GACpB,IAAID,EAAWJ,EAAgBI,SAC/B,QAAsB,OAAbA,QAAkC,IAAbA,OAAsB,EAASA,EAAS9H,eAAiBA,cAAc+H,EACzG,EACAD,cAAUP,GCfP,SAASS,EAAqB7D,GACjCuD,EAAgB3H,YAAW,WACvB,IAAIsH,EAAmBxO,EAAOwO,iBAC9B,IAAIA,EAIA,MAAMlD,EAHNkD,EAAiBlD,EAKzB,GACJ,CCZO,SAAS8D,IAAS,CCAlB,IAAIC,EAAwB,WAAe,OAAOC,EAAmB,SAAKZ,OAAWA,EAAa,CAAtE,GAC5B,SAASa,EAAkB7J,GAC9B,OAAO4J,EAAmB,SAAKZ,EAAWhJ,EAC9C,CACO,SAAS8J,EAAiBpV,GAC7B,OAAOkV,EAAmB,IAAKlV,OAAOsU,EAC1C,CACO,SAASY,EAAmBG,EAAMrV,EAAOsL,GAC5C,MAAO,CACH+J,KAAMA,EACNrV,MAAOA,EACPsL,MAAOA,EAEf,CCZA,IAAIgK,EAAU,KACP,SAASC,EAAaC,GACzB,GAAI5P,EAAO2O,sCAAuC,CAC9C,IAAIkB,GAAUH,EAKd,GAJIG,IACAH,EAAU,CAAEI,aAAa,EAAOpK,MAAO,OAE3CkK,IACIC,EAAQ,CACR,IAAI/C,EAAK4C,EAASI,EAAchD,EAAGgD,YAAapK,EAAQoH,EAAGpH,MAE3D,GADAgK,EAAU,KACNI,EACA,MAAMpK,CAEd,CACJ,MAEIkK,GAER,CACO,SAASG,EAAazE,GACrBtL,EAAO2O,uCAAyCe,IAChDA,EAAQI,aAAc,EACtBJ,EAAQhK,MAAQ4F,EAExB,CCjBA,IAAI0E,EAAc,SAAUpE,GAExB,SAASoE,EAAWC,GAChB,IAAIC,EAAQtE,EAAOlS,KAAKsE,OAASA,KAWjC,OAVAkS,EAAMC,WAAY,EACdF,GACAC,EAAMD,YAAcA,EAChB1B,EAAe0B,IACfA,EAAYnC,IAAIoC,IAIpBA,EAAMD,YAAcG,EAEjBF,CACX,CAwDA,OAtEA,IAAAG,WAAUL,EAAYpE,GAetBoE,EAAW1V,OAAS,SAAUwK,EAAMY,EAAO4K,GACvC,OAAO,IAAIC,EAAezL,EAAMY,EAAO4K,EAC3C,EACAN,EAAWvV,UAAUqK,KAAO,SAAU1K,GAC9B4D,KAAKmS,UACLK,EAA0BhB,EAAiBpV,GAAQ4D,MAGnDA,KAAKyS,MAAMrW,EAEnB,EACA4V,EAAWvV,UAAUiL,MAAQ,SAAU4F,GAC/BtN,KAAKmS,UACLK,EAA0BjB,EAAkBjE,GAAMtN,OAGlDA,KAAKmS,WAAY,EACjBnS,KAAK0S,OAAOpF,GAEpB,EACA0E,EAAWvV,UAAU6V,SAAW,WACxBtS,KAAKmS,UACLK,EAA0BnB,EAAuBrR,OAGjDA,KAAKmS,WAAY,EACjBnS,KAAK2S,YAEb,EACAX,EAAWvV,UAAUmS,YAAc,WAC1B5O,KAAKyO,SACNzO,KAAKmS,WAAY,EACjBvE,EAAOnR,UAAUmS,YAAYlT,KAAKsE,MAClCA,KAAKiS,YAAc,KAE3B,EACAD,EAAWvV,UAAUgW,MAAQ,SAAUrW,GACnC4D,KAAKiS,YAAYnL,KAAK1K,EAC1B,EACA4V,EAAWvV,UAAUiW,OAAS,SAAUpF,GACpC,IACItN,KAAKiS,YAAYvK,MAAM4F,EAC3B,CACA,QACItN,KAAK4O,aACT,CACJ,EACAoD,EAAWvV,UAAUkW,UAAY,WAC7B,IACI3S,KAAKiS,YAAYK,UACrB,CACA,QACItS,KAAK4O,aACT,CACJ,EACOoD,CACX,CAxEiB,CAwEfzD,GAEEqE,EAAQC,SAASpW,UAAUF,KAC/B,SAASA,EAAKuW,EAAIC,GACd,OAAOH,EAAMlX,KAAKoX,EAAIC,EAC1B,CACA,IAAIC,EAAoB,WACpB,SAASA,EAAiBC,GACtBjT,KAAKiT,gBAAkBA,CAC3B,CAqCA,OApCAD,EAAiBvW,UAAUqK,KAAO,SAAU1K,GACxC,IAAI6W,EAAkBjT,KAAKiT,gBAC3B,GAAIA,EAAgBnM,KAChB,IACImM,EAAgBnM,KAAK1K,EACzB,CACA,MAAOsL,GACHwL,EAAqBxL,EACzB,CAER,EACAsL,EAAiBvW,UAAUiL,MAAQ,SAAU4F,GACzC,IAAI2F,EAAkBjT,KAAKiT,gBAC3B,GAAIA,EAAgBvL,MAChB,IACIuL,EAAgBvL,MAAM4F,EAC1B,CACA,MAAO5F,GACHwL,EAAqBxL,EACzB,MAGAwL,EAAqB5F,EAE7B,EACA0F,EAAiBvW,UAAU6V,SAAW,WAClC,IAAIW,EAAkBjT,KAAKiT,gBAC3B,GAAIA,EAAgBX,SAChB,IACIW,EAAgBX,UACpB,CACA,MAAO5K,GACHwL,EAAqBxL,EACzB,CAER,EACOsL,CACX,CAzCuB,GA0CnBT,EAAkB,SAAU3E,GAE5B,SAAS2E,EAAeY,EAAgBzL,EAAO4K,GAC3C,IACIW,EASIG,EAVJlB,EAAQtE,EAAOlS,KAAKsE,OAASA,KAE7B/B,EAAWkV,KAAoBA,EAC/BF,EAAkB,CACdnM,KAA0B,OAAnBqM,QAA8C,IAAnBA,EAA4BA,OAAiBzC,EAC/EhJ,MAAiB,OAAVA,QAA4B,IAAVA,EAAmBA,OAAQgJ,EACpD4B,SAAuB,OAAbA,QAAkC,IAAbA,EAAsBA,OAAW5B,GAKhEwB,GAASlQ,EAAO4O,0BAChBwC,EAAYtX,OAAOQ,OAAO6W,GAC1BC,EAAUxE,YAAc,WAAc,OAAOsD,EAAMtD,aAAe,EAClEqE,EAAkB,CACdnM,KAAMqM,EAAerM,MAAQvK,EAAK4W,EAAerM,KAAMsM,GACvD1L,MAAOyL,EAAezL,OAASnL,EAAK4W,EAAezL,MAAO0L,GAC1Dd,SAAUa,EAAeb,UAAY/V,EAAK4W,EAAeb,SAAUc,KAIvEH,EAAkBE,EAI1B,OADAjB,EAAMD,YAAc,IAAIe,EAAiBC,GAClCf,CACX,CACA,OA7BA,IAAAG,WAAUE,EAAgB3E,GA6BnB2E,CACX,CA/BqB,CA+BnBP,GAEF,SAASkB,EAAqBxL,GACtB1F,EAAO2O,sCACPoB,EAAarK,GAGbyJ,EAAqBzJ,EAE7B,CACA,SAAS2L,EAAoB/F,GACzB,MAAMA,CACV,CACA,SAASkF,EAA0Bc,EAAcC,GAC7C,IAAI9C,EAAwBzO,EAAOyO,sBACnCA,GAAyBI,EAAgB3H,YAAW,WAAc,OAAOuH,EAAsB6C,EAAcC,EAAa,GAC9H,CACO,IAAInB,EAAiB,CACxB3D,QAAQ,EACR3H,KAAMsK,EACN1J,MAAO2L,EACPf,SAAUlB,GCrLHoC,EAAa,WAAe,MAA0B,oBAAXtX,QAAyBA,OAAOsX,YAAe,cAAiB,CAA9F,GCAjB,SAASC,EAASC,GACrB,OAAOA,CACX,CCMO,SAASC,EAAcC,GAC1B,OAAmB,IAAfA,EAAI5W,OACGyW,EAEQ,IAAfG,EAAI5W,OACG4W,EAAI,GAER,SAAeC,GAClB,OAAOD,EAAIE,QAAO,SAAUC,EAAMjB,GAAM,OAAOA,EAAGiB,EAAO,GAAGF,EAChE,CACJ,CCXA,IAAI,EAAc,WACd,SAASG,EAAWC,GACZA,IACAjU,KAAKkU,WAAaD,EAE1B,CA4EA,OA3EAD,EAAWvX,UAAU0X,KAAO,SAAUC,GAClC,IAAIZ,EAAa,IAAIQ,EAGrB,OAFAR,EAAWzG,OAAS/M,KACpBwT,EAAWY,SAAWA,EACfZ,CACX,EACAQ,EAAWvX,UAAUwX,UAAY,SAAUd,EAAgBzL,EAAO4K,GAC9D,IAAIJ,EAAQlS,KACRuT,EAAac,EAAalB,GAAkBA,EAAiB,IAAIZ,EAAeY,EAAgBzL,EAAO4K,GAY3G,OAXAX,GAAa,WACT,IAAI7C,EAAKoD,EAAOkC,EAAWtF,EAAGsF,SAAUrH,EAAS+B,EAAG/B,OACpDwG,EAAWzD,IAAIsE,EAEPA,EAAS1Y,KAAK6X,EAAYxG,GAC5BA,EAEMmF,EAAMgC,WAAWX,GAEjBrB,EAAMoC,cAAcf,GACpC,IACOA,CACX,EACAS,EAAWvX,UAAU6X,cAAgB,SAAUC,GAC3C,IACI,OAAOvU,KAAKkU,WAAWK,EAC3B,CACA,MAAOjH,GACHiH,EAAK7M,MAAM4F,EACf,CACJ,EACA0G,EAAWvX,UAAUkC,QAAU,SAAUmI,EAAM0N,GAC3C,IAAItC,EAAQlS,KAEZ,OADAwU,EAAcC,EAAeD,GACtB,IAAIA,GAAY,SAAU3M,EAASgF,GACtC,IAAI0G,EAAa,IAAIhB,EAAe,CAChCzL,KAAM,SAAU1K,GACZ,IACI0K,EAAK1K,EACT,CACA,MAAOkR,GACHT,EAAOS,GACPiG,EAAW3E,aACf,CACJ,EACAlH,MAAOmF,EACPyF,SAAUzK,IAEdqK,EAAM+B,UAAUV,EACpB,GACJ,EACAS,EAAWvX,UAAUyX,WAAa,SAAUX,GACxC,IAAIzE,EACJ,OAA8B,QAAtBA,EAAK9O,KAAK+M,cAA2B,IAAP+B,OAAgB,EAASA,EAAGmF,UAAUV,EAChF,EACAS,EAAWvX,UAAU,GAAqB,WACtC,OAAOuD,IACX,EACAgU,EAAWvX,UAAU0B,KAAO,WAExB,IADA,IAAIuW,EAAa,GACR1D,EAAK,EAAGA,EAAKnS,UAAU7B,OAAQgU,IACpC0D,EAAW1D,GAAMnS,UAAUmS,GAE/B,OAAO2C,EAAce,EAAdf,CAA0B3T,KACrC,EACAgU,EAAWvX,UAAUkY,UAAY,SAAUH,GACvC,IAAItC,EAAQlS,KAEZ,OADAwU,EAAcC,EAAeD,GACtB,IAAIA,GAAY,SAAU3M,EAASgF,GACtC,IAAIzQ,EACJ8V,EAAM+B,WAAU,SAAUP,GAAK,OAAQtX,EAAQsX,CAAI,IAAG,SAAUpG,GAAO,OAAOT,EAAOS,EAAM,IAAG,WAAc,OAAOzF,EAAQzL,EAAQ,GACvI,GACJ,EACA4X,EAAW1X,OAAS,SAAU2X,GAC1B,OAAO,IAAID,EAAWC,EAC1B,EACOD,CACX,CAlFiB,GAoFjB,SAASS,EAAeD,GACpB,IAAI1F,EACJ,OAAgG,QAAxFA,EAAqB,OAAhB0F,QAAwC,IAAhBA,EAAyBA,EAAcxS,EAAO5B,eAA4B,IAAP0O,EAAgBA,EAAK1O,OACjI,CACA,SAASwU,EAAWxY,GAChB,OAAOA,GAAS6B,EAAW7B,EAAM0K,OAAS7I,EAAW7B,EAAMsL,QAAUzJ,EAAW7B,EAAMkW,SAC1F,CACA,SAAS+B,EAAajY,GAClB,OAAQA,GAASA,aAAiB4V,GAAgB4C,EAAWxY,IAAUmU,EAAenU,EAC1F,CCpGO,IAAIyY,EAAc,SAAWnB,GAAK,OAAOA,GAAyB,kBAAbA,EAAE1W,QAAoC,oBAAN0W,CAAmB,ECCxG,SAASoB,EAAU1Y,GACtB,OAAO6B,EAAqB,OAAV7B,QAA4B,IAAVA,OAAmB,EAASA,EAAM2G,KAC1E,CCDO,SAASgS,EAAoBlB,GAChC,OAAO5V,EAAW4V,EAAM,GAC5B,CCHO,SAASmB,EAAgBC,GAC5B,OAAO/Y,OAAO0L,eAAiB3J,EAAmB,OAARgX,QAAwB,IAARA,OAAiB,EAASA,EAAI/Y,OAAO0L,eACnG,CCHO,SAASsN,EAAiCrB,GAC7C,OAAO,IAAItM,UAAU,iBAA6B,OAAVsM,GAAmC,kBAAVA,EAAqB,oBAAsB,IAAMA,EAAQ,KAAO,2HACrI,CCFO,SAASsB,IACZ,MAAsB,oBAAXjZ,QAA0BA,OAAOoL,SAGrCpL,OAAOoL,SAFH,YAGf,CACO,IAAIA,EAAW6N,ICJf,SAASC,EAAWvB,GACvB,OAAO5V,EAAqB,OAAV4V,QAA4B,IAAVA,OAAmB,EAASA,EAAM,GAC1E,CCFO,SAASwB,EAAmCC,GAC/C,OAAO,IAAAC,kBAAiBvV,KAAMnB,WAAW,WACrC,IAAI2W,EAAQ1G,EAAI1S,EAAO4K,EACvB,OAAO,IAAA3C,aAAYrE,MAAM,SAAUgP,GAC/B,OAAQA,EAAG/H,OACP,KAAK,EACDuO,EAASF,EAAeG,YACxBzG,EAAG/H,MAAQ,EACf,KAAK,EACD+H,EAAG7H,KAAKM,KAAK,CAAC,EAAG,CAAE,EAAG,KACtBuH,EAAG/H,MAAQ,EACf,KAAK,EAED,MAAO,CAAC,GAAG,IAAAyO,SAAQF,EAAOlT,SAC9B,KAAK,EAED,OADAwM,EAAKE,EAAG9H,OAAQ9K,EAAQ0S,EAAG1S,MAAO4K,EAAO8H,EAAG9H,KACvCA,EACE,CAAC,GAAG,IAAA0O,cAAQ,IADD,CAAC,EAAG,GAE1B,KAAK,EAAG,MAAO,CAAC,EAAG1G,EAAG9H,QACtB,KAAK,EAAG,MAAO,CAAC,GAAG,IAAAwO,SAAQtZ,IAC3B,KAAK,EAAG,MAAO,CAAC,EAAG4S,EAAG9H,QACtB,KAAK,EAED,OADA8H,EAAG9H,OACI,CAAC,EAAG,GACf,KAAK,EAAG,MAAO,CAAC,EAAG,IACnB,KAAK,EAED,OADAsO,EAAOG,cACA,CAAC,GACZ,KAAK,GAAI,MAAO,CAAC,GAEzB,GACJ,GACJ,CACO,SAASC,EAAqBX,GACjC,OAAOhX,EAAmB,OAARgX,QAAwB,IAARA,OAAiB,EAASA,EAAIQ,UACpE,CCzBO,SAASI,EAAUhC,GACtB,GAAIA,aAAiB,EACjB,OAAOA,EAEX,GAAa,MAATA,EAAe,CACf,GAAIkB,EAAoBlB,GACpB,OAAOiC,GAAsBjC,GAEjC,GAAIgB,EAAYhB,GACZ,OAAOkC,GAAclC,GAEzB,GAAIiB,EAAUjB,GACV,OAAOmC,GAAYnC,GAEvB,GAAImB,EAAgBnB,GAChB,OAAOoC,GAAkBpC,GAE7B,GAAIuB,EAAWvB,GACX,OAAOqC,GAAarC,GAExB,GAAI+B,EAAqB/B,GACrB,OAAOsC,GAAuBtC,EAEtC,CACA,MAAMqB,EAAiCrB,EAC3C,CACO,SAASiC,GAAsBb,GAClC,OAAO,IAAI,GAAW,SAAU1B,GAC5B,IAAI6C,EAAMnB,EAAI,KACd,GAAIhX,EAAWmY,EAAInC,WACf,OAAOmC,EAAInC,UAAUV,GAEzB,MAAM,IAAIhM,UAAU,iEACxB,GACJ,CACO,SAASwO,GAAczM,GAC1B,OAAO,IAAI,GAAW,SAAUiK,GAC5B,IAAK,IAAI/X,EAAI,EAAGA,EAAI8N,EAAMtM,SAAWuW,EAAW9E,OAAQjT,IACpD+X,EAAWzM,KAAKwC,EAAM9N,IAE1B+X,EAAWjB,UACf,GACJ,CACO,SAAS0D,GAAYlT,GACxB,OAAO,IAAI,GAAW,SAAUyQ,GAC5BzQ,EACKC,MAAK,SAAU3G,GACXmX,EAAW9E,SACZ8E,EAAWzM,KAAK1K,GAChBmX,EAAWjB,WAEnB,IAAG,SAAUhF,GAAO,OAAOiG,EAAW7L,MAAM4F,EAAM,IAC7CvK,KAAK,KAAMoO,EACpB,GACJ,CACO,SAAS+E,GAAaG,GACzB,OAAO,IAAI,GAAW,SAAU9C,GAC5B,IAAI1E,EAAKC,EACT,IACI,IAAK,IAAIwH,GAAa,IAAApH,UAASmH,GAAWE,EAAeD,EAAWxP,QAASyP,EAAavP,KAAMuP,EAAeD,EAAWxP,OAAQ,CAC9H,IAAI1K,EAAQma,EAAana,MAEzB,GADAmX,EAAWzM,KAAK1K,GACZmX,EAAW9E,OACX,MAER,CACJ,CACA,MAAOY,GAASR,EAAM,CAAEnH,MAAO2H,EAAS,CACxC,QACI,IACQkH,IAAiBA,EAAavP,OAAS8H,EAAKwH,EAAWjP,SAASyH,EAAGpT,KAAK4a,EAChF,CACA,QAAU,GAAIzH,EAAK,MAAMA,EAAInH,KAAO,CACxC,CACA6L,EAAWjB,UACf,GACJ,CACO,SAAS2D,GAAkBO,GAC9B,OAAO,IAAI,GAAW,SAAUjD,GAC5BkD,GAAQD,EAAejD,GAAYmD,OAAM,SAAUpJ,GAAO,OAAOiG,EAAW7L,MAAM4F,EAAM,GAC5F,GACJ,CACO,SAAS6I,GAAuBb,GACnC,OAAOW,GAAkBZ,EAAmCC,GAChE,CACA,SAASmB,GAAQD,EAAejD,GAC5B,IAAIoD,EAAiBC,EACjB7H,EAAKD,EACT,OAAO,IAAA1K,WAAUpE,UAAM,OAAQ,GAAQ,WACnC,IAAI5D,EAAOyT,EACX,OAAO,IAAAxL,aAAYrE,MAAM,SAAUgP,GAC/B,OAAQA,EAAG/H,OACP,KAAK,EACD+H,EAAG7H,KAAKM,KAAK,CAAC,EAAG,EAAG,EAAG,KACvBkP,GAAkB,IAAAE,eAAcL,GAChCxH,EAAG/H,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAG0P,EAAgB7P,QACnC,KAAK,EACD,GAAM8P,EAAoB5H,EAAG9H,OAAS0P,EAAkB5P,KAAO,MAAO,CAAC,EAAG,GAG1E,GAFA5K,EAAQwa,EAAkBxa,MAC1BmX,EAAWzM,KAAK1K,GACZmX,EAAW9E,OACX,MAAO,CAAC,GAEZO,EAAG/H,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAG,GACnB,KAAK,EAAG,MAAO,CAAC,EAAG,IACnB,KAAK,EAGD,OAFA4I,EAAQb,EAAG9H,OACX6H,EAAM,CAAErH,MAAOmI,GACR,CAAC,EAAG,IACf,KAAK,EAED,OADAb,EAAG7H,KAAKM,KAAK,CAAC,EAAG,CAAE,EAAG,KAChBmP,IAAsBA,EAAkB5P,OAAS8H,EAAK6H,EAAgBtP,QACrE,CAAC,EAAGyH,EAAGpT,KAAKib,IAD0E,CAAC,EAAG,GAErG,KAAK,EACD3H,EAAG9H,OACH8H,EAAG/H,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAG,IACnB,KAAK,EACD,GAAI8H,EAAK,MAAMA,EAAIrH,MACnB,MAAO,CAAC,GACZ,KAAK,GAAI,MAAO,CAAC,GACjB,KAAK,GAED,OADA6L,EAAWjB,WACJ,CAAC,GAEpB,GACJ,GACJ,CC3IO,SAASwE,GAAMC,GAClB,OAAO,IAAI,GAAW,SAAUxD,GAC5BsC,EAAUkB,KAAqB9C,UAAUV,EAC7C,GACJ,CCLO,IAAIlD,GAAQ,IAAI,GAAW,SAAUkD,GAAc,OAAOA,EAAWjB,UAAY,ICAjF,SAAS0E,GAAQjK,GACpB,OAAO9O,EAAsB,OAAX8O,QAA8B,IAAXA,OAAoB,EAASA,EAAOoH,KAC7E,CACO,SAAS8C,GAAQC,GACpB,OAAO,SAAUnK,GACb,GAAIiK,GAAQjK,GACR,OAAOA,EAAOoH,MAAK,SAAUgD,GACzB,IACI,OAAOD,EAAKC,EAAcnX,KAC9B,CACA,MAAOsN,GACHtN,KAAK0H,MAAM4F,EACf,CACJ,IAEJ,MAAM,IAAI/F,UAAU,yCACxB,CACJ,CChBO,SAAS6P,GAAyBnF,EAAaoF,EAAQC,EAAYC,EAASC,GAC/E,OAAO,IAAIC,GAAmBxF,EAAaoF,EAAQC,EAAYC,EAASC,EAC5E,CACA,IAAIC,GAAsB,SAAU7J,GAEhC,SAAS6J,EAAmBxF,EAAaoF,EAAQC,EAAYC,EAASC,EAAYE,GAC9E,IAAIxF,EAAQtE,EAAOlS,KAAKsE,KAAMiS,IAAgBjS,KAuC9C,OAtCAkS,EAAMsF,WAAaA,EACnBtF,EAAMwF,kBAAoBA,EAC1BxF,EAAMO,MAAQ4E,EACR,SAAUjb,GACR,IACIib,EAAOjb,EACX,CACA,MAAOkR,GACH2E,EAAYvK,MAAM4F,EACtB,CACJ,EACEM,EAAOnR,UAAUgW,MACvBP,EAAMQ,OAAS6E,EACT,SAAUjK,GACR,IACIiK,EAAQjK,EACZ,CACA,MAAOA,GACH2E,EAAYvK,MAAM4F,EACtB,CACA,QACItN,KAAK4O,aACT,CACJ,EACEhB,EAAOnR,UAAUiW,OACvBR,EAAMS,UAAY2E,EACZ,WACE,IACIA,GACJ,CACA,MAAOhK,GACH2E,EAAYvK,MAAM4F,EACtB,CACA,QACItN,KAAK4O,aACT,CACJ,EACEhB,EAAOnR,UAAUkW,UAChBT,CACX,CASA,OAnDA,IAAAG,WAAUoF,EAAoB7J,GA2C9B6J,EAAmBhb,UAAUmS,YAAc,WACvC,IAAIE,EACJ,IAAK9O,KAAK0X,mBAAqB1X,KAAK0X,oBAAqB,CACrD,IAAIC,EAAW3X,KAAKyO,OACpBb,EAAOnR,UAAUmS,YAAYlT,KAAKsE,OACjC2X,IAAwC,QAA1B7I,EAAK9O,KAAKwX,kBAA+B,IAAP1I,GAAyBA,EAAGpT,KAAKsE,MACtF,CACJ,EACOyX,CACX,CArDyB,CAqDvBzF,GCxDE4F,GAAU,SAAUhK,GAEpB,SAASgK,EAAOC,EAAWC,GACvB,OAAOlK,EAAOlS,KAAKsE,OAASA,IAChC,CAKA,OARA,IAAAqS,WAAUuF,EAAQhK,GAIlBgK,EAAOnb,UAAUsb,SAAW,SAAUC,EAAOC,GAEzC,YADc,IAAVA,IAAoBA,EAAQ,GACzBjY,IACX,EACO4X,CACX,CAVa,CAUXrJ,GCXS2J,GAAmB,CAC1B3S,YAAa,SAAUuL,EAAStR,GAE5B,IADA,IAAIuR,EAAO,GACFC,EAAK,EAAGA,EAAKnS,UAAU7B,OAAQgU,IACpCD,EAAKC,EAAK,GAAKnS,UAAUmS,GAE7B,IAAIC,EAAWiH,GAAiBjH,SAChC,OAAiB,OAAbA,QAAkC,IAAbA,OAAsB,EAASA,EAAS1L,aACtD0L,EAAS1L,YAAYrF,MAAM+Q,GAAU,IAAAtB,eAAc,CAACmB,EAAStR,IAAU,IAAAoQ,QAAOmB,KAElFxL,YAAYrF,WAAM,GAAQ,IAAAyP,eAAc,CAACmB,EAAStR,IAAU,IAAAoQ,QAAOmB,IAC9E,EACAtL,cAAe,SAAUyL,GACrB,IAAID,EAAWiH,GAAiBjH,SAChC,QAAsB,OAAbA,QAAkC,IAAbA,OAAsB,EAASA,EAASxL,gBAAkBA,eAAeyL,EAC3G,EACAD,cAAUP,GCbVyH,GAAe,SAAUvK,GAEzB,SAASuK,EAAYN,EAAWC,GAC5B,IAAI5F,EAAQtE,EAAOlS,KAAKsE,KAAM6X,EAAWC,IAAS9X,KAIlD,OAHAkS,EAAM2F,UAAYA,EAClB3F,EAAM4F,KAAOA,EACb5F,EAAMkG,SAAU,EACTlG,CACX,CA0EA,OAjFA,IAAAG,WAAU8F,EAAavK,GAQvBuK,EAAY1b,UAAUsb,SAAW,SAAUC,EAAOC,GAC9C,IAAInJ,EAEJ,QADc,IAAVmJ,IAAoBA,EAAQ,GAC5BjY,KAAKyO,OACL,OAAOzO,KAEXA,KAAKgY,MAAQA,EACb,IAAIK,EAAKrY,KAAKqY,GACVR,EAAY7X,KAAK6X,UAOrB,OANU,MAANQ,IACArY,KAAKqY,GAAKrY,KAAKsY,eAAeT,EAAWQ,EAAIJ,IAEjDjY,KAAKoY,SAAU,EACfpY,KAAKiY,MAAQA,EACbjY,KAAKqY,GAAwB,QAAlBvJ,EAAK9O,KAAKqY,UAAuB,IAAPvJ,EAAgBA,EAAK9O,KAAKuY,eAAeV,EAAW7X,KAAKqY,GAAIJ,GAC3FjY,IACX,EACAmY,EAAY1b,UAAU8b,eAAiB,SAAUV,EAAWW,EAAKP,GAE7D,YADc,IAAVA,IAAoBA,EAAQ,GACzBC,GAAiB3S,YAAYsS,EAAUY,MAAMlc,KAAKsb,EAAW7X,MAAOiY,EAC/E,EACAE,EAAY1b,UAAU6b,eAAiB,SAAUI,EAAYL,EAAIJ,GAE7D,QADc,IAAVA,IAAoBA,EAAQ,GACnB,MAATA,GAAiBjY,KAAKiY,QAAUA,IAA0B,IAAjBjY,KAAKoY,QAC9C,OAAOC,EAED,MAANA,GACAH,GAAiBzS,cAAc4S,EAGvC,EACAF,EAAY1b,UAAUkc,QAAU,SAAUX,EAAOC,GAC7C,GAAIjY,KAAKyO,OACL,OAAO,IAAIvL,MAAM,gCAErBlD,KAAKoY,SAAU,EACf,IAAI1Q,EAAQ1H,KAAK4Y,SAASZ,EAAOC,GACjC,GAAIvQ,EACA,OAAOA,GAEe,IAAjB1H,KAAKoY,SAAgC,MAAXpY,KAAKqY,KACpCrY,KAAKqY,GAAKrY,KAAKsY,eAAetY,KAAK6X,UAAW7X,KAAKqY,GAAI,MAE/D,EACAF,EAAY1b,UAAUmc,SAAW,SAAUZ,EAAOa,GAC9C,IACIC,EADAC,GAAU,EAEd,IACI/Y,KAAK8X,KAAKE,EACd,CACA,MAAO7c,GACH4d,GAAU,EACVD,EAAa3d,GAAQ,IAAI+H,MAAM,qCACnC,CACA,GAAI6V,EAEA,OADA/Y,KAAK4O,cACEkK,CAEf,EACAX,EAAY1b,UAAUmS,YAAc,WAChC,IAAK5O,KAAKyO,OAAQ,CACd,IAAIK,EAAK9O,KAAMqY,EAAKvJ,EAAGuJ,GAAIR,EAAY/I,EAAG+I,UACtCmB,EAAUnB,EAAUmB,QACxBhZ,KAAK8X,KAAO9X,KAAKgY,MAAQhY,KAAK6X,UAAY,KAC1C7X,KAAKoY,SAAU,EACflK,EAAU8K,EAAShZ,MACT,MAANqY,IACArY,KAAKqY,GAAKrY,KAAKsY,eAAeT,EAAWQ,EAAI,OAEjDrY,KAAKiY,MAAQ,KACbrK,EAAOnR,UAAUmS,YAAYlT,KAAKsE,KACtC,CACJ,EACOmY,CACX,CAnFkB,CAmFhBP,ICvFSqB,GAAwB,CAC/BxM,IAAK,WACD,OAAQwM,GAAsBhI,UAAY/E,MAAMO,KACpD,EACAwE,cAAUP,GCHVwI,GAAa,WACb,SAASA,EAAUC,EAAqB1M,QACxB,IAARA,IAAkBA,EAAMyM,EAAUzM,KACtCzM,KAAKmZ,oBAAsBA,EAC3BnZ,KAAKyM,IAAMA,CACf,CAMA,OALAyM,EAAUzc,UAAUsb,SAAW,SAAUD,EAAMG,EAAOD,GAElD,YADc,IAAVC,IAAoBA,EAAQ,GACzB,IAAIjY,KAAKmZ,oBAAoBnZ,KAAM8X,GAAMC,SAASC,EAAOC,EACpE,EACAiB,EAAUzM,IAAMwM,GAAsBxM,IAC/ByM,CACX,CAZgB,GCCZE,GAAkB,SAAUxL,GAE5B,SAASwL,EAAeC,EAAiB5M,QACzB,IAARA,IAAkBA,EAAMyM,GAAUzM,KACtC,IAAIyF,EAAQtE,EAAOlS,KAAKsE,KAAMqZ,EAAiB5M,IAAQzM,KAGvD,OAFAkS,EAAM8G,QAAU,GAChB9G,EAAMoH,SAAU,EACTpH,CACX,CAsBA,OA7BA,IAAAG,WAAU+G,EAAgBxL,GAQ1BwL,EAAe3c,UAAUgc,MAAQ,SAAUc,GACvC,IAAIP,EAAUhZ,KAAKgZ,QACnB,GAAIhZ,KAAKsZ,QACLN,EAAQvR,KAAK8R,OADjB,CAIA,IAAI7R,EACJ1H,KAAKsZ,SAAU,EACf,GACI,GAAK5R,EAAQ6R,EAAOZ,QAAQY,EAAOvB,MAAOuB,EAAOtB,OAC7C,YAEEsB,EAASP,EAAQlR,SAE3B,GADA9H,KAAKsZ,SAAU,EACX5R,EAAO,CACP,MAAQ6R,EAASP,EAAQlR,QACrByR,EAAO3K,cAEX,MAAMlH,CACV,CAdA,CAeJ,EACO0R,CACX,CA/BqB,CA+BnBF,IC/BSM,GAAiB,IAAIJ,GAAejB,IACpC,GAAQqB,GCFZ,SAASC,GAAYrd,GACxB,OAAOA,GAAS6B,EAAW7B,EAAM2b,SACrC,CCHO,SAAS2B,GAAYtd,GACxB,OAAOA,aAAiB8P,OAASyN,MAAMvd,EAC3C,CCEO,SAASwd,GAAMC,EAASC,EAAqBjC,QAChC,IAAZgC,IAAsBA,EAAU,QAClB,IAAdhC,IAAwBA,EAAY,IACxC,IAAIkC,GAAoB,EASxB,OAR2B,MAAvBD,IACIL,GAAYK,GACZjC,EAAYiC,EAGZC,EAAmBD,GAGpB,IAAI,GAAW,SAAUvG,GAC5B,IAAIyG,EAAMN,GAAYG,IAAYA,EAAUhC,EAAUpL,MAAQoN,EAC1DG,EAAM,IACNA,EAAM,GAEV,IAAI5e,EAAI,EACR,OAAOyc,EAAUE,UAAS,WACjBxE,EAAW9E,SACZ8E,EAAWzM,KAAK1L,KACZ,GAAK2e,EACL/Z,KAAK+X,cAASrH,EAAWqJ,GAGzBxG,EAAWjB,WAGvB,GAAG0H,EACP,GACJ,CC7BO,SAASC,GAAOC,GACnB,IAAIpL,EAEAmJ,EADAkC,EAAQC,IAUZ,OARqB,MAAjBF,IAC6B,kBAAlBA,GACNpL,EAAKoL,EAAcC,MAAOA,OAAe,IAAPrL,EAAgBsL,IAAWtL,EAAImJ,EAAQiC,EAAcjC,OAGxFkC,EAAQD,GAGTC,GAAS,EACV,WAAc,OAAO9J,EAAO,EAC5B4G,IAAQ,SAAUlK,EAAQwG,GACxB,IACI8G,EADAC,EAAQ,EAERC,EAAc,WAGd,GAFc,OAAdF,QAAoC,IAAdA,GAAgCA,EAAUzL,cAChEyL,EAAY,KACC,MAATpC,EAAe,CACf,IAAIuC,EAA4B,kBAAVvC,EAAqB2B,GAAM3B,GAASpC,EAAUoC,EAAMqC,IACtEG,EAAuBrD,GAAyB7D,GAAY,WAC5DkH,EAAqB7L,cACrB8L,GACJ,IACAF,EAASvG,UAAUwG,EACvB,MAEIC,GAER,EACIA,EAAoB,WACpB,IAAIC,GAAY,EAChBN,EAAYtN,EAAOkH,UAAUmD,GAAyB7D,OAAY7C,GAAW,aACnE4J,EAAQH,EACNE,EACAE,IAGAI,GAAY,EAIhBpH,EAAWjB,UAEnB,KACIqI,GACAJ,GAER,EACAG,GACJ,GACR,CCxDO,SAASE,GAAUC,EAAWC,GAEjC,YADkB,IAAdA,IAAwBA,GAAY,GACjC7D,IAAQ,SAAUlK,EAAQwG,GAC7B,IAAIlF,EAAQ,EACZtB,EAAOkH,UAAUmD,GAAyB7D,GAAY,SAAUnX,GAC5D,IAAI4J,EAAS6U,EAAUze,EAAOiS,MAC7BrI,GAAU8U,IAAcvH,EAAWzM,KAAK1K,IACxC4J,GAAUuN,EAAWjB,UAC1B,IACJ,GACJ,CCXO,IAAIyI,GAAarN,GAAiB,SAAUE,GAAU,OAAO,WAChEA,EAAO5N,MACPA,KAAK8L,KAAO,aACZ9L,KAAKoD,QAAU,yBACnB,CAAG,ICHI,SAAS4X,GAAOH,EAAW9H,GAC9B,OAAOkE,IAAQ,SAAUlK,EAAQwG,GAC7B,IAAIlF,EAAQ,EACZtB,EAAOkH,UAAUmD,GAAyB7D,GAAY,SAAUnX,GAAS,OAAOye,EAAUnf,KAAKqX,EAAS3W,EAAOiS,MAAYkF,EAAWzM,KAAK1K,EAAQ,IACvJ,GACJ,CCJO,SAAS6e,GAAKd,GACjB,OAAOA,GAAS,EAER,WAAc,OAAO9J,EAAO,EAC9B4G,IAAQ,SAAUlK,EAAQwG,GACxB,IAAI2H,EAAO,EACXnO,EAAOkH,UAAUmD,GAAyB7D,GAAY,SAAUnX,KACtD8e,GAAQf,IACV5G,EAAWzM,KAAK1K,GACZ+d,GAASe,GACT3H,EAAWjB,WAGvB,IACJ,GACR,CChBO,SAAS6I,GAAeC,GAC3B,OAAOnE,IAAQ,SAAUlK,EAAQwG,GAC7B,IAAI8H,GAAW,EACftO,EAAOkH,UAAUmD,GAAyB7D,GAAY,SAAUnX,GAC5Dif,GAAW,EACX9H,EAAWzM,KAAK1K,EACpB,IAAG,WACMif,GACD9H,EAAWzM,KAAKsU,GAEpB7H,EAAWjB,UACf,IACJ,GACJ,CCZO,SAASgJ,GAAaC,GAEzB,YADqB,IAAjBA,IAA2BA,EAAeC,IACvCvE,IAAQ,SAAUlK,EAAQwG,GAC7B,IAAI8H,GAAW,EACftO,EAAOkH,UAAUmD,GAAyB7D,GAAY,SAAUnX,GAC5Dif,GAAW,EACX9H,EAAWzM,KAAK1K,EACpB,IAAG,WAAc,OAAQif,EAAW9H,EAAWjB,WAAaiB,EAAW7L,MAAM6T,IAAkB,IACnG,GACJ,CACA,SAASC,KACL,OAAO,IAAIT,EACf,CCTO,SAASU,GAAMZ,EAAWO,GAC7B,IAAIM,EAAkB7c,UAAU7B,QAAU,EAC1C,OAAO,SAAU+P,GACb,OAAOA,EAAO5O,KAAK0c,EAAYG,IAAO,SAAUla,EAAGtF,GAAK,OAAOqf,EAAU/Z,EAAGtF,EAAGuR,EAAS,IAAK0G,EAAUwH,GAAK,GAAIS,EAAkBP,GAAeC,GAAgBE,IAAa,WAAc,OAAO,IAAIP,EAAc,IACzN,CACJ,CCXO,MAAMY,GAAoB,qBACpBC,GAAqB,sBACrBC,GAAoB,qBAC1B,IAAIC,IACX,SAAWA,GACPA,EAAc,WAAa,UAC3BA,EAAc,WAAa,SAC9B,EAHD,CAGGA,KAAkBA,GAAgB,CAAC,ICG/B,MAAMC,GACT,WAAAxV,GAEIvG,KAAKgc,cAAgB,KACrBtd,SAASgE,iBAAiBiZ,IAAmBM,UACzCjc,KAAKgc,qBAAuBhc,KAAKkc,sBAAsBC,iBAAiB,IAE5Ezd,SAASgE,iBAAiBkZ,IAAoBK,UAC1C,IAAInN,EAC8B,QAAjCA,EAAK9O,KAAKoc,yBAAsC,IAAPtN,GAAyBA,EAAGpT,KAAKsE,KAAK,IAEpFtB,SAASgE,iBAAiBmZ,IAAmBI,UACzC,IAAInN,EAC4B,QAA/BA,EAAK9O,KAAKqc,uBAAoC,IAAPvN,GAAyBA,EAAGpT,KAAKsE,KAAK,GAEtF,CAEA,cAAAsc,GACI,OAAOxF,IAAM,IAAM,IAAI1W,SAASyH,GAAYA,EAAQpJ,OAAO8d,kBAAgBpe,KAAK8b,GAAO,CAAEE,MAAO,GAAIlC,MAAO,MAAQ2C,IAAUxe,IAAUA,IAAO,GAAOqf,IAAMrf,KAAWA,QAAOsU,GACjL,CAEA,wBAAMwL,GACF,MAAMM,EAAqB/d,OAAO8d,aAClC,OAAIC,GAGG,IAAIpc,SAAQ,CAACyH,EAASgF,KACzB7M,KAAKsc,iBAAiBrI,WAAUwI,IACvBA,EAKL5U,EAAQ4U,GAHJ5P,EAAOQ,IAGU,GACvB,GAEV,CAIA,gBAAAqP,CAAiBC,GACb3c,KAAKoc,kBAAoBO,CAC7B,CAIA,cAAAC,CAAeD,GACX3c,KAAKqc,gBAAkBM,CAC3B,CAIA,UAAAE,GACI,IAAI/N,EACJ,OAAsC,QAA7BA,EAAK9O,KAAKgc,qBAAkC,IAAPlN,OAAgB,EAASA,EAAG+N,eAAiB,CAAC,CAChG,CAIA,gBAAAC,GACI,IAAIhO,EACJ,OAAsC,QAA7BA,EAAK9O,KAAKgc,qBAAkC,IAAPlN,OAAgB,EAASA,EAAGgO,qBAAuB,EACrG,CASA,mBAAMC,CAAc1b,GAGhBrB,KAAKgc,0BAA6Bhc,KAAKkc,sBAAsBa,cAAyB,OAAX1b,QAA8B,IAAXA,OAAoB,EAASA,EAAO2b,QAAoB,OAAX3b,QAA8B,IAAXA,OAAoB,EAASA,EAAO4b,SACtM,CAIA,iBAAMC,GACF,aAAcld,KAAKkc,sBAAsBgB,aAC7C,CAIA,sBAAMC,GACF,MAAMC,SAAgBpd,KAAKkc,sBAAsBC,kBAEjD,GADAnc,KAAKgc,cAAgBoB,EACP,MAAVA,EACA,MAAM5P,IAEV,OAAOxN,KAAKgc,aAChB,CAKA,UAAMqB,CAAKC,GACP,aAActd,KAAKmd,oBAAoBE,KAAKC,EAChD,CAMA,qBAAM/Y,CAAgBgZ,GAClB,aAAcvd,KAAKmd,oBAAoB5Y,gBAAgBgZ,EAC3D,CACA,UAAM7hB,CAAKuG,GACP,aAAcjC,KAAKmd,oBAAoBzhB,KAAKuG,EAChD,CAUA,sBAAMub,CAAiBD,GACnB,aAAcvd,KAAKmd,oBAAoBK,iBAAiBD,EAC5D,CAKA,yBAAME,CAAoBF,GACtB,aAAcvd,KAAKmd,oBAAoBM,oBAAoBF,EAC/D,CAIA,WAAAG,GACI,IAAI5O,EACJ,OAAsC,QAA7BA,EAAK9O,KAAKgc,qBAAkC,IAAPlN,OAAgB,EAASA,EAAG4O,gBAAkB,IAChG,CAIA,YAAAC,GACI,IAAK3d,KAAKgc,cACN,MAAMxO,IAEV,OAAOxN,KAAKgc,cAAc2B,cAC9B,CAIA,uBAAMC,GACF,aAAc5d,KAAKmd,oBAAoBS,mBAC3C,CAIA,oBAAMC,GACF,aAAc7d,KAAKmd,oBAAoBU,gBAC3C,CAIA,uBAAMC,GACF,aAAc9d,KAAKmd,oBAAoBW,mBAC3C,E,qCC5KJhiB,OAAOC,eAAeT,EAAS,aAAc,CAAEc,OAAO,IACtDd,EAAQyiB,iBAAc,EACtB,MAAMC,EAAoC,EAAQ,OAClD,MAAMD,UAAoBC,EAAkCC,SACxD,WAAA1X,CAAYnD,EAAS4B,EAAMkZ,GACvBC,MAAM/a,EAAS4B,EAAMkZ,EAAO,MAChC,EAEJ5iB,EAAQyiB,YAAcA,C,qCCRtBjiB,OAAOC,eAAeT,EAAS,aAAc,CAAEc,OAAO,IACtDd,EAAQ8iB,SAAM,EACd,MAAMJ,EAAoC,EAAQ,OAC5CK,EAAS,EAAQ,OACjBC,EAAS,EAAQ,OACjBC,EAAY,EAAQ,OACpBC,EAAY,EAAQ,OACpBC,EAAgB,EAAQ,OAC9B,MAAML,UAAYJ,EAAkCU,cAChD,WAAAnY,CAAYoY,EAAQC,GAChBT,MAAMQ,EAAQC,GACd5e,KAAK6e,MAAQ,GACb7e,KAAK8e,WAAY,EACjB9e,KAAK+e,UAAYH,GAAWA,EAAQG,UACpC/e,KAAKgf,mBAAqBJ,GAAWA,EAAQI,mBAC7Chf,KAAKif,cAAgBL,GAAWA,EAAQK,cACxCjf,KAAKkf,kBAAoBN,GAAWA,EAAQM,iBAChD,CAIA,UAAMhI,GACFlX,KAAKmf,YACL,IACI,GAAInf,KAAKof,IACL,SAAUpf,KAAKof,IAAIC,uBACfrf,KAAKsf,mBAEJ,CACD,MAAMhf,EAAOlB,KAAKG,MAAMggB,aAAaC,QAAQ,sBAAwB,QACjElf,GAAQA,EAAKmf,QAAUvT,KAAKO,OAC5BzM,KAAKsf,aAAahf,EAAKof,YAAapf,EAAKqf,SAAmB,OAATrf,QAA0B,IAATA,OAAkB,EAASA,EAAKsf,UAAW,EAEvH,CAER,CACA,MAAOzkB,GACH0kB,QAAQC,IAAI,2BAA4B3kB,EAC5C,CACA6E,KAAK8e,WAAY,EACjBe,QAAQC,IAAI,gBAChB,CAIA,KAAAC,GACI/f,KAAKof,SAAM1O,EACX1Q,KAAK6e,MAAQ,GACb7e,KAAK8e,WAAY,EACjB9e,KAAKggB,aAAUtP,CACnB,CAIA,SAAAuP,GACI,OAAO,CACX,CAKA,iBAAAC,GACI,MAAO,4BACX,CAIA,QAAAC,GACI,OAAO,IACX,CAIA,SAAAC,GACI,OAAQpgB,KAAK8e,SACjB,CAIA,QAAAuB,GACI,MAAO,CACHC,KAAM9B,EAAU+B,QAChBC,KAAM,mBACNC,UAAW,QACXC,WAAY,UAEpB,CAKA,YAAAC,GACI,OAAO,CACX,CAMA,eAAAC,GACI,OAAO,CACX,CAKA,8BAAMC,GACF,OAAO,CACX,CAOA,qBAAAC,GACI,OAAO,KACX,CAIA,WAAMC,GAIF,GAHAlB,QAAQC,IAAI,4BAGR9f,KAAK2e,OAAO3hB,OAAS,EACrB,MAAM,IAAIyhB,EAAcV,YAAY,+CAAgDM,EAAO2C,aAAaC,YAAa,MAEzH,IAAKjhB,KAAKof,IACN,MAAM,IAAIX,EAAcV,YAAY,uCAAwCM,EAAO2C,aAAaE,eAAgB,MAEpH,IAKI,GAJKlhB,KAAKggB,gBACAhgB,KAAKof,IAAI2B,QACf/gB,KAAKsf,iBAEJtf,KAAKggB,QACN,MAAM,IAAI9c,MAAM,uCAIpB,OAFAlD,KAAK6e,MAAQ,CAAC,IAAIN,EAAU4C,QAAQnhB,KAAK2e,OAAO,GAAI3e,KAAKggB,QAAQN,YAAa1f,KAAKggB,QAAQL,QAAS3f,KAAKggB,QAAQJ,OAAQ5f,KAAKof,MAC9HS,QAAQC,IAAI,iBAAkB9f,KAAK6e,OAC5B7e,KAAK6e,KAChB,CACA,MAAO1jB,GACH,MAAM,IAAIsjB,EAAcV,YAAY5iB,EAAEiI,QAAUjI,EAAEiI,QAAU,0CAA2Cib,EAAO2C,aAAaI,MAAOjmB,EACtI,CACJ,CAIA,YAAMkmB,GACFrhB,KAAKmf,YACLnf,KAAK6e,MAAQ,GACb7e,KAAKggB,aAAUtP,EACf6O,aAAa+B,QAAQ,oBAAqB,QAC1CzB,QAAQC,IAAI,kBAChB,CAIA,0BAAAyB,GACI,OAAO,CACX,CAIA,OAAAC,GACI,MAAO,KACX,CACA,YAAAlC,CAAaI,EAAaC,EAASC,GAC/B,IAAK5f,KAAKof,IACN,OAEJ,MAAM2B,EAAQ,CAEVrB,YAAaA,GAAe1f,KAAKof,IAAIM,YAErCC,QAASA,GAAW3f,KAAKof,IAAIO,QAE7BC,OAAQA,GAAU5f,KAAKof,IAAIQ,SAAU,EACrCH,OAAQvT,KAAKO,MAAuC,IAA/BzM,KAAK8gB,yBAEzBC,EAAMrB,aAAgBqB,EAAMpB,UAGjCJ,aAAa+B,QAAQ,oBAAqBliB,KAAKC,UAAU0hB,IACzD/gB,KAAKggB,QAAUe,EACnB,CACA,SAAA5B,GACInf,KAAKof,IAAM,IAAId,EAAOmD,MAAM,CACxBC,YAAa1hB,KAAK2hB,cAClBC,cAAc,EACd7C,UAAW/e,KAAK+e,UAChBC,mBAAoBhf,KAAKgf,qBAAsB,EAC/CC,cAAejf,KAAKif,cACpBC,kBAAmBlf,KAAKkf,mBAEhC,CACA,WAAAyC,GACI,MAAO,GAAG3hB,KAAK2e,OAAO,GAAGkD,aAAa,GAAGvW,cAActL,KAAK2e,OAAO,GAAGkD,aAAa,GAAGtW,QAAQvL,KAAK2e,OAAO,GAAGkD,aAAa,GAAGlW,MACjI,EAEJrQ,EAAQ8iB,IAAMA,C,mCC1MdtiB,OAAOC,eAAeT,EAAS,aAAc,CAAEc,OAAO,IACtDd,EAAQilB,aAAU,EAClBjlB,EAAQilB,QAAU,88F,qCCFlBzkB,OAAOC,eAAeT,EAAS,aAAc,CAAEc,OAAO,IACtDd,EAAQ6lB,aAAU,EAClB,MAAMnD,EAAoC,EAAQ,OAC5CS,EAAgB,EAAQ,OAC9B,MAAM0C,UAAgBnD,EAAkC8D,KACpD,WAAAvb,CAAYpB,EAAOua,EAAaC,EAASC,EAAQR,GAC7CjB,QACAne,KAAK+hB,YAAcrC,EACnB1f,KAAKgiB,kBAAoB,SACzBhiB,KAAK2f,QAAUA,EACf3f,KAAK4f,OAASA,EACd5f,KAAKmF,MAAQA,EACbnF,KAAKof,IAAMA,EAEXpf,KAAKyD,IAAM2b,EAAI3b,IACfzD,KAAKiiB,IAAM7C,EAAI3b,KAAO2b,EAAI3b,IAAIwe,GAClC,CAKA,qBAAM1d,CAAgBgZ,EAAaqB,GAC/B,IACI,MAAMsD,QAAgBliB,KAAKof,IAAI2B,QAC/B,GAAImB,IAAYliB,KAAK+hB,YACjB,MAAM,IAAI7e,MAAM,mDAGhBlD,KAAKyD,IAAMzD,KAAKof,IAAI3b,IACpBzD,KAAKiiB,IAAMjiB,KAAKof,IAAI3b,IAAIwe,IAE5B,MAAME,QAA6BniB,KAAKof,IAAI3b,IAAI2e,SAAS7E,EAAaqB,GACtE,OAAO5e,KAAKqiB,wBAA6C,IAAtBzD,EAAQ0D,UAAqBH,EACpE,CACA,MAAOhnB,GACH,MAAM,IAAIsjB,EAAcV,YAAY5iB,EAAEiI,QAAUjI,EAAEiI,QAAU,6BAA8B4a,EAAkCgD,aAAauB,QAASpnB,EACtJ,CACJ,CACA,mBAAMqnB,GACF,MAAM,IAAI/D,EAAcV,YAAY,4DAA6DC,EAAkCgD,aAAaC,YAAa,KACjK,CACA,wBAAMwB,GACF,MAAM,IAAIhE,EAAcV,YAAY,iEAAkEC,EAAkCgD,aAAaC,YAAa,KACtK,CACA,oBAAMyB,GACF,OAAO1iB,KAAK+hB,WAChB,CACA,gBAAMY,GACF,OAAO3iB,KAAKmF,MAAMyd,OACtB,CACA,aAAMC,GACF,OAAO7iB,KAAK2f,OAChB,CACA,eAAMmD,GACF,OAAO9iB,KAAK4f,MAChB,EAEJtkB,EAAQ6lB,QAAUA,C,oCCzDlB,IAAI4B,EAAmB/iB,MAAQA,KAAK+iB,kBAAqBjnB,OAAOQ,OAAS,SAAUf,EAAGI,EAAGqnB,EAAGC,QAC7EvS,IAAPuS,IAAkBA,EAAKD,GAC3BlnB,OAAOC,eAAeR,EAAG0nB,EAAI,CAAEjnB,YAAY,EAAMC,IAAK,WAAa,OAAON,EAAEqnB,EAAI,GACnF,EAAI,SAAUznB,EAAGI,EAAGqnB,EAAGC,QACTvS,IAAPuS,IAAkBA,EAAKD,GAC3BznB,EAAE0nB,GAAMtnB,EAAEqnB,EACb,GACGE,EAAgBljB,MAAQA,KAAKkjB,cAAiB,SAASvnB,EAAGL,GAC1D,IAAK,IAAIqB,KAAKhB,EAAa,YAANgB,GAAoBrB,EAAQoB,eAAeC,IAAIomB,EAAgBznB,EAASK,EAAGgB,EACpG,EACAb,OAAOC,eAAeT,EAAS,aAAc,CAAEc,OAAO,IACtD8mB,EAAa,EAAQ,OAAU5nB,GAC/B4nB,EAAa,EAAQ,OAAc5nB,E,mCCbnC,SAAW6nB,EAAQ7nB,GACjB,aAGA,SAAS8nB,EAAQC,EAAKC,GACpB,IAAKD,EAAK,MAAM,IAAIngB,MAAMogB,GAAO,mBACnC,CAIA,SAASC,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASlnB,UAAYgnB,EAAUhnB,UAC/B+mB,EAAK/mB,UAAY,IAAIknB,EACrBH,EAAK/mB,UAAU8J,YAAcid,CAC/B,CAIA,SAASI,EAAIC,EAAQC,EAAMC,GACzB,GAAIH,EAAGI,KAAKH,GACV,OAAOA,EAGT7jB,KAAKikB,SAAW,EAChBjkB,KAAKkkB,MAAQ,KACblkB,KAAKhD,OAAS,EAGdgD,KAAKmkB,IAAM,KAEI,OAAXN,IACW,OAATC,GAA0B,OAATA,IACnBC,EAASD,EACTA,EAAO,IAGT9jB,KAAKokB,MAAMP,GAAU,EAAGC,GAAQ,GAAIC,GAAU,MAElD,CAUA,IAAIM,EATkB,kBAAXlB,EACTA,EAAO7nB,QAAUsoB,EAEjBtoB,EAAQsoB,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGU,SAAW,GAGd,IAEID,EADoB,qBAAX5lB,QAAmD,qBAAlBA,OAAO4lB,OACxC5lB,OAAO4lB,OAEP,eAEb,CAAE,MAAOlpB,GACT,CA+HA,SAASopB,EAAeC,EAAQnW,GAC9B,IAAIzS,EAAI4oB,EAAOxY,WAAWqC,GAE1B,OAAIzS,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEXwnB,GAAO,EAAO,wBAA0BoB,EAE5C,CAEA,SAASC,EAAcD,EAAQE,EAAYrW,GACzC,IAAIhT,EAAIkpB,EAAcC,EAAQnW,GAI9B,OAHIA,EAAQ,GAAKqW,IACfrpB,GAAKkpB,EAAcC,EAAQnW,EAAQ,IAAM,GAEpChT,CACT,CA6CA,SAASspB,EAAWC,EAAKC,EAAOC,EAAKC,GAInC,IAHA,IAAI1pB,EAAI,EACJ6K,EAAI,EACJ8e,EAAMC,KAAKC,IAAIN,EAAI5nB,OAAQ8nB,GACtBtpB,EAAIqpB,EAAOrpB,EAAIwpB,EAAKxpB,IAAK,CAChC,IAAII,EAAIgpB,EAAI5Y,WAAWxQ,GAAK,GAE5BH,GAAK0pB,EAIH7e,EADEtK,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAENwnB,EAAOxnB,GAAK,GAAKsK,EAAI6e,EAAK,qBAC1B1pB,GAAK6K,CACP,CACA,OAAO7K,CACT,CA2DA,SAAS8pB,EAAMC,EAAMC,GACnBD,EAAKlB,MAAQmB,EAAInB,MACjBkB,EAAKpoB,OAASqoB,EAAIroB,OAClBooB,EAAKnB,SAAWoB,EAAIpB,SACpBmB,EAAKjB,IAAMkB,EAAIlB,GACjB,CAqCA,GA9TAP,EAAGI,KAAO,SAAesB,GACvB,OAAIA,aAAe1B,GAIJ,OAAR0B,GAA+B,kBAARA,GAC5BA,EAAI/e,YAAY+d,WAAaV,EAAGU,UAAYrkB,MAAMhD,QAAQqoB,EAAIpB,MAClE,EAEAN,EAAG2B,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEA7B,EAAGsB,IAAM,SAAcM,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEA7B,EAAGnnB,UAAU2nB,MAAQ,SAAeP,EAAQC,EAAMC,GAChD,GAAsB,kBAAXF,EACT,OAAO7jB,KAAK2lB,YAAY9B,EAAQC,EAAMC,GAGxC,GAAsB,kBAAXF,EACT,OAAO7jB,KAAK4lB,WAAW/B,EAAQC,EAAMC,GAG1B,QAATD,IACFA,EAAO,IAETV,EAAOU,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAEnDD,EAASA,EAAOhnB,WAAWmC,QAAQ,OAAQ,IAC3C,IAAI6lB,EAAQ,EACM,MAAdhB,EAAO,KACTgB,IACA7kB,KAAKikB,SAAW,GAGdY,EAAQhB,EAAO7mB,SACJ,KAAT8mB,EACF9jB,KAAK6lB,UAAUhC,EAAQgB,EAAOd,IAE9B/jB,KAAK8lB,WAAWjC,EAAQC,EAAMe,GACf,OAAXd,GACF/jB,KAAK4lB,WAAW5lB,KAAK+lB,UAAWjC,EAAMC,IAI9C,EAEAH,EAAGnnB,UAAUkpB,YAAc,SAAsB9B,EAAQC,EAAMC,GACzDF,EAAS,IACX7jB,KAAKikB,SAAW,EAChBJ,GAAUA,GAERA,EAAS,UACX7jB,KAAKkkB,MAAQ,CAAU,SAATL,GACd7jB,KAAKhD,OAAS,GACL6mB,EAAS,kBAClB7jB,KAAKkkB,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,UAEzB7jB,KAAKhD,OAAS,IAEdomB,EAAOS,EAAS,kBAChB7jB,KAAKkkB,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,SACvB,GAEF7jB,KAAKhD,OAAS,GAGD,OAAX+mB,GAGJ/jB,KAAK4lB,WAAW5lB,KAAK+lB,UAAWjC,EAAMC,EACxC,EAEAH,EAAGnnB,UAAUmpB,WAAa,SAAqB/B,EAAQC,EAAMC,GAG3D,GADAX,EAAgC,kBAAlBS,EAAO7mB,QACjB6mB,EAAO7mB,QAAU,EAGnB,OAFAgD,KAAKkkB,MAAQ,CAAC,GACdlkB,KAAKhD,OAAS,EACPgD,KAGTA,KAAKhD,OAASioB,KAAKe,KAAKnC,EAAO7mB,OAAS,GACxCgD,KAAKkkB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/BwE,KAAKkkB,MAAM1oB,GAAK,EAGlB,IAAIyqB,EAAG9jB,EACH8H,EAAM,EACV,GAAe,OAAX8Z,EACF,IAAKvoB,EAAIqoB,EAAO7mB,OAAS,EAAGipB,EAAI,EAAGzqB,GAAK,EAAGA,GAAK,EAC9C2G,EAAI0hB,EAAOroB,GAAMqoB,EAAOroB,EAAI,IAAM,EAAMqoB,EAAOroB,EAAI,IAAM,GACzDwE,KAAKkkB,MAAM+B,IAAO9jB,GAAK8H,EAAO,SAC9BjK,KAAKkkB,MAAM+B,EAAI,GAAM9jB,IAAO,GAAK8H,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPgc,UAGC,GAAe,OAAXlC,EACT,IAAKvoB,EAAI,EAAGyqB,EAAI,EAAGzqB,EAAIqoB,EAAO7mB,OAAQxB,GAAK,EACzC2G,EAAI0hB,EAAOroB,GAAMqoB,EAAOroB,EAAI,IAAM,EAAMqoB,EAAOroB,EAAI,IAAM,GACzDwE,KAAKkkB,MAAM+B,IAAO9jB,GAAK8H,EAAO,SAC9BjK,KAAKkkB,MAAM+B,EAAI,GAAM9jB,IAAO,GAAK8H,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPgc,KAIN,OAAOjmB,KAAKkmB,QACd,EA0BAtC,EAAGnnB,UAAUopB,UAAY,SAAoBhC,EAAQgB,EAAOd,GAE1D/jB,KAAKhD,OAASioB,KAAKe,MAAMnC,EAAO7mB,OAAS6nB,GAAS,GAClD7kB,KAAKkkB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/BwE,KAAKkkB,MAAM1oB,GAAK,EAIlB,IAGI2G,EAHA8H,EAAM,EACNgc,EAAI,EAGR,GAAe,OAAXlC,EACF,IAAKvoB,EAAIqoB,EAAO7mB,OAAS,EAAGxB,GAAKqpB,EAAOrpB,GAAK,EAC3C2G,EAAIsiB,EAAaZ,EAAQgB,EAAOrpB,IAAMyO,EACtCjK,KAAKkkB,MAAM+B,IAAU,SAAJ9jB,EACb8H,GAAO,IACTA,GAAO,GACPgc,GAAK,EACLjmB,KAAKkkB,MAAM+B,IAAM9jB,IAAM,IAEvB8H,GAAO,MAGN,CACL,IAAIkc,EAActC,EAAO7mB,OAAS6nB,EAClC,IAAKrpB,EAAI2qB,EAAc,IAAM,EAAItB,EAAQ,EAAIA,EAAOrpB,EAAIqoB,EAAO7mB,OAAQxB,GAAK,EAC1E2G,EAAIsiB,EAAaZ,EAAQgB,EAAOrpB,IAAMyO,EACtCjK,KAAKkkB,MAAM+B,IAAU,SAAJ9jB,EACb8H,GAAO,IACTA,GAAO,GACPgc,GAAK,EACLjmB,KAAKkkB,MAAM+B,IAAM9jB,IAAM,IAEvB8H,GAAO,CAGb,CAEAjK,KAAKkmB,QACP,EA6BAtC,EAAGnnB,UAAUqpB,WAAa,SAAqBjC,EAAQC,EAAMe,GAE3D7kB,KAAKkkB,MAAQ,CAAC,GACdlkB,KAAKhD,OAAS,EAGd,IAAK,IAAIopB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWvC,EAClEsC,IAEFA,IACAC,EAAWA,EAAUvC,EAAQ,EAO7B,IALA,IAAIwC,EAAQzC,EAAO7mB,OAAS6nB,EACxB0B,EAAMD,EAAQF,EACdtB,EAAMG,KAAKC,IAAIoB,EAAOA,EAAQC,GAAO1B,EAErC2B,EAAO,EACFhrB,EAAIqpB,EAAOrpB,EAAIspB,EAAKtpB,GAAK4qB,EAChCI,EAAO7B,EAAUd,EAAQroB,EAAGA,EAAI4qB,EAAStC,GAEzC9jB,KAAKymB,MAAMJ,GACPrmB,KAAKkkB,MAAM,GAAKsC,EAAO,SACzBxmB,KAAKkkB,MAAM,IAAMsC,EAEjBxmB,KAAK0mB,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAO7B,EAAUd,EAAQroB,EAAGqoB,EAAO7mB,OAAQ8mB,GAEtCtoB,EAAI,EAAGA,EAAI+qB,EAAK/qB,IACnBmrB,GAAO7C,EAGT9jB,KAAKymB,MAAME,GACP3mB,KAAKkkB,MAAM,GAAKsC,EAAO,SACzBxmB,KAAKkkB,MAAM,IAAMsC,EAEjBxmB,KAAK0mB,OAAOF,EAEhB,CAEAxmB,KAAKkmB,QACP,EAEAtC,EAAGnnB,UAAUmqB,KAAO,SAAexB,GACjCA,EAAKlB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/B4pB,EAAKlB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAE7B4pB,EAAKpoB,OAASgD,KAAKhD,OACnBooB,EAAKnB,SAAWjkB,KAAKikB,SACrBmB,EAAKjB,IAAMnkB,KAAKmkB,GAClB,EASAP,EAAGnnB,UAAUoqB,MAAQ,SAAgBzB,GACnCD,EAAKC,EAAMplB,KACb,EAEA4jB,EAAGnnB,UAAUqqB,MAAQ,WACnB,IAAIzrB,EAAI,IAAIuoB,EAAG,MAEf,OADA5jB,KAAK4mB,KAAKvrB,GACHA,CACT,EAEAuoB,EAAGnnB,UAAUsqB,QAAU,SAAkBC,GACvC,MAAOhnB,KAAKhD,OAASgqB,EACnBhnB,KAAKkkB,MAAMlkB,KAAKhD,UAAY,EAE9B,OAAOgD,IACT,EAGA4jB,EAAGnnB,UAAUypB,OAAS,WACpB,MAAOlmB,KAAKhD,OAAS,GAAqC,IAAhCgD,KAAKkkB,MAAMlkB,KAAKhD,OAAS,GACjDgD,KAAKhD,SAEP,OAAOgD,KAAKinB,WACd,EAEArD,EAAGnnB,UAAUwqB,UAAY,WAKvB,OAHoB,IAAhBjnB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,KAClClkB,KAAKikB,SAAW,GAEXjkB,IACT,EAIsB,qBAAX9D,QAAgD,oBAAfA,OAAOgrB,IACjD,IACEtD,EAAGnnB,UAAUP,OAAOgrB,IAAI,+BAAiCC,CAC3D,CAAE,MAAOhsB,GACPyoB,EAAGnnB,UAAU0qB,QAAUA,CACzB,MAEAvD,EAAGnnB,UAAU0qB,QAAUA,EAGzB,SAASA,IACP,OAAQnnB,KAAKmkB,IAAM,UAAY,SAAWnkB,KAAKnD,SAAS,IAAM,GAChE,CAgCA,IAAIuqB,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,UAG9D1D,EAAGnnB,UAAUI,SAAW,SAAmBinB,EAAMyD,GAI/C,IAAIC,EACJ,GAJA1D,EAAOA,GAAQ,GACfyD,EAAoB,EAAVA,GAAe,EAGZ,KAATzD,GAAwB,QAATA,EAAgB,CACjC0D,EAAM,GAGN,IAFA,IAAIvd,EAAM,EACNwd,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI2G,EAAInC,KAAKkkB,MAAM1oB,GACfgrB,GAA+B,UAArBrkB,GAAK8H,EAAOwd,IAAmB5qB,SAAS,IACtD4qB,EAAStlB,IAAO,GAAK8H,EAAQ,SAC7BA,GAAO,EACHA,GAAO,KACTA,GAAO,GACPzO,KAGAgsB,EADY,IAAVC,GAAejsB,IAAMwE,KAAKhD,OAAS,EAC/BoqB,EAAM,EAAIZ,EAAKxpB,QAAUwpB,EAAOgB,EAEhChB,EAAOgB,CAEjB,CACc,IAAVC,IACFD,EAAMC,EAAM5qB,SAAS,IAAM2qB,GAE7B,MAAOA,EAAIxqB,OAASuqB,IAAY,EAC9BC,EAAM,IAAMA,EAKd,OAHsB,IAAlBxnB,KAAKikB,WACPuD,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAI1D,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI4D,EAAYL,EAAWvD,GAEvB6D,EAAYL,EAAWxD,GAC3B0D,EAAM,GACN,IAAI5rB,EAAIoE,KAAK8mB,QACblrB,EAAEqoB,SAAW,EACb,OAAQroB,EAAEgsB,SAAU,CAClB,IAAIvsB,EAAIO,EAAEisB,MAAMF,GAAW9qB,SAASinB,GACpCloB,EAAIA,EAAEksB,MAAMH,GAKVH,EAHG5rB,EAAEgsB,SAGCvsB,EAAImsB,EAFJJ,EAAMM,EAAYrsB,EAAE2B,QAAU3B,EAAImsB,CAI5C,CACIxnB,KAAK4nB,WACPJ,EAAM,IAAMA,GAEd,MAAOA,EAAIxqB,OAASuqB,IAAY,EAC9BC,EAAM,IAAMA,EAKd,OAHsB,IAAlBxnB,KAAKikB,WACPuD,EAAM,IAAMA,GAEPA,CACT,CAEApE,GAAO,EAAO,kCAChB,EAEAQ,EAAGnnB,UAAUsrB,SAAW,WACtB,IAAIC,EAAMhoB,KAAKkkB,MAAM,GASrB,OARoB,IAAhBlkB,KAAKhD,OACPgrB,GAAuB,SAAhBhoB,KAAKkkB,MAAM,GACO,IAAhBlkB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,GAEzC8D,GAAO,iBAAoC,SAAhBhoB,KAAKkkB,MAAM,GAC7BlkB,KAAKhD,OAAS,GACvBomB,GAAO,EAAO,8CAEU,IAAlBpjB,KAAKikB,UAAmB+D,EAAMA,CACxC,EAEApE,EAAGnnB,UAAUwrB,OAAS,WACpB,OAAOjoB,KAAKnD,SAAS,GAAI,EAC3B,EAEIwnB,IACFT,EAAGnnB,UAAUyrB,SAAW,SAAmBnE,EAAQ/mB,GACjD,OAAOgD,KAAKmoB,YAAY9D,EAAQN,EAAQ/mB,EAC1C,GAGF4mB,EAAGnnB,UAAUspB,QAAU,SAAkBhC,EAAQ/mB,GAC/C,OAAOgD,KAAKmoB,YAAYloB,MAAO8jB,EAAQ/mB,EACzC,EAEA,IAAIorB,EAAW,SAAmBC,EAAWrB,GAC3C,OAAIqB,EAAUC,YACLD,EAAUC,YAAYtB,GAExB,IAAIqB,EAAUrB,EACvB,EAuJA,SAASuB,EAAYjD,GAGnB,IAFA,IAAInjB,EAAI,IAAIlC,MAAMqlB,EAAIkD,aAEbC,EAAM,EAAGA,EAAMtmB,EAAEnF,OAAQyrB,IAAO,CACvC,IAAIxe,EAAOwe,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBtmB,EAAEsmB,GAAQnD,EAAIpB,MAAMja,KAASye,EAAQ,CACvC,CAEA,OAAOvmB,CACT,CAkWA,SAASwmB,EAAYC,EAAMtD,EAAKkC,GAC9BA,EAAIvD,SAAWqB,EAAIrB,SAAW2E,EAAK3E,SACnC,IAAIe,EAAO4D,EAAK5rB,OAASsoB,EAAItoB,OAAU,EACvCwqB,EAAIxqB,OAASgoB,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIjoB,EAAoB,EAAhB6rB,EAAK1E,MAAM,GACfhe,EAAmB,EAAfof,EAAIpB,MAAM,GACd7oB,EAAI0B,EAAImJ,EAER2iB,EAAS,SAAJxtB,EACLosB,EAASpsB,EAAI,SAAa,EAC9BmsB,EAAItD,MAAM,GAAK2E,EAEf,IAAK,IAAI7F,EAAI,EAAGA,EAAIgC,EAAKhC,IAAK,CAM5B,IAHA,IAAI8F,EAASrB,IAAU,GACnBsB,EAAgB,SAARtB,EACRuB,EAAO/D,KAAKC,IAAIlC,EAAGsC,EAAItoB,OAAS,GAC3BipB,EAAIhB,KAAKM,IAAI,EAAGvC,EAAI4F,EAAK5rB,OAAS,GAAIipB,GAAK+C,EAAM/C,IAAK,CAC7D,IAAIzqB,EAAKwnB,EAAIiD,EAAK,EAClBlpB,EAAoB,EAAhB6rB,EAAK1E,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM+B,GACd5qB,EAAI0B,EAAImJ,EAAI6iB,EACZD,GAAWztB,EAAI,SAAa,EAC5B0tB,EAAY,SAAJ1tB,CACV,CACAmsB,EAAItD,MAAMlB,GAAa,EAAR+F,EACftB,EAAiB,EAATqB,CACV,CAOA,OANc,IAAVrB,EACFD,EAAItD,MAAMlB,GAAa,EAARyE,EAEfD,EAAIxqB,SAGCwqB,EAAItB,QACb,CAziBAtC,EAAGnnB,UAAU0rB,YAAc,SAAsBE,EAAWtE,EAAQ/mB,GAClEgD,KAAKkmB,SAEL,IAAI+C,EAAajpB,KAAKipB,aAClBC,EAAYlsB,GAAUioB,KAAKM,IAAI,EAAG0D,GACtC7F,EAAO6F,GAAcC,EAAW,yCAChC9F,EAAO8F,EAAY,EAAG,+BAEtB,IAAIC,EAAMf,EAASC,EAAWa,GAC1BE,EAAqB,OAAXrF,EAAkB,KAAO,KAEvC,OADA/jB,KAAK,eAAiBopB,GAASD,EAAKF,GAC7BE,CACT,EAEAvF,EAAGnnB,UAAU4sB,eAAiB,SAAyBF,EAAKF,GAI1D,IAHA,IAAIK,EAAW,EACX7B,EAAQ,EAEHjsB,EAAI,EAAGsM,EAAQ,EAAGtM,EAAIwE,KAAKhD,OAAQxB,IAAK,CAC/C,IAAIgrB,EAAQxmB,KAAKkkB,MAAM1oB,IAAMsM,EAAS2f,EAEtC0B,EAAIG,KAAqB,IAAP9C,EACd8C,EAAWH,EAAInsB,SACjBmsB,EAAIG,KAAe9C,GAAQ,EAAK,KAE9B8C,EAAWH,EAAInsB,SACjBmsB,EAAIG,KAAe9C,GAAQ,GAAM,KAGrB,IAAV1e,GACEwhB,EAAWH,EAAInsB,SACjBmsB,EAAIG,KAAe9C,GAAQ,GAAM,KAEnCiB,EAAQ,EACR3f,EAAQ,IAER2f,EAAQjB,IAAS,GACjB1e,GAAS,EAEb,CAEA,GAAIwhB,EAAWH,EAAInsB,OAAQ,CACzBmsB,EAAIG,KAAc7B,EAElB,MAAO6B,EAAWH,EAAInsB,OACpBmsB,EAAIG,KAAc,CAEtB,CACF,EAEA1F,EAAGnnB,UAAU8sB,eAAiB,SAAyBJ,EAAKF,GAI1D,IAHA,IAAIK,EAAWH,EAAInsB,OAAS,EACxByqB,EAAQ,EAEHjsB,EAAI,EAAGsM,EAAQ,EAAGtM,EAAIwE,KAAKhD,OAAQxB,IAAK,CAC/C,IAAIgrB,EAAQxmB,KAAKkkB,MAAM1oB,IAAMsM,EAAS2f,EAEtC0B,EAAIG,KAAqB,IAAP9C,EACd8C,GAAY,IACdH,EAAIG,KAAe9C,GAAQ,EAAK,KAE9B8C,GAAY,IACdH,EAAIG,KAAe9C,GAAQ,GAAM,KAGrB,IAAV1e,GACEwhB,GAAY,IACdH,EAAIG,KAAe9C,GAAQ,GAAM,KAEnCiB,EAAQ,EACR3f,EAAQ,IAER2f,EAAQjB,IAAS,GACjB1e,GAAS,EAEb,CAEA,GAAIwhB,GAAY,EAAG,CACjBH,EAAIG,KAAc7B,EAElB,MAAO6B,GAAY,EACjBH,EAAIG,KAAc,CAEtB,CACF,EAEIrE,KAAKuE,MACP5F,EAAGnnB,UAAUgtB,WAAa,SAAqBtnB,GAC7C,OAAO,GAAK8iB,KAAKuE,MAAMrnB,EACzB,EAEAyhB,EAAGnnB,UAAUgtB,WAAa,SAAqBtnB,GAC7C,IAAIjH,EAAIiH,EACJ9G,EAAI,EAiBR,OAhBIH,GAAK,OACPG,GAAK,GACLH,KAAO,IAELA,GAAK,KACPG,GAAK,EACLH,KAAO,GAELA,GAAK,IACPG,GAAK,EACLH,KAAO,GAELA,GAAK,IACPG,GAAK,EACLH,KAAO,GAEFG,EAAIH,CACb,EAGF0oB,EAAGnnB,UAAUitB,UAAY,SAAoBvnB,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIjH,EAAIiH,EACJ9G,EAAI,EAoBR,OAnBqB,KAAZ,KAAJH,KACHG,GAAK,GACLH,KAAO,IAEU,KAAV,IAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,GAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,EAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,EAAJA,IACHG,IAEKA,CACT,EAGAuoB,EAAGnnB,UAAU+rB,UAAY,WACvB,IAAIrmB,EAAInC,KAAKkkB,MAAMlkB,KAAKhD,OAAS,GAC7B2sB,EAAK3pB,KAAKypB,WAAWtnB,GACzB,OAA2B,IAAnBnC,KAAKhD,OAAS,GAAU2sB,CAClC,EAgBA/F,EAAGnnB,UAAUmtB,SAAW,WACtB,GAAI5pB,KAAK4nB,SAAU,OAAO,EAG1B,IADA,IAAIvsB,EAAI,EACCG,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI0K,EAAIlG,KAAK0pB,UAAU1pB,KAAKkkB,MAAM1oB,IAElC,GADAH,GAAK6K,EACK,KAANA,EAAU,KAChB,CACA,OAAO7K,CACT,EAEAuoB,EAAGnnB,UAAUwsB,WAAa,WACxB,OAAOhE,KAAKe,KAAKhmB,KAAKwoB,YAAc,EACtC,EAEA5E,EAAGnnB,UAAUotB,OAAS,SAAiBhmB,GACrC,OAAsB,IAAlB7D,KAAKikB,SACAjkB,KAAK8pB,MAAMC,MAAMlmB,GAAOmmB,MAAM,GAEhChqB,KAAK8mB,OACd,EAEAlD,EAAGnnB,UAAUwtB,SAAW,SAAmBpmB,GACzC,OAAI7D,KAAKkqB,MAAMrmB,EAAQ,GACd7D,KAAKmqB,KAAKtmB,GAAOmmB,MAAM,GAAGI,OAE5BpqB,KAAK8mB,OACd,EAEAlD,EAAGnnB,UAAU4tB,MAAQ,WACnB,OAAyB,IAAlBrqB,KAAKikB,QACd,EAGAL,EAAGnnB,UAAU6tB,IAAM,WACjB,OAAOtqB,KAAK8mB,QAAQsD,MACtB,EAEAxG,EAAGnnB,UAAU2tB,KAAO,WAKlB,OAJKpqB,KAAK4nB,WACR5nB,KAAKikB,UAAY,GAGZjkB,IACT,EAGA4jB,EAAGnnB,UAAU8tB,KAAO,SAAejF,GACjC,MAAOtlB,KAAKhD,OAASsoB,EAAItoB,OACvBgD,KAAKkkB,MAAMlkB,KAAKhD,UAAY,EAG9B,IAAK,IAAIxB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAC9BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAAK8pB,EAAIpB,MAAM1oB,GAG5C,OAAOwE,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU+tB,IAAM,SAAclF,GAE/B,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAKuqB,KAAKjF,EACnB,EAGA1B,EAAGnnB,UAAUguB,GAAK,SAAanF,GAC7B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ0D,IAAIlF,GAC/CA,EAAIwB,QAAQ0D,IAAIxqB,KACzB,EAEA4jB,EAAGnnB,UAAUiuB,IAAM,SAAcpF,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQyD,KAAKjF,GAChDA,EAAIwB,QAAQyD,KAAKvqB,KAC1B,EAGA4jB,EAAGnnB,UAAUkuB,MAAQ,SAAgBrF,GAEnC,IAAIpf,EAEFA,EADElG,KAAKhD,OAASsoB,EAAItoB,OAChBsoB,EAEAtlB,KAGN,IAAK,IAAIxE,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAAK8pB,EAAIpB,MAAM1oB,GAK5C,OAFAwE,KAAKhD,OAASkJ,EAAElJ,OAETgD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUmuB,KAAO,SAAetF,GAEjC,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAK2qB,MAAMrF,EACpB,EAGA1B,EAAGnnB,UAAUouB,IAAM,SAAcvF,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ8D,KAAKtF,GAChDA,EAAIwB,QAAQ8D,KAAK5qB,KAC1B,EAEA4jB,EAAGnnB,UAAUquB,KAAO,SAAexF,GACjC,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ6D,MAAMrF,GACjDA,EAAIwB,QAAQ6D,MAAM3qB,KAC3B,EAGA4jB,EAAGnnB,UAAUsuB,MAAQ,SAAgBzF,GAEnC,IAAIvoB,EACAmJ,EACAlG,KAAKhD,OAASsoB,EAAItoB,QACpBD,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAGN,IAAK,IAAIxE,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAAK0K,EAAEge,MAAM1oB,GAGvC,GAAIwE,OAASjD,EACX,KAAOvB,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAM5B,OAFAwE,KAAKhD,OAASD,EAAEC,OAETgD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUuuB,KAAO,SAAe1F,GAEjC,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAK+qB,MAAMzF,EACpB,EAGA1B,EAAGnnB,UAAUwuB,IAAM,SAAc3F,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQkE,KAAK1F,GAChDA,EAAIwB,QAAQkE,KAAKhrB,KAC1B,EAEA4jB,EAAGnnB,UAAUyuB,KAAO,SAAe5F,GACjC,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQiE,MAAMzF,GACjDA,EAAIwB,QAAQiE,MAAM/qB,KAC3B,EAGA4jB,EAAGnnB,UAAUstB,MAAQ,SAAgBlmB,GACnCuf,EAAwB,kBAAVvf,GAAsBA,GAAS,GAE7C,IAAIsnB,EAAsC,EAAxBlG,KAAKe,KAAKniB,EAAQ,IAChCunB,EAAWvnB,EAAQ,GAGvB7D,KAAK+mB,QAAQoE,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI3vB,EAAI,EAAGA,EAAI2vB,EAAa3vB,IAC/BwE,KAAKkkB,MAAM1oB,GAAsB,UAAhBwE,KAAKkkB,MAAM1oB,GAS9B,OALI4vB,EAAW,IACbprB,KAAKkkB,MAAM1oB,IAAMwE,KAAKkkB,MAAM1oB,GAAM,UAAc,GAAK4vB,GAIhDprB,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU0tB,KAAO,SAAetmB,GACjC,OAAO7D,KAAK8mB,QAAQiD,MAAMlmB,EAC5B,EAGA+f,EAAGnnB,UAAU4uB,KAAO,SAAe5C,EAAKpF,GACtCD,EAAsB,kBAARqF,GAAoBA,GAAO,GAEzC,IAAIxe,EAAOwe,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAzoB,KAAK+mB,QAAQ9c,EAAM,GAGjBjK,KAAKkkB,MAAMja,GADToZ,EACgBrjB,KAAKkkB,MAAMja,GAAQ,GAAKye,EAExB1oB,KAAKkkB,MAAMja,KAAS,GAAKye,GAGtC1oB,KAAKkmB,QACd,EAGAtC,EAAGnnB,UAAU6uB,KAAO,SAAehG,GACjC,IAAIjqB,EAkBA0B,EAAGmJ,EAfP,GAAsB,IAAlBlG,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAI7B,OAHAjkB,KAAKikB,SAAW,EAChB5oB,EAAI2E,KAAKurB,KAAKjG,GACdtlB,KAAKikB,UAAY,EACVjkB,KAAKinB,YAGP,GAAsB,IAAlBjnB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAIpC,OAHAqB,EAAIrB,SAAW,EACf5oB,EAAI2E,KAAKurB,KAAKjG,GACdA,EAAIrB,SAAW,EACR5oB,EAAE4rB,YAKPjnB,KAAKhD,OAASsoB,EAAItoB,QACpBD,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAIN,IADA,IAAIynB,EAAQ,EACHjsB,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,KAAwB,EAAb0K,EAAEge,MAAM1oB,IAAUisB,EAC1CznB,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAChBosB,EAAQpsB,IAAM,GAEhB,KAAiB,IAAVosB,GAAejsB,EAAIuB,EAAEC,OAAQxB,IAClCH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,IAAUisB,EACvBznB,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAChBosB,EAAQpsB,IAAM,GAIhB,GADA2E,KAAKhD,OAASD,EAAEC,OACF,IAAVyqB,EACFznB,KAAKkkB,MAAMlkB,KAAKhD,QAAUyqB,EAC1BznB,KAAKhD,cAEA,GAAID,IAAMiD,KACf,KAAOxE,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAI5B,OAAOwE,IACT,EAGA4jB,EAAGnnB,UAAUqT,IAAM,SAAcwV,GAC/B,IAAI6D,EACJ,OAAqB,IAAjB7D,EAAIrB,UAAoC,IAAlBjkB,KAAKikB,UAC7BqB,EAAIrB,SAAW,EACfkF,EAAMnpB,KAAKwrB,IAAIlG,GACfA,EAAIrB,UAAY,EACTkF,GACmB,IAAjB7D,EAAIrB,UAAoC,IAAlBjkB,KAAKikB,UACpCjkB,KAAKikB,SAAW,EAChBkF,EAAM7D,EAAIkG,IAAIxrB,MACdA,KAAKikB,SAAW,EACTkF,GAGLnpB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQwE,KAAKhG,GAEhDA,EAAIwB,QAAQwE,KAAKtrB,KAC1B,EAGA4jB,EAAGnnB,UAAU8uB,KAAO,SAAejG,GAEjC,GAAqB,IAAjBA,EAAIrB,SAAgB,CACtBqB,EAAIrB,SAAW,EACf,IAAI5oB,EAAI2E,KAAKsrB,KAAKhG,GAElB,OADAA,EAAIrB,SAAW,EACR5oB,EAAE4rB,WAGX,CAAO,GAAsB,IAAlBjnB,KAAKikB,SAId,OAHAjkB,KAAKikB,SAAW,EAChBjkB,KAAKsrB,KAAKhG,GACVtlB,KAAKikB,SAAW,EACTjkB,KAAKinB,YAId,IAWIlqB,EAAGmJ,EAXHwf,EAAM1lB,KAAK0lB,IAAIJ,GAGnB,GAAY,IAARI,EAIF,OAHA1lB,KAAKikB,SAAW,EAChBjkB,KAAKhD,OAAS,EACdgD,KAAKkkB,MAAM,GAAK,EACTlkB,KAKL0lB,EAAM,GACR3oB,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAIN,IADA,IAAIynB,EAAQ,EACHjsB,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,KAAwB,EAAb0K,EAAEge,MAAM1oB,IAAUisB,EAC1CA,EAAQpsB,GAAK,GACb2E,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAElB,KAAiB,IAAVosB,GAAejsB,EAAIuB,EAAEC,OAAQxB,IAClCH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,IAAUisB,EACvBA,EAAQpsB,GAAK,GACb2E,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAIlB,GAAc,IAAVosB,GAAejsB,EAAIuB,EAAEC,QAAUD,IAAMiD,KACvC,KAAOxE,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAU5B,OANAwE,KAAKhD,OAASioB,KAAKM,IAAIvlB,KAAKhD,OAAQxB,GAEhCuB,IAAMiD,OACRA,KAAKikB,SAAW,GAGXjkB,KAAKkmB,QACd,EAGAtC,EAAGnnB,UAAU+uB,IAAM,SAAclG,GAC/B,OAAOtlB,KAAK8mB,QAAQyE,KAAKjG,EAC3B,EA8CA,IAAImG,EAAc,SAAsB7C,EAAMtD,EAAKkC,GACjD,IAIIqB,EACA6C,EACA/B,EANA5sB,EAAI6rB,EAAK1E,MACThe,EAAIof,EAAIpB,MACR3oB,EAAIisB,EAAItD,MACRtoB,EAAI,EAIJ+vB,EAAY,EAAP5uB,EAAE,GACP6uB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/uB,EAAE,GACPgvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlvB,EAAE,GACPmvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrvB,EAAE,GACPsvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxvB,EAAE,GACPyvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3vB,EAAE,GACP4vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9vB,EAAE,GACP+vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjwB,EAAE,GACPkwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpwB,EAAE,GACPqwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvwB,EAAE,GACPwwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvnB,EAAE,GACPwnB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1nB,EAAE,GACP2nB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7nB,EAAE,GACP8nB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhoB,EAAE,GACPioB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnoB,EAAE,GACPooB,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPtoB,EAAE,GACPuoB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPzoB,EAAE,GACP0oB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5oB,EAAE,GACP6oB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/oB,EAAE,GACPgpB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlpB,EAAE,GACPmpB,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB5H,EAAIvD,SAAW2E,EAAK3E,SAAWqB,EAAIrB,SACnCuD,EAAIxqB,OAAS,GAEb6rB,EAAK5D,KAAKsK,KAAK3D,EAAK8B,GACpBhC,EAAMzG,KAAKsK,KAAK3D,EAAK+B,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK6B,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK1D,EAAK8B,GACpB,IAAI6B,IAAQ5zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAEN3G,EAAK5D,KAAKsK,KAAKxD,EAAK2B,GACpBhC,EAAMzG,KAAKsK,KAAKxD,EAAK4B,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK0B,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKvD,EAAK2B,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKiC,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKkC,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKgC,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKiC,GAAQ,EAClC,IAAI2B,IAAQ7zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN5G,EAAK5D,KAAKsK,KAAKrD,EAAKwB,GACpBhC,EAAMzG,KAAKsK,KAAKrD,EAAKyB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKuB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKpD,EAAKwB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK8B,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK+B,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK6B,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK8B,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKoC,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKqC,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKmC,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKoC,GAAQ,EAClC,IAAIyB,IAAQ9zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN7G,EAAK5D,KAAKsK,KAAKlD,EAAKqB,GACpBhC,EAAMzG,KAAKsK,KAAKlD,EAAKsB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKoB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKjD,EAAKqB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK2B,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK4B,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK0B,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK2B,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKiC,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKkC,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKgC,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKiC,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKuC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKwC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKsC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKuC,GAAQ,EAClC,IAAIuB,IAAQ/zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN9G,EAAK5D,KAAKsK,KAAK/C,EAAKkB,GACpBhC,EAAMzG,KAAKsK,KAAK/C,EAAKmB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKiB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK9C,EAAKkB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKwB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKyB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKuB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKwB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK8B,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK+B,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK8B,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKoC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKqC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKmC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKoC,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAK0C,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK2C,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKyC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAK0C,IAAQ,EAClC,IAAIqB,IAAQh0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAEN/G,EAAK5D,KAAKsK,KAAK5C,EAAKe,GACpBhC,EAAMzG,KAAKsK,KAAK5C,EAAKgB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKc,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK3C,EAAKe,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKqB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKsB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKoB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKqB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK2B,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK4B,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK2B,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKiC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKkC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKgC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKiC,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKuC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKwC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKsC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKuC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAK6C,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK8C,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK4C,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAK6C,IAAQ,EAClC,IAAImB,IAAQj0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENhH,EAAK5D,KAAKsK,KAAKzC,EAAKY,GACpBhC,EAAMzG,KAAKsK,KAAKzC,EAAKa,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKW,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKxC,EAAKY,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKkB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKmB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKiB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKkB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKwB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKyB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKwB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK8B,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK+B,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK6B,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK8B,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKoC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKqC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKmC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKoC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK0C,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK2C,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKyC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK0C,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKgD,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKiD,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK+C,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKgD,IAAQ,EAClC,IAAIiB,IAAQl0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENjH,EAAK5D,KAAKsK,KAAKtC,EAAKS,GACpBhC,EAAMzG,KAAKsK,KAAKtC,EAAKU,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKQ,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKrC,EAAKS,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKe,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKgB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKc,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKe,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKqB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKsB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKqB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK2B,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK4B,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK0B,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK2B,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKiC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKkC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKgC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKiC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKuC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKwC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKsC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKuC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK6C,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK8C,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK4C,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK6C,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKmD,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKoD,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKkD,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKmD,IAAQ,EAClC,IAAIe,IAAQn0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENlH,EAAK5D,KAAKsK,KAAKnC,EAAKM,GACpBhC,EAAMzG,KAAKsK,KAAKnC,EAAKO,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKK,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKlC,EAAKM,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKY,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKa,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKW,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKY,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKkB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKmB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKkB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKwB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKyB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKuB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKwB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK8B,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK+B,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK6B,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK8B,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKoC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKqC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKmC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKoC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK0C,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK2C,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK0C,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKgD,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKiD,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK+C,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKgD,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKsD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKuD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKqD,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKsD,IAAQ,EAClC,IAAIa,IAAQp0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAK5D,KAAKsK,KAAKhC,EAAKG,GACpBhC,EAAMzG,KAAKsK,KAAKhC,EAAKI,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKE,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK/B,EAAKG,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKS,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKU,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKQ,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKS,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKe,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKgB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKc,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKe,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKqB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKsB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKoB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKqB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK2B,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK4B,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAK0B,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK2B,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKiC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKkC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKgC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKiC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKuC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKwC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKuC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK6C,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK8C,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK4C,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK6C,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKmD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKoD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKkD,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKmD,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKyD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK0D,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKwD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKyD,IAAQ,EAClC,IAAIW,IAAQr0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENpH,EAAK5D,KAAKsK,KAAKhC,EAAKM,GACpBnC,EAAMzG,KAAKsK,KAAKhC,EAAKO,GACrBpC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKK,GAAQ,EACpClE,EAAK1E,KAAKsK,KAAK/B,EAAKM,GACpBjF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKY,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKa,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKW,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKY,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKkB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKmB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKiB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKkB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKwB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKyB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKuB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKwB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK8B,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK+B,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAK6B,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK8B,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKoC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKqC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKoC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK0C,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK2C,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKyC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK0C,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKgD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKiD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK+C,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKgD,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKsD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKuD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKqD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKsD,IAAQ,EAClC,IAAIY,IAASt0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEPrH,EAAK5D,KAAKsK,KAAKhC,EAAKS,GACpBtC,EAAMzG,KAAKsK,KAAKhC,EAAKU,GACrBvC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKQ,GAAQ,EACpCrE,EAAK1E,KAAKsK,KAAK/B,EAAKS,GACpBpF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKe,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKgB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKc,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKe,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKqB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKsB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKoB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKqB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAK2B,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAK4B,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAK0B,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAK2B,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKiC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKkC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKiC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKuC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKwC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKsC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKuC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK6C,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK8C,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK4C,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK6C,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKmD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKoD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKkD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKmD,IAAQ,EAClC,IAAIa,IAASv0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPtH,EAAK5D,KAAKsK,KAAKhC,EAAKY,GACpBzC,EAAMzG,KAAKsK,KAAKhC,EAAKa,GACrB1C,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKW,GAAQ,EACpCxE,EAAK1E,KAAKsK,KAAK/B,EAAKY,GACpBvF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKkB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKmB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKiB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKkB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKwB,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKyB,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKuB,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKwB,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAK8B,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAK+B,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAK8B,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKoC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKqC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKmC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK0C,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK2C,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKyC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK0C,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKgD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKiD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK+C,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKgD,IAAQ,EAClC,IAAIc,IAASx0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPvH,EAAK5D,KAAKsK,KAAKhC,EAAKe,GACpB5C,EAAMzG,KAAKsK,KAAKhC,EAAKgB,IACrB7C,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKc,GAAQ,EACpC3E,EAAK1E,KAAKsK,KAAK/B,EAAKe,IACpB1F,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKqB,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKsB,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKoB,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKqB,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAK2B,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAK4B,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAK0B,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAK2B,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKiC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKkC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKgC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKuC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKwC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKsC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK6C,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK8C,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK4C,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK6C,IAAQ,EAClC,IAAIe,IAASz0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPxH,EAAK5D,KAAKsK,KAAKhC,EAAKkB,IACpB/C,EAAMzG,KAAKsK,KAAKhC,EAAKmB,IACrBhD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKiB,IAAQ,EACpC9E,EAAK1E,KAAKsK,KAAK/B,EAAKkB,IACpB7F,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKwB,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKyB,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKuB,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKwB,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAK8B,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAK+B,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAK6B,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKoC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKqC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKmC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK0C,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK2C,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKyC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK0C,IAAQ,EAClC,IAAIgB,IAAS10B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPzH,EAAK5D,KAAKsK,KAAKhC,EAAKqB,IACpBlD,EAAMzG,KAAKsK,KAAKhC,EAAKsB,IACrBnD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKoB,IAAQ,EACpCjF,EAAK1E,KAAKsK,KAAK/B,EAAKqB,IACpBhG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAK2B,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAK4B,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAK0B,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKiC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKkC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKgC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKuC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKwC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKsC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKuC,IAAQ,EAClC,IAAIiB,IAAS30B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP1H,EAAK5D,KAAKsK,KAAKhC,EAAKwB,IACpBrD,EAAMzG,KAAKsK,KAAKhC,EAAKyB,IACrBtD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKuB,IAAQ,EACpCpF,EAAK1E,KAAKsK,KAAK/B,EAAKwB,IACpBnG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAK8B,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAK+B,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAK6B,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKoC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKqC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKmC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKoC,IAAQ,EAClC,IAAIkB,IAAS50B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP3H,EAAK5D,KAAKsK,KAAKhC,EAAK2B,IACpBxD,EAAMzG,KAAKsK,KAAKhC,EAAK4B,IACrBzD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAK0B,IAAQ,EACpCvF,EAAK1E,KAAKsK,KAAK/B,EAAK2B,IACpBtG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKiC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKkC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKgC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKiC,IAAQ,EAClC,IAAImB,IAAS70B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP5H,EAAK5D,KAAKsK,KAAKhC,EAAK8B,IACpB3D,EAAMzG,KAAKsK,KAAKhC,EAAK+B,IACrB5D,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAK6B,IAAQ,EACpC1F,EAAK1E,KAAKsK,KAAK/B,EAAK8B,IACpB,IAAIoB,IAAS90B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EA0BtD,OAzBA9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPn1B,EAAE,GAAKi0B,GACPj0B,EAAE,GAAKk0B,GACPl0B,EAAE,GAAKm0B,GACPn0B,EAAE,GAAKo0B,GACPp0B,EAAE,GAAKq0B,GACPr0B,EAAE,GAAKs0B,GACPt0B,EAAE,GAAKu0B,GACPv0B,EAAE,GAAKw0B,GACPx0B,EAAE,GAAKy0B,GACPz0B,EAAE,GAAK00B,GACP10B,EAAE,IAAM20B,GACR30B,EAAE,IAAM40B,GACR50B,EAAE,IAAM60B,GACR70B,EAAE,IAAM80B,GACR90B,EAAE,IAAM+0B,GACR/0B,EAAE,IAAMg1B,GACRh1B,EAAE,IAAMi1B,GACRj1B,EAAE,IAAMk1B,GACRl1B,EAAE,IAAMm1B,GACE,IAAN90B,IACFL,EAAE,IAAMK,EACR4rB,EAAIxqB,UAECwqB,CACT,EAOA,SAASmJ,EAAU/H,EAAMtD,EAAKkC,GAC5BA,EAAIvD,SAAWqB,EAAIrB,SAAW2E,EAAK3E,SACnCuD,EAAIxqB,OAAS4rB,EAAK5rB,OAASsoB,EAAItoB,OAI/B,IAFA,IAAIyqB,EAAQ,EACRmJ,EAAU,EACL5N,EAAI,EAAGA,EAAIwE,EAAIxqB,OAAS,EAAGgmB,IAAK,CAGvC,IAAI8F,EAAS8H,EACbA,EAAU,EAGV,IAFA,IAAI7H,EAAgB,SAARtB,EACRuB,EAAO/D,KAAKC,IAAIlC,EAAGsC,EAAItoB,OAAS,GAC3BipB,EAAIhB,KAAKM,IAAI,EAAGvC,EAAI4F,EAAK5rB,OAAS,GAAIipB,GAAK+C,EAAM/C,IAAK,CAC7D,IAAIzqB,EAAIwnB,EAAIiD,EACRlpB,EAAoB,EAAhB6rB,EAAK1E,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM+B,GACd5qB,EAAI0B,EAAImJ,EAER2iB,EAAS,SAAJxtB,EACTytB,EAAUA,GAAWztB,EAAI,SAAa,GAAM,EAC5CwtB,EAAMA,EAAKE,EAAS,EACpBA,EAAa,SAALF,EACRC,EAAUA,GAAUD,IAAO,IAAO,EAElC+H,GAAW9H,IAAW,GACtBA,GAAU,QACZ,CACAtB,EAAItD,MAAMlB,GAAK+F,EACftB,EAAQqB,EACRA,EAAS8H,CACX,CAOA,OANc,IAAVnJ,EACFD,EAAItD,MAAMlB,GAAKyE,EAEfD,EAAIxqB,SAGCwqB,EAAItB,QACb,CAEA,SAAS2K,EAAYjI,EAAMtD,EAAKkC,GAI9B,OAAOmJ,EAAS/H,EAAMtD,EAAKkC,EAC7B,CAqBA,SAASsJ,EAAMpd,EAAGlT,GAChBR,KAAK0T,EAAIA,EACT1T,KAAKQ,EAAIA,CACX,CA1EKykB,KAAKsK,OACR9D,EAAc9C,GAmDhB/E,EAAGnnB,UAAUs0B,MAAQ,SAAgBzL,EAAKkC,GACxC,IAAI2B,EACAnE,EAAMhlB,KAAKhD,OAASsoB,EAAItoB,OAW5B,OATEmsB,EADkB,KAAhBnpB,KAAKhD,QAAgC,KAAfsoB,EAAItoB,OACtByuB,EAAYzrB,KAAMslB,EAAKkC,GACpBxC,EAAM,GACT2D,EAAW3oB,KAAMslB,EAAKkC,GACnBxC,EAAM,KACT2L,EAAS3wB,KAAMslB,EAAKkC,GAEpBqJ,EAAW7wB,KAAMslB,EAAKkC,GAGvB2B,CACT,EAUA2H,EAAKr0B,UAAUu0B,QAAU,SAAkBC,GAGzC,IAFA,IAAI/1B,EAAI,IAAI+E,MAAMgxB,GACdx1B,EAAImoB,EAAGnnB,UAAUgtB,WAAWwH,GAAK,EAC5Bz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBN,EAAEM,GAAKwE,KAAKkxB,OAAO11B,EAAGC,EAAGw1B,GAG3B,OAAO/1B,CACT,EAGA41B,EAAKr0B,UAAUy0B,OAAS,SAAiBxd,EAAGjY,EAAGw1B,GAC7C,GAAU,IAANvd,GAAWA,IAAMud,EAAI,EAAG,OAAOvd,EAGnC,IADA,IAAIyd,EAAK,EACA31B,EAAI,EAAGA,EAAIC,EAAGD,IACrB21B,IAAW,EAAJzd,IAAWjY,EAAID,EAAI,EAC1BkY,IAAM,EAGR,OAAOyd,CACT,EAIAL,EAAKr0B,UAAU20B,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GACpE,IAAK,IAAIz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBg2B,EAAKh2B,GAAK81B,EAAID,EAAI71B,IAClBi2B,EAAKj2B,GAAK+1B,EAAIF,EAAI71B,GAEtB,EAEAs1B,EAAKr0B,UAAUi1B,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMR,EAAGI,GACtErxB,KAAKoxB,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GAExC,IAAK,IAAIr0B,EAAI,EAAGA,EAAIq0B,EAAGr0B,IAAM,EAM3B,IALA,IAAInB,EAAImB,GAAK,EAET+0B,EAAQ1M,KAAK2M,IAAI,EAAI3M,KAAK4M,GAAKp2B,GAC/Bq2B,EAAQ7M,KAAK8M,IAAI,EAAI9M,KAAK4M,GAAKp2B,GAE1BkB,EAAI,EAAGA,EAAIs0B,EAAGt0B,GAAKlB,EAI1B,IAHA,IAAIu2B,EAASL,EACTM,EAASH,EAEJ7L,EAAI,EAAGA,EAAIrpB,EAAGqpB,IAAK,CAC1B,IAAIiM,EAAKV,EAAK70B,EAAIspB,GACdkM,EAAKV,EAAK90B,EAAIspB,GAEdmM,EAAKZ,EAAK70B,EAAIspB,EAAIrpB,GAClBy1B,EAAKZ,EAAK90B,EAAIspB,EAAIrpB,GAElB01B,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELd,EAAK70B,EAAIspB,GAAKiM,EAAKE,EACnBX,EAAK90B,EAAIspB,GAAKkM,EAAKE,EAEnBb,EAAK70B,EAAIspB,EAAIrpB,GAAKs1B,EAAKE,EACvBX,EAAK90B,EAAIspB,EAAIrpB,GAAKu1B,EAAKE,EAGnBpM,IAAMxqB,IACR62B,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,EAEb,CAGN,EAEAxB,EAAKr0B,UAAU81B,YAAc,SAAsBn3B,EAAGO,GACpD,IAAIs1B,EAAqB,EAAjBhM,KAAKM,IAAI5pB,EAAGP,GAChBo3B,EAAU,EAAJvB,EACNz1B,EAAI,EACR,IAAKy1B,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/Bz1B,IAGF,OAAO,GAAKA,EAAI,EAAIg3B,CACtB,EAEA1B,EAAKr0B,UAAUg2B,UAAY,SAAoBnB,EAAKC,EAAKN,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIz1B,EAAI,EAAGA,EAAIy1B,EAAI,EAAGz1B,IAAK,CAC9B,IAAIN,EAAIo2B,EAAI91B,GAEZ81B,EAAI91B,GAAK81B,EAAIL,EAAIz1B,EAAI,GACrB81B,EAAIL,EAAIz1B,EAAI,GAAKN,EAEjBA,EAAIq2B,EAAI/1B,GAER+1B,EAAI/1B,IAAM+1B,EAAIN,EAAIz1B,EAAI,GACtB+1B,EAAIN,EAAIz1B,EAAI,IAAMN,CACpB,CACF,EAEA41B,EAAKr0B,UAAUi2B,aAAe,SAAuBC,EAAI1B,GAEvD,IADA,IAAIxJ,EAAQ,EACHjsB,EAAI,EAAGA,EAAIy1B,EAAI,EAAGz1B,IAAK,CAC9B,IAAI2G,EAAoC,KAAhC8iB,KAAK2N,MAAMD,EAAG,EAAIn3B,EAAI,GAAKy1B,GACjChM,KAAK2N,MAAMD,EAAG,EAAIn3B,GAAKy1B,GACvBxJ,EAEFkL,EAAGn3B,GAAS,SAAJ2G,EAGNslB,EADEtlB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAOwwB,CACT,EAEA7B,EAAKr0B,UAAUo2B,WAAa,SAAqBF,EAAI3N,EAAKsM,EAAKL,GAE7D,IADA,IAAIxJ,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACvBisB,GAAyB,EAARkL,EAAGn3B,GAEpB81B,EAAI,EAAI91B,GAAa,KAARisB,EAAgBA,KAAkB,GAC/C6J,EAAI,EAAI91B,EAAI,GAAa,KAARisB,EAAgBA,KAAkB,GAIrD,IAAKjsB,EAAI,EAAIwpB,EAAKxpB,EAAIy1B,IAAKz1B,EACzB81B,EAAI91B,GAAK,EAGX4nB,EAAiB,IAAVqE,GACPrE,EAA6B,MAAb,KAARqE,GACV,EAEAqJ,EAAKr0B,UAAUq2B,KAAO,SAAe7B,GAEnC,IADA,IAAI8B,EAAK,IAAI9yB,MAAMgxB,GACVz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBu3B,EAAGv3B,GAAK,EAGV,OAAOu3B,CACT,EAEAjC,EAAKr0B,UAAUu2B,KAAO,SAAetf,EAAGlT,EAAGgnB,GACzC,IAAIyJ,EAAI,EAAIjxB,KAAKuyB,YAAY7e,EAAE1W,OAAQwD,EAAExD,QAErCq0B,EAAMrxB,KAAKgxB,QAAQC,GAEnB7uB,EAAIpC,KAAK8yB,KAAK7B,GAEdK,EAAM,IAAIrxB,MAAMgxB,GAChBgC,EAAO,IAAIhzB,MAAMgxB,GACjBiC,EAAO,IAAIjzB,MAAMgxB,GAEjBkC,EAAO,IAAIlzB,MAAMgxB,GACjBmC,EAAQ,IAAInzB,MAAMgxB,GAClBoC,EAAQ,IAAIpzB,MAAMgxB,GAElBqC,EAAO9L,EAAItD,MACfoP,EAAKt2B,OAASi0B,EAEdjxB,KAAK6yB,WAAWnf,EAAEwQ,MAAOxQ,EAAE1W,OAAQs0B,EAAKL,GACxCjxB,KAAK6yB,WAAWryB,EAAE0jB,MAAO1jB,EAAExD,OAAQm2B,EAAMlC,GAEzCjxB,KAAK0xB,UAAUJ,EAAKlvB,EAAG6wB,EAAMC,EAAMjC,EAAGI,GACtCrxB,KAAK0xB,UAAUyB,EAAM/wB,EAAGgxB,EAAOC,EAAOpC,EAAGI,GAEzC,IAAK,IAAI71B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IAAK,CAC1B,IAAI82B,EAAKW,EAAKz3B,GAAK43B,EAAM53B,GAAK03B,EAAK13B,GAAK63B,EAAM73B,GAC9C03B,EAAK13B,GAAKy3B,EAAKz3B,GAAK63B,EAAM73B,GAAK03B,EAAK13B,GAAK43B,EAAM53B,GAC/Cy3B,EAAKz3B,GAAK82B,CACZ,CASA,OAPAtyB,KAAKyyB,UAAUQ,EAAMC,EAAMjC,GAC3BjxB,KAAK0xB,UAAUuB,EAAMC,EAAMI,EAAMlxB,EAAG6uB,EAAGI,GACvCrxB,KAAKyyB,UAAUa,EAAMlxB,EAAG6uB,GACxBjxB,KAAK0yB,aAAaY,EAAMrC,GAExBzJ,EAAIvD,SAAWvQ,EAAEuQ,SAAWzjB,EAAEyjB,SAC9BuD,EAAIxqB,OAAS0W,EAAE1W,OAASwD,EAAExD,OACnBwqB,EAAItB,QACb,EAGAtC,EAAGnnB,UAAUsoB,IAAM,SAAcO,GAC/B,IAAIkC,EAAM,IAAI5D,EAAG,MAEjB,OADA4D,EAAItD,MAAQ,IAAIjkB,MAAMD,KAAKhD,OAASsoB,EAAItoB,QACjCgD,KAAK+wB,MAAMzL,EAAKkC,EACzB,EAGA5D,EAAGnnB,UAAU82B,KAAO,SAAejO,GACjC,IAAIkC,EAAM,IAAI5D,EAAG,MAEjB,OADA4D,EAAItD,MAAQ,IAAIjkB,MAAMD,KAAKhD,OAASsoB,EAAItoB,QACjC6zB,EAAW7wB,KAAMslB,EAAKkC,EAC/B,EAGA5D,EAAGnnB,UAAU8yB,KAAO,SAAejK,GACjC,OAAOtlB,KAAK8mB,QAAQiK,MAAMzL,EAAKtlB,KACjC,EAEA4jB,EAAGnnB,UAAUgqB,MAAQ,SAAgBnB,GACnC,IAAIkO,EAAWlO,EAAM,EACjBkO,IAAUlO,GAAOA,GAErBlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UAIb,IADA,IAAImC,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI2G,GAAqB,EAAhBnC,KAAKkkB,MAAM1oB,IAAU8pB,EAC1BuD,GAAU,SAAJ1mB,IAA0B,SAARslB,GAC5BA,IAAU,GACVA,GAAUtlB,EAAI,SAAa,EAE3BslB,GAASoB,IAAO,GAChB7oB,KAAKkkB,MAAM1oB,GAAU,SAALqtB,CAClB,CAOA,OALc,IAAVpB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,UAGAw2B,EAAWxzB,KAAKoqB,OAASpqB,IAClC,EAEA4jB,EAAGnnB,UAAUg3B,KAAO,SAAenO,GACjC,OAAOtlB,KAAK8mB,QAAQL,MAAMnB,EAC5B,EAGA1B,EAAGnnB,UAAUi3B,IAAM,WACjB,OAAO1zB,KAAK+kB,IAAI/kB,KAClB,EAGA4jB,EAAGnnB,UAAUk3B,KAAO,WAClB,OAAO3zB,KAAKuvB,KAAKvvB,KAAK8mB,QACxB,EAGAlD,EAAGnnB,UAAUkqB,IAAM,SAAcrB,GAC/B,IAAInjB,EAAIomB,EAAWjD,GACnB,GAAiB,IAAbnjB,EAAEnF,OAAc,OAAO,IAAI4mB,EAAG,GAIlC,IADA,IAAIuF,EAAMnpB,KACDxE,EAAI,EAAGA,EAAI2G,EAAEnF,OAAQxB,IAAK2tB,EAAMA,EAAIuK,MAC3C,GAAa,IAATvxB,EAAE3G,GAAU,MAGlB,KAAMA,EAAI2G,EAAEnF,OACV,IAAK,IAAI42B,EAAIzK,EAAIuK,MAAOl4B,EAAI2G,EAAEnF,OAAQxB,IAAKo4B,EAAIA,EAAEF,MAClC,IAATvxB,EAAE3G,KAEN2tB,EAAMA,EAAIpE,IAAI6O,IAIlB,OAAOzK,CACT,EAGAvF,EAAGnnB,UAAUo3B,OAAS,SAAiBC,GACrC1Q,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAC3C,IAGIt4B,EAHAH,EAAIy4B,EAAO,GACXl3B,GAAKk3B,EAAOz4B,GAAK,GACjB04B,EAAa,WAAe,GAAK14B,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIosB,EAAQ,EAEZ,IAAKjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CAChC,IAAIw4B,EAAWh0B,KAAKkkB,MAAM1oB,GAAKu4B,EAC3Bn4B,GAAsB,EAAhBoE,KAAKkkB,MAAM1oB,IAAUw4B,GAAa34B,EAC5C2E,KAAKkkB,MAAM1oB,GAAKI,EAAI6rB,EACpBA,EAAQuM,IAAc,GAAK34B,CAC7B,CAEIosB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,SAET,CAEA,GAAU,IAANJ,EAAS,CACX,IAAKpB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAChCwE,KAAKkkB,MAAM1oB,EAAIoB,GAAKoD,KAAKkkB,MAAM1oB,GAGjC,IAAKA,EAAI,EAAGA,EAAIoB,EAAGpB,IACjBwE,KAAKkkB,MAAM1oB,GAAK,EAGlBwE,KAAKhD,QAAUJ,CACjB,CAEA,OAAOoD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUw3B,MAAQ,SAAgBH,GAGnC,OADA1Q,EAAyB,IAAlBpjB,KAAKikB,UACLjkB,KAAK6zB,OAAOC,EACrB,EAKAlQ,EAAGnnB,UAAUy3B,OAAS,SAAiBJ,EAAMK,EAAMC,GAEjD,IAAI7zB,EADJ6iB,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAGzCvzB,EADE4zB,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI94B,EAAIy4B,EAAO,GACXl3B,EAAIqoB,KAAKC,KAAK4O,EAAOz4B,GAAK,GAAI2E,KAAKhD,QACnCq3B,EAAO,SAAc,WAAch5B,GAAMA,EACzCi5B,EAAcF,EAMlB,GAJA7zB,GAAK3D,EACL2D,EAAI0kB,KAAKM,IAAI,EAAGhlB,GAGZ+zB,EAAa,CACf,IAAK,IAAI94B,EAAI,EAAGA,EAAIoB,EAAGpB,IACrB84B,EAAYpQ,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAEpC84B,EAAYt3B,OAASJ,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIoD,KAAKhD,OAASJ,EAEvB,IADAoD,KAAKhD,QAAUJ,EACVpB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC3BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,EAAIoB,QAGjCoD,KAAKkkB,MAAM,GAAK,EAChBlkB,KAAKhD,OAAS,EAGhB,IAAIyqB,EAAQ,EACZ,IAAKjsB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,IAAgB,IAAVisB,GAAejsB,GAAK+E,GAAI/E,IAAK,CAChE,IAAIgrB,EAAuB,EAAhBxmB,KAAKkkB,MAAM1oB,GACtBwE,KAAKkkB,MAAM1oB,GAAMisB,GAAU,GAAKpsB,EAAOmrB,IAASnrB,EAChDosB,EAAQjB,EAAO6N,CACjB,CAYA,OATIC,GAAyB,IAAV7M,IACjB6M,EAAYpQ,MAAMoQ,EAAYt3B,UAAYyqB,GAGxB,IAAhBznB,KAAKhD,SACPgD,KAAKkkB,MAAM,GAAK,EAChBlkB,KAAKhD,OAAS,GAGTgD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU83B,MAAQ,SAAgBT,EAAMK,EAAMC,GAG/C,OADAhR,EAAyB,IAAlBpjB,KAAKikB,UACLjkB,KAAKk0B,OAAOJ,EAAMK,EAAMC,EACjC,EAGAxQ,EAAGnnB,UAAU+3B,KAAO,SAAeV,GACjC,OAAO9zB,KAAK8mB,QAAQmN,MAAMH,EAC5B,EAEAlQ,EAAGnnB,UAAUg4B,MAAQ,SAAgBX,GACnC,OAAO9zB,KAAK8mB,QAAQ+M,OAAOC,EAC7B,EAGAlQ,EAAGnnB,UAAUi4B,KAAO,SAAeZ,GACjC,OAAO9zB,KAAK8mB,QAAQyN,MAAMT,EAC5B,EAEAlQ,EAAGnnB,UAAUk4B,MAAQ,SAAgBb,GACnC,OAAO9zB,KAAK8mB,QAAQoN,OAAOJ,EAC7B,EAGAlQ,EAAGnnB,UAAUytB,MAAQ,SAAgBzB,GACnCrF,EAAsB,kBAARqF,GAAoBA,GAAO,GACzC,IAAIptB,EAAIotB,EAAM,GACV7rB,GAAK6rB,EAAMptB,GAAK,GAChBu4B,EAAI,GAAKv4B,EAGb,GAAI2E,KAAKhD,QAAUJ,EAAG,OAAO,EAG7B,IAAIuF,EAAInC,KAAKkkB,MAAMtnB,GAEnB,SAAUuF,EAAIyxB,EAChB,EAGAhQ,EAAGnnB,UAAUm4B,OAAS,SAAiBd,GACrC1Q,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAC3C,IAAIz4B,EAAIy4B,EAAO,GACXl3B,GAAKk3B,EAAOz4B,GAAK,GAIrB,GAFA+nB,EAAyB,IAAlBpjB,KAAKikB,SAAgB,2CAExBjkB,KAAKhD,QAAUJ,EACjB,OAAOoD,KAQT,GALU,IAAN3E,GACFuB,IAEFoD,KAAKhD,OAASioB,KAAKC,IAAItoB,EAAGoD,KAAKhD,QAErB,IAAN3B,EAAS,CACX,IAAIg5B,EAAO,SAAc,WAAch5B,GAAMA,EAC7C2E,KAAKkkB,MAAMlkB,KAAKhD,OAAS,IAAMq3B,CACjC,CAEA,OAAOr0B,KAAKkmB,QACd,EAGAtC,EAAGnnB,UAAUo4B,MAAQ,SAAgBf,GACnC,OAAO9zB,KAAK8mB,QAAQ8N,OAAOd,EAC7B,EAGAlQ,EAAGnnB,UAAUutB,MAAQ,SAAgB1E,GAGnC,OAFAlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UACTA,EAAM,EAAUtlB,KAAK80B,OAAOxP,GAGV,IAAlBtlB,KAAKikB,SACa,IAAhBjkB,KAAKhD,SAAiC,EAAhBgD,KAAKkkB,MAAM,KAAWoB,GAC9CtlB,KAAKkkB,MAAM,GAAKoB,GAAuB,EAAhBtlB,KAAKkkB,MAAM,IAClClkB,KAAKikB,SAAW,EACTjkB,OAGTA,KAAKikB,SAAW,EAChBjkB,KAAK80B,MAAMxP,GACXtlB,KAAKikB,SAAW,EACTjkB,MAIFA,KAAK0mB,OAAOpB,EACrB,EAEA1B,EAAGnnB,UAAUiqB,OAAS,SAAiBpB,GACrCtlB,KAAKkkB,MAAM,IAAMoB,EAGjB,IAAK,IAAI9pB,EAAI,EAAGA,EAAIwE,KAAKhD,QAAUgD,KAAKkkB,MAAM1oB,IAAM,SAAWA,IAC7DwE,KAAKkkB,MAAM1oB,IAAM,SACbA,IAAMwE,KAAKhD,OAAS,EACtBgD,KAAKkkB,MAAM1oB,EAAI,GAAK,EAEpBwE,KAAKkkB,MAAM1oB,EAAI,KAKnB,OAFAwE,KAAKhD,OAASioB,KAAKM,IAAIvlB,KAAKhD,OAAQxB,EAAI,GAEjCwE,IACT,EAGA4jB,EAAGnnB,UAAUq4B,MAAQ,SAAgBxP,GAGnC,GAFAlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UACTA,EAAM,EAAG,OAAOtlB,KAAKgqB,OAAO1E,GAEhC,GAAsB,IAAlBtlB,KAAKikB,SAIP,OAHAjkB,KAAKikB,SAAW,EAChBjkB,KAAKgqB,MAAM1E,GACXtlB,KAAKikB,SAAW,EACTjkB,KAKT,GAFAA,KAAKkkB,MAAM,IAAMoB,EAEG,IAAhBtlB,KAAKhD,QAAgBgD,KAAKkkB,MAAM,GAAK,EACvClkB,KAAKkkB,MAAM,IAAMlkB,KAAKkkB,MAAM,GAC5BlkB,KAAKikB,SAAW,OAGhB,IAAK,IAAIzoB,EAAI,EAAGA,EAAIwE,KAAKhD,QAAUgD,KAAKkkB,MAAM1oB,GAAK,EAAGA,IACpDwE,KAAKkkB,MAAM1oB,IAAM,SACjBwE,KAAKkkB,MAAM1oB,EAAI,IAAM,EAIzB,OAAOwE,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUs4B,KAAO,SAAezP,GACjC,OAAOtlB,KAAK8mB,QAAQkD,MAAM1E,EAC5B,EAEA1B,EAAGnnB,UAAUu4B,KAAO,SAAe1P,GACjC,OAAOtlB,KAAK8mB,QAAQgO,MAAMxP,EAC5B,EAEA1B,EAAGnnB,UAAUw4B,KAAO,WAGlB,OAFAj1B,KAAKikB,SAAW,EAETjkB,IACT,EAEA4jB,EAAGnnB,UAAUqtB,IAAM,WACjB,OAAO9pB,KAAK8mB,QAAQmO,MACtB,EAEArR,EAAGnnB,UAAUy4B,aAAe,SAAuB5P,EAAKP,EAAKjd,GAC3D,IACItM,EAIA2G,EALA6iB,EAAMM,EAAItoB,OAAS8K,EAGvB9H,KAAK+mB,QAAQ/B,GAGb,IAAIyC,EAAQ,EACZ,IAAKjsB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CAC/B2G,GAA6B,EAAxBnC,KAAKkkB,MAAM1oB,EAAIsM,IAAc2f,EAClC,IAAIhC,GAAwB,EAAfH,EAAIpB,MAAM1oB,IAAUupB,EACjC5iB,GAAa,SAARsjB,EACLgC,GAAStlB,GAAK,KAAQsjB,EAAQ,SAAa,GAC3CzlB,KAAKkkB,MAAM1oB,EAAIsM,GAAa,SAAJ3F,CAC1B,CACA,KAAO3G,EAAIwE,KAAKhD,OAAS8K,EAAOtM,IAC9B2G,GAA6B,EAAxBnC,KAAKkkB,MAAM1oB,EAAIsM,IAAc2f,EAClCA,EAAQtlB,GAAK,GACbnC,KAAKkkB,MAAM1oB,EAAIsM,GAAa,SAAJ3F,EAG1B,GAAc,IAAVslB,EAAa,OAAOznB,KAAKkmB,SAK7B,IAFA9C,GAAkB,IAAXqE,GACPA,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC3B2G,IAAsB,EAAhBnC,KAAKkkB,MAAM1oB,IAAUisB,EAC3BA,EAAQtlB,GAAK,GACbnC,KAAKkkB,MAAM1oB,GAAS,SAAJ2G,EAIlB,OAFAnC,KAAKikB,SAAW,EAETjkB,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU04B,SAAW,SAAmB7P,EAAK8P,GAC9C,IAAIttB,EAAQ9H,KAAKhD,OAASsoB,EAAItoB,OAE1BD,EAAIiD,KAAK8mB,QACT5gB,EAAIof,EAGJ+P,EAA8B,EAAxBnvB,EAAEge,MAAMhe,EAAElJ,OAAS,GACzBs4B,EAAUt1B,KAAKypB,WAAW4L,GAC9BvtB,EAAQ,GAAKwtB,EACC,IAAVxtB,IACF5B,EAAIA,EAAEuuB,MAAM3sB,GACZ/K,EAAE82B,OAAO/rB,GACTutB,EAA8B,EAAxBnvB,EAAEge,MAAMhe,EAAElJ,OAAS,IAI3B,IACI42B,EADAj4B,EAAIoB,EAAEC,OAASkJ,EAAElJ,OAGrB,GAAa,QAATo4B,EAAgB,CAClBxB,EAAI,IAAIhQ,EAAG,MACXgQ,EAAE52B,OAASrB,EAAI,EACfi4B,EAAE1P,MAAQ,IAAIjkB,MAAM2zB,EAAE52B,QACtB,IAAK,IAAIxB,EAAI,EAAGA,EAAIo4B,EAAE52B,OAAQxB,IAC5Bo4B,EAAE1P,MAAM1oB,GAAK,CAEjB,CAEA,IAAI+5B,EAAOx4B,EAAE+pB,QAAQoO,aAAahvB,EAAG,EAAGvK,GAClB,IAAlB45B,EAAKtR,WACPlnB,EAAIw4B,EACA3B,IACFA,EAAE1P,MAAMvoB,GAAK,IAIjB,IAAK,IAAIsqB,EAAItqB,EAAI,EAAGsqB,GAAK,EAAGA,IAAK,CAC/B,IAAIuP,EAAmC,UAAL,EAAxBz4B,EAAEmnB,MAAMhe,EAAElJ,OAASipB,KACE,EAA5BlpB,EAAEmnB,MAAMhe,EAAElJ,OAASipB,EAAI,IAI1BuP,EAAKvQ,KAAKC,IAAKsQ,EAAKH,EAAO,EAAG,UAE9Bt4B,EAAEm4B,aAAahvB,EAAGsvB,EAAIvP,GACtB,MAAsB,IAAflpB,EAAEknB,SACPuR,IACAz4B,EAAEknB,SAAW,EACblnB,EAAEm4B,aAAahvB,EAAG,EAAG+f,GAChBlpB,EAAE6qB,WACL7qB,EAAEknB,UAAY,GAGd2P,IACFA,EAAE1P,MAAM+B,GAAKuP,EAEjB,CAWA,OAVI5B,GACFA,EAAE1N,SAEJnpB,EAAEmpB,SAGW,QAATkP,GAA4B,IAAVttB,GACpB/K,EAAEm3B,OAAOpsB,GAGJ,CACL2tB,IAAK7B,GAAK,KACVrN,IAAKxpB,EAET,EAMA6mB,EAAGnnB,UAAUi5B,OAAS,SAAiBpQ,EAAK8P,EAAMO,GAGhD,OAFAvS,GAAQkC,EAAIsC,UAER5nB,KAAK4nB,SACA,CACL6N,IAAK,IAAI7R,EAAG,GACZ2C,IAAK,IAAI3C,EAAG,IAKM,IAAlB5jB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,UAC7BkF,EAAMnpB,KAAKsqB,MAAMoL,OAAOpQ,EAAK8P,GAEhB,QAATA,IACFK,EAAMtM,EAAIsM,IAAInL,OAGH,QAAT8K,IACF7O,EAAM4C,EAAI5C,IAAI+D,MACVqL,GAA6B,IAAjBpP,EAAItC,UAClBsC,EAAI+E,KAAKhG,IAIN,CACLmQ,IAAKA,EACLlP,IAAKA,IAIa,IAAlBvmB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,UAC7BkF,EAAMnpB,KAAK01B,OAAOpQ,EAAIgF,MAAO8K,GAEhB,QAATA,IACFK,EAAMtM,EAAIsM,IAAInL,OAGT,CACLmL,IAAKA,EACLlP,IAAK4C,EAAI5C,MAI0B,KAAlCvmB,KAAKikB,SAAWqB,EAAIrB,WACvBkF,EAAMnpB,KAAKsqB,MAAMoL,OAAOpQ,EAAIgF,MAAO8K,GAEtB,QAATA,IACF7O,EAAM4C,EAAI5C,IAAI+D,MACVqL,GAA6B,IAAjBpP,EAAItC,UAClBsC,EAAIgF,KAAKjG,IAIN,CACLmQ,IAAKtM,EAAIsM,IACTlP,IAAKA,IAOLjB,EAAItoB,OAASgD,KAAKhD,QAAUgD,KAAK0lB,IAAIJ,GAAO,EACvC,CACLmQ,IAAK,IAAI7R,EAAG,GACZ2C,IAAKvmB,MAKU,IAAfslB,EAAItoB,OACO,QAATo4B,EACK,CACLK,IAAKz1B,KAAK41B,KAAKtQ,EAAIpB,MAAM,IACzBqC,IAAK,MAII,QAAT6O,EACK,CACLK,IAAK,KACLlP,IAAK,IAAI3C,EAAG5jB,KAAK6nB,MAAMvC,EAAIpB,MAAM,MAI9B,CACLuR,IAAKz1B,KAAK41B,KAAKtQ,EAAIpB,MAAM,IACzBqC,IAAK,IAAI3C,EAAG5jB,KAAK6nB,MAAMvC,EAAIpB,MAAM,MAI9BlkB,KAAKm1B,SAAS7P,EAAK8P,GAlF1B,IAAIK,EAAKlP,EAAK4C,CAmFhB,EAGAvF,EAAGnnB,UAAUg5B,IAAM,SAAcnQ,GAC/B,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAOmQ,GACxC,EAGA7R,EAAGnnB,UAAU8pB,IAAM,SAAcjB,GAC/B,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAOiB,GACxC,EAEA3C,EAAGnnB,UAAUo5B,KAAO,SAAevQ,GACjC,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAMiB,GACvC,EAGA3C,EAAGnnB,UAAUq5B,SAAW,SAAmBxQ,GACzC,IAAIyQ,EAAK/1B,KAAK01B,OAAOpQ,GAGrB,GAAIyQ,EAAGxP,IAAIqB,SAAU,OAAOmO,EAAGN,IAE/B,IAAIlP,EAA0B,IAApBwP,EAAGN,IAAIxR,SAAiB8R,EAAGxP,IAAIgF,KAAKjG,GAAOyQ,EAAGxP,IAEpDyP,EAAO1Q,EAAIqP,MAAM,GACjBsB,EAAK3Q,EAAI4Q,MAAM,GACfxQ,EAAMa,EAAIb,IAAIsQ,GAGlB,OAAItQ,EAAM,GAAa,IAAPuQ,GAAoB,IAARvQ,EAAmBqQ,EAAGN,IAGvB,IAApBM,EAAGN,IAAIxR,SAAiB8R,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIzL,MAAM,EAChE,EAEApG,EAAGnnB,UAAUorB,MAAQ,SAAgBvC,GACnC,IAAIkO,EAAWlO,EAAM,EACjBkO,IAAUlO,GAAOA,GAErBlC,EAAOkC,GAAO,UAId,IAHA,IAAI3oB,GAAK,GAAK,IAAM2oB,EAEhB6Q,EAAM,EACD36B,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IACpC26B,GAAOx5B,EAAIw5B,GAAuB,EAAhBn2B,KAAKkkB,MAAM1oB,KAAW8pB,EAG1C,OAAOkO,GAAY2C,EAAMA,CAC3B,EAGAvS,EAAGnnB,UAAU25B,KAAO,SAAe9Q,GACjC,OAAOtlB,KAAK6nB,MAAMvC,EACpB,EAGA1B,EAAGnnB,UAAUqrB,MAAQ,SAAgBxC,GACnC,IAAIkO,EAAWlO,EAAM,EACjBkO,IAAUlO,GAAOA,GAErBlC,EAAOkC,GAAO,UAGd,IADA,IAAImC,EAAQ,EACHjsB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CACzC,IAAI2G,GAAqB,EAAhBnC,KAAKkkB,MAAM1oB,IAAkB,SAARisB,EAC9BznB,KAAKkkB,MAAM1oB,GAAM2G,EAAImjB,EAAO,EAC5BmC,EAAQtlB,EAAImjB,CACd,CAGA,OADAtlB,KAAKkmB,SACEsN,EAAWxzB,KAAKoqB,OAASpqB,IAClC,EAEA4jB,EAAGnnB,UAAUm5B,KAAO,SAAetQ,GACjC,OAAOtlB,KAAK8mB,QAAQgB,MAAMxC,EAC5B,EAEA1B,EAAGnnB,UAAU45B,KAAO,SAAe15B,GACjCymB,EAAsB,IAAfzmB,EAAEsnB,UACTb,GAAQzmB,EAAEirB,UAEV,IAAIlU,EAAI1T,KACJQ,EAAI7D,EAAEmqB,QAGRpT,EADiB,IAAfA,EAAEuQ,SACAvQ,EAAEmiB,KAAKl5B,GAEP+W,EAAEoT,QAIR,IAAIwP,EAAI,IAAI1S,EAAG,GACX2S,EAAI,IAAI3S,EAAG,GAGX4S,EAAI,IAAI5S,EAAG,GACX6S,EAAI,IAAI7S,EAAG,GAEXzd,EAAI,EAER,MAAOuN,EAAEgjB,UAAYl2B,EAAEk2B,SACrBhjB,EAAEwgB,OAAO,GACT1zB,EAAE0zB,OAAO,KACP/tB,EAGJ,IAAIwwB,EAAKn2B,EAAEsmB,QACP8P,EAAKljB,EAAEoT,QAEX,OAAQpT,EAAEkU,SAAU,CAClB,IAAK,IAAIpsB,EAAI,EAAGq7B,EAAK,EAAyB,KAArBnjB,EAAEwQ,MAAM,GAAK2S,IAAar7B,EAAI,KAAMA,EAAGq7B,IAAO,GACvE,GAAIr7B,EAAI,EAAG,CACTkY,EAAEwgB,OAAO14B,GACT,MAAOA,KAAM,GACP86B,EAAEQ,SAAWP,EAAEO,WACjBR,EAAEhL,KAAKqL,GACPJ,EAAEhL,KAAKqL,IAGTN,EAAEpC,OAAO,GACTqC,EAAErC,OAAO,EAEb,CAEA,IAAK,IAAIjO,EAAI,EAAG8Q,EAAK,EAAyB,KAArBv2B,EAAE0jB,MAAM,GAAK6S,IAAa9Q,EAAI,KAAMA,EAAG8Q,IAAO,GACvE,GAAI9Q,EAAI,EAAG,CACTzlB,EAAE0zB,OAAOjO,GACT,MAAOA,KAAM,GACPuQ,EAAEM,SAAWL,EAAEK,WACjBN,EAAElL,KAAKqL,GACPF,EAAElL,KAAKqL,IAGTJ,EAAEtC,OAAO,GACTuC,EAAEvC,OAAO,EAEb,CAEIxgB,EAAEgS,IAAIllB,IAAM,GACdkT,EAAE6X,KAAK/qB,GACP81B,EAAE/K,KAAKiL,GACPD,EAAEhL,KAAKkL,KAEPj2B,EAAE+qB,KAAK7X,GACP8iB,EAAEjL,KAAK+K,GACPG,EAAElL,KAAKgL,GAEX,CAEA,MAAO,CACLx5B,EAAGy5B,EACHtwB,EAAGuwB,EACHO,IAAKx2B,EAAEqzB,OAAO1tB,GAElB,EAKAyd,EAAGnnB,UAAUw6B,OAAS,SAAiBt6B,GACrCymB,EAAsB,IAAfzmB,EAAEsnB,UACTb,GAAQzmB,EAAEirB,UAEV,IAAI7qB,EAAIiD,KACJkG,EAAIvJ,EAAEmqB,QAGR/pB,EADiB,IAAfA,EAAEknB,SACAlnB,EAAE84B,KAAKl5B,GAEPI,EAAE+pB,QAGR,IAuCIqC,EAvCA+N,EAAK,IAAItT,EAAG,GACZuT,EAAK,IAAIvT,EAAG,GAEZwT,EAAQlxB,EAAE4gB,QAEd,MAAO/pB,EAAEs6B,KAAK,GAAK,GAAKnxB,EAAEmxB,KAAK,GAAK,EAAG,CACrC,IAAK,IAAI77B,EAAI,EAAGq7B,EAAK,EAAyB,KAArB95B,EAAEmnB,MAAM,GAAK2S,IAAar7B,EAAI,KAAMA,EAAGq7B,IAAO,GACvE,GAAIr7B,EAAI,EAAG,CACTuB,EAAEm3B,OAAO14B,GACT,MAAOA,KAAM,EACP07B,EAAGJ,SACLI,EAAG5L,KAAK8L,GAGVF,EAAGhD,OAAO,EAEd,CAEA,IAAK,IAAIjO,EAAI,EAAG8Q,EAAK,EAAyB,KAArB7wB,EAAEge,MAAM,GAAK6S,IAAa9Q,EAAI,KAAMA,EAAG8Q,IAAO,GACvE,GAAI9Q,EAAI,EAAG,CACT/f,EAAEguB,OAAOjO,GACT,MAAOA,KAAM,EACPkR,EAAGL,SACLK,EAAG7L,KAAK8L,GAGVD,EAAGjD,OAAO,EAEd,CAEIn3B,EAAE2oB,IAAIxf,IAAM,GACdnJ,EAAEwuB,KAAKrlB,GACPgxB,EAAG3L,KAAK4L,KAERjxB,EAAEqlB,KAAKxuB,GACPo6B,EAAG5L,KAAK2L,GAEZ,CAaA,OATE/N,EADgB,IAAdpsB,EAAEs6B,KAAK,GACHH,EAEAC,EAGJhO,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAK3uB,GAGJwsB,CACT,EAEAvF,EAAGnnB,UAAUu6B,IAAM,SAAc1R,GAC/B,GAAItlB,KAAK4nB,SAAU,OAAOtC,EAAIwE,MAC9B,GAAIxE,EAAIsC,SAAU,OAAO5nB,KAAK8pB,MAE9B,IAAI/sB,EAAIiD,KAAK8mB,QACT5gB,EAAIof,EAAIwB,QACZ/pB,EAAEknB,SAAW,EACb/d,EAAE+d,SAAW,EAGb,IAAK,IAAInc,EAAQ,EAAG/K,EAAE25B,UAAYxwB,EAAEwwB,SAAU5uB,IAC5C/K,EAAEm3B,OAAO,GACThuB,EAAEguB,OAAO,GAGX,EAAG,CACD,MAAOn3B,EAAE25B,SACP35B,EAAEm3B,OAAO,GAEX,MAAOhuB,EAAEwwB,SACPxwB,EAAEguB,OAAO,GAGX,IAAI74B,EAAI0B,EAAE2oB,IAAIxf,GACd,GAAI7K,EAAI,EAAG,CAET,IAAIH,EAAI6B,EACRA,EAAImJ,EACJA,EAAIhL,CACN,MAAO,GAAU,IAANG,GAAyB,IAAd6K,EAAEmxB,KAAK,GAC3B,MAGFt6B,EAAEwuB,KAAKrlB,EACT,OAAS,GAET,OAAOA,EAAE2tB,OAAO/rB,EAClB,EAGA8b,EAAGnnB,UAAU66B,KAAO,SAAehS,GACjC,OAAOtlB,KAAKq2B,KAAK/Q,GAAKvoB,EAAE84B,KAAKvQ,EAC/B,EAEA1B,EAAGnnB,UAAUi6B,OAAS,WACpB,OAA+B,KAAP,EAAhB12B,KAAKkkB,MAAM,GACrB,EAEAN,EAAGnnB,UAAUq6B,MAAQ,WACnB,OAA+B,KAAP,EAAhB92B,KAAKkkB,MAAM,GACrB,EAGAN,EAAGnnB,UAAUy5B,MAAQ,SAAgB5Q,GACnC,OAAOtlB,KAAKkkB,MAAM,GAAKoB,CACzB,EAGA1B,EAAGnnB,UAAU86B,MAAQ,SAAgB9O,GACnCrF,EAAsB,kBAARqF,GACd,IAAIptB,EAAIotB,EAAM,GACV7rB,GAAK6rB,EAAMptB,GAAK,GAChBu4B,EAAI,GAAKv4B,EAGb,GAAI2E,KAAKhD,QAAUJ,EAGjB,OAFAoD,KAAK+mB,QAAQnqB,EAAI,GACjBoD,KAAKkkB,MAAMtnB,IAAMg3B,EACV5zB,KAKT,IADA,IAAIynB,EAAQmM,EACHp4B,EAAIoB,EAAa,IAAV6qB,GAAejsB,EAAIwE,KAAKhD,OAAQxB,IAAK,CACnD,IAAI2G,EAAoB,EAAhBnC,KAAKkkB,MAAM1oB,GACnB2G,GAAKslB,EACLA,EAAQtlB,IAAM,GACdA,GAAK,SACLnC,KAAKkkB,MAAM1oB,GAAK2G,CAClB,CAKA,OAJc,IAAVslB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,UAEAgD,IACT,EAEA4jB,EAAGnnB,UAAUmrB,OAAS,WACpB,OAAuB,IAAhB5nB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,EACzC,EAEAN,EAAGnnB,UAAU46B,KAAO,SAAe/R,GACjC,IAOI6D,EAPAlF,EAAWqB,EAAM,EAErB,GAAsB,IAAlBtlB,KAAKikB,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBjkB,KAAKikB,UAAkBA,EAAU,OAAO,EAK5C,GAHAjkB,KAAKkmB,SAGDlmB,KAAKhD,OAAS,EAChBmsB,EAAM,MACD,CACDlF,IACFqB,GAAOA,GAGTlC,EAAOkC,GAAO,SAAW,qBAEzB,IAAInjB,EAAoB,EAAhBnC,KAAKkkB,MAAM,GACnBiF,EAAMhnB,IAAMmjB,EAAM,EAAInjB,EAAImjB,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlBtlB,KAAKikB,SAA8B,GAANkF,EAC1BA,CACT,EAMAvF,EAAGnnB,UAAUipB,IAAM,SAAcJ,GAC/B,GAAsB,IAAlBtlB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAAgB,OAAQ,EACvD,GAAsB,IAAlBjkB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAAgB,OAAO,EAEtD,IAAIkF,EAAMnpB,KAAKw3B,KAAKlS,GACpB,OAAsB,IAAlBtlB,KAAKikB,SAA8B,GAANkF,EAC1BA,CACT,EAGAvF,EAAGnnB,UAAU+6B,KAAO,SAAelS,GAEjC,GAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAQ,OAAO,EACrC,GAAIgD,KAAKhD,OAASsoB,EAAItoB,OAAQ,OAAQ,EAGtC,IADA,IAAImsB,EAAM,EACD3tB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CACzC,IAAIuB,EAAoB,EAAhBiD,KAAKkkB,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM1oB,GAElB,GAAIuB,IAAMmJ,EAAV,CACInJ,EAAImJ,EACNijB,GAAO,EACEpsB,EAAImJ,IACbijB,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAvF,EAAGnnB,UAAUg7B,IAAM,SAAcnS,GAC/B,OAA0B,IAAnBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUi7B,GAAK,SAAapS,GAC7B,OAAyB,IAAlBtlB,KAAK0lB,IAAIJ,EAClB,EAEA1B,EAAGnnB,UAAUk7B,KAAO,SAAerS,GACjC,OAAOtlB,KAAKq3B,KAAK/R,IAAQ,CAC3B,EAEA1B,EAAGnnB,UAAUm7B,IAAM,SAActS,GAC/B,OAAOtlB,KAAK0lB,IAAIJ,IAAQ,CAC1B,EAEA1B,EAAGnnB,UAAUo7B,IAAM,SAAcvS,GAC/B,OAA2B,IAApBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUq7B,GAAK,SAAaxS,GAC7B,OAA0B,IAAnBtlB,KAAK0lB,IAAIJ,EAClB,EAEA1B,EAAGnnB,UAAUs7B,KAAO,SAAezS,GACjC,OAAOtlB,KAAKq3B,KAAK/R,IAAQ,CAC3B,EAEA1B,EAAGnnB,UAAUu7B,IAAM,SAAc1S,GAC/B,OAAOtlB,KAAK0lB,IAAIJ,IAAQ,CAC1B,EAEA1B,EAAGnnB,UAAUw7B,IAAM,SAAc3S,GAC/B,OAA0B,IAAnBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUy7B,GAAK,SAAa5S,GAC7B,OAAyB,IAAlBtlB,KAAK0lB,IAAIJ,EAClB,EAMA1B,EAAGO,IAAM,SAAcmB,GACrB,OAAO,IAAI6S,EAAI7S,EACjB,EAEA1B,EAAGnnB,UAAU27B,MAAQ,SAAgBC,GAGnC,OAFAjV,GAAQpjB,KAAKmkB,IAAK,yCAClBf,EAAyB,IAAlBpjB,KAAKikB,SAAgB,iCACrBoU,EAAIC,UAAUt4B,MAAMu4B,UAAUF,EACvC,EAEAzU,EAAGnnB,UAAU+7B,QAAU,WAErB,OADApV,EAAOpjB,KAAKmkB,IAAK,wDACVnkB,KAAKmkB,IAAIsU,YAAYz4B,KAC9B,EAEA4jB,EAAGnnB,UAAU87B,UAAY,SAAoBF,GAE3C,OADAr4B,KAAKmkB,IAAMkU,EACJr4B,IACT,EAEA4jB,EAAGnnB,UAAUi8B,SAAW,SAAmBL,GAEzC,OADAjV,GAAQpjB,KAAKmkB,IAAK,yCACXnkB,KAAKu4B,UAAUF,EACxB,EAEAzU,EAAGnnB,UAAUk8B,OAAS,SAAiBrT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAIrU,IAAI9P,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUm8B,QAAU,SAAkBtT,GAEvC,OADAlC,EAAOpjB,KAAKmkB,IAAK,uCACVnkB,KAAKmkB,IAAImH,KAAKtrB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAUo8B,OAAS,SAAiBvT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAIqH,IAAIxrB,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUq8B,QAAU,SAAkBxT,GAEvC,OADAlC,EAAOpjB,KAAKmkB,IAAK,uCACVnkB,KAAKmkB,IAAIoH,KAAKvrB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAUs8B,OAAS,SAAiBzT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAI6U,IAAIh5B,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUw8B,OAAS,SAAiB3T,GAGrC,OAFAlC,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAI+U,SAASl5B,KAAMslB,GACjBtlB,KAAKmkB,IAAIY,IAAI/kB,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAU08B,QAAU,SAAkB7T,GAGvC,OAFAlC,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAI+U,SAASl5B,KAAMslB,GACjBtlB,KAAKmkB,IAAIoL,KAAKvvB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAU28B,OAAS,WAGpB,OAFAhW,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIuP,IAAI1zB,KACtB,EAEA4jB,EAAGnnB,UAAU68B,QAAU,WAGrB,OAFAlW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIwP,KAAK3zB,KACvB,EAGA4jB,EAAGnnB,UAAU88B,QAAU,WAGrB,OAFAnW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIqV,KAAKx5B,KACvB,EAEA4jB,EAAGnnB,UAAUg9B,QAAU,WAGrB,OAFArW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAImT,KAAKt3B,KACvB,EAGA4jB,EAAGnnB,UAAUi9B,OAAS,WAGpB,OAFAtW,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAImG,IAAItqB,KACtB,EAEA4jB,EAAGnnB,UAAUk9B,OAAS,SAAiBrU,GAGrC,OAFAlC,EAAOpjB,KAAKmkB,MAAQmB,EAAInB,IAAK,qBAC7BnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIwC,IAAI3mB,KAAMslB,EAC5B,EAGA,IAAIsU,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQnuB,EAAMnP,GAErBqD,KAAK8L,KAAOA,EACZ9L,KAAKrD,EAAI,IAAIinB,EAAGjnB,EAAG,IACnBqD,KAAK5E,EAAI4E,KAAKrD,EAAE6rB,YAChBxoB,KAAKgjB,EAAI,IAAIY,EAAG,GAAGiQ,OAAO7zB,KAAK5E,GAAGmwB,KAAKvrB,KAAKrD,GAE5CqD,KAAKk6B,IAAMl6B,KAAKm6B,MAClB,CAgDA,SAASC,IACPH,EAAOv+B,KACLsE,KACA,OACA,0EACJ,CA8DA,SAASq6B,IACPJ,EAAOv+B,KACLsE,KACA,OACA,iEACJ,CAGA,SAASs6B,IACPL,EAAOv+B,KACLsE,KACA,OACA,wDACJ,CAGA,SAASu6B,IAEPN,EAAOv+B,KACLsE,KACA,QACA,sEACJ,CA6CA,SAASm4B,EAAKx8B,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI6+B,EAAQ5W,EAAG6W,OAAO9+B,GACtBqE,KAAKrE,EAAI6+B,EAAM79B,EACfqD,KAAKw6B,MAAQA,CACf,MACEpX,EAAOznB,EAAE87B,IAAI,GAAI,kCACjBz3B,KAAKrE,EAAIA,EACTqE,KAAKw6B,MAAQ,IAEjB,CAkOA,SAASE,EAAM/+B,GACbw8B,EAAIz8B,KAAKsE,KAAMrE,GAEfqE,KAAK8H,MAAQ9H,KAAKrE,EAAE6sB,YAChBxoB,KAAK8H,MAAQ,KAAO,IACtB9H,KAAK8H,OAAS,GAAM9H,KAAK8H,MAAQ,IAGnC9H,KAAK3E,EAAI,IAAIuoB,EAAG,GAAGiQ,OAAO7zB,KAAK8H,OAC/B9H,KAAKi2B,GAAKj2B,KAAK26B,KAAK36B,KAAK3E,EAAEq4B,OAC3B1zB,KAAK46B,KAAO56B,KAAK3E,EAAE47B,OAAOj3B,KAAKrE,GAE/BqE,KAAK66B,KAAO76B,KAAK46B,KAAK7V,IAAI/kB,KAAK3E,GAAGy5B,MAAM,GAAGW,IAAIz1B,KAAKrE,GACpDqE,KAAK66B,KAAO76B,KAAK66B,KAAKhF,KAAK71B,KAAK3E,GAChC2E,KAAK66B,KAAO76B,KAAK3E,EAAEmwB,IAAIxrB,KAAK66B,KAC9B,CA/aAZ,EAAOx9B,UAAU09B,KAAO,WACtB,IAAID,EAAM,IAAItW,EAAG,MAEjB,OADAsW,EAAIhW,MAAQ,IAAIjkB,MAAMglB,KAAKe,KAAKhmB,KAAK5E,EAAI,KAClC8+B,CACT,EAEAD,EAAOx9B,UAAUq+B,QAAU,SAAkBxV,GAG3C,IACIyV,EADA1/B,EAAIiqB,EAGR,GACEtlB,KAAKgL,MAAM3P,EAAG2E,KAAKk6B,KACnB7+B,EAAI2E,KAAKg7B,MAAM3/B,GACfA,EAAIA,EAAEiwB,KAAKtrB,KAAKk6B,KAChBa,EAAO1/B,EAAEmtB,kBACFuS,EAAO/6B,KAAK5E,GAErB,IAAIsqB,EAAMqV,EAAO/6B,KAAK5E,GAAK,EAAIC,EAAEm8B,KAAKx3B,KAAKrD,GAgB3C,OAfY,IAAR+oB,GACFrqB,EAAE6oB,MAAM,GAAK,EACb7oB,EAAE2B,OAAS,GACF0oB,EAAM,EACfrqB,EAAEkwB,KAAKvrB,KAAKrD,QAEI+T,IAAZrV,EAAE4/B,MAEJ5/B,EAAE4/B,QAGF5/B,EAAE6qB,SAIC7qB,CACT,EAEA4+B,EAAOx9B,UAAUuO,MAAQ,SAAgB6I,EAAO2T,GAC9C3T,EAAMqgB,OAAOl0B,KAAK5E,EAAG,EAAGosB,EAC1B,EAEAyS,EAAOx9B,UAAUu+B,MAAQ,SAAgB1V,GACvC,OAAOA,EAAIiK,KAAKvvB,KAAKgjB,EACvB,EAQAO,EAAS6W,EAAMH,GAEfG,EAAK39B,UAAUuO,MAAQ,SAAgB6I,EAAOqnB,GAK5C,IAHA,IAAI7G,EAAO,QAEP8G,EAASlW,KAAKC,IAAIrR,EAAM7W,OAAQ,GAC3BxB,EAAI,EAAGA,EAAI2/B,EAAQ3/B,IAC1B0/B,EAAOhX,MAAM1oB,GAAKqY,EAAMqQ,MAAM1oB,GAIhC,GAFA0/B,EAAOl+B,OAASm+B,EAEZtnB,EAAM7W,QAAU,EAGlB,OAFA6W,EAAMqQ,MAAM,GAAK,OACjBrQ,EAAM7W,OAAS,GAKjB,IAAI+W,EAAOF,EAAMqQ,MAAM,GAGvB,IAFAgX,EAAOhX,MAAMgX,EAAOl+B,UAAY+W,EAAOsgB,EAElC74B,EAAI,GAAIA,EAAIqY,EAAM7W,OAAQxB,IAAK,CAClC,IAAIsL,EAAwB,EAAjB+M,EAAMqQ,MAAM1oB,GACvBqY,EAAMqQ,MAAM1oB,EAAI,KAAQsL,EAAOutB,IAAS,EAAMtgB,IAAS,GACvDA,EAAOjN,CACT,CACAiN,KAAU,GACVF,EAAMqQ,MAAM1oB,EAAI,IAAMuY,EACT,IAATA,GAAcF,EAAM7W,OAAS,GAC/B6W,EAAM7W,QAAU,GAEhB6W,EAAM7W,QAAU,CAEpB,EAEAo9B,EAAK39B,UAAUu+B,MAAQ,SAAgB1V,GAErCA,EAAIpB,MAAMoB,EAAItoB,QAAU,EACxBsoB,EAAIpB,MAAMoB,EAAItoB,OAAS,GAAK,EAC5BsoB,EAAItoB,QAAU,EAId,IADA,IAAI6rB,EAAK,EACArtB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CACnC,IAAI2G,EAAmB,EAAfmjB,EAAIpB,MAAM1oB,GAClBqtB,GAAU,IAAJ1mB,EACNmjB,EAAIpB,MAAM1oB,GAAU,SAALqtB,EACfA,EAAS,GAAJ1mB,GAAa0mB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BvD,EAAIpB,MAAMoB,EAAItoB,OAAS,KACzBsoB,EAAItoB,SAC8B,IAA9BsoB,EAAIpB,MAAMoB,EAAItoB,OAAS,IACzBsoB,EAAItoB,UAGDsoB,CACT,EAQA/B,EAAS8W,EAAMJ,GAQf1W,EAAS+W,EAAML,GASf1W,EAASgX,EAAQN,GAEjBM,EAAO99B,UAAUu+B,MAAQ,SAAgB1V,GAGvC,IADA,IAAImC,EAAQ,EACHjsB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CACnC,IAAImuB,EAA0B,IAAL,EAAfrE,EAAIpB,MAAM1oB,IAAiBisB,EACjCoB,EAAU,SAALc,EACTA,KAAQ,GAERrE,EAAIpB,MAAM1oB,GAAKqtB,EACfpB,EAAQkC,CACV,CAIA,OAHc,IAAVlC,IACFnC,EAAIpB,MAAMoB,EAAItoB,UAAYyqB,GAErBnC,CACT,EAGA1B,EAAG6W,OAAS,SAAgB3uB,GAE1B,GAAI8tB,EAAO9tB,GAAO,OAAO8tB,EAAO9tB,GAEhC,IAAI0uB,EACJ,GAAa,SAAT1uB,EACF0uB,EAAQ,IAAIJ,OACP,GAAa,SAATtuB,EACT0uB,EAAQ,IAAIH,OACP,GAAa,SAATvuB,EACT0uB,EAAQ,IAAIF,MACP,IAAa,WAATxuB,EAGT,MAAM,IAAI5I,MAAM,iBAAmB4I,GAFnC0uB,EAAQ,IAAID,CAGd,CAGA,OAFAX,EAAO9tB,GAAQ0uB,EAERA,CACT,EAiBArC,EAAI17B,UAAU48B,SAAW,SAAmBt8B,GAC1CqmB,EAAsB,IAAfrmB,EAAEknB,SAAgB,iCACzBb,EAAOrmB,EAAEonB,IAAK,kCAChB,EAEAgU,EAAI17B,UAAUy8B,SAAW,SAAmBn8B,EAAGmJ,GAC7Ckd,EAAqC,KAA7BrmB,EAAEknB,SAAW/d,EAAE+d,UAAiB,iCACxCb,EAAOrmB,EAAEonB,KAAOpnB,EAAEonB,MAAQje,EAAEie,IAC1B,kCACJ,EAEAgU,EAAI17B,UAAUk+B,KAAO,SAAe59B,GAClC,OAAIiD,KAAKw6B,MAAcx6B,KAAKw6B,MAAMM,QAAQ/9B,GAAGw7B,UAAUv4B,OAEvDmlB,EAAKpoB,EAAGA,EAAE84B,KAAK71B,KAAKrE,GAAG48B,UAAUv4B,OAC1BjD,EACT,EAEAo7B,EAAI17B,UAAU6tB,IAAM,SAAcvtB,GAChC,OAAIA,EAAE6qB,SACG7qB,EAAE+pB,QAGJ9mB,KAAKrE,EAAE6vB,IAAIzuB,GAAGw7B,UAAUv4B,KACjC,EAEAm4B,EAAI17B,UAAUqT,IAAM,SAAc/S,EAAGmJ,GACnClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAE+S,IAAI5J,GAIhB,OAHIijB,EAAIzD,IAAI1lB,KAAKrE,IAAM,GACrBwtB,EAAIoC,KAAKvrB,KAAKrE,GAETwtB,EAAIoP,UAAUv4B,KACvB,EAEAm4B,EAAI17B,UAAU6uB,KAAO,SAAevuB,EAAGmJ,GACrClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEuuB,KAAKplB,GAIjB,OAHIijB,EAAIzD,IAAI1lB,KAAKrE,IAAM,GACrBwtB,EAAIoC,KAAKvrB,KAAKrE,GAETwtB,CACT,EAEAgP,EAAI17B,UAAU+uB,IAAM,SAAczuB,EAAGmJ,GACnClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEyuB,IAAItlB,GAIhB,OAHIijB,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAKtrB,KAAKrE,GAETwtB,EAAIoP,UAAUv4B,KACvB,EAEAm4B,EAAI17B,UAAU8uB,KAAO,SAAexuB,EAAGmJ,GACrClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEwuB,KAAKrlB,GAIjB,OAHIijB,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAKtrB,KAAKrE,GAETwtB,CACT,EAEAgP,EAAI17B,UAAUu8B,IAAM,SAAcj8B,EAAGuoB,GAEnC,OADAtlB,KAAKq5B,SAASt8B,GACPiD,KAAK26B,KAAK59B,EAAE03B,MAAMnP,GAC3B,EAEA6S,EAAI17B,UAAU8yB,KAAO,SAAexyB,EAAGmJ,GAErC,OADAlG,KAAKk5B,SAASn8B,EAAGmJ,GACVlG,KAAK26B,KAAK59B,EAAEwyB,KAAKrpB,GAC1B,EAEAiyB,EAAI17B,UAAUsoB,IAAM,SAAchoB,EAAGmJ,GAEnC,OADAlG,KAAKk5B,SAASn8B,EAAGmJ,GACVlG,KAAK26B,KAAK59B,EAAEgoB,IAAI7e,GACzB,EAEAiyB,EAAI17B,UAAUk3B,KAAO,SAAe52B,GAClC,OAAOiD,KAAKuvB,KAAKxyB,EAAGA,EAAE+pB,QACxB,EAEAqR,EAAI17B,UAAUi3B,IAAM,SAAc32B,GAChC,OAAOiD,KAAK+kB,IAAIhoB,EAAGA,EACrB,EAEAo7B,EAAI17B,UAAU+8B,KAAO,SAAez8B,GAClC,GAAIA,EAAE6qB,SAAU,OAAO7qB,EAAE+pB,QAEzB,IAAIsU,EAAOp7B,KAAKrE,EAAEu6B,MAAM,GAIxB,GAHA9S,EAAOgY,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIzU,EAAM3mB,KAAKrE,EAAEmU,IAAI,IAAI8T,EAAG,IAAIsQ,OAAO,GACvC,OAAOl0B,KAAK2mB,IAAI5pB,EAAG4pB,EACrB,CAKA,IAAIiN,EAAI5zB,KAAKrE,EAAEq5B,KAAK,GAChBp4B,EAAI,EACR,OAAQg3B,EAAEhM,UAA2B,IAAfgM,EAAEsC,MAAM,GAC5Bt5B,IACAg3B,EAAEM,OAAO,GAEX9Q,GAAQwQ,EAAEhM,UAEV,IAAIyT,EAAM,IAAIzX,EAAG,GAAGwU,MAAMp4B,MACtBs7B,EAAOD,EAAI3B,SAIX6B,EAAOv7B,KAAKrE,EAAEq5B,KAAK,GAAGd,OAAO,GAC7BsH,EAAIx7B,KAAKrE,EAAE6sB,YACfgT,EAAI,IAAI5X,EAAG,EAAI4X,EAAIA,GAAGpD,MAAMp4B,MAE5B,MAAuC,IAAhCA,KAAK2mB,IAAI6U,EAAGD,GAAM7V,IAAI4V,GAC3BE,EAAE5C,QAAQ0C,GAGZ,IAAI1/B,EAAIoE,KAAK2mB,IAAI6U,EAAG5H,GAChBv4B,EAAI2E,KAAK2mB,IAAI5pB,EAAG62B,EAAEmB,KAAK,GAAGb,OAAO,IACjCh5B,EAAI8E,KAAK2mB,IAAI5pB,EAAG62B,GAChBj4B,EAAIiB,EACR,MAAsB,IAAf1B,EAAEwqB,IAAI2V,GAAY,CAEvB,IADA,IAAInB,EAAMh/B,EACDM,EAAI,EAAoB,IAAjB0+B,EAAIxU,IAAI2V,GAAY7/B,IAClC0+B,EAAMA,EAAId,SAEZhW,EAAO5nB,EAAIG,GACX,IAAIuK,EAAIlG,KAAK2mB,IAAI/qB,EAAG,IAAIgoB,EAAG,GAAGiQ,OAAOl4B,EAAIH,EAAI,IAE7CH,EAAIA,EAAE49B,OAAO/yB,GACbtK,EAAIsK,EAAEkzB,SACNl+B,EAAIA,EAAE+9B,OAAOr9B,GACbD,EAAIH,CACN,CAEA,OAAOH,CACT,EAEA88B,EAAI17B,UAAU66B,KAAO,SAAev6B,GAClC,IAAI0+B,EAAM1+B,EAAEk6B,OAAOj3B,KAAKrE,GACxB,OAAqB,IAAjB8/B,EAAIxX,UACNwX,EAAIxX,SAAW,EACRjkB,KAAK26B,KAAKc,GAAK/B,UAEf15B,KAAK26B,KAAKc,EAErB,EAEAtD,EAAI17B,UAAUkqB,IAAM,SAAc5pB,EAAGuoB,GACnC,GAAIA,EAAIsC,SAAU,OAAO,IAAIhE,EAAG,GAAGwU,MAAMp4B,MACzC,GAAoB,IAAhBslB,EAAI+R,KAAK,GAAU,OAAOt6B,EAAE+pB,QAEhC,IAAI4U,EAAa,EACbC,EAAM,IAAI17B,MAAM,GAAKy7B,GACzBC,EAAI,GAAK,IAAI/X,EAAG,GAAGwU,MAAMp4B,MACzB27B,EAAI,GAAK5+B,EACT,IAAK,IAAIvB,EAAI,EAAGA,EAAImgC,EAAI3+B,OAAQxB,IAC9BmgC,EAAIngC,GAAKwE,KAAK+kB,IAAI4W,EAAIngC,EAAI,GAAIuB,GAGhC,IAAIosB,EAAMwS,EAAI,GACVC,EAAU,EACVC,EAAa,EACbhX,EAAQS,EAAIkD,YAAc,GAK9B,IAJc,IAAV3D,IACFA,EAAQ,IAGLrpB,EAAI8pB,EAAItoB,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIgrB,EAAOlB,EAAIpB,MAAM1oB,GACZyqB,EAAIpB,EAAQ,EAAGoB,GAAK,EAAGA,IAAK,CACnC,IAAIwC,EAAOjC,GAAQP,EAAK,EACpBkD,IAAQwS,EAAI,KACdxS,EAAMnpB,KAAK0zB,IAAIvK,IAGL,IAARV,GAAyB,IAAZmT,GAKjBA,IAAY,EACZA,GAAWnT,EACXoT,KACIA,IAAeH,GAAqB,IAANlgC,GAAiB,IAANyqB,KAE7CkD,EAAMnpB,KAAK+kB,IAAIoE,EAAKwS,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAhX,EAAQ,EACV,CAEA,OAAOsE,CACT,EAEAgP,EAAI17B,UAAU67B,UAAY,SAAoBhT,GAC5C,IAAIjqB,EAAIiqB,EAAIuQ,KAAK71B,KAAKrE,GAEtB,OAAON,IAAMiqB,EAAMjqB,EAAEyrB,QAAUzrB,CACjC,EAEA88B,EAAI17B,UAAUg8B,YAAc,SAAsBnT,GAChD,IAAI6D,EAAM7D,EAAIwB,QAEd,OADAqC,EAAIhF,IAAM,KACHgF,CACT,EAMAvF,EAAGkY,KAAO,SAAexW,GACvB,OAAO,IAAIoV,EAAKpV,EAClB,EAkBA/B,EAASmX,EAAMvC,GAEfuC,EAAKj+B,UAAU67B,UAAY,SAAoBhT,GAC7C,OAAOtlB,KAAK26B,KAAKrV,EAAImP,MAAMz0B,KAAK8H,OAClC,EAEA4yB,EAAKj+B,UAAUg8B,YAAc,SAAsBnT,GACjD,IAAIjqB,EAAI2E,KAAK26B,KAAKrV,EAAIP,IAAI/kB,KAAK46B,OAE/B,OADAv/B,EAAE8oB,IAAM,KACD9oB,CACT,EAEAq/B,EAAKj+B,UAAU8yB,KAAO,SAAexyB,EAAGmJ,GACtC,GAAInJ,EAAE6qB,UAAY1hB,EAAE0hB,SAGlB,OAFA7qB,EAAEmnB,MAAM,GAAK,EACbnnB,EAAEC,OAAS,EACJD,EAGT,IAAI7B,EAAI6B,EAAEwyB,KAAKrpB,GACXtK,EAAIV,EAAE25B,MAAM70B,KAAK8H,OAAOid,IAAI/kB,KAAK66B,MAAMjG,OAAO50B,KAAK8H,OAAOid,IAAI/kB,KAAKrE,GACnEmB,EAAI5B,EAAEqwB,KAAK3vB,GAAGs4B,OAAOl0B,KAAK8H,OAC1BqhB,EAAMrsB,EAQV,OANIA,EAAE4oB,IAAI1lB,KAAKrE,IAAM,EACnBwtB,EAAMrsB,EAAEyuB,KAAKvrB,KAAKrE,GACTmB,EAAEu6B,KAAK,GAAK,IACrBlO,EAAMrsB,EAAEwuB,KAAKtrB,KAAKrE,IAGbwtB,EAAIoP,UAAUv4B,KACvB,EAEA06B,EAAKj+B,UAAUsoB,IAAM,SAAchoB,EAAGmJ,GACpC,GAAInJ,EAAE6qB,UAAY1hB,EAAE0hB,SAAU,OAAO,IAAIhE,EAAG,GAAG2U,UAAUv4B,MAEzD,IAAI9E,EAAI6B,EAAEgoB,IAAI7e,GACVtK,EAAIV,EAAE25B,MAAM70B,KAAK8H,OAAOid,IAAI/kB,KAAK66B,MAAMjG,OAAO50B,KAAK8H,OAAOid,IAAI/kB,KAAKrE,GACnEmB,EAAI5B,EAAEqwB,KAAK3vB,GAAGs4B,OAAOl0B,KAAK8H,OAC1BqhB,EAAMrsB,EAOV,OANIA,EAAE4oB,IAAI1lB,KAAKrE,IAAM,EACnBwtB,EAAMrsB,EAAEyuB,KAAKvrB,KAAKrE,GACTmB,EAAEu6B,KAAK,GAAK,IACrBlO,EAAMrsB,EAAEwuB,KAAKtrB,KAAKrE,IAGbwtB,EAAIoP,UAAUv4B,KACvB,EAEA06B,EAAKj+B,UAAU66B,KAAO,SAAev6B,GAEnC,IAAIosB,EAAMnpB,KAAK26B,KAAK59B,EAAEk6B,OAAOj3B,KAAKrE,GAAGopB,IAAI/kB,KAAKi2B,KAC9C,OAAO9M,EAAIoP,UAAUv4B,KACvB,CACD,CA19GD,CA09GoCmjB,EAAQnjB,K,iCCx9G5C,IAAI+7B,EAAMjgC,OAAOW,UAAUC,eACvBs/B,EAAS,IASb,SAASC,IAAU,CA4BnB,SAASC,EAAGppB,EAAIpB,EAAS1H,GACvBhK,KAAK8S,GAAKA,EACV9S,KAAK0R,QAAUA,EACf1R,KAAKgK,KAAOA,IAAQ,CACtB,CAaA,SAASD,EAAYoyB,EAASC,EAAOtpB,EAAIpB,EAAS1H,GAChD,GAAkB,oBAAP8I,EACT,MAAM,IAAIvL,UAAU,mCAGtB,IAAI80B,EAAW,IAAIH,EAAGppB,EAAIpB,GAAWyqB,EAASnyB,GAC1CsyB,EAAMN,EAASA,EAASI,EAAQA,EAMpC,OAJKD,EAAQI,QAAQD,GACXH,EAAQI,QAAQD,GAAKxpB,GAC1BqpB,EAAQI,QAAQD,GAAO,CAACH,EAAQI,QAAQD,GAAMD,GADhBF,EAAQI,QAAQD,GAAK70B,KAAK40B,IADlCF,EAAQI,QAAQD,GAAOD,EAAUF,EAAQK,gBAI7DL,CACT,CASA,SAASM,EAAWN,EAASG,GACI,MAAzBH,EAAQK,aAAoBL,EAAQI,QAAU,IAAIN,SAC5CE,EAAQI,QAAQD,EAC9B,CASA,SAASI,IACP18B,KAAKu8B,QAAU,IAAIN,EACnBj8B,KAAKw8B,aAAe,CACtB,CAzEI1gC,OAAOQ,SACT2/B,EAAOx/B,UAAYX,OAAOQ,OAAO,OAM5B,IAAI2/B,GAAS31B,YAAW01B,GAAS,IA2ExCU,EAAajgC,UAAUkgC,WAAa,WAClC,IACIC,EACA9wB,EAFA+wB,EAAQ,GAIZ,GAA0B,IAAtB78B,KAAKw8B,aAAoB,OAAOK,EAEpC,IAAK/wB,KAAS8wB,EAAS58B,KAAKu8B,QACtBR,EAAIrgC,KAAKkhC,EAAQ9wB,IAAO+wB,EAAMp1B,KAAKu0B,EAASlwB,EAAKjD,MAAM,GAAKiD,GAGlE,OAAIhQ,OAAO2K,sBACFo2B,EAAMl1B,OAAO7L,OAAO2K,sBAAsBm2B,IAG5CC,CACT,EASAH,EAAajgC,UAAU8N,UAAY,SAAmB6xB,GACpD,IAAIE,EAAMN,EAASA,EAASI,EAAQA,EAChC1vB,EAAW1M,KAAKu8B,QAAQD,GAE5B,IAAK5vB,EAAU,MAAO,GACtB,GAAIA,EAASoG,GAAI,MAAO,CAACpG,EAASoG,IAElC,IAAK,IAAItX,EAAI,EAAGC,EAAIiR,EAAS1P,OAAQ8/B,EAAK,IAAI78B,MAAMxE,GAAID,EAAIC,EAAGD,IAC7DshC,EAAGthC,GAAKkR,EAASlR,GAAGsX,GAGtB,OAAOgqB,CACT,EASAJ,EAAajgC,UAAUsgC,cAAgB,SAAuBX,GAC5D,IAAIE,EAAMN,EAASA,EAASI,EAAQA,EAChC7xB,EAAYvK,KAAKu8B,QAAQD,GAE7B,OAAK/xB,EACDA,EAAUuI,GAAW,EAClBvI,EAAUvN,OAFM,CAGzB,EASA0/B,EAAajgC,UAAU2N,KAAO,SAAcgyB,EAAOtQ,EAAIG,EAAIG,EAAIG,EAAIG,GACjE,IAAI4P,EAAMN,EAASA,EAASI,EAAQA,EAEpC,IAAKp8B,KAAKu8B,QAAQD,GAAM,OAAO,EAE/B,IAEIvrB,EACAvV,EAHA+O,EAAYvK,KAAKu8B,QAAQD,GACzBtX,EAAMnmB,UAAU7B,OAIpB,GAAIuN,EAAUuI,GAAI,CAGhB,OAFIvI,EAAUP,MAAMhK,KAAKkK,eAAekyB,EAAO7xB,EAAUuI,QAAIpC,GAAW,GAEhEsU,GACN,KAAK,EAAG,OAAOza,EAAUuI,GAAGpX,KAAK6O,EAAUmH,UAAU,EACrD,KAAK,EAAG,OAAOnH,EAAUuI,GAAGpX,KAAK6O,EAAUmH,QAASoa,IAAK,EACzD,KAAK,EAAG,OAAOvhB,EAAUuI,GAAGpX,KAAK6O,EAAUmH,QAASoa,EAAIG,IAAK,EAC7D,KAAK,EAAG,OAAO1hB,EAAUuI,GAAGpX,KAAK6O,EAAUmH,QAASoa,EAAIG,EAAIG,IAAK,EACjE,KAAK,EAAG,OAAO7hB,EAAUuI,GAAGpX,KAAK6O,EAAUmH,QAASoa,EAAIG,EAAIG,EAAIG,IAAK,EACrE,KAAK,EAAG,OAAOhiB,EAAUuI,GAAGpX,KAAK6O,EAAUmH,QAASoa,EAAIG,EAAIG,EAAIG,EAAIG,IAAK,EAG3E,IAAKlxB,EAAI,EAAGuV,EAAO,IAAI9Q,MAAM+kB,EAAK,GAAIxpB,EAAIwpB,EAAKxpB,IAC7CuV,EAAKvV,EAAI,GAAKqD,UAAUrD,GAG1B+O,EAAUuI,GAAG5S,MAAMqK,EAAUmH,QAASX,EACxC,KAAO,CACL,IACIkV,EADAjpB,EAASuN,EAAUvN,OAGvB,IAAKxB,EAAI,EAAGA,EAAIwB,EAAQxB,IAGtB,OAFI+O,EAAU/O,GAAGwO,MAAMhK,KAAKkK,eAAekyB,EAAO7xB,EAAU/O,GAAGsX,QAAIpC,GAAW,GAEtEsU,GACN,KAAK,EAAGza,EAAU/O,GAAGsX,GAAGpX,KAAK6O,EAAU/O,GAAGkW,SAAU,MACpD,KAAK,EAAGnH,EAAU/O,GAAGsX,GAAGpX,KAAK6O,EAAU/O,GAAGkW,QAASoa,GAAK,MACxD,KAAK,EAAGvhB,EAAU/O,GAAGsX,GAAGpX,KAAK6O,EAAU/O,GAAGkW,QAASoa,EAAIG,GAAK,MAC5D,KAAK,EAAG1hB,EAAU/O,GAAGsX,GAAGpX,KAAK6O,EAAU/O,GAAGkW,QAASoa,EAAIG,EAAIG,GAAK,MAChE,QACE,IAAKrb,EAAM,IAAKkV,EAAI,EAAGlV,EAAO,IAAI9Q,MAAM+kB,EAAK,GAAIiB,EAAIjB,EAAKiB,IACxDlV,EAAKkV,EAAI,GAAKpnB,UAAUonB,GAG1B1b,EAAU/O,GAAGsX,GAAG5S,MAAMqK,EAAU/O,GAAGkW,QAASX,GAGpD,CAEA,OAAO,CACT,EAWA2rB,EAAajgC,UAAUqN,GAAK,SAAYsyB,EAAOtpB,EAAIpB,GACjD,OAAO3H,EAAY/J,KAAMo8B,EAAOtpB,EAAIpB,GAAS,EAC/C,EAWAgrB,EAAajgC,UAAUuN,KAAO,SAAcoyB,EAAOtpB,EAAIpB,GACrD,OAAO3H,EAAY/J,KAAMo8B,EAAOtpB,EAAIpB,GAAS,EAC/C,EAYAgrB,EAAajgC,UAAUyN,eAAiB,SAAwBkyB,EAAOtpB,EAAIpB,EAAS1H,GAClF,IAAIsyB,EAAMN,EAASA,EAASI,EAAQA,EAEpC,IAAKp8B,KAAKu8B,QAAQD,GAAM,OAAOt8B,KAC/B,IAAK8S,EAEH,OADA2pB,EAAWz8B,KAAMs8B,GACVt8B,KAGT,IAAIuK,EAAYvK,KAAKu8B,QAAQD,GAE7B,GAAI/xB,EAAUuI,GAEVvI,EAAUuI,KAAOA,GACf9I,IAAQO,EAAUP,MAClB0H,GAAWnH,EAAUmH,UAAYA,GAEnC+qB,EAAWz8B,KAAMs8B,OAEd,CACL,IAAK,IAAI9gC,EAAI,EAAGohC,EAAS,GAAI5/B,EAASuN,EAAUvN,OAAQxB,EAAIwB,EAAQxB,KAEhE+O,EAAU/O,GAAGsX,KAAOA,GACnB9I,IAASO,EAAU/O,GAAGwO,MACtB0H,GAAWnH,EAAU/O,GAAGkW,UAAYA,IAErCkrB,EAAOn1B,KAAK8C,EAAU/O,IAOtBohC,EAAO5/B,OAAQgD,KAAKu8B,QAAQD,GAAyB,IAAlBM,EAAO5/B,OAAe4/B,EAAO,GAAKA,EACpEH,EAAWz8B,KAAMs8B,EACxB,CAEA,OAAOt8B,IACT,EASA08B,EAAajgC,UAAU0N,mBAAqB,SAA4BiyB,GACtE,IAAIE,EAUJ,OARIF,GACFE,EAAMN,EAASA,EAASI,EAAQA,EAC5Bp8B,KAAKu8B,QAAQD,IAAMG,EAAWz8B,KAAMs8B,KAExCt8B,KAAKu8B,QAAU,IAAIN,EACnBj8B,KAAKw8B,aAAe,GAGfx8B,IACT,EAKA08B,EAAajgC,UAAUwN,IAAMyyB,EAAajgC,UAAUyN,eACpDwyB,EAAajgC,UAAUsN,YAAc2yB,EAAajgC,UAAUqN,GAK5D4yB,EAAaM,SAAWhB,EAKxBU,EAAaA,aAAeA,EAM1BvZ,EAAO7nB,QAAUohC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrSnB,SAASO,EAAYlgC,EAAGmJ,GACpB,MAAM8e,EAAMjoB,EAAEC,OACd,GAAIgoB,IAAQ9e,EAAElJ,OACV,OAAO,EAEX,IAAK,IAAIxB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACrB,GAAIuB,EAAEvB,KAAO0K,EAAE1K,GACX,OAAO,EAGf,OAAO,CACX,CACA,SAAS0hC,EAAqBngC,EAAGmJ,GAC7B,MAAM8e,EAAMjoB,EAAEC,OACd,GAAIgoB,IAAQ9e,EAAElJ,OACV,OAAO,EAEX,IAAK,IAAIxB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACrB,IAAKuB,EAAEvB,GAAG2hC,OAAOj3B,EAAE1K,IACf,OAAO,EAGf,OAAO,CACX,CACA,MAAM4hC,EAAY,CAAC,EACnB,SAASC,IACLD,EAAUE,IAAM,IAAIr9B,MAAM,KAC1Bm9B,EAAUG,IAAM,CAAC,EACjB,IAAK,IAAI/hC,EAAI,EAAGA,GAAK,MAAQA,EAAG,CAC5B,MAAM0K,EAAI1K,EAAEqB,SAAS,IAAI2gC,SAAS,EAAG,KACrCJ,EAAUE,IAAI9hC,GAAK0K,EACnBk3B,EAAUG,IAAIr3B,GAAK1K,CACvB,CACJ,CACA,SAASiiC,EAAWn0B,GACX8zB,EAAUE,KACXD,IAEJ,MAAMrY,EAAM1b,EAAMtM,OACZ0gC,EAAK,IAAIz9B,MAAM+kB,GACrB,IAAK,IAAIxpB,EAAI,EAAGA,EAAIwpB,IAAOxpB,EACvBkiC,EAAGliC,GAAK4hC,EAAUE,IAAIh0B,EAAM9N,IAEhC,OAAOkiC,EAAG3yB,KAAK,GACnB,CACA,SAAS4yB,EAAWC,GAIhB,GAHKR,EAAUG,KACXF,IAEe,kBAARO,EACP,MAAM,IAAI16B,MAAM,yCAEpB,GAAI06B,EAAI5gC,OAAS,EACb,MAAM,IAAIkG,MAAM,4BAEpB06B,EAAMA,EAAIr7B,cACV,MAAMyiB,EAAM4Y,EAAI5gC,OAAS,EACnBgJ,EAAS,IAAI63B,WAAW7Y,GAC9B,IAAK,IAAIxpB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IAAK,CAC1B,MAAM0K,EAAIk3B,EAAUG,IAAIK,EAAQ,EAAJpiC,GAASoiC,EAAQ,EAAJpiC,EAAQ,IACjD,QAAUkV,IAANxK,EACA,MAAM,IAAIhD,MAAM,uBAEpB8C,EAAOxK,GAAK0K,CAChB,CACA,OAAOF,CACX,CAEA,SAAS83B,EAAa9gC,GAClB,OAAO,IAAKA,EAChB,CAEA,IAAI+gC,GAAU,EAEd,SAASC,EAAaC,EAAQC,GAC1B,GAAID,aAAkBC,EAClB,OAAO,EAEX,GAAc,MAAVD,GAAoC,kBAAXA,EACzB,OAAO,EAIX,MAAME,EAAYD,EAAU,gBAAkBA,EAAU,WACxD,IAAKC,EACD,OAAO,EAEX,IAAIC,EAAgBH,EAAO13B,YACvB83B,GAAkB,EACtB,MAAOD,IAAkBC,EAAiB,CACtC,MAAMC,EAAoBF,EAAc,gBAAkBA,EAAc,WACxE,IAAKE,EACD,MAEJD,EAAkBF,GAAaG,EAC/BF,EAAgBtiC,OAAOyiC,eAAeH,EAC1C,CAMA,OALIC,IAAoBN,IAEpBle,QAAQ2e,KAAK,8BAA8BL,oGAC3CJ,GAAU,GAEPM,CACX,CAEA,MAAMI,EAKF,WAAOC,CAAKtiC,EAAOuiC,GACf,OAAIX,EAAa5hC,EAAO4D,MACb5D,EAEU,kBAAVA,EACA4D,KAAK4+B,WAAWxiC,EAAOuiC,GAE9BphC,YAAYC,OAAOpB,GACZ,IAAI4D,KAAK,IAAI69B,WAAWzhC,EAAMqB,OAAQrB,EAAMyiC,WAAYziC,EAAM6sB,aAErE+U,EAAa5hC,EAAM,SAAUyhC,YACtB,IAAI79B,KAAK5D,EAAM,UAEnB,IAAI4D,KAAK,IAAI69B,WAAWzhC,GACnC,CACA,iBAAOwiC,CAAWxiC,EAAOuiC,EAAW,OAChC,GAAiB,QAAbA,EAAoB,CACpB,MAAMr1B,EAAQq0B,EAAWvhC,GACzB,OAAO,IAAI4D,KAAKsJ,EACpB,CACK,GAAgB,QAAZq1B,EAAoB,CACzB,MAAMG,EAAU,IAAIC,YACpB,OAAO,IAAI/+B,KAAK8+B,EAAQE,OAAO5iC,GACnC,CAEI,MAAM,IAAI8G,MAAM,qBAAqBy7B,IAE7C,CACA,cAAOM,CAAQC,GACX,MAAMla,EAAMka,EAAQC,gBACpB,OAAO,IAAIn/B,KAAKk/B,EAAQE,UAAUpa,GACtC,CACA,iBAAOqa,GACH,OAAO,IAAIZ,CACf,CACA,YAAOa,CAAMviC,EAAGmJ,GACZ,OAAOlG,KAAK0+B,KAAK3hC,GAAGogC,OAAOn9B,KAAK0+B,KAAKx4B,GACzC,CACA,aAAOq5B,CAAOviC,GACV,OAAO,IAAIgD,KAAK89B,EAAa9gC,GACjC,CAEA,cAAOwiC,CAAQpjC,GACX,SAAI4hC,EAAa5hC,EAAOqiC,KAAUT,EAAa5hC,EAAOyhC,kBAGlD59B,MAAMhD,QAAQb,KAAUA,EAAMqjC,OAAO3+B,GAAmB,kBAANA,QAGjC,kBAAV1E,IAAuB,WAAW8O,KAAK9O,IAAoB,KAAVA,GAIhE,CACA,WAAAmK,CAAY+C,EAAQ,IAAIu0B,YACpB79B,KAAKsJ,MAAQA,CACjB,CAEA,UAAItM,GACA,OAAOgD,KAAKsJ,MAAM2f,UACtB,CAEA,aAAIyW,GACA,OAAOjC,EAAWz9B,KAAKsJ,MAC3B,CAEA,cAAIq2B,GACA,OAAO,IAAIC,aAAcC,OAAO7/B,KAAKsJ,MACzC,CAEA,MAAAw2B,CAAOC,GACHA,EAAQtB,EAAMC,KAAKqB,GACnB,MAAMC,EAAUhgC,KAAKsJ,MAAM2f,WAAa8W,EAAMz2B,MAAM2f,WAC9CxrB,EAAS,IAAIF,YAAYyiC,GACzB12B,EAAQ,IAAIu0B,WAAWpgC,GAC7B6L,EAAM22B,IAAIjgC,KAAKsJ,OACfA,EAAM22B,IAAIF,EAAMz2B,MAAOtJ,KAAKsJ,MAAM2f,YAClCjpB,KAAKsJ,MAAQA,CACjB,CAEA,SAAA42B,CAAUH,GACN,MAAMrC,EAAK,IAAIe,EAAMz+B,KAAKsJ,OAE1B,OADAo0B,EAAGoC,OAAOC,GACHrC,CACX,CAEA,OAAAyC,CAAQ/kC,EAAGglC,GAAW,GAClB,MAAMJ,EAAUI,EAAWhlC,EAAI6pB,KAAKM,IAAInqB,EAAG4E,KAAKsJ,MAAM2f,YAChDxrB,EAAS,IAAIF,YAAYyiC,GACzB12B,EAAQ,IAAIu0B,WAAWpgC,GAC7B6L,EAAM+2B,KAAK,GACPD,GAAYpgC,KAAKsJ,MAAM2f,WAAa+W,EACpC12B,EAAM22B,IAAIjgC,KAAKsJ,MAAMT,MAAM,EAAGm3B,GAAU,GAGxC12B,EAAM22B,IAAIjgC,KAAKsJ,MAAO02B,EAAUhgC,KAAKsJ,MAAM2f,YAE/CjpB,KAAKsJ,MAAQA,CACjB,CAEA,UAAAg3B,CAAWllC,EAAGglC,GAAW,GACrB,MAAM1C,EAAK,IAAIe,EAAMz+B,KAAKsJ,OAE1B,OADAo0B,EAAGyC,QAAQ/kC,EAAGglC,GACP1C,CACX,CAEA,SAAA6C,CAAUnlC,EAAI,GACV4E,KAAKsJ,MAAQtJ,KAAKsJ,MAAMk3B,SAASplC,EACrC,CAEA,aAAAqlC,CAAcrlC,EAAI,GACd,OAAO,IAAIqjC,EAAMz+B,KAAKsJ,MAAMk3B,SAASplC,GACzC,CACA,IAAAwrB,GACI,MAAMnpB,EAAS,IAAIF,YAAYyC,KAAKsJ,MAAM2f,YACpC3f,EAAQ,IAAIu0B,WAAWpgC,GAE7B,OADA6L,EAAM22B,IAAIjgC,KAAKsJ,OACR,IAAIm1B,EAAMn1B,EACrB,CACA,MAAA6zB,CAAO4C,GACH,OAAO9C,EAAYj9B,KAAKsJ,MAAOm1B,EAAMC,KAAKqB,GAAOz2B,MACrD,CACA,QAAAzM,CAAS8hC,EAAW,OAChB,GAAiB,QAAbA,EACA,OAAO3+B,KAAK0/B,UAEX,GAAiB,SAAbf,EACL,OAAO3+B,KAAK2/B,WAGZ,MAAM,IAAIz8B,MAAM,qBAAqBy7B,IAE7C,CACA,KAAA+B,CAAM5B,GACFA,EAAQ6B,eAAe3gC,KAAKsJ,MAAM2f,YAClC6V,EAAQ8B,WAAW5gC,KAAKsJ,MAC5B,CACA,MAAA2e,GACI,OAAOjoB,KAAK0/B,SAChB,EAEJjB,EAAMoC,QAAU,QAEhB,MAAMC,EACF,WAAOpC,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAO4D,MACb5D,EAEP4hC,EAAa5hC,EAAO0kC,GACb,IAAI9gC,KAAK5D,EAAMkN,OAEnB,IAAItJ,KAAKy+B,EAAMC,KAAKtiC,GAAOkN,MACtC,CACA,cAAO21B,CAAQC,GACX,OAAO,IAAIl/B,KAAKk/B,EAAQE,UAAUp/B,KAAK+gC,UAC3C,CACA,iBAAO1B,GACH,OAAO,IAAIr/B,KAAK,IAAI69B,WAAW79B,KAAK+gC,UACxC,CACA,WAAAx6B,CAAY+C,GACR,MAAMy3B,EAAW/gC,KAAKuG,YAAYw6B,SAClC,GAAIz3B,EAAM2f,aAAe8X,EACrB,MAAM,IAAI79B,MAAM,oCAAoC69B,eAAsBz3B,EAAM2f,cAEpFjpB,KAAKsJ,MAAQA,CACjB,CACA,MAAA6zB,CAAO4C,GACH,MAAMnX,EAAO5oB,KAAKuG,YAClB,IACI,OAAO02B,EAAYj9B,KAAKsJ,MAAOsf,EAAK8V,KAAKqB,GAAOz2B,MACpD,CACA,MACI,OAAO,CACX,CACJ,CACA,aAAIo2B,GACA,OAAOjC,EAAWz9B,KAAKsJ,MAC3B,CACA,KAAAo3B,CAAM5B,GACFA,EAAQ8B,WAAW5gC,KAAKsJ,MAC5B,CACA,QAAAzM,GACI,OAAOmD,KAAK0/B,SAChB,CACA,MAAAzX,GACI,OAAOjoB,KAAKnD,UAChB,EAEJikC,EAASD,QAAU,aACnB,MAAMG,UAAoBF,EACtB,WAAOpC,CAAKtiC,GACR,OAAO+hB,MAAMugB,KAAKtiC,EACtB,CACA,WAAOqP,CAAKnL,GACR,MAAM2gC,EAAS,IAAIpD,YAAW,IAAAqD,UAASC,OAAO1C,EAAMC,KAAKp+B,GAAMgJ,OAAO23B,UACtE,OAAO,IAAID,EAAYC,EAC3B,EAEJD,EAAYH,QAAU,cACtBG,EAAYD,SAAW,GACvB,MAAMK,UAAoBN,EACtB,WAAOpC,CAAKtiC,GACR,OAAO+hB,MAAMugB,KAAKtiC,EACtB,CACA,WAAOqP,CAAKnL,GACR,MAAM2gC,EAAS,IAAIpD,YAAW,IAAAwD,UAASF,OAAO1C,EAAMC,KAAKp+B,GAAMgJ,OAAO23B,UACtE,OAAO,IAAIG,EAAYH,EAC3B,EAEJG,EAAYP,QAAU,cACtBO,EAAYL,SAAW,GACvB,MAAMO,UAAoBR,EACtB,WAAOpC,CAAKtiC,GACR,OAAO+hB,MAAMugB,KAAKtiC,EACtB,CACA,WAAOqP,CAAKnL,GACR,MAAM2gC,EAAS,IAAIpD,YAAW,IAAA0D,aAAYJ,OAAO1C,EAAMC,KAAKp+B,GAAMgJ,OAAO23B,UACzE,OAAO,IAAIK,EAAYL,EAC3B,EAMJ,IAAIO,EAJJF,EAAYT,QAAU,cACtBS,EAAYP,SAAW,GAIvB,SAAWS,GACPA,EAAQ,MAAQ,KAChBA,EAAQ,MAAQ,KAChBA,EAAQ,MAAQ,IACnB,CAJD,CAIGA,IAAYA,EAAU,CAAC,IAC1B,SAAWA,GACP,SAASC,EAASrlC,GACd,OAAQA,GACJ,KAAKolC,EAAQE,GACT,OAAO,EACX,KAAKF,EAAQG,GACT,OAAO,EACX,KAAKH,EAAQI,GACT,OAAO,EACX,QACI,MAAM,IAAI1+B,MAAM,uBAAuB9G,KAEnD,CAEA,SAASsiC,EAAKtiC,GACV,IAAIiS,EAOJ,OALIA,EADiB,kBAAVjS,EACColC,EAAQC,SAASrlC,GAGjBA,EAEJiS,GACJ,KAAK,EACD,OAAOmzB,EAAQE,GACnB,KAAK,EACD,OAAOF,EAAQG,GACnB,KAAK,EACD,OAAOH,EAAQI,GACnB,QACI,MAAM,IAAI1+B,MAAM,sBAE5B,CAnBAs+B,EAAQC,SAAWA,EAoBnBD,EAAQ9C,KAAOA,CAClB,CAlCD,CAkCG8C,IAAYA,EAAU,CAAC,IAS1B,MAAMK,EAEF,cAAWtc,GACP,OAAO,IAAI,IAAJ,CAAO,GAAGoB,IAAI,IAAI,IAAJ,CAAwB,EAAjB3mB,KAAK8hC,WAAiB9hC,KAAK+hC,SAAW,EAAI,KAAKjN,MAAM,EACrF,CAEA,cAAW5P,GACP,OAAOllB,KAAK+hC,SAAW/hC,KAAKulB,IAAI6E,OAAO0K,MAAM,GAAK,IAAI,IAAJ,CAAO,EAC7D,CAEA,UAAOhlB,CAAIkyB,EAAKC,EAAKC,EAAW,YAC5B,OAAOL,EAAIztB,SAAS4tB,EAAKC,EAAKC,GAAU,CAACnlC,EAAGmJ,IAAMnJ,EAAE+S,IAAI5J,IAC5D,CAEA,UAAOslB,CAAIwW,EAAKC,EAAKC,GACjB,OAAOL,EAAIztB,SAAS4tB,EAAKC,EAAKC,GAAU,CAACnlC,EAAGmJ,IAAMnJ,EAAEyuB,IAAItlB,IAC5D,CAEA,UAAO6e,CAAIid,EAAKC,EAAKC,GACjB,OAAOL,EAAIztB,SAAS4tB,EAAKC,EAAKC,GAAU,CAACnlC,EAAGmJ,IAAMnJ,EAAEgoB,IAAI7e,IAC5D,CAKA,UAAOuvB,CAAIuM,EAAKC,EAAKC,GACjB,OAAOL,EAAIztB,SAAS4tB,EAAKC,EAAKC,GAAU,CAACnlC,EAAGmJ,KACxC,GAAIA,EAAE0hB,SACF,MAAM,IAAI1kB,MAAM,oBAEpB,OAAOnG,EAAE04B,IAAIvvB,EAAE,GAEvB,CAKA,eAAO4vB,CAASkM,EAAKC,EAAKC,GACtB,OAAOL,EAAIztB,SAAS4tB,EAAKC,EAAKC,GAAU,CAACnlC,EAAGmJ,KACxC,GAAIA,EAAE0hB,SACF,MAAM,IAAI1kB,MAAM,oBAEpB,OAAOnG,EAAE+4B,SAAS5vB,EAAE,GAE5B,CAKA,cAAOi8B,CAAQH,EAAKC,EAAKC,GACrB,OAAOL,EAAIztB,SAAS4tB,EAAKC,EAAKC,GAAU,CAACnlC,EAAGmJ,KACxC,GAAIA,EAAE0hB,SACF,MAAM,IAAI1kB,MAAM,oBAEpB,MAAM6yB,EAAKh5B,EAAE24B,OAAOxvB,GACpB,OAAI6vB,EAAGxP,IAAIqB,SACAmO,EAAGN,IACa,IAApBM,EAAGN,IAAIxR,SAAiB8R,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIzL,MAAM,EAAE,GAExE,CAKA,eAAO5V,CAAS4tB,EAAKC,EAAKC,EAAW,WAAYpvB,GAC7C,MAAM,EAAE/V,EAAC,EAAEmJ,GAAMk8B,EAAQJ,EAAKC,GACxBj9B,EAAOjI,EAAEwJ,YACTP,EAAS8M,EAAG/V,EAAEX,MAAO8J,EAAE9J,OAC7B,OAAO4I,EAAK05B,KAAK14B,EAAQk8B,EAC7B,CACA,WAAOxD,CAAKtiC,EAAO8lC,GACf,GAAIlE,EAAa5hC,EAAO4D,MACpB,OAAO5D,EAEX,IACIimC,EADAC,EAAWtiC,KAEf,GAAIg+B,EAAa5hC,EAAOylC,GACpBS,EAAWlmC,EAAMmK,YACjB87B,EAAKjmC,EAAMA,MAAM0qB,aAEhB,GAAI1qB,aAAiByhC,WACtBwE,EAAK,IAAI,IAAJ,CAAOjmC,OAAOsU,EAAW,MAC1B4xB,EAASP,WACTM,EAAKA,EAAGpY,SAA8B,EAArBqY,EAASR,gBAG7B,CACD,GAAsB,kBAAV1lC,IAAuB,SAAS8O,KAAK9O,IAC3B,kBAAVA,IAAuBmmC,OAAOC,SAASpmC,GAC/C,MAAM,IAAI8G,MAAM,kBAEpBm/B,EAAK,SAAQjmC,GAASA,EAAM0qB,QAAU,IAAI,IAAJ,CAAO1qB,EAAO,IAChDimC,EAAGhY,UAAYiY,EAASP,WACxBO,EAAW,CAAER,UAAWQ,EAASR,UAAWC,UAAU,GAE9D,CACA,OAAQG,GACJ,IAAK,QACDG,EAAKI,EAAMJ,EAAIriC,KAAKklB,IAAKllB,KAAKulB,KAC9B,MACJ,IAAK,WACD8c,EAAKjC,EAASiC,EAAIC,EAAUtiC,MAC5B,MAER,OAAO,IAAIA,KAAKqiC,EACpB,CACA,cAAOpD,CAAQC,GACX,OAAOl/B,KAAK0+B,KAAKQ,EAAQE,UAAUp/B,KAAK8hC,WAC5C,CACA,iBAAOzC,GACH,OAAOr/B,KAAK0+B,KAAK,EACrB,CACA,aAAOa,GACH,OAAOv/B,KAAK0+B,KAAKZ,EAAa99B,KAAK8hC,WACvC,CAKA,WAAAv7B,CAAYnK,GACR,MAAMwsB,EAAO5oB,KAAKuG,YAClB,QAAsBmK,IAAlBkY,EAAKmZ,eAA6CrxB,IAAnBkY,EAAKkZ,UACpC,MAAM,IAAI5+B,MAAM,yCAEpB,GAAI9G,EAAMs7B,GAAG9O,EAAKrD,KACd,MAAM,IAAIriB,MAAM,UAAU9G,eAAmBwsB,EAAKiY,WAEtD,GAAIzkC,EAAM07B,GAAGlP,EAAK1D,KACd,MAAM,IAAIhiB,MAAM,UAAU9G,gBAAoBwsB,EAAKiY,WAEvD7gC,KAAK5D,MAAQA,CACjB,CACA,IAAAsmC,CAAK19B,EAAMk9B,EAAW,YAClB,OAAIliC,KAAKuG,cAAgBvB,EACdhF,KAEJgF,EAAK05B,KAAK1+B,KAAMkiC,EAC3B,CAEA,aAAIS,GACA,MAAM/Z,EAAO5oB,KAAKuG,YACZnK,EAAQwsB,EAAKmZ,SAAW/hC,KAAK5D,MAAMytB,OAAwB,EAAjBjB,EAAKkZ,WAAiB9hC,KAAK5D,MAC3E,OAAOA,EAAM+rB,YAAY0V,WAAY,KAAMjV,EAAKkZ,UACpD,CAKA,MAAA3E,CAAO4C,EAAO6C,GAAS,GACnB,MAAMha,EAAO5oB,KAAKuG,YAClB,IAAe,IAAXq8B,GAAmB5E,EAAa+B,EAAO8B,GAAM,CAC7C,MAAMgB,EAAY9C,EAAMx5B,YACxB,GAAIqiB,EAAKkZ,YAAce,EAAUf,WAAalZ,EAAKmZ,WAAac,EAAUd,SACtE,OAAO,CAEf,CACA,IACI,OAAO/hC,KAAK5D,MAAM87B,GAAGtP,EAAK8V,KAAKqB,GAAO3jC,MAC1C,CACA,MACI,OAAO,CACX,CACJ,CAEA,GAAA0T,CAAIwV,GACAtlB,KAAK5D,MAAQ4D,KAAKoU,SAASkR,EAAKuc,EAAI/xB,KAAK1T,KAC7C,CAEA,MAAA0mC,CAAOxd,GACH,OAAOtlB,KAAKoU,SAASkR,EAAKuc,EAAI/xB,IAClC,CAEA,QAAAizB,CAASzd,GACLtlB,KAAK5D,MAAQ4D,KAAKoU,SAASkR,EAAKuc,EAAIrW,KAAKpvB,KAC7C,CAEA,WAAA4mC,CAAY1d,GACR,OAAOtlB,KAAKoU,SAASkR,EAAKuc,EAAIrW,IAClC,CAEA,QAAAyX,CAASC,GACLljC,KAAK5D,MAAQ4D,KAAKoU,SAAS8uB,EAAIrB,EAAI9c,KAAK3oB,KAC5C,CAEA,WAAA+mC,CAAYD,GACR,OAAOljC,KAAKoU,SAAS8uB,EAAIrB,EAAI9c,IACjC,CAMA,MAAAqe,CAAOF,EAAIG,GACPrjC,KAAK5D,MAAQ4D,KAAKsjC,SAASJ,EAAIG,GAAUjnC,KAC7C,CAMA,QAAAknC,CAASJ,EAAIG,GACT,IAAIE,EAAK1B,EAAIpM,IACb,OAAQ4N,GACJ,IAAK,OACDE,EAAK1B,EAAIM,QACT,MACJ,IAAK,QACDoB,EAAK1B,EAAI/L,SACT,MAER,OAAO91B,KAAKoU,SAAS8uB,EAAIK,EAC7B,CAKA,QAAAnvB,CAAS2rB,EAAOjtB,GACZ,IAAImvB,EAOJ,OALIA,EADAjE,EAAa+B,EAAO8B,GACd9B,EAGAyD,EAAM9E,KAAKqB,EAAO,YAErBjtB,EAAG9S,KAAMiiC,GAAKS,KAAK1iC,KAAKuG,YACnC,CAKA,QAAAwhB,GACI,OAAO/nB,KAAK5D,MAAM2rB,UACtB,CACA,QAAAlrB,GACI,OAAOmD,KAAK5D,MAAMS,UACtB,CACA,CAACX,OAAOunC,aAAaz+B,GACjB,MAAa,WAATA,EACOhF,KAAK+nB,WAGL/nB,KAAKnD,UAEpB,CACA,KAAA6jC,CAAM5B,GACFA,EAAQ8B,WAAW5gC,KAAK2iC,UAC5B,CACA,MAAA1a,GAEI,OAAIjoB,KAAK5D,MAAMosB,YAAc,GAClBxoB,KAAK5D,MAAMS,WAGXmD,KAAK5D,MAAM2rB,UAE1B,EAEJ8Z,EAAIhB,QAAU,QACd,MAAM6C,UAAa7B,GAEnB6B,EAAK7C,QAAU,OACf6C,EAAK5B,UAAY,EACjB4B,EAAK3B,UAAW,EAChB,MAAM4B,UAAc9B,GAEpB8B,EAAM9C,QAAU,QAChB8C,EAAM7B,UAAY,EAClB6B,EAAM5B,UAAW,EACjB,MAAM6B,UAAc/B,GAEpB+B,EAAM/C,QAAU,QAChB+C,EAAM9B,UAAY,EAClB8B,EAAM7B,UAAW,EACjB,MAAMyB,UAAc3B,GAEpB2B,EAAM3C,QAAU,QAChB2C,EAAM1B,UAAY,EAClB0B,EAAMzB,UAAW,EACjB,MAAM8B,UAAehC,GAErBgC,EAAOhD,QAAU,SACjBgD,EAAO/B,UAAY,GACnB+B,EAAO9B,UAAW,EAClB,MAAM+B,UAAcjC,GAEpBiC,EAAMjD,QAAU,QAChBiD,EAAMhC,UAAY,EAClBgC,EAAM/B,UAAW,EACjB,MAAMgC,UAAelC,GAErBkC,EAAOlD,QAAU,SACjBkD,EAAOjC,UAAY,EACnBiC,EAAOhC,UAAW,EAClB,MAAMiC,UAAenC,GAErBmC,EAAOnD,QAAU,SACjBmD,EAAOlC,UAAY,EACnBkC,EAAOjC,UAAW,EAClB,MAAMkC,UAAepC,GAErBoC,EAAOpD,QAAU,SACjBoD,EAAOnC,UAAY,EACnBmC,EAAOlC,UAAW,EAClB,MAAMmC,UAAgBrC,GAEtBqC,EAAQrD,QAAU,UAClBqD,EAAQpC,UAAY,GACpBoC,EAAQnC,UAAW,EACnB,MAAMoC,UAAetC,EACjB,cAAO5C,CAAQC,GACX,OAAO,IAAIl/B,KAAK,IAAI,IAAJ,CAAOk/B,EAAQkF,gBACnC,CACA,KAAA1D,CAAM5B,GACFA,EAAQuF,cAAc9B,OAAOviC,MACjC,EAEJmkC,EAAOtD,QAAU,WACjBsD,EAAOrC,UAAY,GACnBqC,EAAOpC,UAAW,EAClB,MAAMuC,UAAgBzC,EAClB,cAAO5C,CAAQC,GACX,OAAO,IAAIl/B,KAAK,IAAI,IAAJ,CAAOk/B,EAAQC,iBACnC,CACA,KAAAuB,CAAM5B,GACFA,EAAQ6B,eAAe4B,OAAOviC,MAClC,EAMJ,SAASyiC,EAAMnd,EAAKJ,EAAKK,GACrB,OAAO,QAAO,QAAOD,EAAKJ,GAAMK,EACpC,CAKA,SAAS6a,EAAShkC,EAAOsiC,EAAM6F,GAC3B,MAAMlE,EAAOjkC,EAAMiuB,QAAU,IAAM,EAC7Bma,EAAY9F,EAAKqD,SAAW3lC,EAAMytB,OAAwB,EAAjB6U,EAAKoD,WAAiB1lC,EAC/DqoC,EAAYD,EAAUrc,YAAY0V,WAAY,MAC9C6G,EAAU,IAAI7G,WAAW0G,EAAGzC,WAClC4C,EAAQrE,KAAKA,GACbqE,EAAQzE,IAAIwE,EAAU57B,MAAM,EAAG07B,EAAGzC,YAClC,MAAM6C,EAAU,IAAI,IAAJ,CAAOD,OAASh0B,EAAW,MAC3C,OAAO6zB,EAAGxC,SAAW4C,EAAQ1a,SAAwB,EAAfsa,EAAGzC,WAAiB6C,CAC9D,CAEA,SAASvC,EAAQrlC,EAAGmJ,GAEhBnJ,EAAI6nC,EAAQ7nC,GACZmJ,EAAI0+B,EAAQ1+B,GACZ,MAAM2+B,EAAQ9nC,EAAEwJ,YACVu+B,EAAQ5+B,EAAEK,YA0ChB,OAxCIs+B,IAAUC,IAIND,EAAM9C,WAAa+C,EAAM/C,SACrB8C,EAAM/C,UAAYgD,EAAMhD,UACxB57B,EAAIA,EAAEw8B,KAAKmC,GAENC,EAAMhD,UAAY+C,EAAM/C,YAC7B/kC,EAAIA,EAAE2lC,KAAKoC,KAOQ,IAAnBD,EAAM9C,UAAsB8C,EAAM/C,WAAagD,EAAMhD,UACrD57B,EAAIA,EAAEw8B,KAAKmC,IAEa,IAAnBC,EAAM/C,UAAsB+C,EAAMhD,WAAa+C,EAAM/C,UAC1D/kC,EAAIA,EAAE2lC,KAAKoC,IAMY,IAAnBD,EAAM9C,UACN8C,EAAMtf,IAAIqS,IAAIkN,EAAMvf,MACpBsf,EAAM3f,IAAI8S,IAAI8M,EAAM5f,KACpBhf,EAAIA,EAAEw8B,KAAKmC,IAEa,IAAnBC,EAAM/C,UACX+C,EAAMvf,IAAIqS,IAAIiN,EAAMtf,MACpBuf,EAAM5f,IAAI8S,IAAI6M,EAAM3f,OACpBnoB,EAAIA,EAAE2lC,KAAKoC,KAMpB,CAAE/nC,IAAGmJ,IAChB,CAEA,SAAS0+B,EAAQxpC,GAKb,IAAIsiC,EAAKtiC,EACT,MAAM4J,EAAO5J,EAAEmL,YAIf,OAHIvB,EAAK88B,UAAY,IACjBpE,EAAKtiC,EAAEsnC,KAAKkB,IAETlG,CACX,CAGA,SAASqH,EAAc//B,GACnB,MAAMggC,EAAU,GACVC,EAAW,GACXC,EAAU,GACVhqB,EAAO,IAAIiqB,IACXC,EAAkBlqC,IACpB,IAAImqC,EAgBJ,OAdIA,EADkB,kBAAXnqC,EAAE8J,KACE6C,EAAQ3M,EAAE8J,MAGV9J,EAAE8J,MAED,IAAZ9J,EAAEoO,QACF+7B,GAAY,OAEG,IAAfnqC,EAAEoqC,WACFD,GAAY,MAEI,IAAhBnqC,EAAEqqC,YACFF,GAAY,KAETA,CAAQ,EAEbx9B,EAAW3M,IACb,IAAKA,EAAE2lC,QACH,MAAM,IAAI39B,MAAM,mCAEf,GAAkB,aAAdhI,EAAE2lC,QACP,MAAM,IAAI39B,MAAM,+DAEpB,GAAIgY,EAAK6gB,IAAI7gC,GACT,OAAOA,EAAE2lC,QAGb,GADA3lB,EAAKpL,IAAI5U,GACLA,EAAEsqC,SACFN,EAAQz9B,KAAK,CACTg+B,cAAevqC,EAAE2lC,QACjB77B,KAAMogC,EAAelqC,EAAEsqC,iBAG1B,GAAItqC,EAAEwqC,UAAW,CAClB,MAAMC,EAASzqC,EAAEwqC,UAAUz3B,KAAK23B,IACrB,CACH95B,KAAM85B,EAAM95B,KACZ9G,KAAMogC,EAAeQ,OAGvBC,EAAS,CACX/hB,KAAM5oB,EAAE4qC,QAAUj+B,EAAQ3M,EAAE4qC,SAAW,GACvCh6B,KAAM5Q,EAAE2lC,QACR8E,UAEJX,EAAQv9B,KAAKo+B,EACjB,MACK,GAAI3qC,EAAE6qC,WAAY,CACnB,MAAMC,EAAU,CACZl6B,KAAM5Q,EAAE2lC,QACRoF,MAAO/qC,EAAE6qC,WAAW93B,IAAIm3B,IAE5BH,EAASx9B,KAAKu+B,EAClB,CACA,OAAO9qC,EAAE2lC,OAAO,EAEdqF,EAAOr+B,EAAQ7C,GACrB,MAAO,CAAEmhC,IAAKC,GAAI1H,KAAK,CAAEsG,UAASC,WAAUgB,MAAOf,IAAYe,MAAOhmC,MAAMy+B,KAAKxjB,GAAOgrB,OAC5F,CACA,SAASG,EAAcrhC,GACnB,IAAIqgC,EAAgC,kBAAdrgC,EAAKA,KAAoBA,EAAKA,KAAOA,EAAKA,KAAK67B,QAUrE,OATmB,IAAf77B,EAAKsE,QACL+7B,GAAY,OAEM,IAAlBrgC,EAAKsgC,WACLD,GAAY,MAEO,IAAnBrgC,EAAKugC,YACLF,GAAY,KAETA,CACX,CACA,SAASiB,EAAiBthC,GACtB,MAAwB,kBAATA,QACM0L,IAAjB1L,EAAK67B,cACSnwB,IAAd1L,EAAKA,IACb,CACA,SAASuhC,EAAiBvhC,GACtB,MAAoB,kBAATA,GAGiB,qBAAjBA,EAAK67B,QAFL,CAAE77B,QAKNA,CACX,CAnLAs/B,EAAQzD,QAAU,YAClByD,EAAQxC,UAAY,GACpBwC,EAAQvC,UAAW,EAmLnB,MAAMyE,EAAa,CACf3F,QAAS,SACTxB,WAAY,IAAM,GAClBJ,QAAUC,GACCA,EAAQuH,aAEnB/H,KAAOla,GAAWA,EAClBkc,MAAO,CAAClc,EAAQsa,KACZA,EAAQ4H,YAAYliB,EAAO,GAG7BmiB,EAAW,CACb9F,QAAS,OACTxB,WAAY,KAAM,EAClBJ,QAAUC,GACwB,IAAvBA,EAAQ0H,WAEnBlI,KAAOtiC,GAAUA,EACjBskC,MAAO,CAACtkC,EAAO0iC,KACXA,EAAQ+H,WAAoB,IAAVzqC,EAAiB,EAAI,EAAE,GAGjD,SAAS0qC,IACL,MAAO,CAEHH,EACAH,EAEAO,GACAA,GAAM7qC,OACN6qC,GAAMC,WACNC,GACAxI,EACA6C,EACAN,EACAI,EACA8F,GACAC,GACAC,GACAC,GACAxD,EACAF,EACAC,EACAJ,EACAE,EACA4D,GACAC,GACAC,GACAC,GACAC,GACAxD,EACAH,EACAC,EACAC,EACAH,EACAK,EACAG,EAER,CACA,SAASqD,EAAgBC,EAAa,IAClC,MAAMlK,EAAK,CAAC,EACNmK,EAAWf,IACjB,IAAK,MAAM9hC,KAAQ6iC,EACfnK,EAAG14B,EAAK67B,SAAW77B,EAEvB,IAAK,MAAMA,KAAQ4iC,EAAY,CAC3B,IAAK5iC,EAAK67B,QACN,MAAM,IAAI39B,MAAM,gBAEpBw6B,EAAG14B,EAAK67B,SAAW77B,CACvB,CACA,OAAO04B,CACX,CACA,SAASoK,EAAY7J,GACjB,GAAIA,EAAO13B,kBAA8CmK,IAA/ButB,EAAO13B,YAAYs6B,QACzC,OAAO5C,EAAO13B,YAAYs6B,QAE9B,GAAI5gC,MAAMhD,QAAQghC,GAAS,CACvB,MAAMgI,EAAQhI,EAAOhwB,IAAI65B,GACnB9iC,EAAOihC,EAAM,GACnB,IAAKjhC,IAASihC,EAAMxG,OAAOvkC,GAAMA,IAAM8J,IACnC,OAEJ,OAAOA,EAAO,IAClB,CACA,cAAei5B,GACX,IAAK,UACD,MAAO,OACX,IAAK,SACD,MAAO,SAEnB,CACA,SAAS8J,EAAQ9J,EAAQnyB,EAAO,SAC5B,IAAIgD,EACJ,GAAImvB,EAAO13B,kBAA8CmK,IAA/ButB,EAAO13B,YAAYs6B,QACzC,OAAO5C,EAAO13B,YAElB,GAAItG,MAAMhD,QAAQghC,GAAS,CAEvB,MAAMgI,EAAQhI,EAAOhwB,KAAKnN,GACfinC,EAAQjnC,EAAGgL,KAEhB9G,EAAOihC,EAAM,GACnB,IAAKjhC,EACD,OAEJ,IAAKihC,EAAMxG,OAAOvkC,GAAMA,GAAKA,EAAE2lC,UAAY77B,EAAK67B,UAC5C,OAEJ,OAAO77B,CACX,CACA,MAAMgjC,SAAoB/J,EAC1B,GAAmB,WAAf+J,GAAsC,OAAX/J,EAAiB,CAC5C,MAAM0H,EAAS7pC,OAAOmsC,KAAKhK,GAAQhwB,KAAKi6B,IAC7B,CAAEp8B,KAAMo8B,EAAKljC,KAAM+iC,EAAQ9J,EAAOiK,GAAMp8B,EAAO,eAE1D,GAAI65B,EAAOwC,MAAMvC,IAAWA,EAAM5gC,OAC9B,OAEJ,OAAO8J,EAAK,cAAcs5B,KAEtBt5B,EAAG+xB,QAAU/0B,EACbgD,EAAG42B,UAAYC,EACf72B,CACR,CACA,OAAQk5B,GACJ,IAAK,UACD,OAAOrB,EACX,IAAK,SACD,OAAOH,EAEnB,CAKA,MAAM6B,UAAsBnlC,MACxB,WAAAqD,CAAY8xB,EAAKiQ,GACb,MAAMC,EAAOlQ,EAAImQ,WACZv6B,KAAI,EAAG23B,QAAO5gC,UACM,kBAAV4gC,EACAA,EAGA,GAAGA,KAAS5gC,EAAKqgC,cAG3Bt6B,KAAK,KACVoT,MAAM,qBAAqBoqB,MAASD,EAAgBllC,WACpDpD,KAAK8N,MAAQw6B,EAAgBx6B,MAC7B9N,KAAKq4B,IAAMA,EACXr4B,KAAKsoC,gBAAkBA,CAC3B,EAGJ,SAASG,EAAU13B,GACf,MAAM23B,EAAanC,EAAiBx1B,EAAK/L,MACnCqgC,EAAWgB,EAAcqC,GACzBC,EAAc53B,EAAK43B,aAAe,GACxC,IAAIxC,EACJ,GAAIp1B,EAAKo1B,IACLA,EAAMC,GAAI1H,KAAK3tB,EAAKo1B,UAGpB,IACI,IAAInhC,EACJ,GAA+B,kBAApB0jC,EAAW1jC,KAAmB,CACrC,MAAM4jC,EAASjB,EAAgBgB,GACzBE,EAAQ,IAAIzC,GAAI0C,aAAaJ,EAAW1jC,MAAM8G,KAEpD,GADA9G,EAAO4jC,EAAOC,IACT7jC,EACD,MAAM,IAAI9B,MAAM,iBAAiBwlC,EAAW1jC,OAEpD,MAEIA,EAAO0jC,EAAW1jC,KAEtB,MAAM+jC,EAAchE,EAAc//B,GAClCmhC,EAAM4C,EAAY5C,IAClBwC,EAAYlhC,QAAQshC,EAAY9C,MACpC,CACA,MAAOv+B,GACH,MAAMxE,MAAM,iCAAiCmiC,MAAa39B,EAAMtE,oFAEpE,CAEJ,MAAM4lC,EAAW7C,EAAI8C,YAAY5D,GACF,kBAApBqD,EAAW1jC,MAClB2jC,EAAY5/B,QAAQ2/B,EAAW1jC,MAEnC,MAAMqzB,EAAM,CACR4N,MAAO0B,EAAgBgB,GACvBO,iBAAkBn4B,EAAKm4B,mBAAoB,EAC3CV,WAAY,CAAC,CAAE5C,MAAO,OAAQ5gC,KAAMgkC,KAExC,IACI,GAAIj4B,EAAKzQ,MAAsB,KAAdyQ,EAAKzQ,KAAa,CAC/B,IAAI4+B,EACJ,GAAIlB,EAAajtB,EAAKzQ,KAAM6oC,IACxBjK,EAAUnuB,EAAKzQ,SAEd,CACD,MAAM8oC,EAAQ3K,EAAMC,KAAK3tB,EAAKzQ,MACxB+oC,OAAmC34B,IAA3BK,EAAKu4B,oBAA0Cv4B,EAAKu4B,kBAClEpK,EAAU,IAAIiK,GAAWC,EAAM9/B,MAAO,IAAIs2B,YAAY,QAAS,CAAEyJ,UACrE,CAIA,OAHIt4B,EAAKlK,WACLq4B,EAAQr4B,SAAWkK,EAAKlK,UAErB0iC,GAAaP,EAAU9J,EAAS7G,EAC3C,CACK,QAAoB3nB,IAAhBK,EAAKktB,OACV,OAAOuL,GAAaz4B,EAAKktB,OAAQ+K,EAAU3Q,GAE1C,GAAItnB,EAAK04B,KACV,OAAOD,GAAapqC,KAAKG,MAAMwR,EAAK04B,MAAOT,EAAU3Q,GAGrD,MAAM,IAAIn1B,MAAM,4DAExB,CACA,MAAOwE,GACH,MAAM,IAAI2gC,EAAchQ,EAAK3wB,EACjC,CACJ,CAtEA2gC,EAAcqB,YAAc,gBAwE5B,MAAMC,GAAWztC,OAAO,YACxB,SAASqtC,GAAavkC,EAAMk6B,EAAS7G,GACjC,GAAIA,EAAImQ,WAAWxrC,OAAS,GACxB,MAAM,IAAIkG,MAAM,mCAEpB,GAAI8B,EAAK4kC,cACA1K,EAAQ2K,UACT,OAAIxR,EAAI6Q,iBACG9tB,GAAapW,EAAMqzB,GAGnB,KAInB,GAAIrzB,EAAK8kC,YACsB,IAAvB5K,EAAQ0H,WACR,OAAO,KAGf,GAAI5hC,EAAK/H,QAAS,CACd,MAAM+nB,EAAMka,EAAQC,gBACdzB,EAAK,GACX,IAAK,IAAIliC,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACrB68B,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAOpqC,EAAGwJ,SAChC04B,EAAGj2B,KAAKsiC,KACR1R,EAAImQ,WAAWhhC,MAEnB,OAAOk2B,CACX,CAEI,OAAOqM,IAEX,SAASA,IACL,MAAMC,EAAU3R,EAAI4N,MAAMjhC,EAAK8G,MAC/B,GAAIk+B,GAAWA,EAAQ/K,QACnB,OAAO+K,EAAQ/K,QAAQC,GAGvB,GAAIl6B,EAAKilC,IAAK,CAEV5R,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAO,GAAI5gC,KAAMA,EAAKilC,MAC5C,MAAMvM,EAAK6L,GAAavkC,EAAKilC,IAAK/K,EAAS7G,GAE3C,OADAA,EAAImQ,WAAWhhC,MACRk2B,CACX,CACK,GAAI14B,EAAK2gC,OAAQ,CAClB,MAAMA,EAAS3gC,EAAKklC,UACpB,IAAKvE,EACD,MAAM,IAAIziC,MAAM,yBAEpB,MAAMw6B,EAAK,CAAC,EACZ,IAAK,MAAMkI,KAASD,EAChBtN,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAOA,EAAM95B,KAAM9G,KAAM4gC,EAAM5gC,OACrD04B,EAAGkI,EAAM95B,MAAQy9B,GAAa3D,EAAM5gC,KAAMk6B,EAAS7G,GACnDA,EAAImQ,WAAWhhC,MAEnB,OAAIwiC,GACAtM,EAAGiM,KAAY,EACRK,EAAQtL,KAAKhB,IAGbA,CAEf,CACK,GAAI14B,EAAKghC,QAAS,CACnB,MAAMmE,EAAOjL,EAAQ0H,WACfwD,EAAQplC,EAAKghC,QAAQmE,GAC3B,IAAKC,EACD,MAAM,IAAIlnC,MAAM,wBAAwBinC,KAE5C9R,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAO,IAAIuE,IAAQnlC,KAAMolC,IAC/C,MAAM1M,EAAK,CAAC0M,EAAM/E,SAAUkE,GAAaa,EAAOlL,EAAS7G,IAEzD,OADAA,EAAImQ,WAAWhhC,MACXwiC,EACOA,EAAQtL,KAAKhB,GAGbA,CAEf,CACK,MAAIsM,EACC,IAAI9mC,MAAM,gBAGV,IAAIA,MAAoB,QAAd8B,EAAK8G,KAAiB,0CAA4C,eAG9F,CACJ,CACA,SAAS09B,GAAaptC,EAAO4I,EAAMqzB,GAC/B,GAAc,OAAVj8B,QAA4BsU,IAAVtU,EAAqB,CACvC,GAAI4I,EAAK8kC,WACL,OAAO,KAEX,GAAI9kC,EAAK4kC,YACL,OAAIvR,EAAI6Q,iBACG9tB,GAAapW,EAAMqzB,GAGnB,KAGf,MAAM,IAAIn1B,MAAM,4BAA4B9G,qBAChD,CACK,GAAI4I,EAAK/H,QAAS,CACnB,IAAKgD,MAAMhD,QAAQb,GACf,MAAM,IAAI8G,MAAM,kBAEpB,MAAMw6B,EAAK,GACL1Y,EAAM5oB,EAAMY,OAClB,IAAK,IAAIxB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACrB68B,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAOpqC,EAAGwJ,SAChC04B,EAAGj2B,KAAKsiC,EAAY3tC,EAAMZ,KAC1B68B,EAAImQ,WAAWhhC,MAEnB,OAAOk2B,CACX,CAEI,OAAOqM,EAAY3tC,GAEvB,SAAS2tC,EAAY3tC,GACjB,MAAM4tC,EAAU3R,EAAI4N,MAAMjhC,EAAK8G,MAC/B,GAAI9G,EAAKilC,MAAQD,EAEb,OAAOR,GAAaptC,EAAO4I,EAAKilC,IAAK5R,GAEpC,GAAIrzB,EAAK2gC,OAAQ,CAClB,GAAqB,kBAAVvpC,EACP,MAAM,IAAI8G,MAAM,mBAEpB,GAAuB,oBAAZ8mC,GAA0BhM,EAAa5hC,EAAO4tC,GACrD,OAAO5tC,EAEX,MAAMupC,EAAS3gC,EAAKklC,UACpB,IAAKvE,EACD,MAAM,IAAIziC,MAAM,yBAEpB,MAAM2iC,EAAS,CAAC,EAChB,IAAK,MAAMD,KAASD,EAChBtN,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAOA,EAAM95B,KAAM9G,KAAM4gC,EAAM5gC,OACrD6gC,EAAOD,EAAM95B,MAAQ09B,GAAaptC,EAAMwpC,EAAM95B,MAAO85B,EAAM5gC,KAAMqzB,GACjEA,EAAImQ,WAAWhhC,MAEnB,OAAIwiC,GACAnE,EAAO8D,KAAY,EACZK,EAAQtL,KAAKmH,IAGbA,CAEf,CACK,GAAI7gC,EAAKghC,QAAS,CACnB,IAAIqE,EACApqC,MAAMhD,QAAQb,IAA2B,IAAjBA,EAAMY,QAAoC,kBAAbZ,EAAM,IAC3DiuC,EAAQjuC,EAAM,GACdA,EAAQA,EAAM,IAET4hC,EAAa5hC,EAAOkuC,KACzBD,EAAQjuC,EAAMmuC,YACdnuC,EAAQA,EAAMA,OAGdiuC,EAAQvC,EAAY1rC,GAExB,MAAM+tC,EAAOnlC,EAAKghC,QAAQwE,WAAWtvC,GAAMA,EAAEmqC,WAAagF,IAC1D,IAAc,IAAVF,EACA,MAAM,IAAIjnC,MAAM,yBAAyBmnC,KAE7C,MAAMD,EAAQplC,EAAKghC,QAAQmE,GAC3B9R,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAO,IAAIuE,IAAQnlC,KAAMolC,IAC/C,MAAM1M,EAAK,CAAC0M,EAAM/E,SAAUmE,GAAaptC,EAAOguC,EAAO/R,IAEvD,OADAA,EAAImQ,WAAWhhC,MACXwiC,GACAtM,EAAGiM,KAAY,EACRK,EAAQtL,KAAKhB,IAGbA,CAEf,CAEI,IAAKsM,EAAS,CAEV,GAAkB,QAAdhlC,EAAK8G,KACL,OAAO1P,EAEX,MAAM,IAAI8G,MAAM,eACpB,CACA,OAAO8mC,EAAQtL,KAAKtiC,EAE5B,CACJ,CAEA,SAASgf,GAAapW,EAAMqzB,EAAKnd,EAAO,IAAIiqB,KACxC,GAAIngC,EAAK/H,QACL,MAAO,GAEX,GAAI+H,EAAK8kC,WACL,OAAO,KAEX,MAAME,EAAU3R,EAAI4N,MAAMjhC,EAAK8G,MAC/B,GAAIk+B,GAAWA,EAAQ3K,WACnB,OAAO2K,EAAQ3K,aAEnB,GAAInkB,EAAK6gB,IAAI/2B,EAAK8G,MACd,MAAM,IAAI5I,MAAM,2BAGpB,GADAgY,EAAKpL,IAAI9K,EAAK8G,MACV9G,EAAKklC,UAAW,CAChB,MAAMxM,EAAK,CAAC,EACZ,IAAK,MAAMkI,KAAS5gC,EAAKklC,UACrB7R,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAOA,EAAM95B,KAAM9G,KAAM4gC,EAAM5gC,OACrD04B,EAAGkI,EAAM95B,MAAQsP,GAAawqB,EAAM5gC,KAAMqzB,EAAKnd,GAC/Cmd,EAAImQ,WAAWhhC,MAEnB,OAAIwiC,GACAtM,EAAGiM,KAAY,EACRK,EAAQtL,KAAKhB,IAEjBA,CACX,CACA,GAAI14B,EAAKghC,SAAWhhC,EAAKghC,QAAQhpC,OAAS,EAAG,CACzC,MAAM0gC,EAAK,CAAC14B,EAAKghC,QAAQ,GAAGX,SAAUjqB,GAAapW,EAAKghC,QAAQ,GAAI3N,IACpE,OAAI2R,GACAtM,EAAGiM,KAAY,EACRK,EAAQtL,KAAKhB,IAEjBA,CACX,CACA,GAAI14B,EAAKilC,IAAK,CACV5R,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAO,GAAI5gC,KAAMA,EAAKilC,MAC5C,MAAMvM,EAAKtiB,GAAapW,EAAKilC,IAAK5R,EAAKnd,GAEvC,OADAmd,EAAImQ,WAAWhhC,MACRk2B,CACX,CACA,MAAM,IAAIx6B,MAAM,oCACpB,CACA,MAAMimC,GACF,WAAA5iC,CAAY+C,EAAOmhC,GACfzqC,KAAKsJ,MAAQA,EACbtJ,KAAK0qC,IAAM,EAEX1qC,KAAK6G,SAAW,CAAC,EACjB7G,KAAKyqC,YAAcA,GAAe,IAAI7K,YAAY,QAAS,CAAEyJ,OAAO,IACpErpC,KAAKM,KAAO,IAAIqqC,SAASrhC,EAAM7L,OAAQ6L,EAAMu1B,WAAYv1B,EAAM2f,WACnE,CACA,OAAA4gB,CAAQT,EAAQ,GACZ,QAASppC,KAAK0qC,IAAMtB,EAAQppC,KAAKsJ,MAAM2f,WAC3C,CACA,MAAA2hB,CAAOxB,GACH,IAAKppC,KAAK6pC,QAAQT,GACd,MAAM,IAAIlmC,MAAM,0BAExB,CACA,WAAA2nC,CAAYH,GACR,GAAIA,EAAM,GAAKA,EAAM1qC,KAAKsJ,MAAM2f,WAC5B,MAAM,IAAI/lB,MAAM,oBAEpBlD,KAAK0qC,IAAMA,CACf,CACA,WAAAI,GACI,OAAO9qC,KAAK0qC,GAChB,CACA,OAAAK,CAAQ3B,GACJppC,KAAK4qC,OAAOxB,GACZppC,KAAK0qC,KAAOtB,CAChB,CAEA,QAAAxC,GAEI,OADA5mC,KAAK4qC,OAAO,GACL5qC,KAAKsJ,MAAMtJ,KAAK0qC,MAC3B,CAEA,SAAAM,CAAUlJ,GAEN,IAAIpE,EACJ,OAFA19B,KAAK4qC,OAAO9I,GAEJA,GACJ,KAAK,EACDpE,EAAK19B,KAAKM,KAAK2qC,WAAWjrC,KAAK0qC,KAAK,GACpC,MACJ,KAAK,EACDhN,EAAK19B,KAAKM,KAAK4qC,WAAWlrC,KAAK0qC,KAAK,GACpC,MACJ,QACI,MAAM,IAAIxnC,MAAM,sBAGxB,OADAlD,KAAK0qC,KAAO5I,EACLpE,CACX,CACA,aAAAyB,GACI,IAAIr+B,EAAI,EACJ2nB,EAAM,EACV,OAAS,CACL,MAAMviB,EAAIlG,KAAK4mC,WAGf,GAFA9lC,IAAU,IAAJoF,IAAauiB,EACnBA,GAAO,IACG,IAAJviB,GACF,KAER,CACA,OAAOpF,IAAM,CACjB,CACA,YAAAsjC,GACI,MAAMtjC,EAAId,KAAKm/B,gBACf,OAAQ,EAAJr+B,GACSA,GAAK,EAAK,WAGZA,IAAM,CAErB,CACA,SAAAs+B,CAAUpiC,GACNgD,KAAK4qC,OAAO5tC,GACZ,MAAM0gC,EAAK19B,KAAKsJ,MAAMk3B,SAASxgC,KAAK0qC,IAAK1qC,KAAK0qC,IAAM1tC,GAEpD,OADAgD,KAAK0qC,KAAO1tC,EACL0gC,CACX,CACA,UAAA+I,GACI,MAAMzpC,EAASgD,KAAKm/B,gBACpB,OAAOn/B,KAAKyqC,YAAY5K,OAAO7/B,KAAKo/B,UAAUpiC,GAClD,EAEJmsC,GAAWO,YAAc,aAKzB,MAAMyB,WAAsBjoC,MACxB,WAAAqD,CAAY8xB,EAAKiQ,GACb,MAAMC,EAAOlQ,EAAImQ,WACZv6B,KAAI,EAAG23B,QAAO5gC,UACM,kBAAV4gC,EACAA,EAGA,GAAGA,KAAS5gC,EAAKqgC,cAG3Bt6B,KAAK,KACVoT,MAAM,qBAAqBoqB,MAASD,EAAgBllC,WACpDpD,KAAK8N,MAAQw6B,EAAgBx6B,MAC7B9N,KAAKq4B,IAAMA,EACXr4B,KAAKsoC,gBAAkBA,CAC3B,EAGJ,SAAS8C,GAAUr6B,GACf,IAAI/L,EACAqgC,EACqB,kBAAdt0B,EAAK/L,KACZqgC,EAAWt0B,EAAK/L,KAEX+L,EAAK/L,MAAQshC,EAAiBv1B,EAAK/L,OACV,kBAAnB+L,EAAK/L,KAAKA,OACjBA,EAAO+L,EAAK/L,KAAKA,MAErBqgC,EAAWgB,EAAct1B,EAAK/L,OAEzB+L,EAAK/L,WAA8B0L,IAAtBK,EAAK/L,KAAK67B,SAC5B77B,EAAO+L,EAAK/L,KACZqgC,EAAWt0B,EAAK/L,KAAK67B,UAGrB77B,EAAO+iC,EAAQh3B,EAAKktB,QAChBj5B,IACAqgC,EAAWrgC,EAAK67B,QACZ5gC,MAAMhD,QAAQ8T,EAAKktB,UACnBoH,GAAY,QAIxB,MAAMsD,EAAc53B,EAAK43B,YAAc53B,EAAK43B,YAAY9/B,QAAU,GAClE,GAAI7D,EACA2jC,EAAY5/B,QAAQ/D,QAEnB,GAAIqgC,EAAU,CACf,MAAMgG,EAAW,IAAIjF,GAAI0C,aAAazD,GAAUv5B,KAChD9G,EAAO2jC,EAAYR,MAAMjtC,GAAMA,EAAE2lC,UAAYwK,GACjD,CACA,IAAIC,EACJ,GAAIv6B,EAAKo1B,KAAOd,EACZiG,EAAWlF,GAAI1H,KAAK3tB,EAAKo1B,KAAK8C,YAAY5D,QAEzC,GAAIrgC,EAAM,CACX,MAAM+jC,EAAchE,EAAc//B,GAClCsmC,EAAWvC,EAAY5C,IAAI8C,YAAY5D,GAAYrgC,EAAK67B,SACxD8H,EAAYlhC,QAAQshC,EAAY9C,MACpC,KACK,KAAIZ,EAIL,MAAM,IAAIniC,MAAM,yHAHhBooC,EAAW,IAAIlF,GAAI0C,aAAazD,EAKpC,CACA,MAAMY,EAAQ0B,EAAgBgB,GACxB7J,EAAU/tB,EAAK+tB,SAAW,IAAIyM,GAChCx6B,EAAKlK,WACLi4B,EAAQj4B,SAAWkK,EAAKlK,UAE5B,MAAMwxB,EAAM,CACR4N,QACAnH,UACA0J,WAAY,CAAC,CAAE5C,MAAO,OAAQ5gC,KAAMsmC,KAExC,IACIE,GAAUz6B,EAAKktB,OAAQqN,EAAUjT,EACrC,CACA,MAAO3wB,GACH,MAAM,IAAIyjC,GAAc9S,EAAK3wB,EACjC,CACA,OAAO+2B,EAAMC,KAAKI,EAAQ2M,UAC9B,CACA,SAASD,GAAUpvC,EAAO4I,EAAMqzB,GAC5B,MAAMqT,OAAwBh7B,IAAVtU,GAAiC,OAAVA,EAC3C,IAAI4I,EAAK8kC,aACLzR,EAAIyG,QAAQ+H,UAAU6E,EAAc,EAAI,GACnCA,GAIT,GAAI1mC,EAAK/H,QAAS,CACd,IAAKgD,MAAMhD,QAAQb,GACf,MAAM,IAAI8G,MAAM,uBAAuB8B,EAAKqgC,YAEhD,MAAMrgB,EAAM5oB,EAAMY,OAClBq7B,EAAIyG,QAAQ6B,eAAe3b,GAC3B,IAAK,IAAIxpB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACrB68B,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAOpqC,EAAGwJ,SAChC2mC,EAAYvvC,EAAMZ,IAClB68B,EAAImQ,WAAWhhC,KAEvB,MAEImkC,EAAYvvC,GAEhB,SAASuvC,EAAYvvC,GACjB,MAAM4tC,EAAU3R,EAAI4N,MAAMjhC,EAAK8G,MAC/B,IAAI9G,EAAKilC,KAAQD,EAAjB,CAKA,IAAK0B,EAAa,CACd,GAAI1mC,EAAK4kC,YACL,OAEJ,MAAM,IAAI1mC,MAAM,SAAS9G,4BAAgC4I,EAAKqgC,WAClE,CACA,GAAI2E,GAAWA,EAAQtJ,MAEnBsJ,EAAQtJ,MAAMtkC,EAAOi8B,EAAIyG,cAExB,GAA2B,oBAAhB1iC,EAAMskC,OAAwBtkC,EAAMmK,YAAYs6B,UAAY77B,EAAK8G,KAE7E1P,EAAMskC,MAAMrI,EAAIyG,cAIhB,GAAI95B,EAAK2gC,OAAQ,CACb,GAAqB,kBAAVvpC,EACP,MAAM,IAAI8G,MAAM,wBAAwB8B,EAAK8G,QAEjD,MAAM65B,EAAS3gC,EAAKklC,UACpB,IAAKvE,EACD,MAAM,IAAIziC,MAAM,yBAEpB,IAAK,MAAM0iC,KAASD,EAChBtN,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAOA,EAAM95B,KAAM9G,KAAM4gC,EAAM5gC,OACrDwmC,GAAUpvC,EAAMwpC,EAAM95B,MAAO85B,EAAM5gC,KAAMqzB,GACzCA,EAAImQ,WAAWhhC,KAEvB,MACK,GAAIxC,EAAKghC,QAAS,CACnB,IAAIqE,EACApqC,MAAMhD,QAAQb,IAA2B,IAAjBA,EAAMY,QAAoC,kBAAbZ,EAAM,IAC3DiuC,EAAQjuC,EAAM,GACdA,EAAQA,EAAM,IAET4hC,EAAa5hC,EAAOkuC,KACzBD,EAAQjuC,EAAMmuC,YACdnuC,EAAQA,EAAMA,OAGdiuC,EAAQvC,EAAY1rC,GAExB,MAAM+tC,EAAOnlC,EAAKghC,QAAQwE,WAAWtvC,GAAMA,EAAEmqC,WAAagF,IAC1D,IAAc,IAAVF,EAAa,CACb,MAAMlE,EAAQjhC,EAAKghC,QAAQ/3B,KAAK/S,GAAM,IAAIA,EAAEmqC,cAAat6B,KAAK,MAC9D,MAAM,IAAI7H,MAAM,yBAAyBmnC,uBAA2BpE,IACxE,CACA,MAAMmE,EAAQplC,EAAKghC,QAAQmE,GAC3B9R,EAAIyG,QAAQ6B,eAAewJ,GAC3B9R,EAAImQ,WAAW/gC,KAAK,CAAEm+B,MAAO,IAAIuE,IAAQnlC,KAAMolC,IAC/CoB,GAAUpvC,EAAOguC,EAAO/R,GACxBA,EAAImQ,WAAWhhC,KACnB,KACK,CACD,IAAKwiC,EACD,MAAM,IAAI9mC,MAAoB,QAAd8B,EAAK8G,KAAiB,sCAAwC,gBAElF,MAAM+B,EAAWm8B,EAAQtL,KAAKtiC,GAC9B,IAAKyR,EAAS6yB,MACV,MAAM,IAAIx9B,MAAM,gBAAgB8B,EAAK8G,yCAEzC+B,EAAS6yB,MAAMrI,EAAIyG,QACvB,CAhEJ,MAFI0M,GAAUpvC,EAAO4I,EAAKilC,IAAK5R,EAoEnC,CACJ,CApKA8S,GAAczB,YAAc,gBAqK5B,MAAM6B,GACF,WAAAhlC,CAAYqlC,EAAW,MACnB5rC,KAAK4rC,SAAWA,EAChB5rC,KAAK0qC,IAAM,EACX1qC,KAAK6rC,YAAc,IAAI9M,YAEvB/+B,KAAK6G,SAAW,CAAC,EACjB,MAAMpJ,EAAS,IAAIF,YAAYquC,GAC/B5rC,KAAKM,KAAO,IAAIqqC,SAASltC,GACzBuC,KAAKsJ,MAAQ,IAAIu0B,WAAWpgC,EAChC,CACA,MAAAmtC,CAAOxB,GACH,GAAIppC,KAAKM,KAAK2oB,YAAcjpB,KAAK0qC,IAAMtB,EACnC,OAEJ,MAAM0C,EAAQ7mB,KAAKe,KAAKojB,EAAQppC,KAAK4rC,UAC/B5L,EAAUhgC,KAAKM,KAAK2oB,WAAajpB,KAAK4rC,SAAWE,EACjDruC,EAAS,IAAIF,YAAYyiC,GACzB1/B,EAAO,IAAIqqC,SAASltC,GACpB6L,EAAQ,IAAIu0B,WAAWpgC,GAC7B6L,EAAM22B,IAAIjgC,KAAKsJ,OACftJ,KAAKM,KAAOA,EACZN,KAAKsJ,MAAQA,CACjB,CAEA,SAAAu9B,CAAUkF,GACN/rC,KAAK4qC,OAAO,GACZ5qC,KAAKsJ,MAAMtJ,KAAK0qC,OAASqB,CAC7B,CAEA,UAAAnL,CAAWwI,GACP,MAAMpiB,EAAOoiB,EAAMpsC,OACnBgD,KAAK4qC,OAAO5jB,GACZhnB,KAAKsJ,MAAM22B,IAAImJ,EAAOppC,KAAK0qC,KAC3B1qC,KAAK0qC,KAAO1jB,CAChB,CACA,UAAAglB,CAAW5vC,EAAO0lC,GAEd,OADA9hC,KAAK4qC,OAAO9I,GACJA,GACJ,KAAK,EACD9hC,KAAKM,KAAK2rC,WAAWjsC,KAAK0qC,IAAKtuC,GAAO,GACtC,MACJ,KAAK,EACD4D,KAAKM,KAAK4rC,WAAWlsC,KAAK0qC,IAAKtuC,GAAO,GACtC,MACJ,QACI,MAAM,IAAI8G,MAAM,sBAExBlD,KAAK0qC,KAAO5I,CAChB,CACA,cAAAnB,CAAe7/B,GAEX,IADAd,KAAK4qC,OAAO,KACH,CACL,KAAI9pC,IAAM,GAIL,CACDd,KAAKsJ,MAAMtJ,KAAK0qC,OAAS5pC,EACzB,KACJ,CANId,KAAKsJ,MAAMtJ,KAAK0qC,OAAS,IAAY,IAAJ5pC,EACjCA,KAAU,CAMlB,CACJ,CACA,aAAAujC,CAAcvjC,GACVd,KAAK2gC,eAAgB7/B,GAAK,EAAMA,GAAK,GACzC,CACA,WAAA4lC,CAAY5lC,GACR,MAAMR,EAAON,KAAK6rC,YAAY7M,OAAOl+B,GACrCd,KAAK2gC,eAAergC,EAAK2oB,YACzBjpB,KAAK4gC,WAAWtgC,EACpB,CACA,OAAAmrC,GACI,OAAO,IAAI5N,WAAW79B,KAAKsJ,MAAM7L,OAAQuC,KAAKsJ,MAAMu1B,WAAY7+B,KAAK0qC,IACzE,CACA,QAAAyB,GACI,OAAO,IAAI1N,EAAMz+B,KAAKyrC,UAC1B,EAEJF,GAAW7B,YAAc,aAEzB,MAAMtB,GACF,WAAO1J,CAAKtiC,GACR,OAAwB,IAApBA,EAAMutC,IAEC,IAAI3pC,KAAK5D,GAEhB4hC,EAAa5hC,EAAO4D,MACb5D,EAEJqsC,EAAU,CAAExK,OAAQ7hC,EAAO4I,KAAMhF,MAC5C,CACA,uBAAWosC,GACP,MAAM1O,EAAK,GACL2O,EAAQnxC,IACNA,EAAE4qC,SACFuG,EAAKnxC,EAAE4qC,SAEX,IAAK,MAAMF,KAAS1qC,EAAEwqC,WAAa,GAC/BhI,EAAGj2B,KAAKm+B,EACZ,EAGJ,OADAyG,EAAKrsC,MACE09B,CACX,CAEA,WAAAn3B,CAAY03B,GACR,MAAMrV,EAAO5oB,KAAKuG,YAClB,IAAK,MAAMq/B,KAAShd,EAAKwjB,aACrBpsC,KAAK4lC,EAAM95B,MAAQmyB,EAAO2H,EAAM95B,KAExC,CAOA,MAAAqxB,CAAO4C,GACH,MAAMnX,EAAO5oB,KAAKuG,YAClB,QAAIw5B,EAAMx5B,aAC+B,kBAA9Bw5B,EAAMx5B,YAAYs6B,SACzBd,EAAMx5B,YAAYs6B,UAAYjY,EAAKiY,UAGhCuK,GAAU,CAAEnN,OAAQj+B,OAAQm9B,OAAOiO,GAAU,CAAEnN,OAAQrV,EAAK8V,KAAKqB,KAC5E,CAEA,MAAA9X,GACI,MAAMW,EAAO5oB,KAAKuG,YACZm3B,EAAK,CAAC,EACZ,IAAK,MAAMkI,KAAShd,EAAKwjB,aACrB1O,EAAGkI,EAAM95B,MAAQ9L,KAAK4lC,EAAM95B,MAEhC,OAAO4xB,CACX,EA+BJ,SAAS4O,GAAUxgC,GACf,OAAO,SAAUygC,GAGb,OAFAA,EAAU/G,SAAW,CAAExgC,KAAMlJ,OAAOyiC,eAAegO,EAAU9vC,WAAW8J,aACxEgmC,EAAU1L,QAAU/0B,EACbygC,CACX,CACJ,CAnCAnE,GAAOvH,QAAU,WACjB,SAAWuH,GACP,MAAMoE,EAActwC,OAAO,eAC3B,SAAS8I,EAAK8G,GACV,OAAO,SAAU+5B,GAEb,OADAA,EAAOhF,QAAU/0B,EACV+5B,CACX,CACJ,CAEA,SAASD,EAAM5gC,EAAM4Z,EAAU,CAAC,GAC5B,MAAO,CAAC6tB,EAAQ3gC,KACZ,MAAM0X,EAAOipB,EAAOlmC,YACfid,EAAKkiB,UAIDliB,EAAKkiB,UAAU8G,KAAiBhpB,IAErCA,EAAKsiB,QAAUtiB,EAAKkiB,UAAU8G,GAC9BhpB,EAAKkiB,UAAY,GACjBliB,EAAKkiB,UAAU8G,GAAehpB,IAP9BA,EAAKkiB,UAAY,GACjBliB,EAAKkiB,UAAU8G,GAAehpB,GAQlCA,EAAKkiB,UAAUj+B,KAAK,IAAKmX,EAAS9S,OAAM9G,QAAO,CAEvD,CAhBAojC,EAAOpjC,KAAOA,EAiBdojC,EAAOxC,MAAQA,CAClB,CA1BD,CA0BGwC,KAAWA,GAAS,CAAC,IAUxB,MAAMkC,GACF,WAAO5L,CAAKT,GACR,OAAIA,EAAO0L,IACA,IAAI3pC,KAAKi+B,GAEhBD,EAAaC,EAAQj+B,MACdi+B,EAEJwK,EAAU,CAAExK,SAAQj5B,KAAMhF,MACrC,CAEA,WAAAuG,CAAYy/B,GACR,MAAMD,EAAa/lC,KAAKuG,YAAYw/B,WACpC/lC,KAAK5D,MAAQ4pC,EAAQ,GACrB,MAAM0G,EAAa3G,EAAW93B,IAAIo4B,GAAemE,WAAWtvC,GAAMA,IAAM8qC,EAAQ,KAChF,GAAI,EAAI0G,GAAc3G,EAAW/oC,QAAU0vC,EACvC,MAAM,IAAIxpC,MAAM,mBAAmB8iC,EAAQ,MAE/ChmC,KAAK0sC,WAAaA,CACtB,CAOA,MAAAvP,CAAO4C,GACH,MAAMnX,EAAO5oB,KAAKuG,YACZomC,EAAe/jB,EAAK8V,KAAKqB,GAC/B,OAAI//B,KAAK0sC,aAAeC,EAAaD,YAG9BtB,GAAU,CAAEnN,OAAQj+B,OAAQm9B,OAAOiO,GAAU,CAAEnN,OAAQ0O,IAClE,CACA,eAAIpC,GACA,MAAMvE,EAAUhmC,KAAKuG,YAAYw/B,WAAW/lC,KAAK0sC,YACjD,OAAOrG,EAAcL,EACzB,CAEA,MAAA/d,GACI,MAAO,CAACjoB,KAAKuqC,YAAavqC,KAAK5D,MACnC,EAEJkuC,GAAQzJ,QAAU,YAClByJ,GAAQvE,WAAa,GACrB,SAAWuE,GACP,SAAStlC,EAAK8G,EAAMm6B,GAChB,OAAO,SAAUD,GAGb,OAFAA,EAAQnF,QAAU/0B,EAClBk6B,EAAQD,WAAaE,EAAMh4B,IAAIs4B,GACxBP,CACX,CACJ,CACAsE,EAAQtlC,KAAOA,CAClB,CATD,CASGslC,KAAYA,GAAU,CAAC,IAE1B,MAAMsC,GACF,WAAOlO,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAO4D,MACb5D,GAEU,kBAAVA,EACPA,EAAQmmC,OAAOsK,WAAWzwC,GAErB4hC,EAAa5hC,EAAOwwC,MACzBxwC,EAAQA,EAAMA,OAEX,IAAI4D,KAAK5D,GACpB,CACA,cAAO6iC,CAAQC,GACX,OAAO,IAAIl/B,KAAKk/B,EAAQ8L,UAAUhrC,KAAK8hC,WAC3C,CACA,iBAAOzC,GACH,OAAOr/B,KAAK0+B,KAAK,EACrB,CACA,aAAOa,GACH,MAAM6J,EAAQtL,EAAa99B,KAAK8hC,WAC1B5C,EAAU,IAAIiK,GAAWC,GAC/B,OAAOppC,KAAKi/B,QAAQC,EACxB,CACA,WAAA34B,CAAYnK,GACR,IAAKmmC,OAAOC,SAASpmC,GACjB,MAAM,IAAI8G,MAAM,kBAEpBlD,KAAK5D,MAAQA,CACjB,CACA,MAAA+gC,CAAO4C,GACH,MAAMnX,EAAO5oB,KAAKuG,YAClB,OAAOvG,KAAK5D,QAAUwsB,EAAK8V,KAAKqB,GAAO3jC,KAC3C,CACA,KAAAskC,CAAM5B,GACF,MAAMlW,EAAO5oB,KAAKuG,YAClBu4B,EAAQkN,WAAWhsC,KAAK5D,MAAOwsB,EAAKkZ,UACxC,CACA,QAAAjlC,GACI,OAAOmD,KAAK5D,MAAMS,UACtB,CACA,MAAAorB,GACI,OAAOjoB,KAAKnD,UAChB,EAEJ+vC,GAAM/L,QAAU,UAChB,MAAMuG,WAAgBwF,GAClB,QAAA/vC,GACI,OAAOmD,KAAK5D,MAAM0wC,QAAQ,EAC9B,EAEJ1F,GAAQvG,QAAU,UAClBuG,GAAQtF,UAAY,EACpB,MAAMuF,WAAgBuF,IAEtBvF,GAAQxG,QAAU,UAClBwG,GAAQvF,UAAY,EACpB,MAAMqF,GACF,WAAOzI,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAO4D,MACb5D,GAEU,kBAAVA,GAAsBA,EAAM2wC,WAAW,QAC9C3wC,EAAQA,EAAMyM,MAAM,IAEjB,IAAI7I,KAAKy+B,EAAMC,KAAKtiC,IAC/B,CACA,cAAO6iC,CAAQC,GACX,OAAO,IAAIl/B,KAAK,IAAIy+B,EAAMS,EAAQE,UAAUp/B,KAAK8hC,YACrD,CACA,aAAOvC,GACH,MAAM6J,EAAQtL,EAAa,IACrBoB,EAAU,IAAIiK,GAAWC,GAC/B,OAAOppC,KAAKi/B,QAAQC,EACxB,CACA,WAAA34B,CAAYjG,GACR,GAA0B,KAAtBA,EAAKgJ,MAAMtM,OACX,MAAM,IAAIkG,MAAM,oBAEpBlD,KAAKM,KAAOA,CAChB,CACA,MAAA68B,CAAO4C,GACH,MAAMnX,EAAO5oB,KAAKuG,YAClB,OAAOvG,KAAKM,KAAK68B,OAAOvU,EAAK8V,KAAKqB,GAAOz/B,KAC7C,CACA,KAAAogC,CAAM5B,GACFA,EAAQ8B,WAAW5gC,KAAKM,KAAKgJ,MACjC,CACA,QAAAzM,GAEI,MAAO,KAAOmD,KAAKM,KAAKo/B,SAC5B,CACA,MAAAzX,GACI,OAAOjoB,KAAKnD,UAChB,EAEJsqC,GAAStG,QAAU,WACnBsG,GAASrF,UAAY,GAGrB,MAAMwF,GAKF,YAAI0F,GACA,OAAOhtC,KAAK5D,KAChB,CAEA,WAAOsiC,CAAKtiC,GACR,GAAI4hC,EAAa5hC,EAAOkrC,IACpB,OAAOlrC,EAEN,GAAqB,kBAAVA,EACZ,OAAO,IAAIkrC,GAAK2F,GAAa7wC,IAE5B,GAAI4hC,EAAa5hC,EAAO6nC,GACzB,OAAO,IAAIqD,GAAKlrC,GAGhB,MAAM,IAAI8G,MAAM,eAExB,CACA,cAAO+7B,CAAQC,GACX,OAAO,IAAIoI,GAAKrD,EAAOhF,QAAQC,GACnC,CACA,iBAAOG,GACH,OAAO,IAAIr/B,KAAKikC,EAAOvF,KAAK,GAChC,CACA,WAAAn4B,CAAYnK,GACR4D,KAAK5D,MAAQA,CACjB,CAEA,MAAA+gC,CAAO4C,GACH,OAAO//B,KAAK5D,MAAM+gC,OAAOmK,GAAK5I,KAAKqB,GAAO3jC,MAC9C,CAEA,QAAAS,GACI,OAAOqwC,GAAaltC,KAAK5D,MAC7B,CACA,KAAAskC,CAAM5B,GACF9+B,KAAK5D,MAAMskC,MAAM5B,EACrB,CAEA,MAAA7W,GACI,OAAOjoB,KAAKnD,UAChB,EAKJ,SAASowC,GAAarwC,GAClB,SAASuwC,EAAavxC,GAClB,OAAIA,GAAK,IAAIoQ,WAAW,IAAMpQ,GAAK,IAAIoQ,WAAW,GACvCpQ,EAAI,IAAIoQ,WAAW,GAAK,EAE/BpQ,GAAK,IAAIoQ,WAAW,IAAMpQ,GAAK,IAAIoQ,WAAW,GACvCpQ,EAAI,IAAIoQ,WAAW,GAAK,EAE5B,CACX,CACA,MAAMjP,EAAI,IAAI8gC,WAAW,GACzB,IAAIpV,EAAM,GACV,IAAK,IAAIjtB,EAAI,EAAGA,EAAIoB,EAAEI,SAAUxB,EAAG,CAC/B,IAAII,EAAIuxC,EAAavwC,EAAEoP,WAAWxQ,IAC9BitB,EAAM,IACN7sB,IAAS,GAEb,IAAK,IAAIqqB,EAAI,EAAGA,GAAK,IAAKA,EAClBwC,GAAO,IACP1rB,EAAEkoB,KAAKmoB,MAAM3kB,EAAM,MAAS7sB,GAAKqqB,EAAK,IAAMwC,EAAM,IAChDA,EAGd,CACA,OAAOwb,EAAOvF,KAAK3hC,EACvB,CACA,SAASmwC,GAAa9xC,GAClB,MAAM2B,EAAI3B,EAAEgB,MAAM2pB,QAAQ,KAAM,GAChC,IAAI/f,EAAS,GACb,IAAK,IAAIyiB,EAAM,GAAIA,GAAO,GAAI,CAC1B,IAAI7sB,EAAI,EACR,IAAK,IAAIJ,EAAI,EAAGA,EAAI,IAAKA,EACjBitB,GAAO,IACP7sB,EAAKA,GAAK,EAAOmB,EAAEkoB,KAAKmoB,MAAM3kB,EAAM,KAAOA,EAAM,EAAK,IACpDA,GAINziB,GADApK,GAAK,EACKmQ,OAAOshC,aAAazxC,EAAI,IAAIoQ,WAAW,GAAK,GAEjDpQ,GAAK,EACAmQ,OAAOshC,aAAazxC,EAAI,IAAIoQ,WAAW,GAAK,GAG5C,GAElB,CACA,MAAOhG,EAAOgC,SAAS,KACnBhC,EAASA,EAAOiF,OAAO,EAAGjF,EAAOhJ,OAAS,GAE9C,OAAOgJ,CACX,CAtDAshC,GAAKzG,QAAU,OAEfyG,GAAKgG,QAAU,oBAsDf,MAAMC,GACF,WAAO7O,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAO4D,MACb5D,EAEP4hC,EAAa5hC,EAAOmxC,IAEbvtC,KAAKwtC,iBAAiBpxC,EAAMqxC,kBAEnCzP,EAAa5hC,EAAO8P,MACblM,KAAK0tC,SAAStxC,GAEJ,kBAAVA,EACA4D,KAAK4+B,WAAWxiC,GAEpB4D,KAAK2tC,YAAYvxC,EAC5B,CACA,iBAAOwiC,CAAWpa,GACd,MAAMpoB,EAAQ8P,KAAK3M,MAAMilB,EAAS,KAClC,IAAK+d,OAAOC,SAASpmC,GACjB,MAAM,IAAI8G,MAAM,uBAEpB,OAAOlD,KAAKwtC,iBAAiBpxC,EACjC,CACA,eAAOsxC,CAASE,GACZ,OAAO5tC,KAAKwtC,iBAAiBI,EAAKC,UACtC,CACA,iBAAOxO,GACH,OAAOr/B,KAAK0+B,KAAK,EACrB,CACA,KAAAgC,CAAM5B,GACF,MAAMlW,EAAO5oB,KACb4oB,EAAKxsB,MAAMskC,MAAM5B,EACrB,CACA,MAAA3B,CAAO4C,GACH,MAAMnX,EAAO5oB,KAAKuG,YAClB,OAAOvG,KAAKytC,mBAAqB7kB,EAAK8V,KAAKqB,GAAO0N,gBACtD,CACA,cAAAA,GACI,MAAM,IAAIvqC,MAAM,kBACpB,CACA,MAAA4qC,GACI,OAAO,IAAI5hC,KAAKlM,KAAKytC,iBACzB,CACA,MAAAxlB,GACI,OAAOjoB,KAAKnD,UAChB,EAEJ0wC,GAAc1M,QAAU,oBAExB,MAAM4G,WAAkB8F,GACpB,uBAAOC,CAAiBO,GACpB,OAAO,IAAI/tC,KAAKwjC,EAAM9E,KAAKzZ,KAAK2N,MAAW,IAALmb,IAC1C,CACA,kBAAOJ,CAAYvxC,GACf,OAAO,IAAI4D,KAAKwjC,EAAM9E,KAAKtiC,GAC/B,CACA,cAAO6iC,CAAQC,GACX,OAAO,IAAIl/B,KAAKwjC,EAAMvE,QAAQC,GAClC,CACA,WAAA34B,CAAYnK,GACR+hB,QACAne,KAAK5D,MAAQA,CACjB,CACA,QAAAS,GACI,OAAOmD,KAAK8tC,SAAShjC,cAAcjC,MAAM,GAAI,EACjD,CACA,cAAA4kC,GACI,OAAOlL,OAAOviC,KAAK5D,MAAMknC,SAAS,IAAM,SAC5C,EAEJmE,GAAU5G,QAAU,aAEpB,MAAM6G,WAAqB6F,GACvB,uBAAOC,CAAiBO,GACpB,OAAO,IAAI/tC,KAAKgkC,EAAOtF,KAAKzZ,KAAK2N,MAAMmb,EAAK,MAChD,CACA,kBAAOJ,CAAYvxC,GACf,OAAO,IAAI4D,KAAKgkC,EAAOtF,KAAKtiC,GAChC,CACA,cAAO6iC,CAAQC,GACX,OAAO,IAAIl/B,KAAKgkC,EAAO/E,QAAQC,GACnC,CACA,WAAA34B,CAAYnK,GACR+hB,QACAne,KAAK5D,MAAQA,CACjB,CACA,QAAAS,GACI,OAAOmD,KAAK8tC,SAAShjC,cAAcjC,MAAM,GAAI,EACjD,CACA,cAAA4kC,GACI,OAAOlL,OAAOviC,KAAK5D,MAAMsmC,KAAKuB,GAAQd,YAAY,KACtD,EAEJuE,GAAa7G,QAAU,iBACvB,MAAMoG,WAAuBsG,GACzB,uBAAOC,CAAiBO,GACpB,OAAO,IAAI/tC,KAAKgkC,EAAOtF,KAAKzZ,KAAK2N,OAAOmb,EAAK,WAAgB,MACjE,CACA,kBAAOJ,CAAYvxC,GACf,OAAO,IAAI4D,KAAKgkC,EAAOtF,KAAKtiC,GAChC,CACA,cAAO6iC,CAAQC,GACX,OAAO,IAAIl/B,KAAKgkC,EAAO/E,QAAQC,GACnC,CACA,WAAA34B,CAAYnK,GACR+hB,QACAne,KAAK5D,MAAQA,CACjB,CACA,QAAAS,GACI,OAAOmD,KAAK8tC,SAAShjC,cAAcjC,MAAM,GAAI,EACjD,CACA,cAAA4kC,GACI,OAAOlL,OAAOviC,KAAK5D,MAAMsmC,KAAKuB,GAAQd,YAAY,KAAKL,OAAO,WAClE,EAEJmE,GAAepG,QAAU,uBAEzB,MAAMuF,GACF,WAAA7/B,CAAYwK,GACR/Q,KAAK4J,QAAUmH,EAAKnH,SAAWw8B,GAAIx8B,QACnC5J,KAAKimC,MAAQl1B,EAAKk1B,OAAS,GAC3BjmC,KAAKilC,SAAWl0B,EAAKk0B,UAAY,GACjCjlC,KAAKglC,QAAUj0B,EAAKi0B,SAAW,GAC/BhlC,KAAKgZ,QAAUjI,EAAKiI,SAAW,GAC/BhZ,KAAKguC,OAASj9B,EAAKi9B,QAAU,GAC7BhuC,KAAKiuC,kBAAoBl9B,EAAKk9B,mBAAqB,EACvD,CACA,WAAOvP,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAOgqC,IACbhqC,EAGA,IAAIgqC,GADM,kBAAVhqC,EACQgD,KAAKG,MAAMnD,GAEfA,EACnB,CACA,cAAO6iC,CAAQC,GACX,MAAMt1B,EAAUs1B,EAAQuH,aAClBR,EAAQ,GACRiI,EAAWhP,EAAQC,gBACzB,IAAK,IAAI3jC,EAAI,EAAGA,EAAI0yC,EAAU1yC,IAC1ByqC,EAAMx+B,KAAK,CAAEg+B,cAAevG,EAAQuH,aAAczhC,KAAMk6B,EAAQuH,eAEpE,MAAMzB,EAAU,GACVmJ,EAAajP,EAAQC,gBAC3B,IAAK,IAAI3jC,EAAI,EAAGA,EAAI2yC,EAAY3yC,IAAK,CACjC,MAAMsQ,EAAOozB,EAAQuH,aACf3iB,EAAOob,EAAQuH,aACf2H,EAAYlP,EAAQC,gBACpBwG,EAAS,GACf,IAAK,IAAI1f,EAAI,EAAGA,EAAImoB,EAAWnoB,IAC3B0f,EAAOl+B,KAAK,CAAEqE,KAAMozB,EAAQuH,aAAczhC,KAAMk6B,EAAQuH,eAE5DzB,EAAQv9B,KAAK,CAAEqc,OAAMhY,OAAM65B,UAC/B,CACA,MAAM3sB,EAAU,GACVq1B,EAAanP,EAAQC,gBAC3B,IAAK,IAAI3jC,EAAI,EAAGA,EAAI6yC,EAAY7yC,IAAK,CACjC,MAAMsQ,EAAOw7B,GAAKrI,QAAQC,GACpBl6B,EAAOk6B,EAAQuH,aACf6H,EAAqBpP,EAAQuH,aACnCztB,EAAQvR,KAAK,CAAEqE,OAAM9G,OAAMspC,sBAC/B,CACA,MAAMN,EAAS,GACTO,EAAYrP,EAAQC,gBAC1B,IAAK,IAAI3jC,EAAI,EAAGA,EAAI+yC,EAAW/yC,IAAK,CAChC,MAAMsQ,EAAOw7B,GAAKrI,QAAQC,GACpBsP,EAAatP,EAAQuH,aACrBgI,EAAY,GACZC,EAAcxP,EAAQC,gBAC5B,IAAK,IAAIlZ,EAAI,EAAGA,EAAIyoB,EAAazoB,IAC7BwoB,EAAUhnC,KAAKy3B,EAAQuH,cAE3B,MAAMkI,EAAY,GACZC,EAAc1P,EAAQC,gBAC5B,IAAK,IAAIlZ,EAAI,EAAGA,EAAI2oB,EAAa3oB,IAC7B0oB,EAAUlnC,KAAKy3B,EAAQuH,cAE3B,MAAMzhC,EAAOk6B,EAAQuH,aACrBuH,EAAOvmC,KAAK,CAAEqE,OAAM0iC,aAAYC,YAAWE,YAAW3pC,QAC1D,CACA,MAAMipC,EAAoB,GACpBY,EAAa3P,EAAQC,gBAC3B,IAAK,IAAI3jC,EAAI,EAAGA,EAAIqzC,EAAYrzC,IAAK,CACjC,MAAM6c,EAAK6mB,EAAQuH,aACbqI,EAAO5P,EAAQuH,aACrBwH,EAAkBxmC,KAAK,CAAE4Q,KAAIy2B,QACjC,CAEA,MAAMC,EAAY7P,EAAQC,gBAC1B,IAAK,IAAI3jC,EAAI,EAAGA,EAAIuzC,EAAWvzC,IAC3B0jC,EAAQ6L,QAAQ,GAChB7L,EAAQ6L,QAAQ7L,EAAQC,iBAG5B,MAAM6P,EAAgB9P,EAAQC,gBAC9B,IAAK,IAAI3jC,EAAI,EAAGA,EAAIwzC,EAAexzC,IAC/B0jC,EAAQ6L,QAAQ,GAChB7L,EAAQ6L,QAAQ7L,EAAQC,iBAG5B,MAAM8F,EAAW,GACjB,GAAI/F,EAAQ2K,UAAW,CACnB,MAAMoF,EAAc/P,EAAQC,gBAC5B,IAAK,IAAI3jC,EAAI,EAAGA,EAAIyzC,EAAazzC,IAAK,CAClC,MAAMsQ,EAAOozB,EAAQuH,aACfR,EAAQ,GACRiI,EAAWhP,EAAQC,gBACzB,IAAK,IAAIlZ,EAAI,EAAGA,EAAIioB,EAAUjoB,IAC1BggB,EAAMx+B,KAAKy3B,EAAQuH,cAEvBxB,EAASx9B,KAAK,CAAEqE,OAAMm6B,SAC1B,CACJ,CACA,OAAO,IAAIG,GAAI,CACXx8B,UACAq8B,QACAjB,UACAhsB,UACAg1B,SACAC,oBACAhJ,YAER,CACA,KAAAvE,CAAM5B,GACFA,EAAQ4H,YAAY1mC,KAAK4J,SACzBk1B,EAAQ6B,eAAe3gC,KAAKimC,MAAMjpC,QAClC,IAAK,MAAMgI,KAAQhF,KAAKimC,MACpBnH,EAAQ4H,YAAY1hC,EAAKygC,eACzB3G,EAAQ4H,YAAY1hC,EAAKA,MAE7B85B,EAAQ6B,eAAe3gC,KAAKglC,QAAQhoC,QACpC,IAAK,MAAM6oC,KAAU7lC,KAAKglC,QAAS,CAC/BlG,EAAQ4H,YAAYb,EAAO/5B,MAC3BgzB,EAAQ4H,YAAYb,EAAO/hB,MAC3Bgb,EAAQ6B,eAAekF,EAAOF,OAAO3oC,QACrC,IAAK,MAAM4oC,KAASC,EAAOF,OACvB7G,EAAQ4H,YAAYd,EAAM95B,MAC1BgzB,EAAQ4H,YAAYd,EAAM5gC,KAElC,CACA85B,EAAQ6B,eAAe3gC,KAAKgZ,QAAQhc,QACpC,IAAK,MAAMuc,KAAUvZ,KAAKgZ,QACtBsuB,GAAK5I,KAAKnlB,EAAOzN,MAAM40B,MAAM5B,GAC7BA,EAAQ4H,YAAYntB,EAAOvU,MAC3B85B,EAAQ4H,YAAYntB,EAAO+0B,oBAE/BxP,EAAQ6B,eAAe3gC,KAAKguC,OAAOhxC,QACnC,IAAK,MAAMkyC,KAASlvC,KAAKguC,OAAQ,CAC7B1G,GAAK5I,KAAKwQ,EAAMpjC,MAAM40B,MAAM5B,GAC5BA,EAAQ4H,YAAYwI,EAAMV,YAC1B1P,EAAQ6B,eAAeuO,EAAMT,UAAUzxC,QACvC,IAAK,MAAMkrC,KAAOgH,EAAMT,UACpB3P,EAAQ4H,YAAYwB,GAExBpJ,EAAQ6B,eAAeuO,EAAMP,UAAU3xC,QACvC,IAAK,MAAMkrC,KAAOgH,EAAMP,UACpB7P,EAAQ4H,YAAYwB,GAExBpJ,EAAQ4H,YAAYwI,EAAMlqC,KAC9B,CACA85B,EAAQ6B,eAAe3gC,KAAKiuC,kBAAkBjxC,QAC9C,IAAK,MAAMmyC,KAAUnvC,KAAKiuC,kBACtBnP,EAAQ4H,YAAYyI,EAAO92B,IAC3BymB,EAAQ4H,YAAYyI,EAAOL,MAE/BhQ,EAAQ6B,eAAe,GACvB7B,EAAQ6B,eAAe,GACvB7B,EAAQ6B,eAAe3gC,KAAKilC,SAASjoC,QACrC,IAAK,MAAMgpC,KAAWhmC,KAAKilC,SAAU,CACjCnG,EAAQ4H,YAAYV,EAAQl6B,MAC5BgzB,EAAQ6B,eAAeqF,EAAQC,MAAMjpC,QACrC,IAAK,MAAMgI,KAAQghC,EAAQC,MACvBnH,EAAQ4H,YAAY1hC,EAE5B,CACJ,CACA,WAAAikC,CAAYn9B,GACR,MAAMm6B,EAAQ,CAAC,EACf,OAAOjmC,KAAK6H,QAAQ,CAAEiE,OAAMm6B,SAAS,CAAE5tB,GAAI,GAC/C,CACA,UAAA+2B,GACI,MAAMnJ,EAAQ,CAAC,EACT5N,EAAM,CAAEhgB,GAAI,GAClB,MAAO,CACH4tB,MAAOjmC,KAAKimC,MAAMh4B,KAAK/S,GAAM8E,KAAK6H,QAAQ,CAAEiE,KAAM5Q,EAAEuqC,cAAeQ,SAAS5N,KAC5E4M,SAAUjlC,KAAKilC,SAASh3B,KAAK/S,GAAM8E,KAAK6H,QAAQ,CAAEiE,KAAM5Q,EAAE4Q,KAAMm6B,SAAS5N,KACzE2M,QAAShlC,KAAKglC,QAAQ/2B,KAAK/S,GAAM8E,KAAK6H,QAAQ,CAAEiE,KAAM5Q,EAAE4Q,KAAMm6B,SAAS5N,KAE/E,CACA,OAAAxwB,EAAQ,KAAEiE,EAAI,MAAEm6B,GAAS5N,GACrB,MAAMgX,EAAWpJ,EAAMn6B,GACvB,GAAIujC,EACA,OAAOA,EAEX,MAAMrqC,EAAO,IAAIohC,GAAI0C,aAAah9B,IAAQusB,EAAIhgB,IAC9C4tB,EAAMjhC,EAAKqgC,UAAYrgC,EACvB,MAAMsqC,EAAQtvC,KAAKimC,MAAMkC,MAAMoH,GAAYA,EAAQ9J,eAAiBzgC,EAAK8G,OACzE,GAAIwjC,EAEA,OADAtqC,EAAKilC,IAAMjqC,KAAK6H,QAAQ,CAAEiE,KAAMwjC,EAAMtqC,KAAMihC,SAAS5N,GAC9CrzB,EAEX,MAAM6gC,EAAS7lC,KAAKwvC,UAAUxqC,EAAK8G,MACnC,GAAI+5B,EAUA,OATIA,EAAO/hB,OACP9e,EAAK8e,KAAO9jB,KAAK6H,QAAQ,CAAEiE,KAAM+5B,EAAO/hB,KAAMmiB,SAAS5N,IAE3DrzB,EAAK2gC,OAASE,EAAOF,OAAO13B,KAAK23B,IACtB,CACH95B,KAAM85B,EAAM95B,KACZ9G,KAAMhF,KAAK6H,QAAQ,CAAEiE,KAAM85B,EAAM5gC,KAAMihC,SAAS5N,OAGjDrzB,EAEX,MAAMghC,EAAUhmC,KAAKyvC,WAAWzqC,EAAK8G,MACrC,OAAIk6B,GACAhhC,EAAKghC,QAAUA,EAAQC,MAAMh4B,KAAKnC,GAAS9L,KAAK6H,QAAQ,CAAEiE,OAAMm6B,SAAS5N,KAClErzB,GAGJA,CACX,CACA,SAAAwqC,CAAU1jC,GACN,OAAO9L,KAAKglC,QAAQmD,MAAMtC,GAAWA,EAAO/5B,MAAQA,GACxD,CACA,UAAA2jC,CAAW3jC,GACP,OAAO9L,KAAKilC,SAASkD,MAAMnC,GAAYA,EAAQl6B,MAAQA,GAC3D,CAEA,aAAA4jC,CAAcC,GACV,MAAM7jC,EAAOw7B,GAAK5I,KAAKiR,GAAY9yC,WAC7B0c,EAASvZ,KAAKgZ,QAAQmvB,MAAMprC,GAAMA,EAAE+O,KAAKjP,aAAeiP,IAC9D,GAAIyN,EACA,OAAOA,EAAOvU,IAEtB,CACA,MAAAm4B,CAAO4C,GACH,MAAMxkC,EAAI6qC,GAAI1H,KAAKqB,GACnB,OAAI//B,KAAK4J,SAAWrO,EAAEqO,SAClB5J,KAAKimC,MAAMjpC,QAAUzB,EAAE0qC,MAAMjpC,QAC7BgD,KAAKglC,QAAQhoC,QAAUzB,EAAEypC,QAAQhoC,QACjCgD,KAAKgZ,QAAQhc,QAAUzB,EAAEyd,QAAQhc,QACjCgD,KAAKguC,OAAOhxC,QAAUzB,EAAEyyC,OAAOhxC,QAC/BgD,KAAKiuC,kBAAkBjxC,QAAUzB,EAAE0yC,kBAAkBjxC,QACrDgD,KAAKilC,SAASjoC,QAAUzB,EAAE0pC,SAASjoC,QAGhCouC,GAAU,CAAEnN,OAAQj+B,OAAQm9B,OAAOiO,GAAU,CAAEnN,OAAQ1iC,IAClE,CACA,MAAA0sB,GACI,MAAO,CACHre,QAAS5J,KAAK4J,QACdq8B,MAAOjmC,KAAKimC,MACZjB,QAAShlC,KAAKglC,QACdhsB,QAAShZ,KAAKgZ,QACdg1B,OAAQhuC,KAAKguC,OACbC,kBAAmBjuC,KAAKiuC,kBACxB2B,eAAgB,GAChBC,eAAgB,GAChB5K,SAAUjlC,KAAKilC,SAEvB,EAEJmB,GAAIvF,QAAU,MACduF,GAAIx8B,QAAU,iBACd,SAAWw8B,GACP,MAAM0C,EACF,WAAAviC,CAAYupC,EAAUz3B,EAAK,GACvB,IAAIvM,EAAOgkC,EACPhkC,EAAK9D,SAAS,MACd8D,EAAOA,EAAKjD,MAAM,GAAI,GACtB7I,KAAK4pC,aAAc,GAGnB5pC,KAAK4pC,aAAc,EAEnB99B,EAAK9D,SAAS,MACd8D,EAAOA,EAAKjD,MAAM,GAAI,GACtB7I,KAAK8pC,YAAa,GAGlB9pC,KAAK8pC,YAAa,EAElBh+B,EAAK9D,SAAS,OACd8D,EAAOA,EAAKjD,MAAM,GAAI,GACtB7I,KAAK/C,SAAU,GAGf+C,KAAK/C,SAAU,EAEnB+C,KAAKqY,GAAKA,EACVrY,KAAK8L,KAAOA,CAChB,CAIA,YAAIu5B,GACA,IAAI3H,EAAK19B,KAAK8L,KAUd,OATI9L,KAAK/C,UACLygC,GAAM,MAEN19B,KAAK8pC,aACLpM,GAAM,KAEN19B,KAAK4pC,cACLlM,GAAM,KAEHA,CACX,CAEA,aAAIwM,GAEA,IAAItO,EAAU57B,KACd,MAAM09B,EAAK,GACLxiB,EAAO,IAAIiqB,IACjB,EAAG,CACC,IAAKvJ,EAAQ+J,OACT,OAEJ,GAAIzqB,EAAK6gB,IAAIH,EAAQ9vB,MACjB,OAEJ,IAAK,IAAItQ,EAAIogC,EAAQ+J,OAAO3oC,OAAS,EAAGxB,GAAK,EAAGA,IAC5CkiC,EAAG30B,QAAQ6yB,EAAQ+J,OAAOnqC,IAE9B0f,EAAKpL,IAAI8rB,EAAQ9vB,MACjB8vB,EAAUA,EAAQ9X,IACtB,YAAqBpT,IAAZkrB,GACT,OAAO8B,CACX,EAEJ0I,EAAI0C,aAAeA,CACtB,CAnED,CAmEG1C,KAAQA,GAAM,CAAC,IAElB,MAAMW,GACF,WAAOrI,CAAKtiC,EAAO2zC,GACf,GAAI/R,EAAa5hC,EAAO2qC,IACpB,OAAO3qC,EAEX,cAAeA,GACX,IAAK,SACD,IAAK2zC,EACD,MAAM,IAAI7sC,MAAM,sDAEpB,OAAOlD,KAAKgwC,UAAU5zC,EAAO2zC,GACjC,IAAK,SACD,OAAO/vC,KAAK4+B,WAAWxiC,GAC3B,QACI,MAAM,IAAI8G,MAAM,iBAE5B,CACA,iBAAO07B,CAAWxiC,GACd,MAAM6zC,GAA0B,kBAAV7zC,EAAqBA,EAAQ,IAAI4O,MAAM,KAC7D,GAAqB,IAAjBilC,EAAMjzC,OACN,MAAM,IAAIkG,MAAM,wBAEpB,MAAMgtC,EAASD,EAAM,GAAGjxC,QAAQ,IAAK,IAC/BmxC,GAAaF,EAAM,GAAGjlC,MAAM,KAAK,IAAM,IAAIhO,OAC3C+yC,EAAShJ,GAAM7qC,OAAOk0C,UAAUH,EAAM,GAAIE,GAChD,OAAO,IAAIpJ,GAAMvD,EAAM9E,KAAKwR,GAASH,EACzC,CACA,gBAAOC,CAAU5zC,EAAO2zC,GACpB,MAAMnzC,EAAImqC,GAAM7qC,OAAOwiC,KAAKqR,GAC5B,OAAO,IAAIhJ,GAAMnqC,EAAEyzC,aAAaj0C,GAAQQ,EAC5C,CACA,gBAAO0zC,CAAUl0C,EAAO2zC,GACpB,OAAO,IAAIhJ,GAAMvD,EAAM9E,KAAKtiC,GAAQ2qC,GAAM7qC,OAAOwiC,KAAKqR,GAC1D,CACA,cAAO9Q,CAAQC,GACX,MAAMqR,EAAQ/M,EAAMvE,QAAQC,GACtB6Q,EAAShJ,GAAM7qC,OAAO+iC,QAAQC,GACpC,OAAO,IAAI6H,GAAMwJ,EAAOR,EAC5B,CACA,iBAAO1Q,GACH,OAAO,IAAIr/B,KAAKwjC,EAAM9E,KAAK,GAAIqI,GAAM7qC,OAAOmjC,aAChD,CACA,WAAA94B,CAAYgqC,EAAOR,GACf/vC,KAAKuwC,MAAQA,EACbvwC,KAAK+vC,OAASA,CAClB,CACA,MAAA5S,CAAO4C,GACH,MAAM,OAAEgQ,EAAM,MAAEQ,GAAUxJ,GAAMrI,KAAKqB,GACrC,OAAO//B,KAAK+vC,OAAO3zC,MAAM+gC,OAAO4S,EAAO3zC,QAAU4D,KAAKuwC,MAAMpT,OAAOoT,EACvE,CACA,SAAIn0C,GACA,OAAO4D,KAAK+vC,OAAOS,aAAaxwC,KAAKuwC,MACzC,CACA,SAAIn0C,CAAMq0C,GACNzwC,KAAKuwC,MAAQvwC,KAAK+vC,OAAOM,aAAaI,EAC1C,CACA,KAAA/P,CAAM5B,GACF9+B,KAAKuwC,MAAM7P,MAAM5B,GACjB9+B,KAAK+vC,OAAOrP,MAAM5B,EACtB,CACA,QAAAjiC,GACI,MAAM6zC,EAAS1wC,KAAKuwC,MAAM1zC,WAAWmO,MAAM,IAC3C,IAAIiZ,GAAW,EACG,MAAdysB,EAAO,KACPzsB,GAAW,EACXysB,EAAO5oC,SAEX,MAAMnL,EAAIqD,KAAK+vC,OAAOI,UACtB,MAAOO,EAAO1zC,QAAUL,EACpB+zC,EAAO3nC,QAAQ,KAEfpM,EAAI,GACJ+zC,EAAOpiC,OAAOoiC,EAAO1zC,OAASL,EAAG,EAAG,KAExC,IAAI+gC,EAAKgT,EAAO3lC,KAAK,IAIrB,OAHIkZ,IACAyZ,EAAK,IAAMA,GAERA,EAAK,IAAM19B,KAAK+vC,OAAOjkC,IAClC,CACA,MAAAmc,GACI,OAAOjoB,KAAKnD,UAChB,EAEJkqC,GAAMlG,QAAU,QAChB,SAAWkG,GACP,MAAM7qC,EACF,WAAOwiC,CAAKtiC,GACR,GAAI4hC,EAAa5hC,EAAOF,GACpB,OAAOE,EAEX,GAAI4hC,EAAa5hC,EAAO6nC,GACpB,OAAO,IAAI/nC,EAAOE,GAEtB,MAAM6zC,EAAQ7zC,EAAM4O,MAAM,KAC1B,GAAqB,IAAjBilC,EAAMjzC,OACN,MAAM,IAAIkG,MAAM,yBAEpB,MAAMitC,EAAY5N,OAAOoO,SAASV,EAAM,IACxC,OAAO/zC,EAAOk0C,UAAUH,EAAM,GAAIE,EACtC,CACA,gBAAOC,CAAUtkC,EAAMqkC,GACnB,OAAO,IAAIj0C,EAAO00C,GAAY9kC,EAAMqkC,GACxC,CAEA,cAAOlR,CAAQC,GACX,OAAO,IAAIhjC,EAAO+nC,EAAOhF,QAAQC,GACrC,CACA,iBAAOG,GACH,OAAOr/B,KAAK0+B,KAAK,QACrB,CACA,WAAAn4B,CAAYnK,GACR,GAAIy0C,GAAkBz0C,GAASF,EAAO40C,aAClC,MAAM,IAAI5tC,MAAM,6CAEpB,IAAKhH,EAAO60C,kBAAkB7lC,KAAK8lC,GAAa50C,IAC5C,MAAM,IAAI8G,MAAM,oDAEpBlD,KAAK5D,MAAQA,CACjB,CACA,MAAA+gC,CAAO4C,GACH,OAAO//B,KAAK5D,MAAM+gC,OAAOjhC,EAAOwiC,KAAKqB,GAAO3jC,MAChD,CACA,QAAI0P,GACA,OAAOklC,GAAahxC,KAAK5D,MAC7B,CACA,aAAI+zC,GACA,OAAOU,GAAkB7wC,KAAK5D,MAClC,CACA,QAAIwO,GACA,OAAO,IAAIo8B,EAAW/C,EAAOvF,KAAK1+B,KAAK5D,MAAMA,MAAM0qB,QAAQoN,OAAO,IACtE,CACA,KAAAwM,CAAM5B,GACF9+B,KAAK5D,MAAMskC,MAAM5B,EACrB,CAKA,YAAA0R,CAAaD,GACT,OAAOA,EAAMn0C,MAAM2rB,WAAa9C,KAAK0B,IAAI,GAAI3mB,KAAKmwC,UACtD,CAKA,YAAAE,CAAaY,GACT,OAAOzN,EAAM9E,KAAKuS,EAAMnE,QAAQ9sC,KAAKmwC,WAAWnxC,QAAQ,IAAK,IACjE,CACA,QAAAnC,GACI,MAAO,GAAGmD,KAAKmwC,aAAanwC,KAAK8L,MACrC,CACA,MAAAmc,GACI,OAAOjoB,KAAKnD,UAChB,EAEJX,EAAO2kC,QAAU,SACjB3kC,EAAO60C,kBAAoB,eAC3B70C,EAAO40C,aAAe,GACtB/J,EAAM7qC,OAASA,EACf,MAAM8qC,EACF,WAAOtI,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAO4qC,GACb5qC,GAEU,kBAAVA,IACPA,EAAQ6nC,EAAOvF,KAAKwS,GAAgB90C,KAEjC,IAAI4D,KAAKikC,EAAOvF,KAAKtiC,IAChC,CACA,cAAO6iC,CAAQC,GACX,OAAO,IAAI8H,EAAW/C,EAAOhF,QAAQC,GACzC,CACA,iBAAOG,GACH,OAAOr/B,KAAK0+B,KAAK,MACrB,CACA,WAAAn4B,CAAYnK,GACR4D,KAAK5D,MAAQA,CACjB,CACA,MAAA+gC,CAAO4C,GACH,OAAO//B,KAAK5D,MAAM+gC,OAAO6J,EAAWtI,KAAKqB,GAAO3jC,MACpD,CACA,KAAAskC,CAAM5B,GACF9+B,KAAK5D,MAAMskC,MAAM5B,EACrB,CACA,QAAAjiC,GACI,OAAOs0C,GAAkBnxC,KAAK5D,MAAMA,MAAM2pB,QAAQ,MACtD,CACA,MAAAkC,GACI,OAAOjoB,KAAKnD,UAChB,EAEJmqC,EAAWnG,QAAU,cACrBkG,EAAMC,WAAaA,CACtB,CA7GD,CA6GGD,KAAUA,GAAQ,CAAC,IACtB,MAAMG,GACF,WAAOxI,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAO8qC,IACb9qC,EAEJ,IAAI4D,KAAK+mC,GAAMrI,KAAKtiC,EAAMg1C,UAAW9J,GAAK5I,KAAKtiC,EAAMi1C,UAChE,CACA,cAAOpS,CAAQC,GACX,OAAO,IAAIgI,GAAcH,GAAM9H,QAAQC,GAAUoI,GAAKrI,QAAQC,GAClE,CACA,WAAA34B,CAAY6qC,EAAUC,GAClBrxC,KAAKoxC,SAAWA,EAChBpxC,KAAKqxC,SAAWA,CACpB,CACA,MAAAlU,CAAO4C,GACH,OAAO//B,KAAKoxC,SAASjU,OAAO4C,EAAMqR,WAAapxC,KAAKqxC,SAASlU,OAAO4C,EAAMsR,SAC9E,CACA,KAAA3Q,CAAM5B,GACF9+B,KAAKoxC,SAAS1Q,MAAM5B,GACpB9+B,KAAKqxC,SAAS3Q,MAAM5B,EACxB,CACA,MAAA7W,GACI,MAAO,CACHmpB,SAAUpxC,KAAKoxC,SACfC,SAAUrxC,KAAKqxC,SAEvB,EAGJ,SAASR,GAAkBS,GACvB,OAAOA,EAAUl1C,MAAMyuB,IAAIoZ,EAAOvF,KAAK,KAAMtiC,OAAO2rB,UACxD,CACA,SAASipB,GAAaM,GAClB,MAAMC,EAAQD,EAAUl1C,MAAM2pB,QAAQ,MAAMld,MAAM,GAAI,GACtD,OAAOsoC,GAAkBI,EAC7B,CACA,SAASJ,GAAkBI,GACvB,OAAOA,EACFtjC,KAAKujC,GAASzlC,OAAOshC,aAAamE,KAClCC,UACA1mC,KAAK,GACd,CACA,SAAS6lC,GAAY9kC,EAAMqkC,GACvB,MAAMvlC,EAAOsmC,GAAgBplC,GACvBs9B,EAAQ,IAAIvL,WAAWjzB,EAAK5N,OAAS,GAG3C,OAFAosC,EAAM,GAAK+G,EACX/G,EAAMnJ,IAAIr1B,EAAM,GACTq5B,EAAOvF,KAAK0K,EACvB,CACA,SAAS8H,GAAgBplC,GACrB,MAAM9O,EAASioB,KAAKC,IAAIpZ,EAAK9O,OAAQ,GAC/BosC,EAAQ,IAAIvL,WAAW7gC,GAC7B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwB,EAAQxB,IACxB4tC,EAAM5tC,GAAKsQ,EAAKE,WAAWxQ,GAE/B,OAAO4tC,CACX,CAEA,IAAIsI,GA9BJxK,GAAcrG,QAAU,iBA+BxB,SAAW6Q,GACP,IAAIC,GACJ,SAAWA,GACPA,EAAU,cAAgB,aAC1BA,EAAU,aAAe,WAC5B,EAHD,CAGGA,EAAYD,EAAOC,YAAcD,EAAOC,UAAY,CAAC,IACxD,MAAMtJ,UAAsBnlC,MACxB,WAAAqD,CAAYnD,EAASwH,EAAMgnC,EAAO,CAAC,GAC/BzzB,MAAM/a,GACNpD,KAAK4K,KAAOA,EACZ5K,KAAK4xC,KAAOA,CAChB,EAEJvJ,EAAcqB,YAAc,gBAC5BgI,EAAOrJ,cAAgBA,EACvB,MAAMkJ,EAAQ,6DACRM,EAAU,IAAIC,WAAW,KAAMzR,MAAM,GAC3C,IAAK,IAAI7kC,EAAI,EAAGA,EAAI,KAAMA,EACtBq2C,EAAQN,EAAMvlC,WAAWxQ,IAAMA,EAGnC,SAASqkC,EAAOjjC,EAAGoqB,GACf,GAAY,MAARA,EACA,OAAO+qB,EAAUn1C,GAErB,MAAMoJ,EAAS,IAAI63B,WAAW7W,GAC9B,IAAK,IAAIxrB,EAAI,EAAGA,EAAIoB,EAAEI,SAAUxB,EAAG,CAC/B,IAAIisB,EAAQoqB,EAAQj1C,EAAEoP,WAAWxQ,IACjC,GAAIisB,EAAQ,EACR,MAAM,IAAI4gB,EAAc,uCAAwCsJ,EAAUK,UAAW,CAAER,KAAM50C,EAAEpB,KAEnG,IAAK,IAAIyqB,EAAI,EAAGA,EAAIe,IAAQf,EAAG,CAC3B,MAAMvS,EAAgB,GAAZ1N,EAAOigB,GAAUwB,EAC3BzhB,EAAOigB,GAAKvS,EACZ+T,EAAQ/T,GAAK,CACjB,CACA,GAAI+T,EACA,MAAM,IAAI4gB,EAAc,+BAAgCsJ,EAAUK,UAE1E,CAEA,OADAhsC,EAAOyrC,UACA,IAAIhT,EAAMz4B,EACrB,CAGA,SAASisC,EAAYC,EAASlrB,GAC1B,MAAMmrB,EAAUtS,EAAOqS,EAAiB,MAARlrB,EAAeA,EAAO,EAAIA,GACpD1mB,EAAO6xC,EAAQ7oC,MAAMk3B,SAAS,GAAI,GAClC4R,EAAWD,EAAQ7oC,MAAMk3B,UAAU,GACnC6R,EAASC,EAAgBhyC,GAC/B,IAAK28B,EAAYmV,EAAUC,GACvB,MAAM,IAAIhK,EAAc,oBAAqBsJ,EAAUY,WAAY,CAC/DF,SACAD,WACA9xC,OACAmL,KAAM,kBAGd,OAAO,IAAIgzB,EAAMn+B,EACrB,CAGA,SAASkyC,EAAqBN,EAASlrB,EAAMyrB,GACzC,MAAMN,EAAUtS,EAAOqS,EAAiB,MAARlrB,EAAeA,EAAO,EAAIA,GACpD1mB,EAAO6xC,EAAQ7oC,MAAMk3B,SAAS,GAAI,GAClC4R,EAAWD,EAAQ7oC,MAAMk3B,UAAU,GACnC6R,EAASK,EAAkBpyC,EAAMmyC,GACvC,IAAKxV,EAAYmV,EAAUC,GACvB,MAAM,IAAIhK,EAAc,oBAAqBsJ,EAAUY,WAAY,CAC/DF,SACAD,WACA9xC,OACAmL,KAAM,cAGd,OAAO,IAAIgzB,EAAMn+B,EACrB,CAGA,SAAS0+B,EAAO1+B,GACZA,EAAOm+B,EAAMC,KAAKp+B,GAClB,MAAM0F,EAAS,GACf,IAAK,MAAM+lC,KAAQzrC,EAAKgJ,MAAO,CAC3B,IAAIme,EAAQskB,EACZ,IAAK,IAAI9lB,EAAI,EAAGA,EAAIjgB,EAAOhJ,SAAUipB,EAAG,CACpC,MAAMvS,GAAKm+B,EAAQ7rC,EAAOigB,KAAO,GAAKwB,EACtCzhB,EAAOigB,GAAKsrB,EAAMvlC,WAAW0H,EAAI,IACjC+T,EAAS/T,EAAI,GAAM,CACvB,CACA,MAAO+T,EACHzhB,EAAOyB,KAAK8pC,EAAMvlC,WAAWyb,EAAQ,KACrCA,EAASA,EAAQ,GAAM,CAE/B,CACA,IAAK,MAAMskB,KAAQzrC,EAAKgJ,MAAO,CAC3B,GAAIyiC,EACA,MAGA/lC,EAAOyB,KAAK,IAAIuE,WAAW,GAEnC,CAEA,OADAhG,EAAOyrC,UACA1lC,OAAOshC,gBAAgBrnC,EAClC,CAEA,SAAS2sC,EAAYryC,GAGjB,OAFAA,EAAOm+B,EAAMC,KAAKp+B,GAClBA,EAAOA,EAAK4/B,UAAUoS,EAAgBhyC,EAAKgJ,QACpC01B,EAAO1+B,EAClB,CAEA,SAASsyC,EAAqBtyC,EAAMmyC,GAGhC,OAFAnyC,EAAOm+B,EAAMC,KAAKp+B,GAClBA,EAAOA,EAAK4/B,UAAUwS,EAAkBpyC,EAAKgJ,MAAOmpC,IAC7CzT,EAAO1+B,EAClB,CAGA,SAASyxC,EAAUn1C,GACf,MAAMoJ,EAAS,GACf,IAAK,IAAIxK,EAAI,EAAGA,EAAIoB,EAAEI,SAAUxB,EAAG,CAC/B,IAAIisB,EAAQoqB,EAAQj1C,EAAEoP,WAAWxQ,IACjC,GAAIisB,EAAQ,EACR,MAAM,IAAI4gB,EAAc,uCAAwCsJ,EAAUK,UAAW,CAAER,KAAM50C,EAAEpB,KAEnG,IAAK,IAAIyqB,EAAI,EAAGA,EAAIjgB,EAAOhJ,SAAUipB,EAAG,CACpC,MAAMvS,EAAgB,GAAZ1N,EAAOigB,GAAUwB,EAC3BzhB,EAAOigB,GAAS,IAAJvS,EACZ+T,EAAQ/T,GAAK,CACjB,CACI+T,GACAzhB,EAAOyB,KAAKggB,EAEpB,CACA,IAAK,MAAMorB,KAAMj2C,EAAG,CAChB,GAAW,MAAPi2C,EAIA,MAHA7sC,EAAOyB,KAAK,EAKpB,CAEA,OADAzB,EAAOyrC,UACAhT,EAAMC,KAAK14B,EACtB,CAEA,SAAS0sC,EAAkBpyC,EAAMmyC,GAC7B,MAAMhnC,GAAO,IAAA81B,aAAYJ,OAAO7gC,GAIhC,OAHImyC,GACAhnC,EAAK01B,OAAOsR,GAET,IAAI5U,WAAWpyB,EAAKw1B,SAASp4B,MAAM,EAAG,GACjD,CAEA,SAASypC,EAAgBhyC,GACrB,MAAMwyC,GAAS,IAAA5R,UAASC,OAAO7gC,GAAM2gC,SAC/B8R,GAAS,IAAA7R,UAASC,OAAO2R,GAAQ7R,SACvC,OAAO,IAAIpD,WAAWkV,EAAOlqC,MAAM,EAAG,GAC1C,CApHA6oC,EAAO7R,OAASA,EAiBhB6R,EAAOO,YAAcA,EAiBrBP,EAAOc,qBAAuBA,EA4B9Bd,EAAO1S,OAASA,EAMhB0S,EAAOiB,YAAcA,EAMrBjB,EAAOkB,qBAAuBA,CA2CjC,CAhKD,CAgKGlB,KAAWA,GAAS,CAAC,IAExB,MAAMnK,GAEF,WAAO7I,CAAKtiC,GACR,GAAI4hC,EAAa5hC,EAAOmrC,IACpB,OAAOnrC,EAEX,GAAqB,kBAAVA,GAAsBA,EAAM4I,MAAQ5I,EAAM42C,WACjD,OAAO,IAAIzL,GAAU/F,EAAQ9C,KAAKtiC,EAAM4I,MAAO,IAAIy5B,EAAMriC,EAAM42C,aAEnE,GAAqB,kBAAV52C,EACP,MAAM,IAAI8G,MAAM,sBAEpB,GAAI9G,EAAM2wC,WAAW,QAAS,CAC1B,MAAMkD,EAAQ7zC,EAAM4O,MAAM,KAC1B,GAAqB,IAAjBilC,EAAMjzC,OACN,MAAM,IAAIkG,MAAM,6BAEpB,MAAM8B,EAAOw8B,EAAQ9C,KAAKuR,EAAM,IAC1BjpB,EAAOhiB,IAASw8B,EAAQE,IAAM18B,IAASw8B,EAAQG,GAAK,QAAKjxB,EACzDpQ,EAAOoxC,GAAOc,qBAAqBvC,EAAM,GAAIjpB,EAAMhiB,GACzD,OAAO,IAAIuiC,GAAUviC,EAAM1E,EAC/B,CACK,GAAIlE,EAAMY,QAAU,GAAI,CAEzB,MAAMsD,EAAOoxC,GAAOc,qBAAqBp2C,EAAMyM,OAAO,KACtD,OAAO,IAAI0+B,GAAU/F,EAAQE,GAAIphC,EACrC,CAEI,MAAM,IAAI4C,MAAM,4BAExB,CAEA,cAAO+7B,CAAQC,GACX,MAAMl6B,EAAOw8B,EAAQ9C,KAAKQ,EAAQ0H,YAClC,GAAI5hC,GAAQw8B,EAAQI,GAAI,CACpB,MAAMqR,EAAW/T,EAAQ4L,cACzB5L,EAAQ6L,QAAQ,IAChB7L,EAAQ6L,QAAQ,GAChB7L,EAAQ6L,QAAQ7L,EAAQC,iBACxB,MAAMna,EAAMka,EAAQ4L,cAAgBmI,EACpC/T,EAAQ2L,YAAYoI,GACpB,MAAM3yC,EAAOm+B,EAAMC,KAAKQ,EAAQE,UAAUpa,IAC1C,OAAO,IAAIuiB,GAAU/F,EAAQI,GAAIthC,EACrC,CACA,OAAO,IAAIinC,GAAUviC,EAAM,IAAIy5B,EAAMS,EAAQE,UAAU,KAC3D,CAEA,WAAA74B,CAAYvB,EAAM1E,GACdN,KAAKgF,KAAOA,EACZhF,KAAKM,KAAOA,CAChB,CACA,MAAA68B,CAAO4C,GACH,MAAMmT,EAAW3L,GAAU7I,KAAKqB,GAChC,OAAO//B,KAAKgF,OAASkuC,EAASluC,MAAQhF,KAAKM,KAAK68B,OAAO+V,EAAS5yC,KACpE,CAKA,cAAA6yC,CAAenX,EAAS,OACpB,GAAIh8B,KAAKgF,OAASw8B,EAAQE,GACtB,MAAM,IAAIx+B,MAAM,2DAEpB,MAAO,GAAG84B,IAAS0V,GAAOkB,qBAAqB5yC,KAAKM,OACxD,CAEA,QAAAzD,GACI,MAAO,OAAOmD,KAAKgF,QAAQ0sC,GAAOkB,qBAAqB5yC,KAAKM,KAAMN,KAAKgF,OAC3E,CAEA,KAAA07B,CAAM5B,GACFA,EAAQ+H,UAAUrF,EAAQC,SAASzhC,KAAKgF,OACxC85B,EAAQ8B,WAAW5gC,KAAKM,KAAKgJ,MACjC,CAEA,MAAA2e,GACI,OAAOjoB,KAAKnD,UAChB,EAEJ0qC,GAAU1G,QAAU,aAEpB,MAAMuS,GAAS,CAAC,EAKhB,SAASC,GAASruC,GACd,IAAI04B,EAAK0V,GAAOpuC,GAChB,IAAK04B,EACD,GAAa,OAAT14B,EACA04B,EAAK0V,GAAOpuC,GAAQ,IAAI,EAAAsuC,GAAG,iBAE1B,IAAa,OAATtuC,EAIL,MAAM,IAAI9B,MAAM,uBAAuB8B,KAHvC04B,EAAK0V,GAAOpuC,GAAQ,IAAI,EAAAsuC,GAAG,OAI/B,CAEJ,OAAO5V,CACX,CAMA,SAAS6V,GAAQC,EAAWpwC,EAAS4B,GACjC,MAAMyuC,EAAQJ,GAASruC,GACjB0uC,EAAQF,EAAU,GAAK,GACvBn4C,EAAIm4C,EAAUhT,SAAS,EAAG,IAC1B5jC,EAAI42C,EAAUhT,SAAS,IACvBmT,EAAQF,EAAMG,cAAcxwC,EAAS,CAAE/H,IAAGuB,KAAK82C,GACrD,OAAO,IAAI7V,WAAW8V,EAAME,mBAChC,CAMA,SAASC,GAAON,EAAWpwC,EAAS2wC,EAAQ/uC,GACxC,MAAMyuC,EAAQJ,GAASruC,GACjB3J,EAAIm4C,EAAUhT,SAAS,EAAG,IAC1B5jC,EAAI42C,EAAUhT,SAAS,IAC7B,OAAOiT,EAAMK,OAAO1wC,EAAS,CAAE/H,IAAGuB,KAAKm3C,EAC3C,CAEA,MAAMvM,GAEF,WAAO9I,CAAKtiC,GACR,GAAI4hC,EAAa5hC,EAAOorC,IACpB,OAAOprC,EAEX,GAAqB,kBAAVA,GAAsBA,EAAMf,GAAKe,EAAMQ,EAAG,CACjD,MAAM0D,EAAO,IAAIu9B,WAAW,IAC5B,IAAI6V,EAAQt3C,EAAMs3C,MAClB,MAAM1uC,EAAOw8B,EAAQ9C,KAAKtiC,EAAM4I,MAOhC,OANI5I,EAAM4I,OAASw8B,EAAQE,IAAMtlC,EAAM4I,OAASw8B,EAAQG,KACpD+R,GAAS,IAEbpzC,EAAK,GAAKozC,EACVpzC,EAAK2/B,IAAI7jC,EAAMf,EAAG,GAClBiF,EAAK2/B,IAAI7jC,EAAMQ,EAAG,IACX,IAAI4qC,GAAUxiC,EAAM,IAAIy5B,EAAMn+B,GACzC,CACA,GAAqB,kBAAVlE,EACP,MAAM,IAAI8G,MAAM,qBAEpB,GAAI9G,EAAM2wC,WAAW,QAAS,CAC1B,MAAMkD,EAAQ7zC,EAAM4O,MAAM,KAC1B,GAAqB,IAAjBilC,EAAMjzC,OACN,MAAM,IAAIkG,MAAM,4BAEpB,MAAM8B,EAAOw8B,EAAQ9C,KAAKuR,EAAM,IAC1BjpB,EAAOhiB,IAASw8B,EAAQE,IAAM18B,IAASw8B,EAAQG,GAAK,QAAKjxB,EACzDpQ,EAAOoxC,GAAOc,qBAAqBvC,EAAM,GAAIjpB,EAAMhiB,GACzD,OAAO,IAAIwiC,GAAUxiC,EAAM1E,EAC/B,CAEI,MAAM,IAAI4C,MAAM,2BAExB,CAEA,cAAO+7B,CAAQC,GACX,MAAMl6B,EAAOw8B,EAAQ9C,KAAKQ,EAAQ0H,YAClC,GAAI5hC,IAASw8B,EAAQI,GAAI,CACrB,MAAMqR,EAAW/T,EAAQ4L,cACzB5L,EAAQ6L,QAAQ,IAChB7L,EAAQ6L,QAAQ7L,EAAQC,iBACxBD,EAAQ6L,QAAQ7L,EAAQC,iBACxB,MAAMna,EAAMka,EAAQ4L,cAAgBmI,EACpC/T,EAAQ2L,YAAYoI,GACpB,MAAM3yC,EAAOm+B,EAAMC,KAAKQ,EAAQE,UAAUpa,IAC1C,OAAO,IAAIwiB,GAAUhG,EAAQI,GAAIthC,EACrC,CACA,OAAO,IAAIknC,GAAUxiC,EAAM,IAAIy5B,EAAMS,EAAQE,UAAU,KAC3D,CAEA,WAAA74B,CAAYvB,EAAM1E,GACdN,KAAKgF,KAAOA,EACZhF,KAAKM,KAAOA,CAChB,CACA,MAAA68B,CAAO4C,GACH,MAAMiU,EAAWxM,GAAU9I,KAAKqB,GAChC,OAAO//B,KAAKgF,OAASgvC,EAAShvC,MAAQhF,KAAKM,KAAK68B,OAAO6W,EAAS1zC,KACpE,CAEA,aAAA2zC,CAAchT,GACVA,EAASD,EAAYtC,KAAKuC,GAC1B,MAAM+R,EAAaO,GAAQvzC,KAAKM,KAAKgJ,MAAO23B,EAAO33B,MAAOtJ,KAAKgF,MAC/D,OAAOuiC,GAAU7I,KAAK,CAAEsU,aAAYhuC,KAAMhF,KAAKgF,MACnD,CAEA,cAAAkvC,CAAe9wC,GACX,OAAOpD,KAAKi0C,cAAcjT,EAAYv1B,KAAKrI,GAC/C,CAEA,YAAA+wC,CAAalT,EAAQmT,GAEjB,OADAnT,EAASD,EAAYtC,KAAKuC,GACnB6S,GAAO9zC,KAAKM,KAAKgJ,MAAO23B,EAAO33B,MAAO8qC,EAAU9zC,KAAKgJ,MAAOtJ,KAAKgF,KAC5E,CAEA,aAAAqvC,CAAcjxC,EAASgxC,GACnB,OAAOp0C,KAAKm0C,aAAanT,EAAYv1B,KAAKrI,GAAUgxC,EACxD,CAEA,QAAAv3C,GACI,MAAO,OAAOmD,KAAKgF,QAAQ0sC,GAAOkB,qBAAqB5yC,KAAKM,KAAMN,KAAKgF,OAC3E,CAEA,KAAA07B,CAAM5B,GACFA,EAAQ+H,UAAUrF,EAAQC,SAASzhC,KAAKgF,OACxC85B,EAAQ8B,WAAW5gC,KAAKM,KAAKgJ,MACjC,CAEA,MAAA2e,GACI,OAAOjoB,KAAKnD,UAChB,EAQJ,SAASy3C,GAAUC,EAASvvC,GACxB,MAAMyuC,EAAQJ,GAASruC,GACjBkjC,EAAMuL,EAAMe,eAAeD,GAC3BZ,EAAQzL,EAAIoM,YAClB,OAAO,IAAIzW,WAAW8V,EAAME,mBAChC,CAMA,SAASY,GAAaF,EAASR,EAAQ/uC,GACnC,MAAMyuC,EAAQJ,GAASruC,GACjB0vC,EAAOjB,EAAMe,eAAeD,GAC5BI,EAAMlB,EAAMmB,cAAcb,GAAQO,YACxC,OAAOI,EAAKG,OAAOF,GAAKxsB,YAAY0V,WAAY,KACpD,CAMA,SAASxgB,GAAKy3B,EAAQ1xC,EAAS4B,GAC3B,MAAMyuC,EAAQJ,GAASruC,GACjBkjC,EAAMuL,EAAMe,eAAeM,GACjC,IAAIC,EACA15C,EACAuB,EACJ,GAAa,OAAToI,EAAe,CACf,IAAIgwC,EAAU,EACd,GACID,EAAM7M,EAAI7qB,KAAKja,EAAS,CAAE6xC,WAAW,EAAMC,KAAM,CAACF,OAClD35C,EAAI05C,EAAI15C,EAAE8sB,YAAY0V,WAAY,KAAM,IACxCjhC,EAAIm4C,EAAIn4C,EAAEurB,YAAY0V,WAAY,KAAM,WAClCsX,GAAY95C,EAAGuB,GAC7B,MAEIm4C,EAAM7M,EAAI7qB,KAAKja,EAAS,CAAE6xC,WAAW,IACrC55C,EAAI05C,EAAI15C,EAAE8sB,YAAY0V,WAAY,KAAM,IACxCjhC,EAAIm4C,EAAIn4C,EAAEurB,YAAY0V,WAAY,KAAM,IAE5C,MAAO,CAAE74B,OAAM3J,IAAGuB,IAAG82C,MAAOqB,EAAIK,eAAiB,EACrD,CAOA,SAASD,GAAY95C,EAAGuB,GACpB,QAAiB,IAAPvB,EAAE,OACG,IAATA,EAAE,MAAqB,IAAPA,EAAE,QACX,IAAPuB,EAAE,OACO,IAATA,EAAE,MAAqB,IAAPA,EAAE,IAC5B,CAMA,SAASy4C,GAASrwC,GACd,MAAMyuC,EAAQJ,GAASruC,GACjBuvC,EAAUd,EAAM6B,aAAaC,aACnC,OAAOhB,EAAQpsB,YAAY0V,WAAY,KAAM,GACjD,CAtEA2J,GAAU3G,QAAU,YAwEpB,MAAM2U,GAEF,WAAO9W,CAAKtiC,GACR,OAAI4hC,EAAa5hC,EAAOo5C,IACbp5C,EAGA4D,KAAK4+B,WAAWxiC,EAE/B,CAKA,iBAAOwiC,CAAWpa,EAAQixB,GAAsB,GAC5C,IACI,MAAM,KAAEzwC,EAAI,KAAE1E,GAASo1C,GAAUlxB,GACjC,OAAO,IAAIxkB,KAAKgF,EAAM1E,EAC1B,CACA,MAAOoH,GAEH,GADAA,EAAMtE,QAAU,wBAAwBsE,EAAMtE,WAC1CqyC,GACAzX,EAAat2B,EAAOgqC,GAAOrJ,gBAC3B3gC,EAAMkD,OAAS8mC,GAAOC,UAAUY,WAAY,CAC5C,MAAMvtC,EAAOwf,EAAOuoB,WAAW,UAAYvL,EAAQG,GAAKH,EAAQE,GAC1DphC,EAAO,IAAIm+B,EAAM/2B,EAAMkqC,KAAKtxC,MAKlC,OAJoB,KAAhBA,EAAKtD,QACLsD,EAAKigC,YAETjgC,EAAK6/B,QAAQ,IAAI,GACV,IAAIngC,KAAKgF,EAAM1E,EAC1B,CACA,MAAMoH,CACV,CACJ,CAKA,eAAO2tC,CAASrwC,GACZ,OAAO,IAAIwwC,GAAWhU,EAAQ9C,KAAK15B,GAAO,IAAIy5B,EAAM4W,GAASrwC,IACjE,CAEA,WAAAuB,CAAYvB,EAAM1E,GACd,IAAK0E,IAASw8B,EAAQE,IAAM18B,IAASw8B,EAAQG,KAAuB,KAAhBrhC,EAAKtD,OACrD,MAAM,IAAIkG,MAAM,8BAEpBlD,KAAKgF,KAAOA,EACZhF,KAAKM,KAAOA,CAChB,CAKA,UAAAq1C,CAAW1U,GAEP,OADAA,EAASD,EAAYtC,KAAKuC,GACnBuG,GAAU9I,KAAKrhB,GAAKrd,KAAKM,KAAKgJ,MAAO23B,EAAO33B,MAAOtJ,KAAKgF,MACnE,CAKA,WAAA4wC,CAAYxyC,GACR,OAAOpD,KAAK21C,WAAW3U,EAAYv1B,KAAKrI,GAC5C,CAKA,YAAAqxC,CAAaL,GACT,MAAMyB,EAASpB,GAAaz0C,KAAKM,KAAKgJ,MAAO8qC,EAAU9zC,KAAKgJ,MAAOtJ,KAAKgF,MACxE,OAAOo8B,EAAY31B,KAAKoqC,EAC5B,CAKA,QAAAC,GACI,MAAM9C,EAAasB,GAAUt0C,KAAKM,KAAKgJ,MAAOtJ,KAAKgF,MACnD,OAAOuiC,GAAU7I,KAAK,CAAEsU,aAAYhuC,KAAMhF,KAAKgF,MACnD,CAKA,KAAA+wC,GACI,GAAI/1C,KAAKgF,OAASw8B,EAAQE,GACtB,MAAM,IAAIx+B,MAAM,yCAEpB,OAAOwuC,GAAOiB,YAAYlU,EAAMC,KAAK,CAAC,MAAOwB,UAAUlgC,KAAKM,MAChE,CAIA,QAAAzD,GACI,MAAO,OAAOmD,KAAKgF,QAAQ0sC,GAAOkB,qBAAqB5yC,KAAKM,KAAMN,KAAKgF,OAC3E,CACA,MAAAijB,GACI,OAAOjoB,KAAKnD,UAChB,EAGJ,SAAS64C,GAAUt5C,GACf,MAAM4I,SAAc5I,EACpB,GAAa,WAAT4I,EACA,MAAM,IAAI9B,MAAM,wBAAwB8B,KAE5C,GAAI5I,EAAM2wC,WAAW,QAAS,CAE1B,MAAMkD,EAAQ7zC,EAAM4O,MAAM,KAC1B,GAAqB,IAAjBilC,EAAMjzC,OACN,MAAM,IAAIkG,MAAM,sBAEpB,MAAM8B,EAAOw8B,EAAQ9C,KAAKuR,EAAM,IAChC,IAAIjpB,EACJ,OAAQhiB,GACJ,KAAKw8B,EAAQE,GACb,KAAKF,EAAQG,GACT3a,EAAO,GACP,MAER,MAAM1mB,EAAOoxC,GAAOc,qBAAqBvC,EAAM,GAAIjpB,EAAMhiB,GACzD,MAAO,CAAEA,OAAM1E,OACnB,CACK,CAED,MAAM0E,EAAOw8B,EAAQE,GACfphC,EAAOoxC,GAAOO,YAAY71C,GAChC,GAAsB,MAAlBkE,EAAKgJ,MAAM,GACX,MAAM,IAAIpG,MAAM,eAEpB,MAAO,CAAE8B,OAAM1E,KAAMA,EAAKmgC,gBAC9B,CACJ,CAEA,IAAIuV,GAEJ,IAAIC,GAAkBD,GAAoB,cAA8B5N,GAEpE,WAAO1J,CAAKtiC,GACR,GAAqB,kBAAVA,EAAoB,CAC3B,MAAM6zC,EAAQ7zC,EAAM4O,MAAM,KAC1B,GAAqB,IAAjBilC,EAAMjzC,QAAgBizC,EAAM,GAAGjzC,OAAS,GAAKizC,EAAM,GAAGjzC,OAAS,EAC/D,MAAM,IAAIkG,MAAM,iFAEpB9G,EAAQ,CAAE85C,MAAOjG,EAAM,GAAIkG,WAAYlG,EAAM,GACjD,CACA,OAAO9xB,MAAMugB,KAAKtiC,EACtB,CAEA,MAAA+gC,CAAO4C,GACH,MAAMqW,EAAYJ,GAAkBtX,KAAKqB,GACzC,OAAO//B,KAAKk2C,MAAM/Y,OAAOiZ,EAAUF,QAAUl2C,KAAKm2C,WAAWhZ,OAAOiZ,EAAUD,WAClF,CACA,QAAAt5C,GACI,MAAO,GAAGmD,KAAKk2C,SAASl2C,KAAKm2C,YACjC,GAYJ,IAAIE,IAVJ,IAAAC,YAAW,CACPlO,GAAOxC,MAAM,SACdqQ,GAAgBx5C,UAAW,aAAS,IACvC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdqQ,GAAgBx5C,UAAW,kBAAc,GAC5Cw5C,GAAkBD,IAAoB,IAAAM,YAAW,CAC7ClO,GAAOpjC,KAAK,qBACbixC,IAGH,IAAIr+B,GAASy+B,GAAW,cAAqBjO,GACzC,WAAO1J,CAAKT,EAAQkI,GAChB,MAAM7lC,EAAO29B,EAAO39B,KACpB,IAAKm+B,EAAMe,QAAQl/B,GAAO,CACtB,IAAI0E,EACJ,GAAImhC,EACAnhC,EAAOohC,GAAI1H,KAAKyH,GAAKuJ,cAAczR,EAAOnyB,WAEzC,IAAKxL,EAAKiG,kBAA4CmK,IAA7BpQ,EAAKiG,YAAYs6B,QAC3C,MAAM,IAAI39B,MAAM,wEAEpB+6B,EAAS,IACFA,EACH39B,KAAM8qC,GAAU,CAAEnN,OAAQ39B,EAAM0E,OAAMmhC,QAE9C,CACA,OAAOhoB,MAAMugB,KAAKT,EACtB,CAEA,MAAAd,CAAO4C,GACH,MAAMwW,EAAcF,GAAS3X,KAAKqB,GAClC,OAAQ//B,KAAKkiB,QAAQib,OAAOoZ,EAAYr0B,UACpCliB,KAAK8L,KAAKqxB,OAAOoZ,EAAYzqC,OAC7BoxB,EAAqBl9B,KAAKw2C,cAAeD,EAAYC,gBACrDx2C,KAAKM,KAAK68B,OAAOoZ,EAAYj2C,KACrC,CACA,UAAAm2C,CAAWC,GACP,GAAyB,kBAAdA,GAA0BA,EAAU7V,QAC3C,OAAO4H,EAAU,CACbnoC,KAAMN,KAAKM,KACX0E,KAAM0xC,IAGT,CACD,MAAMvQ,EAAMC,GAAI1H,KAAKgY,GACf1xC,EAAOmhC,EAAIuJ,cAAc1vC,KAAK8L,MACpC,IAAK9G,EACD,MAAM,IAAI9B,MAAM,UAAUlD,KAAK8L,uCAEnC,OAAO28B,EAAU,CAAEnoC,KAAMN,KAAKM,KAAM0E,OAAMmhC,OAC9C,CACJ,GAkBJ,IAAIwQ,IAhBJ,IAAAL,YAAW,CACPlO,GAAOxC,MAAM,SACdhuB,GAAOnb,UAAW,eAAW,IAChC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdhuB,GAAOnb,UAAW,YAAQ,IAC7B,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMqQ,GAAiB,CAAE3sC,OAAO,KACxCsO,GAAOnb,UAAW,qBAAiB,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdhuB,GAAOnb,UAAW,YAAQ,GAC7Bmb,GAASy+B,IAAW,IAAAC,YAAW,CAC3BlO,GAAOpjC,KAAK,WACb4S,IAGH,IAAIg/B,GAAuB,cAAmCxO,MAE9D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdgR,GAAqBn6C,UAAW,YAAQ,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdgR,GAAqBn6C,UAAW,YAAQ,GAC3Cm6C,IAAuB,IAAAN,YAAW,CAC9BlO,GAAOpjC,KAAK,0BACb4xC,IACH,IAAIC,GAAoB,cAAgCzO,GACpD,WAAO1J,CAAKT,GACR,OAAO9f,MAAMugB,KAAK,CACdoY,oBAAqB,EACrBC,iBAAkB,EAClBC,UAAW,KACR/Y,GAEX,IAEJ,IAAAqY,YAAW,CACPlO,GAAOxC,MAAM,mBACdiR,GAAkBp6C,UAAW,kBAAc,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiR,GAAkBp6C,UAAW,qBAAiB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiR,GAAkBp6C,UAAW,wBAAoB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,cACdiR,GAAkBp6C,UAAW,2BAAuB,IACvD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdiR,GAAkBp6C,UAAW,wBAAoB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,cACdiR,GAAkBp6C,UAAW,iBAAa,GAC7Co6C,IAAoB,IAAAP,YAAW,CAC3BlO,GAAOpjC,KAAK,uBACb6xC,IACH,IAAII,GAAcN,GAAgB,cAA0BE,GACxD,WAAOnY,CAAKT,EAAQiZ,GAChB,MAAMC,EAAU9F,GACP6F,EAGIj3C,MAAMhD,QAAQi6C,GACZA,EACFl8B,QAAQmrB,GAAQmB,GAAK5I,KAAKyH,EAAIkL,UAAUlU,OAAOkU,KAC/CpjC,KAAI,EAAGk4B,SAAUA,IAAK,GAGpB+Q,OARP,EAWFE,EAAiB79B,GAAW3B,GAAO8mB,KAAKnlB,EAAQ49B,EAAO59B,EAAO2I,UAC9DlJ,GAAWilB,EAAOjlB,SAAW,IAAI/K,IAAImpC,GACrCC,GAAwBpZ,EAAOoZ,sBAAwB,IAAIppC,IAAImpC,GAC/D75B,EAAc,CAChB+5B,uBAAwB,MACrBrZ,EACHoZ,uBACAr+B,WAEJ,OAAOmF,MAAMugB,KAAKnhB,EACtB,CAEA,MAAA4f,CAAO4C,GACH,MAAMwX,EAAKZ,GAAcjY,KAAKqB,GAC9B,OAAO//B,KAAKqY,GAAG8kB,OAAOoa,EAAGl/B,GAC7B,CACA,MAAIA,GACA,OAAO2oB,EAAYv1B,KAAK2/B,GAAU,CAAEnN,OAAQj+B,OAChD,CACA,aAAAw3C,CAAc50B,GACV,MAAMtiB,EAAON,KAAKy3C,YAAY70B,GAC9B,OAAOoe,EAAYv1B,KAAKnL,EAC5B,CACA,WAAAm3C,CAAY70B,GACR,IAAItiB,EAAOm+B,EAAMC,KAAKsC,EAAYtC,KAAK9b,GAAStZ,OAGhD,OAFAhJ,EAAOA,EAAK4/B,UAAUkL,GAAU,CAAEnN,OAAQj+B,QAC1CM,EAAOA,EAAK4/B,UAAU,IAAIrC,WAAW,KAC9Bv9B,CACX,IAEJ,IAAAg2C,YAAW,CACPlO,GAAOxC,MAAMhuB,GAAQ,CAAEtO,OAAO,KAC/B2tC,GAAYx6C,UAAW,4BAAwB,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMhuB,GAAQ,CAAEtO,OAAO,KAC/B2tC,GAAYx6C,UAAW,eAAW,IACrC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMgR,GAAsB,CAAEttC,OAAO,KAC7C2tC,GAAYx6C,UAAW,8BAA0B,GACpDw6C,GAAcN,IAAgB,IAAAL,YAAW,CACrClO,GAAOpjC,KAAK,gBACbiyC,IACH,IAAIS,GAAoB,cAAgCT,GAEpD,eAAI15B,GACA,OAAO05B,GAAYvY,KAAK,IACjB1+B,KACH23C,gBAAYjnC,EACZknC,uBAAmBlnC,GAE3B,CACA,MAAI2H,GACA,OAAOrY,KAAKud,YAAYlF,EAC5B,CACA,WAAOqmB,CAAKT,GACR,OAAO9f,MAAMugB,KAAK,CACdiZ,WAAY,GACZC,kBAAmB,MAChB3Z,GAEX,IAEJ,IAAAqY,YAAW,CACPlO,GAAOxC,MAAM,gBACd8R,GAAkBj7C,UAAW,kBAAc,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,YACd8R,GAAkBj7C,UAAW,yBAAqB,GACrDi7C,IAAoB,IAAApB,YAAW,CAC3BlO,GAAOpjC,KAAK,uBACb0yC,IACH,IAAIG,GAAoB,cAAgCzP,GACpD,WAAO1J,CAAKT,GACR,OAAO9f,MAAMugB,KAAK,CACdiZ,WAAY,GACZG,yBAA0B,GAC1BC,YAAa,KACV9Z,GAEX,CACA,iBAAO+Z,CAAWC,GACd,MAAMV,EAAKN,GAAYvY,KAAKuZ,GAC5B,OAAOj4C,KAAK0+B,KAAK,CACbiZ,WAAYM,EAAON,WACnBG,yBAA0B1M,GAAU,CAChCnN,OAAQga,EAAOL,kBACf5yC,KAAM,YAEVkzC,WAAY9M,GAAU,CAAEnN,OAAQsZ,KAExC,CACA,cAAAY,GACI,GAAiC,IAA7B5V,OAAOviC,KAAK+3C,aACZ,MAAM,IAAI70C,MAAM,6CAEpB,OAAOulC,EAAU,CAAEnoC,KAAMN,KAAKk4C,WAAYlzC,KAAMiyC,IACpD,CACA,oBAAAmB,GACI,MAAM76B,EAAcvd,KAAKm4C,iBAEzB,OAAOT,GAAkBhZ,KAAK,IACvBnhB,EACHo6B,WAAY33C,KAAK23C,YAEzB,IAEJ,IAAArB,YAAW,CACPlO,GAAOxC,MAAM,gBACdiS,GAAkBp7C,UAAW,kBAAc,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdiS,GAAkBp7C,UAAW,mBAAe,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdiS,GAAkBp7C,UAAW,gCAA4B,IAC5D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdiS,GAAkBp7C,UAAW,kBAAc,GAC9Co7C,IAAoB,IAAAvB,YAAW,CAC3BlO,GAAOpjC,KAAK,uBACb6yC,IACH,IAAIQ,GAAqB,cAAiCjQ,KAe1D,IAAIkQ,IAbJ,IAAAhC,YAAW,CACPlO,GAAOxC,MAAM,WACdyS,GAAmB57C,UAAW,cAAU,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdyS,GAAmB57C,UAAW,oBAAgB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdyS,GAAmB57C,UAAW,uBAAmB,GACpD47C,IAAqB,IAAA/B,YAAW,CAC5BlO,GAAOpjC,KAAK,wBACbqzC,IAGH,IAAIE,GAAS,cAAqBxU,IAElCwU,IAAS,IAAAjC,YAAW,CAChBhK,GAAU,gBACXiM,IACH,IAAIC,GAAY,cAAwBpQ,MAExC,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM2B,KACdiR,GAAU/7C,UAAW,WAAO,IAC/B,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM2S,KACdC,GAAU/7C,UAAW,cAAU,GAClC+7C,IAAY,IAAAlC,YAAW,CACnBlO,GAAOpjC,KAAK,eACbwzC,IACH,IAAIC,GAAwB,cAAoCrQ,MAEhE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAMqQ,KACdwC,GAAsBh8C,UAAW,kBAAc,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM2S,KACdE,GAAsBh8C,UAAW,cAAU,GAC9Cg8C,IAAwB,IAAAnC,YAAW,CAC/BlO,GAAOpjC,KAAK,4BACbyzC,IACH,IAAIC,GAAa,cAAyBtQ,MAE1C,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM5B,IACd0U,GAAWj8C,UAAW,gBAAY,IACrC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM2S,KACdG,GAAWj8C,UAAW,cAAU,GACnCi8C,IAAa,IAAApC,YAAW,CACpBlO,GAAOpjC,KAAK,gBACb0zC,IACH,IAAIC,GAAYL,GAAc,cAAwBlQ,GAClD,WAAO1J,CAAKtiC,GACR,GAAI4hC,EAAa5hC,EAAOk8C,IACpB,OAAOl8C,EAEX,MAAMshC,EAAKvf,MAAMugB,KAAK,CAClBuJ,KAAM,GACN2Q,SAAU,GACVC,MAAO,MACJz8C,IAGP,OADAshC,EAAGob,OACIpb,CACX,CAEA,iBAAIqb,GACA,OAAO/4C,KAAK64C,MAAM/kC,QAAO,CAACuP,EAAK21B,IAAS31B,EAAM21B,EAAKC,OAAOlxB,YAAY,EAC1E,CAEA,gBAAImxB,GACA,OAAOl5C,KAAKm5C,UAAUpxB,WAAa/nB,KAAK+4C,aAC5C,CAEA,SAAAK,CAAUhF,GACN,MAAM6E,EAASj5C,KAAKioC,KAAKE,MAAK,EAAGD,SAAUA,EAAI/K,OAAOiX,KACtD,OAAO6E,EAASA,EAAOA,OAAOlxB,WAAa,CAC/C,CAOA,aAAAsxB,CAAcjF,EAAWkF,GAAiB,GACtC,MAAMH,EAAYG,EAAiB,EAAIt5C,KAAKk5C,aACtCD,EAASj5C,KAAKo5C,UAAUhF,GAC9B,OAAO6E,GAAUE,CACrB,CAIA,IAAAL,GAEI94C,KAAKioC,KAAK6Q,MAAK,CAAC/7C,EAAGmJ,IAAM6F,OAAOhP,EAAEmrC,KAAKqR,cAAcxtC,OAAO7F,EAAEgiC,QAC9DloC,KAAK44C,SAASE,MAAK,CAAC/7C,EAAGmJ,IAAM6F,OAAOhP,EAAEo5C,YAAYoD,cAAcxtC,OAAO7F,EAAEiwC,eACzEn2C,KAAK64C,MAAMC,MAAK,CAAC/7C,EAAGmJ,IAAM6F,OAAOhP,EAAEy8C,UAAUD,cAAcxtC,OAAO7F,EAAEszC,YACxE,GAkBJ,IAAIC,IAhBJ,IAAAnD,YAAW,CACPlO,GAAOxC,MAAM5B,IACd2U,GAAUl8C,UAAW,iBAAa,IACrC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM4S,GAAW,CAAElvC,OAAO,KAClCqvC,GAAUl8C,UAAW,YAAQ,IAChC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM6S,GAAuB,CAAEnvC,OAAO,KAC9CqvC,GAAUl8C,UAAW,gBAAY,IACpC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM8S,GAAY,CAAEpvC,OAAO,KACnCqvC,GAAUl8C,UAAW,aAAS,GACjCk8C,GAAYL,IAAc,IAAAhC,YAAW,CACjClO,GAAOpjC,KAAK,cACb2zC,IAGH,SAAWc,GAIP,SAASC,EAAW10C,GAChB,OAAO+/B,EAAc//B,GAAMmhC,GAC/B,CAGA,SAAS9mC,EAAU4+B,GACf,OAAO7+B,KAAKC,UAAU4+B,EAC1B,CAGA,SAAS0b,EAAU1b,GACf,MAAMoO,EAAQvrC,IACV,cAAeA,GACX,IAAK,UACL,IAAK,SACL,IAAK,SACD,OAAOA,EACX,IAAK,SAAU,CACX,GAAU,OAANA,EACA,OAAOA,EAEX,GAAwB,oBAAbA,EAAEmnB,OACT,OAAOokB,EAAKvrC,EAAEmnB,UAElB,GAAIhoB,MAAMhD,QAAQ6D,GACd,OAAOA,EAAEmN,IAAIo+B,GAEjB,MAAM3O,EAAK,CAAC,EACZ,IAAK,MAAMwK,KAAOpsC,OAAOmsC,KAAKnnC,GAC1B48B,EAAGwK,GAAOmE,EAAKvrC,EAAEonC,IAErB,OAAOxK,CACX,EACJ,EAEJ,OAAO2O,EAAKpO,EAChB,CAvCAwb,EAAWza,OAASoM,GACpBqO,EAAW5Z,OAAS4I,EAKpBgR,EAAWC,WAAaA,EAKxBD,EAAWp6C,UAAYA,EA6BvBo6C,EAAWE,UAAYA,CAC1B,CA1CD,CA0CGF,KAAeA,GAAa,CAAC,IAGhC,MAAMG,GACF,WAAArzC,CAAY7F,EAAKke,EAAU,CAAC,GAKxB,GAJAle,EAAMA,EAAI3B,OACN2B,EAAIsH,SAAS,OACbtH,EAAMA,EAAImI,MAAM,GAAI,IACxB7I,KAAKU,IAAMA,EACNke,EAAQi7B,MAYT75C,KAAK65C,MAAQj7B,EAAQi7B,WAXrB,GAAsB,qBAAXp7C,QAA0BA,OAAOo7C,MACxC75C,KAAK65C,MAAQp7C,OAAOo7C,MAAMt9C,KAAKkC,YAE9B,IAAsB,qBAAX,EAAA0H,IAA0B,EAAAA,EAAO0zC,MAI7C,MAAM,IAAI32C,MAAM,iBAHhBlD,KAAK65C,MAAQ,EAAA1zC,EAAO0zC,MAAMt9C,KAAK,EAAA4J,EAInC,CAKR,CACA,UAAMzK,CAAK6sC,EAAMlnC,GACb,MAAMX,EAAMV,KAAKU,IAAM6nC,EACjB1mC,QAAiB7B,KAAK65C,MAAMn5C,EAAK,CACnCS,OAAQ,OACR2tC,UAAiBp+B,IAAXrP,EAAuBjC,KAAKC,UAAUgC,QAAUqP,IAEpD8P,QAAa3e,EAAS2e,OAC5B,IAAIipB,EACJ,IACIA,EAAOrqC,KAAKG,MAAMihB,EACtB,CACA,MAEA,CACA,MAAM3gB,EAAU,CAAC,EACjB,IAAK,MAAOqoC,EAAK9rC,KAAUyF,EAAShC,QAAQi6C,UACxCj6C,EAAQqoC,GAAO9rC,EAEnB,MAAO,CAAEyD,UAAS2B,OAAQK,EAASL,OAAQioC,OAAMjpB,OACrD,EAGJ,IAAIu5B,GAAsB,cAAkC3R,MAE5D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACdmU,GAAoBt9C,UAAW,eAAW,IAC7C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdmU,GAAoBt9C,UAAW,cAAU,GAC5Cs9C,IAAsB,IAAAzD,YAAW,CAC7BlO,GAAOpjC,KAAK,0BACb+0C,IACH,IAAIC,GAAoB,cAAgC5R,MAExD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACdoU,GAAkBv9C,UAAW,iBAAa,IAC7C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdoU,GAAkBv9C,UAAW,cAAU,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM+S,KACdqB,GAAkBv9C,UAAW,qBAAiB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMmU,GAAqB,CAAEzU,UAAU,EAAMh8B,OAAO,KAC5D0wC,GAAkBv9C,UAAW,sBAAkB,GAClDu9C,IAAoB,IAAA1D,YAAW,CAC3BlO,GAAOpjC,KAAK,uBACbg1C,IACH,IAAIC,GAAuB,cAAmC7R,MAE9D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,UACdqU,GAAqBx9C,UAAW,YAAQ,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdqU,GAAqBx9C,UAAW,iBAAa,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdqU,GAAqBx9C,UAAW,WAAO,GAC1Cw9C,IAAuB,IAAA3D,YAAW,CAC9BlO,GAAOpjC,KAAK,2BACbi1C,IACH,IAAIC,GAAwB,cAAoC9R,MAEhE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACdsU,GAAsBz9C,UAAW,aAAS,IAC7C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdsU,GAAsBz9C,UAAW,kBAAc,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdsU,GAAsBz9C,UAAW,kBAAc,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdsU,GAAsBz9C,UAAW,iBAAa,GACjDy9C,IAAwB,IAAA5D,YAAW,CAC/BlO,GAAOpjC,KAAK,4BACbk1C,IACH,IAAIC,GAAgC,cAA4C/R,MAEhF,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACduU,GAA8B19C,UAAW,YAAQ,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACduU,GAA8B19C,UAAW,UAAM,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACduU,GAA8B19C,UAAW,kBAAc,IAC1D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACduU,GAA8B19C,UAAW,kBAAc,GAC1D09C,IAAgC,IAAA7D,YAAW,CACvClO,GAAOpjC,KAAK,qCACbm1C,IACH,IAAIC,GAAuB,cAAmChS,MAE9D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACdwU,GAAqB39C,UAAW,aAAS,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACdwU,GAAqB39C,UAAW,oBAAgB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdwU,GAAqB39C,UAAW,kBAAc,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdwU,GAAqB39C,UAAW,kBAAc,GACjD29C,IAAuB,IAAA9D,YAAW,CAC9BlO,GAAOpjC,KAAK,2BACbo1C,IACH,IAAIC,GAAmB,cAA+BjS,MAEtD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACdyU,GAAiB59C,UAAW,aAAS,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdyU,GAAiB59C,UAAW,aAAS,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,OAAQ,CAAEt8B,OAAO,KAC/B+wC,GAAiB59C,UAAW,iBAAa,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QAAS,CAAEN,UAAU,KACnC+U,GAAiB59C,UAAW,cAAU,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdyU,GAAiB59C,UAAW,gBAAY,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SAAU,CAAEN,UAAU,KACpC+U,GAAiB59C,UAAW,cAAU,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdyU,GAAiB59C,UAAW,iBAAa,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdyU,GAAiB59C,UAAW,iBAAa,GAC5C49C,IAAmB,IAAA/D,YAAW,CAC1BlO,GAAOpjC,KAAK,uBACbq1C,IACH,IAAIC,GAA2B,cAAuClS,MAEtE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,aAAc,CAAEN,UAAU,KACxCgV,GAAyB79C,UAAW,WAAO,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QAAS,CAAEN,UAAU,KACnCgV,GAAyB79C,UAAW,aAAS,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,aAAc,CAAEN,UAAU,KACxCgV,GAAyB79C,UAAW,aAAS,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QAAS,CAAEN,UAAU,KACnCgV,GAAyB79C,UAAW,cAAU,GACjD69C,IAA2B,IAAAhE,YAAW,CAClClO,GAAOpjC,KAAK,gCACbs1C,IACH,IAAIC,GAAiB,cAA6BnS,MAElD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACd2U,GAAe99C,UAAW,eAAW,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACd2U,GAAe99C,UAAW,aAAS,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACd2U,GAAe99C,UAAW,kBAAc,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACd2U,GAAe99C,UAAW,mBAAe,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACd2U,GAAe99C,UAAW,mBAAe,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM0U,GAA0B,CAAEhxC,OAAO,KACjDixC,GAAe99C,UAAW,sBAAkB,GAC/C89C,IAAiB,IAAAjE,YAAW,CACxBlO,GAAOpjC,KAAK,qBACbu1C,IACH,IAAIC,GAAgB,cAA4BpS,GAC5C,aAAAqS,CAActE,GACV,MAAMrqC,EAAOw7B,GAAK5I,KAAKyX,GACjB9pC,EAAQrM,KAAK06C,YAAYvS,MAAMxrC,GAAMA,EAAEg+C,UAAUxd,OAAOrxB,KAC9D,IAAKO,EACD,MAAM,IAAInJ,MAAM,sBAAsB4I,gBAAmB9L,KAAK46C,iBAElE,OAAOvuC,CACX,IAEJ,IAAAiqC,YAAW,CACPlO,GAAOxC,MAAM,SACd4U,GAAc/9C,UAAW,oBAAgB,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd4U,GAAc/9C,UAAW,sBAAkB,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACd4U,GAAc/9C,UAAW,uBAAmB,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACd4U,GAAc/9C,UAAW,kBAAc,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACd4U,GAAc/9C,UAAW,wBAAoB,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACd4U,GAAc/9C,UAAW,eAAW,IACvC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd4U,GAAc/9C,UAAW,2BAAuB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACd4U,GAAc/9C,UAAW,iBAAa,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACd4U,GAAc/9C,UAAW,kBAAc,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACd4U,GAAc/9C,UAAW,kBAAc,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMqU,KACdO,GAAc/9C,UAAW,iBAAa,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMqU,KACdO,GAAc/9C,UAAW,iBAAa,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd4U,GAAc/9C,UAAW,iBAAa,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMoU,GAAmB,CAAE1wC,OAAO,KAC1CkxC,GAAc/9C,UAAW,mBAAe,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMsU,GAAuB,CAAE5U,UAAU,KACjDkV,GAAc/9C,UAAW,uBAAmB,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMuU,GAA+B,CAAE7U,UAAU,KACzDkV,GAAc/9C,UAAW,gCAA4B,IACxD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMwU,GAAsB,CAAE9U,UAAU,KAChDkV,GAAc/9C,UAAW,sBAAkB,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMyU,GAAkB,CAAE/U,UAAU,KAC5CkV,GAAc/9C,UAAW,kBAAc,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM2U,GAAgB,CAAEjV,UAAU,KAC1CkV,GAAc/9C,UAAW,gBAAY,GACxC+9C,IAAgB,IAAAlE,YAAW,CACvBlO,GAAOpjC,KAAK,mBACbw1C,IACH,IAAIK,GAA0B,cAAsCzS,MAEpE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM0B,KACduT,GAAwBp+C,UAAW,oBAAgB,IACtD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM0B,KACduT,GAAwBp+C,UAAW,uBAAmB,IACzD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM2B,KACdsT,GAAwBp+C,UAAW,uBAAmB,IACzD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM2S,KACdsC,GAAwBp+C,UAAW,cAAU,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM5B,IACd6W,GAAwBp+C,UAAW,iBAAa,GACnDo+C,IAA0B,IAAAvE,YAAW,CACjClO,GAAOpjC,KAAK,+BACb61C,IACH,IAAIC,GAAwB,cAAoC1S,MAEhE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAMiV,GAAyB,CAAEvxC,OAAO,KAChDwxC,GAAsBr+C,UAAW,gBAAY,GAChDq+C,IAAwB,IAAAxE,YAAW,CAC/BlO,GAAOpjC,KAAK,2BACb81C,IACH,IAAIC,GAAsB,cAAgC3S,MAE1D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACdmV,GAAoBt+C,UAAW,qBAAiB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACdmV,GAAoBt+C,UAAW,yBAAqB,GACvDs+C,IAAsB,IAAAzE,YAAW,CAC7BlO,GAAOpjC,KAAK,wBACb+1C,IACH,IAAIC,GAAiB,cAA2B5S,MAEhD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdoV,GAAev+C,UAAW,eAAW,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMmV,GAAqB,CAAEzxC,OAAO,KAC5C0xC,GAAev+C,UAAW,iBAAa,GAC1Cu+C,IAAiB,IAAA1E,YAAW,CACxBlO,GAAOpjC,KAAK,kBACbg2C,IACH,IAAIC,GAAmB,cAA6B7S,MAEpD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdqV,GAAiBx+C,UAAW,YAAQ,IACvC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdqV,GAAiBx+C,UAAW,YAAQ,GACvCw+C,IAAmB,IAAA3E,YAAW,CAC1BlO,GAAOpjC,KAAK,oBACbi2C,IACH,IAAIC,GAAoB,cAA8B9S,MAEtD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdsV,GAAkBz+C,UAAW,YAAQ,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdsV,GAAkBz+C,UAAW,YAAQ,GACxCy+C,IAAoB,IAAA5E,YAAW,CAC3BlO,GAAOpjC,KAAK,qBACbk2C,IAEH,IAAIC,GAAe,MACf,WAAOzc,CAAKp+B,GACR,IAAI+X,EACA+iC,EASJ,MARoB,kBAAT96C,GACP+X,EAAK2oB,EAAYtC,KAAKp+B,GACtB86C,EAAQ,CAAC,IAGT/iC,EAAK2oB,EAAYtC,KAAKp+B,EAAK+X,IAC3B+iC,EAAQ96C,GAEL,IAAIN,KAAKqY,EAAI+iC,EACxB,CACA,WAAA70C,CAAY8R,EAAI+iC,GACZp7C,KAAKqY,GAAKA,EACVrY,KAAKo7C,MAAQA,CACjB,CACA,eAAI79B,GACA,GAAIvd,KAAKo7C,MAAMlD,WACX,OAAOuB,GAAW5Z,OAAO,CAAEv/B,KAAMN,KAAKo7C,MAAMlD,WAAYlzC,KAAMiyC,IAEtE,CACA,cAAIU,GACA,GAAI33C,KAAKo7C,MAAMzD,WACX,OAAO33C,KAAKo7C,MAAMzD,WAAW1pC,IAAIu5B,GAAU9I,KAEnD,CACA,MAAAvB,CAAO4C,GACH,OAAO//B,KAAKqY,GAAG8kB,OAAO4C,EAAM1nB,GAChC,CACA,MAAA4P,GACI,OAAOjoB,KAAKqY,EAChB,GAEJ8iC,GAAata,QAAU,cACvB,IAAIwa,GAAqC,cAAiDhD,GACtF,MAAIhgC,GACA,OAAOrY,KAAKs7C,IAAIjjC,EACpB,IAEJ,IAAAi+B,YAAW,CACPlO,GAAOxC,MAAMuV,KACdE,GAAmC5+C,UAAW,WAAO,GACxD4+C,IAAqC,IAAA/E,YAAW,CAC5ClO,GAAOpjC,KAAK,+BACbq2C,IACH,IAAIE,GAAmB,cAA+BnT,MAEtD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,eACd2V,GAAiB9+C,UAAW,iBAAa,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACd2V,GAAiB9+C,UAAW,gBAAY,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd2V,GAAiB9+C,UAAW,iBAAa,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd2V,GAAiB9+C,UAAW,gBAAY,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd2V,GAAiB9+C,UAAW,yBAAqB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd2V,GAAiB9+C,UAAW,oBAAgB,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd2V,GAAiB9+C,UAAW,wBAAoB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMoV,GAAgB,CAAE1V,UAAU,KAC1CiW,GAAiB9+C,UAAW,qBAAiB,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,mBAAoB,CAAEN,UAAU,KAC9CiW,GAAiB9+C,UAAW,yBAAqB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,MAAO,CAAEN,UAAU,KACjCiW,GAAiB9+C,UAAW,6BAAyB,IACxD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,cACd2V,GAAiB9+C,UAAW,0BAAsB,IACrD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMyV,GAAoC,CAAE/xC,OAAO,KAC3DiyC,GAAiB9+C,UAAW,oBAAgB,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,kBAAmB,CAAEN,UAAU,KAC7CiW,GAAiB9+C,UAAW,wBAAoB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd2V,GAAiB9+C,UAAW,UAAM,IACrC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd2V,GAAiB9+C,UAAW,iBAAa,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd2V,GAAiB9+C,UAAW,wBAAoB,GACnD8+C,IAAmB,IAAAjF,YAAW,CAC1BlO,GAAOpjC,KAAK,uBACbu2C,IACH,IAAIC,GAAkC,cAA8CpT,MAEpF,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACd4V,GAAgC/+C,UAAW,qBAAiB,IAC/D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACd4V,GAAgC/+C,UAAW,iBAAa,GAC3D++C,IAAkC,IAAAlF,YAAW,CACzClO,GAAOpjC,KAAK,uCACbw2C,IACH,IAAIC,GAAyB,cAAqCrT,MAElE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACd6V,GAAuBh/C,UAAW,qBAAiB,IACtD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM4V,KACdC,GAAuBh/C,UAAW,iBAAa,GAClDg/C,IAAyB,IAAAnF,YAAW,CAChClO,GAAOpjC,KAAK,6BACby2C,IACH,IAAIC,GAAiB,cAA6BtT,MAElD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACd8V,GAAej/C,UAAW,eAAW,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM6V,GAAwB,CAAEnyC,OAAO,KAC/CoyC,GAAej/C,UAAW,iBAAa,GAC1Ci/C,IAAiB,IAAApF,YAAW,CACxBlO,GAAOpjC,KAAK,oBACb02C,IACH,IAAIC,GAAmB,cAA+BvT,MAEtD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,eACd+V,GAAiBl/C,UAAW,iBAAa,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACd+V,GAAiBl/C,UAAW,gBAAY,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd+V,GAAiBl/C,UAAW,iBAAa,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd+V,GAAiBl/C,UAAW,gBAAY,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd+V,GAAiBl/C,UAAW,yBAAqB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd+V,GAAiBl/C,UAAW,oBAAgB,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd+V,GAAiBl/C,UAAW,wBAAoB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMsV,GAAmB,CAAE5xC,OAAO,EAAMg8B,UAAU,KAC1DqW,GAAiBl/C,UAAW,yBAAqB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,cACd+V,GAAiBl/C,UAAW,0BAAsB,GACrDk/C,IAAmB,IAAArF,YAAW,CAC1BlO,GAAOpjC,KAAK,uBACb22C,IACH,IAAIC,GAA8B,cAA0CxT,MAE5E,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdgW,GAA4Bn/C,UAAW,iBAAa,IACvD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdgW,GAA4Bn/C,UAAW,2CAAuC,IACjF,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdgW,GAA4Bn/C,UAAW,kCAA8B,IACxE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdgW,GAA4Bn/C,UAAW,UAAM,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM+V,KACdC,GAA4Bn/C,UAAW,cAAU,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,uBAAmB,IAC7D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,wBAAoB,IAC9D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,iCAA6B,IACvE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,oCAAgC,IAC1E,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,qCAAiC,IAC3E,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,qBAAiB,IAC3D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,wBAAoB,IAC9D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,mCAA+B,IACzE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdgW,GAA4Bn/C,UAAW,6BAAyB,GACnEm/C,IAA8B,IAAAtF,YAAW,CACrClO,GAAOpjC,KAAK,oCACb42C,IACH,IAAIC,GAAkB,cAA8BzT,GAChD,oBAAA0T,CAAqBC,EAAe,KAChC,MAAMC,EAAatU,GAAa8F,iBAAiBxtC,KAAKi8C,gBAAgBxO,iBAAkC,IAAfsO,GACnF1jC,EAAKrY,KAAKk8C,2BACVC,EAAc9jC,EAAG/O,MAAMk3B,SAAS,EAAG,IACnCxE,EAAS,IAAIogB,YAAYD,EAAY1+C,OAAQ0+C,EAAYtd,WAAY,GAAG,GAC9E,OAAOgY,GAAkBnY,KAAK,CAC1Bsd,aACAK,cAA0D,MAA3C9Z,OAAOviC,KAAKs8C,6BAC3BC,iBAAkBvgB,GAE1B,IAEJ,IAAAsa,YAAW,CACPlO,GAAOxC,MAAM,WACdiW,GAAgBp/C,UAAW,sBAAkB,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdiW,GAAgBp/C,UAAW,gBAAY,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiW,GAAgBp/C,UAAW,sBAAkB,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiW,GAAgBp/C,UAAW,mCAA+B,IAC7D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdiW,GAAgBp/C,UAAW,kCAA8B,IAC5D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdiW,GAAgBp/C,UAAW,qBAAiB,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACdiW,GAAgBp/C,UAAW,uBAAmB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdiW,GAAgBp/C,UAAW,2BAAuB,IACrD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiW,GAAgBp/C,UAAW,+BAA2B,IACzD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiW,GAAgBp/C,UAAW,+BAA2B,IACzD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiW,GAAgBp/C,UAAW,uBAAmB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiW,GAAgBp/C,UAAW,uBAAmB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,YACdiW,GAAgBp/C,UAAW,6BAAyB,IACvD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,YACdiW,GAAgBp/C,UAAW,8BAA0B,IACxD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,iBACdiW,GAAgBp/C,UAAW,6BAAyB,GACvDo/C,IAAkB,IAAAvF,YAAW,CACzBlO,GAAOpjC,KAAK,sBACb62C,IACH,IAAIW,GAA6B,cAAyCpU,MAE1E,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACd4W,GAA2B//C,UAAW,YAAQ,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACd4W,GAA2B//C,UAAW,aAAS,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACd4W,GAA2B//C,UAAW,aAAS,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACd4W,GAA2B//C,UAAW,aAAS,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd4W,GAA2B//C,UAAW,aAAS,GAClD+/C,IAA6B,IAAAlG,YAAW,CACpClO,GAAOpjC,KAAK,oCACbw3C,IACH,IAAIC,GAA0B,cAAsCrU,MAEpE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM4W,GAA4B,CAAElzC,OAAO,KACnDmzC,GAAwBhgD,UAAW,YAAQ,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd6W,GAAwBhgD,UAAW,YAAQ,GAC9CggD,IAA0B,IAAAnG,YAAW,CACjClO,GAAOpjC,KAAK,gCACby3C,IACH,IAAIC,GAAuB,cAAmCtU,MAE9D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM3B,IACdyY,GAAqBjgD,UAAW,yBAAqB,IACxD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMpC,IACdkZ,GAAqBjgD,UAAW,0BAAsB,IACzD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM5B,IACd0Y,GAAqBjgD,UAAW,iBAAa,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMqB,KACdyV,GAAqBjgD,UAAW,kBAAc,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACd8W,GAAqBjgD,UAAW,oBAAgB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,aACd8W,GAAqBjgD,UAAW,oBAAgB,GACnDigD,IAAuB,IAAApG,YAAW,CAC9BlO,GAAOpjC,KAAK,0BACb03C,IACH,IAAIC,GAAqB,cAAiCvU,MAE1D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM8W,GAAsB,CAAEpzC,OAAO,KAC7CqzC,GAAmBlgD,UAAW,eAAW,IAC5C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMhC,IACd+Y,GAAmBlgD,UAAW,+BAA2B,IAC5D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMhC,IACd+Y,GAAmBlgD,UAAW,sBAAkB,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,aACd+W,GAAmBlgD,UAAW,iCAA6B,GAC9DkgD,IAAqB,IAAArG,YAAW,CAC5BlO,GAAOpjC,KAAK,yBACb23C,IACH,IAAIC,GAAmB,cAA+BxU,KAEtDwU,IAAmB,IAAAtG,YAAW,CAC1BlO,GAAOpjC,KAAK,sBACb43C,IACH,IAAIC,GAAM,cAAkBzU,MAE5B,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,QACdiX,GAAIpgD,UAAW,eAAW,IAC7B,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdiX,GAAIpgD,UAAW,4BAAwB,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdiX,GAAIpgD,UAAW,yBAAqB,IACvC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiX,GAAIpgD,UAAW,iBAAa,IAC/B,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiX,GAAIpgD,UAAW,kBAAc,IAChC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiX,GAAIpgD,UAAW,wBAAoB,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiX,GAAIpgD,UAAW,2BAAuB,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiX,GAAIpgD,UAAW,qBAAiB,IACnC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdiX,GAAIpgD,UAAW,wBAAoB,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SAAU,CAAEt8B,OAAO,KACjCuzC,GAAIpgD,UAAW,kBAAc,GAChCogD,IAAM,IAAAvG,YAAW,CACblO,GAAOpjC,KAAK,QACb63C,IACH,IAAIC,GAAkB,cAA8B1U,MAEpD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAMyS,KACdyE,GAAgBrgD,UAAW,eAAW,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdkX,GAAgBrgD,UAAW,WAAO,GACrCqgD,IAAkB,IAAAxG,YAAW,CACzBlO,GAAOpjC,KAAK,qBACb83C,IACH,IAAIC,GAAyB,cAAqC3U,MAElE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM5E,IACd+b,GAAuBtgD,UAAW,UAAM,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM5B,IACd+Y,GAAuBtgD,UAAW,iBAAa,IAClD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMqB,KACd8V,GAAuBtgD,UAAW,kBAAc,IACnD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM5B,IACd+Y,GAAuBtgD,UAAW,+BAA2B,IAChE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdmX,GAAuBtgD,UAAW,cAAU,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,QACdmX,GAAuBtgD,UAAW,WAAO,GAC5CsgD,IAAyB,IAAAzG,YAAW,CAChClO,GAAOpjC,KAAK,6BACb+3C,IACH,IAAIC,GAAyB,cAAqC5U,MAElE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,OAAQ,CAAEt8B,OAAO,KAC/B0zC,GAAuBvgD,UAAW,qBAAiB,GACtDugD,IAAyB,IAAA1G,YAAW,CAChClO,GAAOpjC,KAAK,8BACbg4C,IACH,IAAIC,GAAgC,cAA4C7U,MAEhF,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,OAAQ,CAAEt8B,OAAO,KAC/B2zC,GAA8BxgD,UAAW,2BAAuB,GACnEwgD,IAAgC,IAAA3G,YAAW,CACvClO,GAAOpjC,KAAK,qCACbi4C,IACH,IAAIC,GAA+B,cAA2C9U,MAE9E,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdsX,GAA6BzgD,UAAW,aAAS,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdsX,GAA6BzgD,UAAW,mBAAe,IAC1D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdsX,GAA6BzgD,UAAW,eAAW,IACtD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACdsX,GAA6BzgD,UAAW,sBAAkB,IAC7D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdsX,GAA6BzgD,UAAW,2BAAuB,IAClE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdsX,GAA6BzgD,UAAW,uBAAmB,IAC9D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACdsX,GAA6BzgD,UAAW,8BAA0B,IACrE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdsX,GAA6BzgD,UAAW,iCAA6B,IACxE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdsX,GAA6BzgD,UAAW,qCAAiC,GAC5EygD,IAA+B,IAAA5G,YAAW,CACtClO,GAAOpjC,KAAK,oCACbk4C,IACH,IAAIC,GAAoB,cAAgC/U,MAExD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM5B,IACdmZ,GAAkB1gD,UAAW,iBAAa,IAC7C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM4S,GAAW,CAAElvC,OAAO,KAClC6zC,GAAkB1gD,UAAW,YAAQ,GACxC0gD,IAAoB,IAAA7G,YAAW,CAC3BlO,GAAOpjC,KAAK,uBACbm4C,IACH,IAAIC,GAAW,cAAuBhV,GAClC,WAAO1J,CAAKp+B,GACR,OAAO6d,MAAMugB,KAAK,IACXp+B,EACH+8C,UAAW,CAAC/8C,EAAK+8C,UAAU,GAAIF,GAAkBze,KAAKp+B,EAAK+8C,UAAU,MAE7E,IAEJ,IAAA/G,YAAW,CACPlO,GAAOxC,MAAM,SACdwX,GAAS3gD,UAAW,qBAAiB,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,MAAO,CAAEt8B,OAAO,KAC9B8zC,GAAS3gD,UAAW,iBAAa,GACpC2gD,IAAW,IAAA9G,YAAW,CAClBlO,GAAOpjC,KAAK,aACbo4C,IACH,IAAIE,GAAmB,cAA+BlV,MAEtD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACd0X,GAAiB7gD,UAAW,eAAW,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMwX,GAAU,CAAE9zC,OAAO,KACjCg0C,GAAiB7gD,UAAW,iBAAa,GAC5C6gD,IAAmB,IAAAhH,YAAW,CAC1BlO,GAAOpjC,KAAK,sBACbs4C,IACH,IAAIC,GAA8B,cAA0CnV,MAE5E,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM0X,GAAkB,CAAEhY,UAAU,KAC5CiY,GAA4B9gD,UAAW,cAAU,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM0X,GAAkB,CAAEhY,UAAU,KAC5CiY,GAA4B9gD,UAAW,eAAW,IACrD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM0X,GAAkB,CAAEhY,UAAU,KAC5CiY,GAA4B9gD,UAAW,gBAAY,GACtD8gD,IAA8B,IAAAjH,YAAW,CACrClO,GAAOpjC,KAAK,mCACbu4C,IACH,IAAIC,GAAkB,cAA8BpV,MAEpD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,gBACd4X,GAAgB/gD,UAAW,sBAAkB,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd4X,GAAgB/gD,UAAW,0BAAsB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd4X,GAAgB/gD,UAAW,4BAAwB,IACtD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACd4X,GAAgB/gD,UAAW,0BAAsB,IACpD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SAAU,CAAEt8B,OAAO,KACjCk0C,GAAgB/gD,UAAW,oBAAgB,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACd4X,GAAgB/gD,UAAW,6BAAyB,IACvD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,MAAO,CAAEt8B,OAAO,KAC9Bk0C,GAAgB/gD,UAAW,qBAAiB,GAC/C+gD,IAAkB,IAAAlH,YAAW,CACzBlO,GAAOpjC,KAAK,qBACbw4C,IACH,IAAIC,GAA8B,cAA0CrV,MAE5E,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM4X,GAAiB,CAAEl0C,OAAO,KACxCm0C,GAA4BhhD,UAAW,mCAA+B,IACzE,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SAAU,CAAEN,UAAU,KACpCmY,GAA4BhhD,UAAW,YAAQ,GAClDghD,IAA8B,IAAAnH,YAAW,CACrClO,GAAOpjC,KAAK,mCACby4C,IAEH,IAAIC,GAAuB5hD,OAAO6hD,OAAO,CACrCr3C,UAAW,KACX,2BAAIu0C,GAA6B,OAAOA,EAAyB,EACjE,uBAAId,GAAyB,OAAOA,EAAqB,EACzD,iBAAIS,GAAmB,OAAOA,EAAe,EAC7C,qBAAIR,GAAuB,OAAOA,EAAmB,EACrD,wBAAII,GAA0B,OAAOA,EAAsB,EAC3D,wBAAIH,GAA0B,OAAOA,EAAsB,EAC3D,kBAAIM,GAAoB,OAAOA,EAAgB,EAC/C,4BAAID,GAA8B,OAAOA,EAA0B,EACnE,iCAAIH,GAAmC,OAAOA,EAA+B,EAC7E,yBAAID,GAA2B,OAAOA,EAAuB,EAC7D,oBAAIG,GAAsB,OAAOA,EAAkB,EACnD,yBAAIS,GAA2B,OAAOA,EAAuB,EAC7D,kBAAIY,GAAoB,OAAOA,EAAgB,EAC/C,0BAAID,GAA4B,OAAOA,EAAwB,EAC/D,mCAAID,GAAqC,OAAOA,EAAiC,EACjF,kBAAIoC,GAAoB,OAAO3C,EAAkB,EACjD,oBAAIU,GAAsB,OAAOA,EAAkB,EACnD,sBAAIgB,GAAwB,OAAOA,EAAoB,EACvD,+BAAIf,GAAiC,OAAOA,EAA6B,EACzE,oBAAIL,GAAsB,OAAOA,EAAkB,EACnD,sCAAIF,GAAwC,OAAOA,EAAoC,EACvF,iCAAI4B,GAAmC,OAAOA,EAA+B,EAC7E,mBAAIpB,GAAqB,OAAOA,EAAiB,EACjD,0BAAImB,GAA4B,OAAOA,EAAwB,EAC/D,+BAAIO,GAAiC,OAAOA,EAA6B,EACzE,+BAAIE,GAAiC,OAAOA,EAA6B,EACzE,2BAAIhB,GAA6B,OAAOA,EAAyB,EACjE,8BAAID,GAAgC,OAAOA,EAA4B,EACvE,0BAAIO,GAA4B,OAAOA,EAAwB,EAC/D,gCAAIG,GAAkC,OAAOA,EAA8B,EAC3E,mBAAIW,GAAqB,OAAO3C,EAAmB,EACnD,gBAAI4C,GAAkB,OAAO9C,EAAgB,EAC7C,qBAAI+C,GAAuB,OAAOhD,EAAqB,EACvD,wBAAI2B,GAA0B,OAAOA,EAAsB,EAC3D,YAAIU,GAAc,OAAOA,EAAU,EACnC,qBAAID,GAAuB,OAAOA,EAAmB,EACrD,oBAAIG,GAAsB,OAAOA,EAAkB,EACnD,mBAAIE,GAAqB,OAAOA,EAAiB,EACjD,mBAAIV,GAAqB,OAAOA,EAAiB,EACjD,oBAAIF,GAAsB,OAAOA,EAAkB,EACnD,OAAIC,GAAS,OAAOA,EAAK,EACzBmB,WAAY7C,KAGhB,MAAM8C,GACF,WAAA13C,CAAY23C,GACRl+C,KAAKk+C,OAASA,CAClB,CACA,aAAMC,CAAQp8B,GACV,OAAO/hB,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,oBACNlnC,OAAQ,CAAEu5C,aAActT,GAAK5I,KAAK3c,KAE1C,CACA,iBAAMq8B,CAAYr8B,GACd,OAAO/hB,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,wBACNlnC,OAAQ,CAAEu5C,aAActT,GAAK5I,KAAK3c,IAClCngB,aAAc44C,IAEtB,CACA,iCAAM6D,CAA4BpW,GAC9B,OAAOjoC,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,wCACNlnC,OAAQ,CAAE4mC,KAAMA,GAChBrmC,aAAck5C,IAEtB,CACA,qCAAMwD,CAAgCj9C,GAClC,OAAOrB,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,4CACNlnC,SACAO,aAAc67C,IAEtB,CACA,eAAMc,CAAUC,GACZ,OAAOx+C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,sBACNlnC,OAAQ,CAAEm9C,mBACV58C,aAAc25C,IAEtB,CACA,4BAAMkD,CAAuBD,GACzB,OAAOx+C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,mCACNlnC,OAAQ,CAAEm9C,mBACV58C,aAAcg6C,IAEtB,CACA,0BAAM8C,CAAqBrN,EAAUtvB,EAAaguB,GAC9C,MAAM1uC,EAAS,CACX6gB,QAASolB,GAAK5I,KAAK3c,GACnBnX,KAAM08B,GAAK5I,KAAK2S,IAKpB,OAHItB,IACA1uC,EAAO0uC,OAASA,GAEb/vC,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,iCACNlnC,SACAO,aAAc,WAEtB,CACA,cAAM+8C,GACF,OAAO3+C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,qBACN3mC,aAAci6C,IAEtB,CACA,2BAAM+C,GACF,OAAO5+C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,kCACN3mC,aAAc27C,IAEtB,CACA,yBAAMsB,CAAoBtH,GAItB,OAHKvZ,EAAauZ,EAAIM,MAClBN,EAAKM,GAAkBG,WAAWN,GAAkBhZ,KAAK6Y,KAEtDv3C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,gCACNlnC,OAAQ,CACJkc,YAAag6B,IAGzB,CACA,sBAAMuH,CAAiBvH,GAInB,OAHKvZ,EAAauZ,EAAIM,MAClBN,EAAKM,GAAkBG,WAAWN,GAAkBhZ,KAAK6Y,KAEtDv3C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,6BACNlnC,OAAQk2C,GAEhB,CACA,sBAAMwH,CAAiBxH,GAInB,OAHKvZ,EAAauZ,EAAIM,MAClBN,EAAKM,GAAkBG,WAAWN,GAAkBhZ,KAAK6Y,KAEtDv3C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,6BACNlnC,OAAQk2C,GAEhB,CACA,uBAAMyH,CAAkBzH,EAAI34B,GAIxB,OAHKof,EAAauZ,EAAIM,MAClBN,EAAKM,GAAkBG,WAAWN,GAAkBhZ,KAAK6Y,KAEtDv3C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,8BACNlnC,OAAQ,CACJ49C,sBAAsB,EACtBC,WAAW,EACXC,qBAAsB,EACtB5hC,YAAag6B,KACV34B,IAGf,CACA,oBAAMwgC,CAAe/9C,GACjB,MAAM2D,EAAO3D,EAAO2D,KACpB,IAAIq6C,EAAWh+C,EAAOg+C,SACtB,MAAMC,EAAYj+C,EAAOk+C,aAAel+C,EAAOm+C,aAC1CH,GAAYC,IAETthB,EAAashB,EAAWrb,GACxBob,EAAW,MAENrhB,EAAashB,EAAWpb,GAC7Bmb,EAAW,OAENrhB,EAAashB,EAAWte,GAC7Bqe,EAAW,SAENrhB,EAAashB,EAAWhe,KAC7B+d,EAAW,cAGdA,IACDA,EAAW,QAEf,IAAI5V,EAAOpoC,EAAOooC,UACL/4B,IAAT+4B,IAEAA,OAAgB/4B,IAAT1L,GAEX,IAAIw6C,EAAcn+C,EAAOm+C,YACrBA,GAAsC,kBAAhBA,IACtBA,EAAczzC,OAAOyzC,IAEzB,IAAID,EAAcl+C,EAAOk+C,YACrBA,GAAsC,kBAAhBA,IACtBA,EAAcxzC,OAAOwzC,IAEzB,IAAIE,EAAQp+C,EAAOo+C,MACE,qBAAVA,EACPA,EAAQ1zC,OAAOu7B,GAAK5I,KAAKr9B,EAAOuJ,OAEV,kBAAV60C,IACZA,EAAQ1zC,OAAO0zC,IAGnB,IAcIC,GAdA,KAAEC,EAAI,KAAEC,EAAI,SAAEC,SAAmB7/C,KAAKk+C,OAAOxiD,KAAK,CAClD6sC,KAAM,2BACNlnC,OAAQ,IACDA,EACHuJ,KAAM08B,GAAK5I,KAAKr9B,EAAOuJ,MACvBskC,MAAO5H,GAAK5I,KAAKr9B,EAAO6tC,OACxB4Q,WAAwBpvC,IAAjBrP,EAAOy+C,MAAsB9b,EAAOtF,KAAKr9B,EAAOy+C,YAASpvC,EAChE+uC,QACAJ,WACA5V,OACA+V,cACAD,iBA6BR,GAzBIl+C,EAAO0+C,aACPL,EAAa,GACbC,EAAOA,EAAK1xC,KAAI,EAAG3N,OAAM0/C,YACrBN,EAAWj4C,KAAK6/B,GAAK5I,KAAKshB,IACnB1/C,MAGX0E,IAEI26C,EADAlW,EACOkW,EAAK1xC,KAAK7R,GACQ,kBAAVA,GAAsBqiC,EAAMe,QAAQpjC,GAEpCq9C,GAAW5Z,OAAO,CAAEv/B,KAAMm+B,EAAMC,KAAKtiC,GAAQ4I,SAG7Cy0C,GAAW5Z,OAAO,CAAE5B,OAAQ7hC,EAAO4I,WAK3C26C,EACF1xC,KAAK2vB,GAAQa,EAAMC,KAAKd,KACxB3vB,KAAK3N,GAASm5C,GAAW5Z,OAAO,CAAEv/B,OAAM0E,YAGjD66C,GAAYA,EAAS7iD,OAAS,EAAG,CACjC,IAAIijD,EAEJ,OAAQZ,GACJ,IAAK,MACDY,EAAYhc,EACZ,MACJ,IAAK,OACDgc,EAAY/b,EACZ,MACJ,IAAK,OACD+b,EAAY3Y,GACZ,MACJ,IAAK,UACD2Y,EAAY5Y,GACZ,MACJ,IAAK,WACD4Y,EAAY9Y,GACZ,MACJ,IAAK,SACD8Y,EAAYjf,EACZ,MACJ,IAAK,YACDif,EAAY3e,EACZ,MACJ,QACI,MAAM,IAAIp+B,MAAM,yBAAyBm8C,KAI7CQ,EAFAI,IAAc3Y,GAEHA,GAAK5I,KAAK+a,GAAW5Z,OAAO,CAAE5B,OAAQ4hB,EAAU76C,KAAMi/B,KAGtDwV,GAAW5Z,OAAO,CAAE5B,OAAQ4hB,EAAU76C,KAAMi7C,GAE/D,MAEIJ,OAAWnvC,EAEf,MAAO,CAAEivC,OAAMC,OAAMC,WAAUH,aACnC,CACA,wBAAMQ,CAAmB7+C,GACrB,OAAOrB,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,+BACNlnC,SACAO,aAAc66C,IAEtB,CACA,4BAAM0D,CAAuB9nC,GACzB,OAAOrY,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,mCACNlnC,OAAQ,CACJgX,GAAI2oB,EAAYtC,KAAKrmB,IAEzBzW,aAAcs7C,IAEtB,EAGJ,MAAMkD,GACF,WAAA75C,CAAY23C,GACRl+C,KAAKk+C,OAASA,CAClB,CACA,iBAAMmC,CAAYt+B,EAAa2oB,EAAK4V,GAChC,OAAOtgD,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,0BACNlnC,OAAQ,CACJu5C,aAActT,GAAK5I,KAAK3c,GACxB2oB,IAAK9G,EAAMlF,KAAKgM,GAChB4V,OAAQ1c,EAAMlF,KAAK4hB,IAEvB1+C,aAAc+6C,IAEtB,CACA,qBAAM4D,CAAgBloC,EAAIuG,EAAU,CAAC,GACjC,OAAO5e,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,8BACNlnC,OAAQ,CACJgX,GAAI2oB,EAAYtC,KAAKrmB,GACrBmoC,eAAgB5hC,EAAQ6hC,cAAgBzc,EAAOtF,KAAK9f,EAAQ6hC,cAC5DC,QAAkC,IAA1B9hC,EAAQ+hC,oBAAiCjwC,GAErD9O,aAAcm7C,IAEtB,CACA,sBAAM6D,CAAiBxM,GACnB,OAAOp0C,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,+BACNlnC,OAAQ,CAAEw/C,WAAYtZ,GAAU7I,KAAK0V,IACrCxyC,aAAco7C,IAEtB,CACA,6BAAM8D,CAAwBC,GAC1B,OAAO/gD,KAAKk+C,OAAOxiD,KAAK,CACpB6sC,KAAM,sCACNlnC,OAAQ,CAAE2/C,oBAAqB1Z,GAAK5I,KAAKqiB,IACzCn/C,aAAcq7C,IAEtB,EAGJ,MAAMgE,WAAiB/9C,MACnB,kBAAOg+C,CAAYx5C,GACf,MAAmB,gBAAfA,EAAMy5C,MACNz5C,EAAM05C,QAAQ,GAAGC,MACS,oBAA1B35C,EAAM05C,QAAQ,GAAGC,MACyB,gBAA1C35C,EAAM05C,QAAQ,GAAGh+C,QAAQyF,MAAM,EAAG,IAE3B,oBAEa,gBAAfnB,EAAMy5C,MAA0Bz5C,EAAM05C,SAAW15C,EAAM05C,QAAQpkD,OAAS,EACtE0K,EAAM05C,QAAQ,GAAGh+C,QAEnBsE,EAAMy5C,MAAQz5C,EAAMy5C,KAAKnkD,OAAS,EAChC0K,EAAMy5C,KAGN,mBAEf,CACA,WAAA56C,CAAYgiC,EAAM1mC,GACd,IAAIuB,EAEAA,EADAvB,EAAS4nC,MAAQ5nC,EAAS4nC,KAAK/hC,MACrB,GAAGu5C,GAASC,YAAYr/C,EAAS4nC,KAAK/hC,aAAa6gC,IAGnD,QAAQ1mC,EAASL,aAAa+mC,IAE5CpqB,MAAM/a,GACNpD,KAAKuoC,KAAOA,EACZvoC,KAAK6B,SAAWA,CACpB,CAEA,SAAI6F,GACA,MAAM,KAAE+hC,GAASzpC,KAAK6B,SACtB,OAAQ4nC,EAAOA,EAAK/hC,WAAQgJ,CAChC,CAEA,QAAI5E,GACA,MAAM,MAAEpE,GAAU1H,KAClB,OAAO0H,EAAQA,EAAMoE,KAAO,aAChC,CAEA,QAAIlB,GACA,MAAM,MAAElD,GAAU1H,KAClB,OAAO0H,EAAQA,EAAMkD,KAAO,CAChC,CAEA,WAAIw2C,GACA,MAAM,MAAE15C,GAAU1H,KAClB,OAAO0H,EAAQA,EAAM05C,QAAU,EACnC,EAEJH,GAASvX,YAAc,WACvB,MAAM4X,GACF,WAAA/6C,CAAYqY,GAKR,GAJA5e,KAAKuhD,GAAK,CACNp8C,MAAO,IAAI84C,GAASj+C,MACpBwhD,QAAS,IAAIpB,GAAWpgD,OAExB4e,EAAQ6iC,SACRzhD,KAAKyhD,SAAW7iC,EAAQ6iC,aAEvB,KAAI7iC,EAAQle,IAIb,MAAM,IAAIwC,MAAM,2BAHhBlD,KAAKyhD,SAAW,IAAI7H,GAAch7B,EAAQle,IAAKke,EAInD,CACJ,CACA,UAAMljB,CAAKqV,GACP,MAAMlP,QAAiB7B,KAAKyhD,SAAS/lD,KAAKqV,EAAKw3B,KAAMx3B,EAAK1P,SACpD,KAAEooC,GAAS5nC,EACjB,GAA0C,IAAtCojB,KAAKmoB,MAAMvrC,EAASL,OAAS,MAAeioC,GAA8B,kBAAfA,EAAK/hC,MAChE,MAAM,IAAIu5C,GAASlwC,EAAKw3B,KAAM1mC,GAElC,OAAIkP,EAAKnP,aACE6mC,EAAU,CAAEzjC,KAAM+L,EAAKnP,aAAcq8B,OAAQp8B,EAAS4nC,OAE1D5nC,EAAS4nC,MAAQ5nC,EAAS2e,IACrC,EAEJ8gC,GAAU5X,YAAc,YAExB,IAKIgY,GALAC,GAAuB7lD,OAAO6hD,OAAO,CACrCr3C,UAAW,KACXi7C,GAAI7D,KAIR,IAAIkE,GAAmB,cAA+BxZ,MAEtD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdgc,GAAiBnlD,UAAW,sBAAkB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdgc,GAAiBnlD,UAAW,eAAW,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdgc,GAAiBnlD,UAAW,cAAU,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACdgc,GAAiBnlD,UAAW,WAAO,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdgc,GAAiBnlD,UAAW,YAAQ,IACvC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdgc,GAAiBnlD,UAAW,aAAS,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,cACdgc,GAAiBnlD,UAAW,WAAO,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdgc,GAAiBnlD,UAAW,kBAAc,IAC7C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdgc,GAAiBnlD,UAAW,mCAA+B,IAC9D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdgc,GAAiBnlD,UAAW,+BAA2B,IAC1D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdgc,GAAiBnlD,UAAW,eAAW,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdgc,GAAiBnlD,UAAW,cAAU,IACzC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdgc,GAAiBnlD,UAAW,UAAM,IACrC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdgc,GAAiBnlD,UAAW,aAAS,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdgc,GAAiBnlD,UAAW,kBAAc,GAC7CmlD,IAAmB,IAAAtL,YAAW,CAC1BlO,GAAOpjC,KAAK,sBACb48C,IACH,IAAIC,GAAmB,cAA+BzZ,MAEtD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdic,GAAiBplD,UAAW,mCAA+B,IAC9D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdic,GAAiBplD,UAAW,+BAA2B,IAC1D,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdic,GAAiBplD,UAAW,eAAW,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdic,GAAiBplD,UAAW,cAAU,GACzColD,IAAmB,IAAAvL,YAAW,CAC1BlO,GAAOpjC,KAAK,uBACb68C,IACH,IAAIC,GAAgB,cAA4B1Z,MAEhD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,UACdkc,GAAcrlD,UAAW,cAAU,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdkc,GAAcrlD,UAAW,cAAU,GACtCqlD,IAAgB,IAAAxL,YAAW,CACvBlO,GAAOpjC,KAAK,oBACb88C,IACH,IAAIC,GAAc,cAA0B3Z,MAE5C,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,UACdmc,GAAYtlD,UAAW,WAAO,IACjC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdmc,GAAYtlD,UAAW,WAAO,IACjC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdmc,GAAYtlD,UAAW,WAAO,IACjC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdmc,GAAYtlD,UAAW,WAAO,GACjCslD,IAAc,IAAAzL,YAAW,CACrBlO,GAAOpjC,KAAK,iBACb+8C,IACH,IAAIC,GAAgB,cAA4B5Z,MAEhD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,cAAe,CAAEt8B,OAAO,KACtC04C,GAAcvlD,UAAW,gBAAY,IACxC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,cAAe,CAAEt8B,OAAO,KACtC04C,GAAcvlD,UAAW,mBAAe,GAC3CulD,IAAgB,IAAA1L,YAAW,CACvBlO,GAAOpjC,KAAK,mBACbg9C,IACH,IAAIC,GAAiB,cAA6B7Z,MAElD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,cAAe,CAAEt8B,OAAO,KACtC24C,GAAexlD,UAAW,cAAU,IACvC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,cAAe,CAAEt8B,OAAO,KACtC24C,GAAexlD,UAAW,iBAAa,GAC1CwlD,IAAiB,IAAA3L,YAAW,CACxBlO,GAAOpjC,KAAK,oBACbi9C,IACH,IAAIC,GAAqB,cAAiC9Z,MAE1D,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdsc,GAAmBzlD,UAAW,kBAAc,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdsc,GAAmBzlD,UAAW,gBAAY,GAC7CylD,IAAqB,IAAA5L,YAAW,CAC5BlO,GAAOpjC,KAAK,yBACbk9C,IACH,IAAInE,GAAoB,cAAgC3V,MAExD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,SACdmY,GAAkBthD,UAAW,qBAAiB,IACjD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,eACdmY,GAAkBthD,UAAW,yBAAqB,GACrDshD,IAAoB,IAAAzH,YAAW,CAC3BlO,GAAOpjC,KAAK,wBACb+4C,IACH,IAAID,GAAe,cAA2B1V,MAE9C,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdkY,GAAarhD,UAAW,eAAW,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMmY,GAAmB,CAAEz0C,OAAO,KAC1Cw0C,GAAarhD,UAAW,iBAAa,GACxCqhD,IAAe,IAAAxH,YAAW,CACtBlO,GAAOpjC,KAAK,kBACb84C,IACH,IAAIF,GAAiB,cAA6BxV,MAElD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdgY,GAAenhD,UAAW,YAAQ,IACrC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdgY,GAAenhD,UAAW,YAAQ,GACrCmhD,IAAiB,IAAAtH,YAAW,CACxBlO,GAAOpjC,KAAK,oBACb44C,IACH,IAAIC,GAAkB,cAA8BzV,MAEpD,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM,WACdiY,GAAgBphD,UAAW,YAAQ,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,UACdiY,GAAgBphD,UAAW,YAAQ,GACtCohD,IAAkB,IAAAvH,YAAW,CACzBlO,GAAOpjC,KAAK,qBACb64C,IACH,IAAIG,GAAa,cAAyB1T,KAE1C0T,IAAa,IAAA1H,YAAW,CACpBhM,GAAQtlC,KAAK,cAAe,CAACg8B,EAAa6W,MAC3CmG,IACH,IAAImE,GAAyB,cAAqC/Z,MAElE,IAAAkO,YAAW,CACPlO,GAAOxC,MAAM9B,IACdqe,GAAuB1lD,UAAW,cAAU,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM5B,IACdme,GAAuB1lD,UAAW,oBAAgB,IACrD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMtB,IACd6d,GAAuB1lD,UAAW,uBAAmB,IACxD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMoY,KACdmE,GAAuB1lD,UAAW,WAAO,GAC5C0lD,IAAyB,IAAA7L,YAAW,CAChClO,GAAOpjC,KAAK,6BACbm9C,IACH,IAAIC,GAAcV,GAAgB,cAA0BtZ,GACxD,YAAIia,GACA,MAAMjZ,EAAQppC,KAAKsiD,SAASh5C,MAAMT,MAAM,EAAG,GAC3C,IAAIyc,EAAM,EACV,IAAK,IAAI9pB,EAAI,EAAGA,EAAI,EAAGA,IACnB8pB,GAAOA,GAAO,GAAK8jB,EAAM5tC,GAE7B,OAAO8pB,EAAM,CACjB,CACA,MAAIjN,GACA,MAAMA,EAAK2oB,EAAYv1B,KAAKguC,GAAWza,OAAO,CAAEf,OAAQj+B,KAAMgF,KAAM08C,MAC9Da,EAAY,IAAI1kB,WAAW,GAMjC,OALA0kB,EAAU,GAAMviD,KAAKqiD,UAAY,GAAM,IACvCE,EAAU,GAAMviD,KAAKqiD,UAAY,GAAM,IACvCE,EAAU,GAAMviD,KAAKqiD,UAAY,EAAK,IACtCE,EAAU,GAAqB,IAAhBviD,KAAKqiD,SACpBhqC,EAAG/O,MAAM22B,IAAIsiB,EAAW,GACjBlqC,CACX,IAEJ,IAAAi+B,YAAW,CACPlO,GAAOxC,MAAM,WACdwc,GAAY3lD,UAAW,gBAAY,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,SACdwc,GAAY3lD,UAAW,gBAAY,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdwc,GAAY3lD,UAAW,iBAAa,IACvC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdwc,GAAY3lD,UAAW,gBAAY,IACtC,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdwc,GAAY3lD,UAAW,yBAAqB,IAC/C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,gBACdwc,GAAY3lD,UAAW,oBAAgB,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAM,WACdwc,GAAY3lD,UAAW,wBAAoB,IAC9C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMkY,GAAc,CAAExY,UAAU,KACxC8c,GAAY3lD,UAAW,qBAAiB,IAC3C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMiY,GAAiB,CAAEv0C,OAAO,KACxC84C,GAAY3lD,UAAW,yBAAqB,GAC/C2lD,GAAcV,IAAgB,IAAApL,YAAW,CACrClO,GAAOpjC,KAAK,iBACbo9C,IACH,IAAII,GAAc,cAA0BJ,MAE5C,IAAA9L,YAAW,CACPlO,GAAOxC,MAAM,cACd4c,GAAY/lD,UAAW,0BAAsB,IAChD,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMuc,GAAwB,CAAE74C,OAAO,KAC/Ck5C,GAAY/lD,UAAW,oBAAgB,IAC1C,IAAA65C,YAAW,CACPlO,GAAOxC,MAAMgY,GAAgB,CAAEt0C,OAAO,KACvCk5C,GAAY/lD,UAAW,wBAAoB,GAC9C+lD,IAAc,IAAAlM,YAAW,CACrBlO,GAAOpjC,KAAK,iBACbw9C,IACH,IAAIC,GAAa,cAAyBnY,KAE1CmY,IAAa,IAAAnM,YAAW,CACpBhM,GAAQtlC,KAAK,cAAe,CACxB48C,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAM,GACA3K,MAEL4K,IAEH,IAAIxc,GAAqBnqC,OAAO6hD,OAAO,CACnCr3C,UAAW,KACX,kBAAIs3C,GAAoB,OAAOA,EAAgB,EAC/C,eAAIwE,GAAiB,OAAOA,EAAa,EACzC,oBAAIP,GAAsB,OAAOA,EAAkB,EACnD,0BAAIM,GAA4B,OAAOA,EAAwB,EAC/D,iBAAIL,GAAmB,OAAOA,EAAe,EAC7C,oBAAIF,GAAsB,OAAOA,EAAkB,EACnD,mBAAI/D,GAAqB,OAAOA,EAAiB,EACjD,cAAI4E,GAAgB,OAAOA,EAAY,EACvC,gBAAI3E,GAAkB,OAAOA,EAAc,EAC3C,qBAAIC,GAAuB,OAAOA,EAAmB,EACrD,iBAAIiE,GAAmB,OAAOA,EAAe,EAC7C,kBAAIC,GAAoB,OAAOA,EAAgB,EAC/C,eAAIO,GAAiB,OAAOA,EAAa,EACzC,sBAAIN,GAAwB,OAAOA,EAAoB,EACvD,eAAIH,GAAiB,OAAOA,EAAa,IAG7C,MAAMW,GACF,WAAAn8C,CAAYqY,GACR,IAAIA,EAAQ6iC,SAIR,MAAM,IAAIv+C,MAAM,oBAHhBlD,KAAKyhD,SAAW7iC,EAAQ6iC,cAKG/wC,IAA3BkO,EAAQ+jC,eACR3iD,KAAK2iD,eAAiB/jC,EAAQ+jC,eAG9B3iD,KAAK2iD,eAAiBz5C,gBAEQwH,IAA9BkO,EAAQgkC,oBACR5iD,KAAK4iD,kBAAoBhkC,EAAQgkC,kBACjC5iD,KAAK6iD,kBAET7iD,KAAKyhD,SAAS33C,GAAG,QAASxJ,IACtBN,KAAK8iD,WAAWxiD,EAAK,IAEzBN,KAAKyhD,SAAS33C,GAAG,SAAU3O,IACvB6E,KAAKoK,KAAK,QAAS,CAACjP,GAAG,IAE3B6E,KAAKyhD,SAAS33C,GAAG,SAAS,KACtB9J,KAAKoK,KAAK,QAAS,GAAG,IAE1BpK,KAAK+iD,eAAiB,CAAC,CAC3B,CACA,IAAA9/C,CAAKG,EAAS4D,GACV,MAAMg8C,EAAiBP,GAAW/jB,KAAKt7B,GACjC6/C,EAAgBxJ,GAAWza,OAAO,CAAEf,OAAQ+kB,IAClDhjD,KAAKyhD,SAASx1C,MAAMg3C,EAAc35C,MAAOtC,EAC7C,CACA,GAAA8d,CAAIlT,GACA5R,KAAKkjD,eACLljD,KAAKyhD,SAAS38B,IAAIlT,EACtB,CACA,OAAAuxC,CAAQ71C,GACJtN,KAAKkjD,eACLljD,KAAKyhD,SAAS0B,QAAQ71C,EAC1B,CACA,UAAAw1C,CAAWxiD,GACP,IACI,MAAM8C,EAAUq2C,GAAW5Z,OAAO,CAAE76B,KAAMy9C,GAAYniD,SACtDN,KAAKoK,KAAK,UAAW,CAAChH,GAC1B,CACA,MAAOjI,GACH6E,KAAKoK,KAAK,QAAS,CAACjP,GACxB,CACJ,CACA,YAAA+nD,QACmCxyC,IAA3B1Q,KAAKojD,oBACLj6C,aAAanJ,KAAKojD,mBAClBpjD,KAAKojD,uBAAoB1yC,EAEjC,CACA,cAAAmyC,GACI7iD,KAAKkjD,oBAC0BxyC,IAA3B1Q,KAAK4iD,mBACL5iD,KAAK2iD,gBAAe,KAChB3iD,KAAKqjD,iBAAiB,GACvBrjD,KAAK4iD,kBAEhB,CACA,eAAAS,GACI,MAAM52C,EAAMP,KAAKO,MACX62C,EAAcvB,GAAYrjB,KAAK,CACjC6kB,IAAK92C,EACL+2C,IAAK,EACLC,IAAK,EACLC,IAAK,IAET1jD,KAAKiD,KAAKqgD,GAAa,KACnBtjD,KAAK6iD,gBAAgB,GAE7B,CACA,EAAA/4C,CAAGsyB,EAAOtrB,GACN,OAAO9Q,KAAK2jD,oBAAoBvnB,EAAOtrB,GAAS,GAAO,EAC3D,CACA,IAAA9G,CAAKoyB,EAAOtrB,GACR,OAAO9Q,KAAK2jD,oBAAoBvnB,EAAOtrB,GAAS,GAAM,EAC1D,CACA,WAAA/G,CAAYqyB,EAAOtrB,GACf,OAAO9Q,KAAK2jD,oBAAoBvnB,EAAOtrB,GAAS,GAAO,EAC3D,CACA,eAAAzG,CAAgB+xB,EAAOtrB,GACnB,OAAO9Q,KAAK2jD,oBAAoBvnB,EAAOtrB,GAAS,GAAO,EAC3D,CACA,cAAA5G,CAAekyB,EAAOtrB,GAMlB,YALmCJ,IAA/B1Q,KAAK+iD,eAAe3mB,KACpBp8B,KAAK+iD,eAAe3mB,GAASp8B,KAAK+iD,eAAe3mB,GAAOphB,QAAQ7f,GACrDA,EAAE2V,UAAYA,KAGtB9Q,IACX,CACA,mBAAA2jD,CAAoBvnB,EAAOtrB,EAAS9G,EAAM45C,GAUtC,YATmClzC,IAA/B1Q,KAAK+iD,eAAe3mB,KACpBp8B,KAAK+iD,eAAe3mB,GAAS,IAE5BwnB,EAID5jD,KAAK+iD,eAAe3mB,GAAOrzB,QAAQ,CAAEiB,OAAM8G,YAH3C9Q,KAAK+iD,eAAe3mB,GAAO30B,KAAK,CAAEuC,OAAM8G,YAKrC9Q,IACX,CACA,IAAAoK,CAAKgyB,EAAOrrB,GACR,QAAmCL,IAA/B1Q,KAAK+iD,eAAe3mB,GAAxB,CAGA,IAAK,MAAM,QAAEtrB,KAAa9Q,KAAK+iD,eAAe3mB,GAAQ,CAElD,MAAMynB,EAAgB/yC,EACtB+yC,KAAiB9yC,EACrB,CACA/Q,KAAK+iD,eAAe3mB,GAASp8B,KAAK+iD,eAAe3mB,GAAOphB,QAAQ7f,IAC1C,IAAXA,EAAE6O,MAPb,CASJ,EAEJ04C,GAAUhZ,YAAc,YAExB,MAAMoa,GACF,WAAAv9C,CAAYw9C,GACR/jD,KAAK+jD,aAAeA,EACpB/jD,KAAKgkD,cAAgB,IAAInmB,WAAW,GACpC79B,KAAKikD,aAAe,GACpBjkD,KAAKkkD,cAAgB,GAErBlkD,KAAK+jD,aAAaj6C,GAAG,QAASxJ,IAC1B,MAAM6jD,EAAU,IAAItmB,WAAW79B,KAAKgkD,cAAc/6B,WAAa3oB,EAAK2oB,YACpEk7B,EAAQlkB,IAAIjgC,KAAKgkD,cAAe,GAChCG,EAAQlkB,IAAI3/B,EAAMN,KAAKgkD,cAAc/6B,YACrCjpB,KAAKgkD,cAAgBG,EACrB,MAAOnkD,KAAKgkD,cAAc/6B,YAAc,EAAG,CACvC,MAAMm7B,EAAO,IAAIzZ,SAAS3qC,KAAKgkD,cAAcvmD,QACvC4mD,EAAgBD,EAAKE,UAAU,GAAG,GAIxC,GAHID,EAAgBP,GAA0BS,eAC1CvkD,KAAKwkD,UAAU,IAAIthD,MAAM,8BAEzBlD,KAAKgkD,cAAc/6B,WAAa,EAAIo7B,EAEpC,MAEJ,MAAMpB,EAAgBjjD,KAAKgkD,cAAcxjB,SAAS,EAAG,EAAI6jB,GACzDrkD,KAAKgkD,cAAgBhkD,KAAKgkD,cAAcn7C,MAAM,EAAIw7C,GAClDrkD,KAAKykD,SAASxB,EAClB,KAGJjjD,KAAK+jD,aAAaj6C,GAAG,SAAUwD,IAC3BtN,KAAKwkD,UAAUl3C,EAAI,GAE3B,CACA,KAAArB,CAAM3L,EAAM0G,GACR,MAAM09C,EAAa,IAAI7mB,WAAW,EAAIv9B,EAAK2oB,YACrCm7B,EAAO,IAAIzZ,SAAS+Z,EAAWjnD,QACrC2mD,EAAKO,UAAU,EAAGrkD,EAAK2oB,YAAY,GACnCy7B,EAAWzkB,IAAI3/B,EAAM,GACrBN,KAAK+jD,aAAa93C,MAAMy4C,EAAY19C,EACxC,CACA,GAAA8d,CAAIlT,GACA5R,KAAK+jD,aAAaj/B,IAAIlT,EAC1B,CACA,OAAAuxC,CAAQ71C,GACJtN,KAAK+jD,aAAaZ,QAAQ71C,EAC9B,CACA,EAAAxD,CAAGsyB,EAAOtrB,GAUN,MATc,SAAVsrB,EACAp8B,KAAKikD,aAAax8C,KAAKqJ,GAER,UAAVsrB,EACLp8B,KAAKkkD,cAAcz8C,KAAKqJ,GAGxB9Q,KAAK+jD,aAAaj6C,GAAGsyB,EAAOtrB,GAEzB9Q,IACX,CACA,QAAAykD,CAASxB,GACL,IAAK,MAAMnyC,KAAW9Q,KAAKikD,aAEvBnzC,EAAQmyC,EAEhB,CACA,SAAAuB,CAAUl3C,GACN,IAAK,MAAMwD,KAAW9Q,KAAKkkD,cAEvBpzC,EAAQxD,EAEhB,EAEJw2C,GAA0BS,cAAgB,O,mCC1gL1C,SAAWphC,EAAQ7nB,GACjB,aAGA,SAAS8nB,EAAQC,EAAKC,GACpB,IAAKD,EAAK,MAAM,IAAIngB,MAAMogB,GAAO,mBACnC,CAIA,SAASC,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASlnB,UAAYgnB,EAAUhnB,UAC/B+mB,EAAK/mB,UAAY,IAAIknB,EACrBH,EAAK/mB,UAAU8J,YAAcid,CAC/B,CAIA,SAASI,EAAIC,EAAQC,EAAMC,GACzB,GAAIH,EAAGI,KAAKH,GACV,OAAOA,EAGT7jB,KAAKikB,SAAW,EAChBjkB,KAAKkkB,MAAQ,KACblkB,KAAKhD,OAAS,EAGdgD,KAAKmkB,IAAM,KAEI,OAAXN,IACW,OAATC,GAA0B,OAATA,IACnBC,EAASD,EACTA,EAAO,IAGT9jB,KAAKokB,MAAMP,GAAU,EAAGC,GAAQ,GAAIC,GAAU,MAElD,CAUA,IAAIM,EATkB,kBAAXlB,EACTA,EAAO7nB,QAAUsoB,EAEjBtoB,EAAQsoB,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGU,SAAW,GAGd,IAEID,EADoB,qBAAX5lB,QAAmD,qBAAlBA,OAAO4lB,OACxC5lB,OAAO4lB,OAEP,eAEb,CAAE,MAAOlpB,GACT,CA+HA,SAASopB,EAAeC,EAAQnW,GAC9B,IAAIzS,EAAI4oB,EAAOxY,WAAWqC,GAE1B,OAAIzS,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,EAEtB,CAEA,SAAS6oB,EAAcD,EAAQE,EAAYrW,GACzC,IAAIhT,EAAIkpB,EAAcC,EAAQnW,GAI9B,OAHIA,EAAQ,GAAKqW,IACfrpB,GAAKkpB,EAAcC,EAAQnW,EAAQ,IAAM,GAEpChT,CACT,CA6CA,SAASspB,EAAWC,EAAKC,EAAOC,EAAKC,GAGnC,IAFA,IAAI1pB,EAAI,EACJ2pB,EAAMC,KAAKC,IAAIN,EAAI5nB,OAAQ8nB,GACtBtpB,EAAIqpB,EAAOrpB,EAAIwpB,EAAKxpB,IAAK,CAChC,IAAII,EAAIgpB,EAAI5Y,WAAWxQ,GAAK,GAE5BH,GAAK0pB,EAIH1pB,GADEO,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,CAET,CACA,OAAOP,CACT,CApNAuoB,EAAGI,KAAO,SAAesB,GACvB,OAAIA,aAAe1B,GAIJ,OAAR0B,GAA+B,kBAARA,GAC5BA,EAAI/e,YAAY+d,WAAaV,EAAGU,UAAYrkB,MAAMhD,QAAQqoB,EAAIpB,MAClE,EAEAN,EAAG2B,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEA7B,EAAGsB,IAAM,SAAcM,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEA7B,EAAGnnB,UAAU2nB,MAAQ,SAAeP,EAAQC,EAAMC,GAChD,GAAsB,kBAAXF,EACT,OAAO7jB,KAAK2lB,YAAY9B,EAAQC,EAAMC,GAGxC,GAAsB,kBAAXF,EACT,OAAO7jB,KAAK4lB,WAAW/B,EAAQC,EAAMC,GAG1B,QAATD,IACFA,EAAO,IAETV,EAAOU,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAEnDD,EAASA,EAAOhnB,WAAWmC,QAAQ,OAAQ,IAC3C,IAAI6lB,EAAQ,EACM,MAAdhB,EAAO,KACTgB,IACA7kB,KAAKikB,SAAW,GAGdY,EAAQhB,EAAO7mB,SACJ,KAAT8mB,EACF9jB,KAAK6lB,UAAUhC,EAAQgB,EAAOd,IAE9B/jB,KAAK8lB,WAAWjC,EAAQC,EAAMe,GACf,OAAXd,GACF/jB,KAAK4lB,WAAW5lB,KAAK+lB,UAAWjC,EAAMC,IAI9C,EAEAH,EAAGnnB,UAAUkpB,YAAc,SAAsB9B,EAAQC,EAAMC,GACzDF,EAAS,IACX7jB,KAAKikB,SAAW,EAChBJ,GAAUA,GAERA,EAAS,UACX7jB,KAAKkkB,MAAQ,CAAW,SAATL,GACf7jB,KAAKhD,OAAS,GACL6mB,EAAS,kBAClB7jB,KAAKkkB,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,UAEzB7jB,KAAKhD,OAAS,IAEdomB,EAAOS,EAAS,kBAChB7jB,KAAKkkB,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,SACvB,GAEF7jB,KAAKhD,OAAS,GAGD,OAAX+mB,GAGJ/jB,KAAK4lB,WAAW5lB,KAAK+lB,UAAWjC,EAAMC,EACxC,EAEAH,EAAGnnB,UAAUmpB,WAAa,SAAqB/B,EAAQC,EAAMC,GAG3D,GADAX,EAAgC,kBAAlBS,EAAO7mB,QACjB6mB,EAAO7mB,QAAU,EAGnB,OAFAgD,KAAKkkB,MAAQ,CAAE,GACflkB,KAAKhD,OAAS,EACPgD,KAGTA,KAAKhD,OAASioB,KAAKe,KAAKnC,EAAO7mB,OAAS,GACxCgD,KAAKkkB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/BwE,KAAKkkB,MAAM1oB,GAAK,EAGlB,IAAIyqB,EAAG9jB,EACH8H,EAAM,EACV,GAAe,OAAX8Z,EACF,IAAKvoB,EAAIqoB,EAAO7mB,OAAS,EAAGipB,EAAI,EAAGzqB,GAAK,EAAGA,GAAK,EAC9C2G,EAAI0hB,EAAOroB,GAAMqoB,EAAOroB,EAAI,IAAM,EAAMqoB,EAAOroB,EAAI,IAAM,GACzDwE,KAAKkkB,MAAM+B,IAAO9jB,GAAK8H,EAAO,SAC9BjK,KAAKkkB,MAAM+B,EAAI,GAAM9jB,IAAO,GAAK8H,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPgc,UAGC,GAAe,OAAXlC,EACT,IAAKvoB,EAAI,EAAGyqB,EAAI,EAAGzqB,EAAIqoB,EAAO7mB,OAAQxB,GAAK,EACzC2G,EAAI0hB,EAAOroB,GAAMqoB,EAAOroB,EAAI,IAAM,EAAMqoB,EAAOroB,EAAI,IAAM,GACzDwE,KAAKkkB,MAAM+B,IAAO9jB,GAAK8H,EAAO,SAC9BjK,KAAKkkB,MAAM+B,EAAI,GAAM9jB,IAAO,GAAK8H,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPgc,KAIN,OAAOjmB,KAAKi7B,OACd,EAwBArX,EAAGnnB,UAAUopB,UAAY,SAAoBhC,EAAQgB,EAAOd,GAE1D/jB,KAAKhD,OAASioB,KAAKe,MAAMnC,EAAO7mB,OAAS6nB,GAAS,GAClD7kB,KAAKkkB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/BwE,KAAKkkB,MAAM1oB,GAAK,EAIlB,IAGI2G,EAHA8H,EAAM,EACNgc,EAAI,EAGR,GAAe,OAAXlC,EACF,IAAKvoB,EAAIqoB,EAAO7mB,OAAS,EAAGxB,GAAKqpB,EAAOrpB,GAAK,EAC3C2G,EAAIsiB,EAAaZ,EAAQgB,EAAOrpB,IAAMyO,EACtCjK,KAAKkkB,MAAM+B,IAAU,SAAJ9jB,EACb8H,GAAO,IACTA,GAAO,GACPgc,GAAK,EACLjmB,KAAKkkB,MAAM+B,IAAM9jB,IAAM,IAEvB8H,GAAO,MAGN,CACL,IAAIkc,EAActC,EAAO7mB,OAAS6nB,EAClC,IAAKrpB,EAAI2qB,EAAc,IAAM,EAAItB,EAAQ,EAAIA,EAAOrpB,EAAIqoB,EAAO7mB,OAAQxB,GAAK,EAC1E2G,EAAIsiB,EAAaZ,EAAQgB,EAAOrpB,IAAMyO,EACtCjK,KAAKkkB,MAAM+B,IAAU,SAAJ9jB,EACb8H,GAAO,IACTA,GAAO,GACPgc,GAAK,EACLjmB,KAAKkkB,MAAM+B,IAAM9jB,IAAM,IAEvB8H,GAAO,CAGb,CAEAjK,KAAKi7B,OACP,EA0BArX,EAAGnnB,UAAUqpB,WAAa,SAAqBjC,EAAQC,EAAMe,GAE3D7kB,KAAKkkB,MAAQ,CAAE,GACflkB,KAAKhD,OAAS,EAGd,IAAK,IAAIopB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWvC,EAClEsC,IAEFA,IACAC,EAAWA,EAAUvC,EAAQ,EAO7B,IALA,IAAIwC,EAAQzC,EAAO7mB,OAAS6nB,EACxB0B,EAAMD,EAAQF,EACdtB,EAAMG,KAAKC,IAAIoB,EAAOA,EAAQC,GAAO1B,EAErC2B,EAAO,EACFhrB,EAAIqpB,EAAOrpB,EAAIspB,EAAKtpB,GAAK4qB,EAChCI,EAAO7B,EAAUd,EAAQroB,EAAGA,EAAI4qB,EAAStC,GAEzC9jB,KAAKymB,MAAMJ,GACPrmB,KAAKkkB,MAAM,GAAKsC,EAAO,SACzBxmB,KAAKkkB,MAAM,IAAMsC,EAEjBxmB,KAAK0mB,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAO7B,EAAUd,EAAQroB,EAAGqoB,EAAO7mB,OAAQ8mB,GAEtCtoB,EAAI,EAAGA,EAAI+qB,EAAK/qB,IACnBmrB,GAAO7C,EAGT9jB,KAAKymB,MAAME,GACP3mB,KAAKkkB,MAAM,GAAKsC,EAAO,SACzBxmB,KAAKkkB,MAAM,IAAMsC,EAEjBxmB,KAAK0mB,OAAOF,EAEhB,CAEAxmB,KAAKi7B,OACP,EAEArX,EAAGnnB,UAAUmqB,KAAO,SAAexB,GACjCA,EAAKlB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/B4pB,EAAKlB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAE7B4pB,EAAKpoB,OAASgD,KAAKhD,OACnBooB,EAAKnB,SAAWjkB,KAAKikB,SACrBmB,EAAKjB,IAAMnkB,KAAKmkB,GAClB,EAEAP,EAAGnnB,UAAUqqB,MAAQ,WACnB,IAAIzrB,EAAI,IAAIuoB,EAAG,MAEf,OADA5jB,KAAK4mB,KAAKvrB,GACHA,CACT,EAEAuoB,EAAGnnB,UAAUsqB,QAAU,SAAkBC,GACvC,MAAOhnB,KAAKhD,OAASgqB,EACnBhnB,KAAKkkB,MAAMlkB,KAAKhD,UAAY,EAE9B,OAAOgD,IACT,EAGA4jB,EAAGnnB,UAAUw+B,MAAQ,WACnB,MAAOj7B,KAAKhD,OAAS,GAAqC,IAAhCgD,KAAKkkB,MAAMlkB,KAAKhD,OAAS,GACjDgD,KAAKhD,SAEP,OAAOgD,KAAKinB,WACd,EAEArD,EAAGnnB,UAAUwqB,UAAY,WAKvB,OAHoB,IAAhBjnB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,KAClClkB,KAAKikB,SAAW,GAEXjkB,IACT,EAEA4jB,EAAGnnB,UAAU0qB,QAAU,WACrB,OAAQnnB,KAAKmkB,IAAM,UAAY,SAAWnkB,KAAKnD,SAAS,IAAM,GAChE,EAgCA,IAAIuqB,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,UAyM9D,SAASiB,EAAYjD,GAGnB,IAFA,IAAInjB,EAAI,IAAIlC,MAAMqlB,EAAIkD,aAEbC,EAAM,EAAGA,EAAMtmB,EAAEnF,OAAQyrB,IAAO,CACvC,IAAIxe,EAAOwe,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBtmB,EAAEsmB,IAAQnD,EAAIpB,MAAMja,GAAQ,GAAKye,KAAWA,CAC9C,CAEA,OAAOvmB,CACT,CAkWA,SAASwmB,EAAYC,EAAMtD,EAAKkC,GAC9BA,EAAIvD,SAAWqB,EAAIrB,SAAW2E,EAAK3E,SACnC,IAAIe,EAAO4D,EAAK5rB,OAASsoB,EAAItoB,OAAU,EACvCwqB,EAAIxqB,OAASgoB,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIjoB,EAAoB,EAAhB6rB,EAAK1E,MAAM,GACfhe,EAAmB,EAAfof,EAAIpB,MAAM,GACd7oB,EAAI0B,EAAImJ,EAER2iB,EAAS,SAAJxtB,EACLosB,EAASpsB,EAAI,SAAa,EAC9BmsB,EAAItD,MAAM,GAAK2E,EAEf,IAAK,IAAI7F,EAAI,EAAGA,EAAIgC,EAAKhC,IAAK,CAM5B,IAHA,IAAI8F,EAASrB,IAAU,GACnBsB,EAAgB,SAARtB,EACRuB,EAAO/D,KAAKC,IAAIlC,EAAGsC,EAAItoB,OAAS,GAC3BipB,EAAIhB,KAAKM,IAAI,EAAGvC,EAAI4F,EAAK5rB,OAAS,GAAIipB,GAAK+C,EAAM/C,IAAK,CAC7D,IAAIzqB,EAAKwnB,EAAIiD,EAAK,EAClBlpB,EAAoB,EAAhB6rB,EAAK1E,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM+B,GACd5qB,EAAI0B,EAAImJ,EAAI6iB,EACZD,GAAWztB,EAAI,SAAa,EAC5B0tB,EAAY,SAAJ1tB,CACV,CACAmsB,EAAItD,MAAMlB,GAAa,EAAR+F,EACftB,EAAiB,EAATqB,CACV,CAOA,OANc,IAAVrB,EACFD,EAAItD,MAAMlB,GAAa,EAARyE,EAEfD,EAAIxqB,SAGCwqB,EAAIyT,OACb,CA1lBArX,EAAGnnB,UAAUI,SAAW,SAAmBinB,EAAMyD,GAI/C,IAAIC,EACJ,GAJA1D,EAAOA,GAAQ,GACfyD,EAAoB,EAAVA,GAAe,EAGZ,KAATzD,GAAwB,QAATA,EAAgB,CACjC0D,EAAM,GAGN,IAFA,IAAIvd,EAAM,EACNwd,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI2G,EAAInC,KAAKkkB,MAAM1oB,GACfgrB,GAA+B,UAArBrkB,GAAK8H,EAAOwd,IAAmB5qB,SAAS,IACtD4qB,EAAStlB,IAAO,GAAK8H,EAAQ,SAE3Bud,EADY,IAAVC,GAAejsB,IAAMwE,KAAKhD,OAAS,EAC/BoqB,EAAM,EAAIZ,EAAKxpB,QAAUwpB,EAAOgB,EAEhChB,EAAOgB,EAEfvd,GAAO,EACHA,GAAO,KACTA,GAAO,GACPzO,IAEJ,CACc,IAAVisB,IACFD,EAAMC,EAAM5qB,SAAS,IAAM2qB,GAE7B,MAAOA,EAAIxqB,OAASuqB,IAAY,EAC9BC,EAAM,IAAMA,EAKd,OAHsB,IAAlBxnB,KAAKikB,WACPuD,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAI1D,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI4D,EAAYL,EAAWvD,GAEvB6D,EAAYL,EAAWxD,GAC3B0D,EAAM,GACN,IAAI5rB,EAAIoE,KAAK8mB,QACblrB,EAAEqoB,SAAW,EACb,OAAQroB,EAAEgsB,SAAU,CAClB,IAAIvsB,EAAIO,EAAEw6B,KAAKzO,GAAW9qB,SAASinB,GACnCloB,EAAIA,EAAEksB,MAAMH,GAKVH,EAHG5rB,EAAEgsB,SAGCvsB,EAAImsB,EAFJJ,EAAMM,EAAYrsB,EAAE2B,QAAU3B,EAAImsB,CAI5C,CACIxnB,KAAK4nB,WACPJ,EAAM,IAAMA,GAEd,MAAOA,EAAIxqB,OAASuqB,IAAY,EAC9BC,EAAM,IAAMA,EAKd,OAHsB,IAAlBxnB,KAAKikB,WACPuD,EAAM,IAAMA,GAEPA,CACT,CAEApE,GAAO,EAAO,kCAChB,EAEAQ,EAAGnnB,UAAUsrB,SAAW,WACtB,IAAIC,EAAMhoB,KAAKkkB,MAAM,GASrB,OARoB,IAAhBlkB,KAAKhD,OACPgrB,GAAuB,SAAhBhoB,KAAKkkB,MAAM,GACO,IAAhBlkB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,GAEzC8D,GAAO,iBAAoC,SAAhBhoB,KAAKkkB,MAAM,GAC7BlkB,KAAKhD,OAAS,GACvBomB,GAAO,EAAO,8CAEU,IAAlBpjB,KAAKikB,UAAmB+D,EAAMA,CACxC,EAEApE,EAAGnnB,UAAUwrB,OAAS,WACpB,OAAOjoB,KAAKnD,SAAS,GACvB,EAEA+mB,EAAGnnB,UAAUyrB,SAAW,SAAmBnE,EAAQ/mB,GAEjD,OADAomB,EAAyB,qBAAXiB,GACPrkB,KAAKmoB,YAAY9D,EAAQN,EAAQ/mB,EAC1C,EAEA4mB,EAAGnnB,UAAUspB,QAAU,SAAkBhC,EAAQ/mB,GAC/C,OAAOgD,KAAKmoB,YAAYloB,MAAO8jB,EAAQ/mB,EACzC,EAEA4mB,EAAGnnB,UAAU0rB,YAAc,SAAsBE,EAAWtE,EAAQ/mB,GAClE,IAAIisB,EAAajpB,KAAKipB,aAClBC,EAAYlsB,GAAUioB,KAAKM,IAAI,EAAG0D,GACtC7F,EAAO6F,GAAcC,EAAW,yCAChC9F,EAAO8F,EAAY,EAAG,+BAEtBlpB,KAAKi7B,QACL,IAGI/0B,EAAG1K,EAHHopD,EAA0B,OAAX7gC,EACfoF,EAAM,IAAId,EAAUa,GAGpB0K,EAAI5zB,KAAK8mB,QACb,GAAK89B,EAYE,CACL,IAAKppD,EAAI,GAAIo4B,EAAEhM,SAAUpsB,IACvB0K,EAAI0tB,EAAEsC,MAAM,KACZtC,EAAEM,OAAO,GAET/K,EAAI3tB,GAAK0K,EAGX,KAAO1K,EAAI0tB,EAAW1tB,IACpB2tB,EAAI3tB,GAAK,CAEb,KAvBmB,CAEjB,IAAKA,EAAI,EAAGA,EAAI0tB,EAAYD,EAAYztB,IACtC2tB,EAAI3tB,GAAK,EAGX,IAAKA,EAAI,GAAIo4B,EAAEhM,SAAUpsB,IACvB0K,EAAI0tB,EAAEsC,MAAM,KACZtC,EAAEM,OAAO,GAET/K,EAAID,EAAY1tB,EAAI,GAAK0K,CAE7B,CAaA,OAAOijB,CACT,EAEIlE,KAAKuE,MACP5F,EAAGnnB,UAAUgtB,WAAa,SAAqBtnB,GAC7C,OAAO,GAAK8iB,KAAKuE,MAAMrnB,EACzB,EAEAyhB,EAAGnnB,UAAUgtB,WAAa,SAAqBtnB,GAC7C,IAAIjH,EAAIiH,EACJ9G,EAAI,EAiBR,OAhBIH,GAAK,OACPG,GAAK,GACLH,KAAO,IAELA,GAAK,KACPG,GAAK,EACLH,KAAO,GAELA,GAAK,IACPG,GAAK,EACLH,KAAO,GAELA,GAAK,IACPG,GAAK,EACLH,KAAO,GAEFG,EAAIH,CACb,EAGF0oB,EAAGnnB,UAAUitB,UAAY,SAAoBvnB,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIjH,EAAIiH,EACJ9G,EAAI,EAoBR,OAnBqB,KAAZ,KAAJH,KACHG,GAAK,GACLH,KAAO,IAEU,KAAV,IAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,GAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,EAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,EAAJA,IACHG,IAEKA,CACT,EAGAuoB,EAAGnnB,UAAU+rB,UAAY,WACvB,IAAIrmB,EAAInC,KAAKkkB,MAAMlkB,KAAKhD,OAAS,GAC7B2sB,EAAK3pB,KAAKypB,WAAWtnB,GACzB,OAA2B,IAAnBnC,KAAKhD,OAAS,GAAU2sB,CAClC,EAgBA/F,EAAGnnB,UAAUmtB,SAAW,WACtB,GAAI5pB,KAAK4nB,SAAU,OAAO,EAG1B,IADA,IAAIvsB,EAAI,EACCG,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI0K,EAAIlG,KAAK0pB,UAAU1pB,KAAKkkB,MAAM1oB,IAElC,GADAH,GAAK6K,EACK,KAANA,EAAU,KAChB,CACA,OAAO7K,CACT,EAEAuoB,EAAGnnB,UAAUwsB,WAAa,WACxB,OAAOhE,KAAKe,KAAKhmB,KAAKwoB,YAAc,EACtC,EAEA5E,EAAGnnB,UAAUotB,OAAS,SAAiBhmB,GACrC,OAAsB,IAAlB7D,KAAKikB,SACAjkB,KAAK8pB,MAAMC,MAAMlmB,GAAOmmB,MAAM,GAEhChqB,KAAK8mB,OACd,EAEAlD,EAAGnnB,UAAUwtB,SAAW,SAAmBpmB,GACzC,OAAI7D,KAAKkqB,MAAMrmB,EAAQ,GACd7D,KAAKmqB,KAAKtmB,GAAOmmB,MAAM,GAAGI,OAE5BpqB,KAAK8mB,OACd,EAEAlD,EAAGnnB,UAAU4tB,MAAQ,WACnB,OAAyB,IAAlBrqB,KAAKikB,QACd,EAGAL,EAAGnnB,UAAU6tB,IAAM,WACjB,OAAOtqB,KAAK8mB,QAAQsD,MACtB,EAEAxG,EAAGnnB,UAAU2tB,KAAO,WAKlB,OAJKpqB,KAAK4nB,WACR5nB,KAAKikB,UAAY,GAGZjkB,IACT,EAGA4jB,EAAGnnB,UAAU8tB,KAAO,SAAejF,GACjC,MAAOtlB,KAAKhD,OAASsoB,EAAItoB,OACvBgD,KAAKkkB,MAAMlkB,KAAKhD,UAAY,EAG9B,IAAK,IAAIxB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAC9BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAAK8pB,EAAIpB,MAAM1oB,GAG5C,OAAOwE,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAU+tB,IAAM,SAAclF,GAE/B,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAKuqB,KAAKjF,EACnB,EAGA1B,EAAGnnB,UAAUguB,GAAK,SAAanF,GAC7B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ0D,IAAIlF,GAC/CA,EAAIwB,QAAQ0D,IAAIxqB,KACzB,EAEA4jB,EAAGnnB,UAAUiuB,IAAM,SAAcpF,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQyD,KAAKjF,GAChDA,EAAIwB,QAAQyD,KAAKvqB,KAC1B,EAGA4jB,EAAGnnB,UAAUkuB,MAAQ,SAAgBrF,GAEnC,IAAIpf,EAEFA,EADElG,KAAKhD,OAASsoB,EAAItoB,OAChBsoB,EAEAtlB,KAGN,IAAK,IAAIxE,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAAK8pB,EAAIpB,MAAM1oB,GAK5C,OAFAwE,KAAKhD,OAASkJ,EAAElJ,OAETgD,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAUmuB,KAAO,SAAetF,GAEjC,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAK2qB,MAAMrF,EACpB,EAGA1B,EAAGnnB,UAAUouB,IAAM,SAAcvF,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ8D,KAAKtF,GAChDA,EAAIwB,QAAQ8D,KAAK5qB,KAC1B,EAEA4jB,EAAGnnB,UAAUquB,KAAO,SAAexF,GACjC,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ6D,MAAMrF,GACjDA,EAAIwB,QAAQ6D,MAAM3qB,KAC3B,EAGA4jB,EAAGnnB,UAAUsuB,MAAQ,SAAgBzF,GAEnC,IAAIvoB,EACAmJ,EACAlG,KAAKhD,OAASsoB,EAAItoB,QACpBD,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAGN,IAAK,IAAIxE,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAAK0K,EAAEge,MAAM1oB,GAGvC,GAAIwE,OAASjD,EACX,KAAOvB,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAM5B,OAFAwE,KAAKhD,OAASD,EAAEC,OAETgD,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAUuuB,KAAO,SAAe1F,GAEjC,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAK+qB,MAAMzF,EACpB,EAGA1B,EAAGnnB,UAAUwuB,IAAM,SAAc3F,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQkE,KAAK1F,GAChDA,EAAIwB,QAAQkE,KAAKhrB,KAC1B,EAEA4jB,EAAGnnB,UAAUyuB,KAAO,SAAe5F,GACjC,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQiE,MAAMzF,GACjDA,EAAIwB,QAAQiE,MAAM/qB,KAC3B,EAGA4jB,EAAGnnB,UAAUstB,MAAQ,SAAgBlmB,GACnCuf,EAAwB,kBAAVvf,GAAsBA,GAAS,GAE7C,IAAIsnB,EAAsC,EAAxBlG,KAAKe,KAAKniB,EAAQ,IAChCunB,EAAWvnB,EAAQ,GAGvB7D,KAAK+mB,QAAQoE,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI3vB,EAAI,EAAGA,EAAI2vB,EAAa3vB,IAC/BwE,KAAKkkB,MAAM1oB,GAAsB,UAAhBwE,KAAKkkB,MAAM1oB,GAS9B,OALI4vB,EAAW,IACbprB,KAAKkkB,MAAM1oB,IAAMwE,KAAKkkB,MAAM1oB,GAAM,UAAc,GAAK4vB,GAIhDprB,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAU0tB,KAAO,SAAetmB,GACjC,OAAO7D,KAAK8mB,QAAQiD,MAAMlmB,EAC5B,EAGA+f,EAAGnnB,UAAU4uB,KAAO,SAAe5C,EAAKpF,GACtCD,EAAsB,kBAARqF,GAAoBA,GAAO,GAEzC,IAAIxe,EAAOwe,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAzoB,KAAK+mB,QAAQ9c,EAAM,GAGjBjK,KAAKkkB,MAAMja,GADToZ,EACgBrjB,KAAKkkB,MAAMja,GAAQ,GAAKye,EAExB1oB,KAAKkkB,MAAMja,KAAS,GAAKye,GAGtC1oB,KAAKi7B,OACd,EAGArX,EAAGnnB,UAAU6uB,KAAO,SAAehG,GACjC,IAAIjqB,EAkBA0B,EAAGmJ,EAfP,GAAsB,IAAlBlG,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAI7B,OAHAjkB,KAAKikB,SAAW,EAChB5oB,EAAI2E,KAAKurB,KAAKjG,GACdtlB,KAAKikB,UAAY,EACVjkB,KAAKinB,YAGP,GAAsB,IAAlBjnB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAIpC,OAHAqB,EAAIrB,SAAW,EACf5oB,EAAI2E,KAAKurB,KAAKjG,GACdA,EAAIrB,SAAW,EACR5oB,EAAE4rB,YAKPjnB,KAAKhD,OAASsoB,EAAItoB,QACpBD,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAIN,IADA,IAAIynB,EAAQ,EACHjsB,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,KAAwB,EAAb0K,EAAEge,MAAM1oB,IAAUisB,EAC1CznB,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAChBosB,EAAQpsB,IAAM,GAEhB,KAAiB,IAAVosB,GAAejsB,EAAIuB,EAAEC,OAAQxB,IAClCH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,IAAUisB,EACvBznB,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAChBosB,EAAQpsB,IAAM,GAIhB,GADA2E,KAAKhD,OAASD,EAAEC,OACF,IAAVyqB,EACFznB,KAAKkkB,MAAMlkB,KAAKhD,QAAUyqB,EAC1BznB,KAAKhD,cAEA,GAAID,IAAMiD,KACf,KAAOxE,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAI5B,OAAOwE,IACT,EAGA4jB,EAAGnnB,UAAUqT,IAAM,SAAcwV,GAC/B,IAAI6D,EACJ,OAAqB,IAAjB7D,EAAIrB,UAAoC,IAAlBjkB,KAAKikB,UAC7BqB,EAAIrB,SAAW,EACfkF,EAAMnpB,KAAKwrB,IAAIlG,GACfA,EAAIrB,UAAY,EACTkF,GACmB,IAAjB7D,EAAIrB,UAAoC,IAAlBjkB,KAAKikB,UACpCjkB,KAAKikB,SAAW,EAChBkF,EAAM7D,EAAIkG,IAAIxrB,MACdA,KAAKikB,SAAW,EACTkF,GAGLnpB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQwE,KAAKhG,GAEhDA,EAAIwB,QAAQwE,KAAKtrB,KAC1B,EAGA4jB,EAAGnnB,UAAU8uB,KAAO,SAAejG,GAEjC,GAAqB,IAAjBA,EAAIrB,SAAgB,CACtBqB,EAAIrB,SAAW,EACf,IAAI5oB,EAAI2E,KAAKsrB,KAAKhG,GAElB,OADAA,EAAIrB,SAAW,EACR5oB,EAAE4rB,WAGX,CAAO,GAAsB,IAAlBjnB,KAAKikB,SAId,OAHAjkB,KAAKikB,SAAW,EAChBjkB,KAAKsrB,KAAKhG,GACVtlB,KAAKikB,SAAW,EACTjkB,KAAKinB,YAId,IAWIlqB,EAAGmJ,EAXHwf,EAAM1lB,KAAK0lB,IAAIJ,GAGnB,GAAY,IAARI,EAIF,OAHA1lB,KAAKikB,SAAW,EAChBjkB,KAAKhD,OAAS,EACdgD,KAAKkkB,MAAM,GAAK,EACTlkB,KAKL0lB,EAAM,GACR3oB,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAIN,IADA,IAAIynB,EAAQ,EACHjsB,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,KAAwB,EAAb0K,EAAEge,MAAM1oB,IAAUisB,EAC1CA,EAAQpsB,GAAK,GACb2E,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAElB,KAAiB,IAAVosB,GAAejsB,EAAIuB,EAAEC,OAAQxB,IAClCH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,IAAUisB,EACvBA,EAAQpsB,GAAK,GACb2E,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAIlB,GAAc,IAAVosB,GAAejsB,EAAIuB,EAAEC,QAAUD,IAAMiD,KACvC,KAAOxE,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAU5B,OANAwE,KAAKhD,OAASioB,KAAKM,IAAIvlB,KAAKhD,OAAQxB,GAEhCuB,IAAMiD,OACRA,KAAKikB,SAAW,GAGXjkB,KAAKi7B,OACd,EAGArX,EAAGnnB,UAAU+uB,IAAM,SAAclG,GAC/B,OAAOtlB,KAAK8mB,QAAQyE,KAAKjG,EAC3B,EA8CA,IAAImG,EAAc,SAAsB7C,EAAMtD,EAAKkC,GACjD,IAIIqB,EACA6C,EACA/B,EANA5sB,EAAI6rB,EAAK1E,MACThe,EAAIof,EAAIpB,MACR3oB,EAAIisB,EAAItD,MACRtoB,EAAI,EAIJ+vB,EAAY,EAAP5uB,EAAE,GACP6uB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/uB,EAAE,GACPgvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlvB,EAAE,GACPmvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrvB,EAAE,GACPsvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxvB,EAAE,GACPyvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3vB,EAAE,GACP4vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9vB,EAAE,GACP+vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjwB,EAAE,GACPkwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpwB,EAAE,GACPqwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvwB,EAAE,GACPwwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvnB,EAAE,GACPwnB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1nB,EAAE,GACP2nB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7nB,EAAE,GACP8nB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhoB,EAAE,GACPioB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnoB,EAAE,GACPooB,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPtoB,EAAE,GACPuoB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPzoB,EAAE,GACP0oB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5oB,EAAE,GACP6oB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/oB,EAAE,GACPgpB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlpB,EAAE,GACPmpB,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB5H,EAAIvD,SAAW2E,EAAK3E,SAAWqB,EAAIrB,SACnCuD,EAAIxqB,OAAS,GAEb6rB,EAAK5D,KAAKsK,KAAK3D,EAAK8B,GACpBhC,EAAMzG,KAAKsK,KAAK3D,EAAK+B,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK6B,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK1D,EAAK8B,GACpB,IAAI6B,IAAQ5zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAEN3G,EAAK5D,KAAKsK,KAAKxD,EAAK2B,GACpBhC,EAAMzG,KAAKsK,KAAKxD,EAAK4B,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK0B,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKvD,EAAK2B,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKiC,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKkC,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKgC,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKiC,GAAQ,EAClC,IAAI2B,IAAQ7zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN5G,EAAK5D,KAAKsK,KAAKrD,EAAKwB,GACpBhC,EAAMzG,KAAKsK,KAAKrD,EAAKyB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKuB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKpD,EAAKwB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK8B,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK+B,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK6B,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK8B,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKoC,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKqC,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKmC,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKoC,GAAQ,EAClC,IAAIyB,IAAQ9zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN7G,EAAK5D,KAAKsK,KAAKlD,EAAKqB,GACpBhC,EAAMzG,KAAKsK,KAAKlD,EAAKsB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKoB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKjD,EAAKqB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK2B,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK4B,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK0B,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK2B,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKiC,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKkC,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKgC,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKiC,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKuC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKwC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKsC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKuC,GAAQ,EAClC,IAAIuB,IAAQ/zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN9G,EAAK5D,KAAKsK,KAAK/C,EAAKkB,GACpBhC,EAAMzG,KAAKsK,KAAK/C,EAAKmB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKiB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK9C,EAAKkB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKwB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKyB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKuB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKwB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK8B,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK+B,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK8B,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKoC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKqC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKmC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKoC,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAK0C,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK2C,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKyC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAK0C,IAAQ,EAClC,IAAIqB,IAAQh0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAEN/G,EAAK5D,KAAKsK,KAAK5C,EAAKe,GACpBhC,EAAMzG,KAAKsK,KAAK5C,EAAKgB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKc,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK3C,EAAKe,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKqB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKsB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKoB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKqB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK2B,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK4B,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK2B,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKiC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKkC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKgC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKiC,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKuC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKwC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKsC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKuC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAK6C,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK8C,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK4C,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAK6C,IAAQ,EAClC,IAAImB,IAAQj0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENhH,EAAK5D,KAAKsK,KAAKzC,EAAKY,GACpBhC,EAAMzG,KAAKsK,KAAKzC,EAAKa,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKW,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKxC,EAAKY,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKkB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKmB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKiB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKkB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKwB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKyB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKwB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK8B,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK+B,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK6B,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK8B,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKoC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKqC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKmC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKoC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK0C,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK2C,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKyC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK0C,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKgD,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKiD,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK+C,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKgD,IAAQ,EAClC,IAAIiB,IAAQl0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENjH,EAAK5D,KAAKsK,KAAKtC,EAAKS,GACpBhC,EAAMzG,KAAKsK,KAAKtC,EAAKU,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKQ,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKrC,EAAKS,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKe,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKgB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKc,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKe,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKqB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKsB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKqB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK2B,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK4B,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK0B,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK2B,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKiC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKkC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKgC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKiC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKuC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKwC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKsC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKuC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK6C,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK8C,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK4C,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK6C,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKmD,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKoD,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKkD,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKmD,IAAQ,EAClC,IAAIe,IAAQn0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENlH,EAAK5D,KAAKsK,KAAKnC,EAAKM,GACpBhC,EAAMzG,KAAKsK,KAAKnC,EAAKO,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKK,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKlC,EAAKM,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKY,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKa,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKW,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKY,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKkB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKmB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKkB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKwB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKyB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKuB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKwB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK8B,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK+B,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK6B,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK8B,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKoC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKqC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKmC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKoC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK0C,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK2C,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK0C,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKgD,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKiD,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK+C,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKgD,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKsD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKuD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKqD,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKsD,IAAQ,EAClC,IAAIa,IAAQp0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAK5D,KAAKsK,KAAKhC,EAAKG,GACpBhC,EAAMzG,KAAKsK,KAAKhC,EAAKI,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKE,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK/B,EAAKG,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKS,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKU,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKQ,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKS,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKe,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKgB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKc,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKe,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKqB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKsB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKoB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKqB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK2B,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK4B,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAK0B,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK2B,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKiC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKkC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKgC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKiC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKuC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKwC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKuC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK6C,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK8C,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK4C,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK6C,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKmD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKoD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKkD,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKmD,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKyD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK0D,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKwD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKyD,IAAQ,EAClC,IAAIW,IAAQr0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENpH,EAAK5D,KAAKsK,KAAKhC,EAAKM,GACpBnC,EAAMzG,KAAKsK,KAAKhC,EAAKO,GACrBpC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKK,GAAQ,EACpClE,EAAK1E,KAAKsK,KAAK/B,EAAKM,GACpBjF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKY,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKa,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKW,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKY,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKkB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKmB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKiB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKkB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKwB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKyB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKuB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKwB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK8B,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK+B,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAK6B,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK8B,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKoC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKqC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKoC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK0C,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK2C,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKyC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK0C,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKgD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKiD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK+C,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKgD,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKsD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKuD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKqD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKsD,IAAQ,EAClC,IAAIY,IAASt0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEPrH,EAAK5D,KAAKsK,KAAKhC,EAAKS,GACpBtC,EAAMzG,KAAKsK,KAAKhC,EAAKU,GACrBvC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKQ,GAAQ,EACpCrE,EAAK1E,KAAKsK,KAAK/B,EAAKS,GACpBpF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKe,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKgB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKc,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKe,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKqB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKsB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKoB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKqB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAK2B,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAK4B,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAK0B,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAK2B,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKiC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKkC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKiC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKuC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKwC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKsC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKuC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK6C,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK8C,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK4C,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK6C,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKmD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKoD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKkD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKmD,IAAQ,EAClC,IAAIa,IAASv0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPtH,EAAK5D,KAAKsK,KAAKhC,EAAKY,GACpBzC,EAAMzG,KAAKsK,KAAKhC,EAAKa,GACrB1C,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKW,GAAQ,EACpCxE,EAAK1E,KAAKsK,KAAK/B,EAAKY,GACpBvF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKkB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKmB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKiB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKkB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKwB,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKyB,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKuB,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKwB,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAK8B,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAK+B,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAK8B,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKoC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKqC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKmC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK0C,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK2C,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKyC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK0C,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKgD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKiD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK+C,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKgD,IAAQ,EAClC,IAAIc,IAASx0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPvH,EAAK5D,KAAKsK,KAAKhC,EAAKe,GACpB5C,EAAMzG,KAAKsK,KAAKhC,EAAKgB,IACrB7C,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKc,GAAQ,EACpC3E,EAAK1E,KAAKsK,KAAK/B,EAAKe,IACpB1F,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKqB,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKsB,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKoB,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKqB,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAK2B,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAK4B,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAK0B,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAK2B,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKiC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKkC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKgC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKuC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKwC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKsC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK6C,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK8C,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK4C,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK6C,IAAQ,EAClC,IAAIe,IAASz0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPxH,EAAK5D,KAAKsK,KAAKhC,EAAKkB,IACpB/C,EAAMzG,KAAKsK,KAAKhC,EAAKmB,IACrBhD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKiB,IAAQ,EACpC9E,EAAK1E,KAAKsK,KAAK/B,EAAKkB,IACpB7F,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKwB,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKyB,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKuB,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKwB,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAK8B,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAK+B,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAK6B,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKoC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKqC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKmC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK0C,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK2C,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKyC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK0C,IAAQ,EAClC,IAAIgB,IAAS10B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPzH,EAAK5D,KAAKsK,KAAKhC,EAAKqB,IACpBlD,EAAMzG,KAAKsK,KAAKhC,EAAKsB,IACrBnD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKoB,IAAQ,EACpCjF,EAAK1E,KAAKsK,KAAK/B,EAAKqB,IACpBhG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAK2B,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAK4B,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAK0B,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKiC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKkC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKgC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKuC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKwC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKsC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKuC,IAAQ,EAClC,IAAIiB,IAAS30B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP1H,EAAK5D,KAAKsK,KAAKhC,EAAKwB,IACpBrD,EAAMzG,KAAKsK,KAAKhC,EAAKyB,IACrBtD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKuB,IAAQ,EACpCpF,EAAK1E,KAAKsK,KAAK/B,EAAKwB,IACpBnG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAK8B,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAK+B,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAK6B,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKoC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKqC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKmC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKoC,IAAQ,EAClC,IAAIkB,IAAS50B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP3H,EAAK5D,KAAKsK,KAAKhC,EAAK2B,IACpBxD,EAAMzG,KAAKsK,KAAKhC,EAAK4B,IACrBzD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAK0B,IAAQ,EACpCvF,EAAK1E,KAAKsK,KAAK/B,EAAK2B,IACpBtG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKiC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKkC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKgC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKiC,IAAQ,EAClC,IAAImB,IAAS70B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP5H,EAAK5D,KAAKsK,KAAKhC,EAAK8B,IACpB3D,EAAMzG,KAAKsK,KAAKhC,EAAK+B,IACrB5D,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAK6B,IAAQ,EACpC1F,EAAK1E,KAAKsK,KAAK/B,EAAK8B,IACpB,IAAIoB,IAAS90B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EA0BtD,OAzBA9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPn1B,EAAE,GAAKi0B,GACPj0B,EAAE,GAAKk0B,GACPl0B,EAAE,GAAKm0B,GACPn0B,EAAE,GAAKo0B,GACPp0B,EAAE,GAAKq0B,GACPr0B,EAAE,GAAKs0B,GACPt0B,EAAE,GAAKu0B,GACPv0B,EAAE,GAAKw0B,GACPx0B,EAAE,GAAKy0B,GACPz0B,EAAE,GAAK00B,GACP10B,EAAE,IAAM20B,GACR30B,EAAE,IAAM40B,GACR50B,EAAE,IAAM60B,GACR70B,EAAE,IAAM80B,GACR90B,EAAE,IAAM+0B,GACR/0B,EAAE,IAAMg1B,GACRh1B,EAAE,IAAMi1B,GACRj1B,EAAE,IAAMk1B,GACRl1B,EAAE,IAAMm1B,GACE,IAAN90B,IACFL,EAAE,IAAMK,EACR4rB,EAAIxqB,UAECwqB,CACT,EAOA,SAASmJ,EAAU/H,EAAMtD,EAAKkC,GAC5BA,EAAIvD,SAAWqB,EAAIrB,SAAW2E,EAAK3E,SACnCuD,EAAIxqB,OAAS4rB,EAAK5rB,OAASsoB,EAAItoB,OAI/B,IAFA,IAAIyqB,EAAQ,EACRmJ,EAAU,EACL5N,EAAI,EAAGA,EAAIwE,EAAIxqB,OAAS,EAAGgmB,IAAK,CAGvC,IAAI8F,EAAS8H,EACbA,EAAU,EAGV,IAFA,IAAI7H,EAAgB,SAARtB,EACRuB,EAAO/D,KAAKC,IAAIlC,EAAGsC,EAAItoB,OAAS,GAC3BipB,EAAIhB,KAAKM,IAAI,EAAGvC,EAAI4F,EAAK5rB,OAAS,GAAIipB,GAAK+C,EAAM/C,IAAK,CAC7D,IAAIzqB,EAAIwnB,EAAIiD,EACRlpB,EAAoB,EAAhB6rB,EAAK1E,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM+B,GACd5qB,EAAI0B,EAAImJ,EAER2iB,EAAS,SAAJxtB,EACTytB,EAAUA,GAAWztB,EAAI,SAAa,GAAM,EAC5CwtB,EAAMA,EAAKE,EAAS,EACpBA,EAAa,SAALF,EACRC,EAAUA,GAAUD,IAAO,IAAO,EAElC+H,GAAW9H,IAAW,GACtBA,GAAU,QACZ,CACAtB,EAAItD,MAAMlB,GAAK+F,EACftB,EAAQqB,EACRA,EAAS8H,CACX,CAOA,OANc,IAAVnJ,EACFD,EAAItD,MAAMlB,GAAKyE,EAEfD,EAAIxqB,SAGCwqB,EAAIyT,OACb,CAEA,SAASpK,EAAYjI,EAAMtD,EAAKkC,GAC9B,IAAIq9B,EAAO,IAAI/zB,EACf,OAAO+zB,EAAK7xB,KAAKpK,EAAMtD,EAAKkC,EAC9B,CAqBA,SAASsJ,EAAMpd,EAAGlT,GAChBR,KAAK0T,EAAIA,EACT1T,KAAKQ,EAAIA,CACX,CAxEKykB,KAAKsK,OACR9D,EAAc9C,GAiDhB/E,EAAGnnB,UAAUs0B,MAAQ,SAAgBzL,EAAKkC,GACxC,IAAI2B,EACAnE,EAAMhlB,KAAKhD,OAASsoB,EAAItoB,OAW5B,OATEmsB,EADkB,KAAhBnpB,KAAKhD,QAAgC,KAAfsoB,EAAItoB,OACtByuB,EAAYzrB,KAAMslB,EAAKkC,GACpBxC,EAAM,GACT2D,EAAW3oB,KAAMslB,EAAKkC,GACnBxC,EAAM,KACT2L,EAAS3wB,KAAMslB,EAAKkC,GAEpBqJ,EAAW7wB,KAAMslB,EAAKkC,GAGvB2B,CACT,EAUA2H,EAAKr0B,UAAUu0B,QAAU,SAAkBC,GAGzC,IAFA,IAAI/1B,EAAI,IAAI+E,MAAMgxB,GACdx1B,EAAImoB,EAAGnnB,UAAUgtB,WAAWwH,GAAK,EAC5Bz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBN,EAAEM,GAAKwE,KAAKkxB,OAAO11B,EAAGC,EAAGw1B,GAG3B,OAAO/1B,CACT,EAGA41B,EAAKr0B,UAAUy0B,OAAS,SAAiBxd,EAAGjY,EAAGw1B,GAC7C,GAAU,IAANvd,GAAWA,IAAMud,EAAI,EAAG,OAAOvd,EAGnC,IADA,IAAIyd,EAAK,EACA31B,EAAI,EAAGA,EAAIC,EAAGD,IACrB21B,IAAW,EAAJzd,IAAWjY,EAAID,EAAI,EAC1BkY,IAAM,EAGR,OAAOyd,CACT,EAIAL,EAAKr0B,UAAU20B,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GACpE,IAAK,IAAIz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBg2B,EAAKh2B,GAAK81B,EAAID,EAAI71B,IAClBi2B,EAAKj2B,GAAK+1B,EAAIF,EAAI71B,GAEtB,EAEAs1B,EAAKr0B,UAAUi1B,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMR,EAAGI,GACtErxB,KAAKoxB,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GAExC,IAAK,IAAIr0B,EAAI,EAAGA,EAAIq0B,EAAGr0B,IAAM,EAM3B,IALA,IAAInB,EAAImB,GAAK,EAET+0B,EAAQ1M,KAAK2M,IAAI,EAAI3M,KAAK4M,GAAKp2B,GAC/Bq2B,EAAQ7M,KAAK8M,IAAI,EAAI9M,KAAK4M,GAAKp2B,GAE1BkB,EAAI,EAAGA,EAAIs0B,EAAGt0B,GAAKlB,EAI1B,IAHA,IAAIu2B,EAASL,EACTM,EAASH,EAEJ7L,EAAI,EAAGA,EAAIrpB,EAAGqpB,IAAK,CAC1B,IAAIiM,EAAKV,EAAK70B,EAAIspB,GACdkM,EAAKV,EAAK90B,EAAIspB,GAEdmM,EAAKZ,EAAK70B,EAAIspB,EAAIrpB,GAClBy1B,EAAKZ,EAAK90B,EAAIspB,EAAIrpB,GAElB01B,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELd,EAAK70B,EAAIspB,GAAKiM,EAAKE,EACnBX,EAAK90B,EAAIspB,GAAKkM,EAAKE,EAEnBb,EAAK70B,EAAIspB,EAAIrpB,GAAKs1B,EAAKE,EACvBX,EAAK90B,EAAIspB,EAAIrpB,GAAKu1B,EAAKE,EAGnBpM,IAAMxqB,IACR62B,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,EAEb,CAGN,EAEAxB,EAAKr0B,UAAU81B,YAAc,SAAsBn3B,EAAGO,GACpD,IAAIs1B,EAAqB,EAAjBhM,KAAKM,IAAI5pB,EAAGP,GAChBo3B,EAAU,EAAJvB,EACNz1B,EAAI,EACR,IAAKy1B,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/Bz1B,IAGF,OAAO,GAAKA,EAAI,EAAIg3B,CACtB,EAEA1B,EAAKr0B,UAAUg2B,UAAY,SAAoBnB,EAAKC,EAAKN,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIz1B,EAAI,EAAGA,EAAIy1B,EAAI,EAAGz1B,IAAK,CAC9B,IAAIN,EAAIo2B,EAAI91B,GAEZ81B,EAAI91B,GAAK81B,EAAIL,EAAIz1B,EAAI,GACrB81B,EAAIL,EAAIz1B,EAAI,GAAKN,EAEjBA,EAAIq2B,EAAI/1B,GAER+1B,EAAI/1B,IAAM+1B,EAAIN,EAAIz1B,EAAI,GACtB+1B,EAAIN,EAAIz1B,EAAI,IAAMN,CACpB,CACF,EAEA41B,EAAKr0B,UAAUi2B,aAAe,SAAuBC,EAAI1B,GAEvD,IADA,IAAIxJ,EAAQ,EACHjsB,EAAI,EAAGA,EAAIy1B,EAAI,EAAGz1B,IAAK,CAC9B,IAAI2G,EAAoC,KAAhC8iB,KAAK2N,MAAMD,EAAG,EAAIn3B,EAAI,GAAKy1B,GACjChM,KAAK2N,MAAMD,EAAG,EAAIn3B,GAAKy1B,GACvBxJ,EAEFkL,EAAGn3B,GAAS,SAAJ2G,EAGNslB,EADEtlB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAOwwB,CACT,EAEA7B,EAAKr0B,UAAUo2B,WAAa,SAAqBF,EAAI3N,EAAKsM,EAAKL,GAE7D,IADA,IAAIxJ,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACvBisB,GAAyB,EAARkL,EAAGn3B,GAEpB81B,EAAI,EAAI91B,GAAa,KAARisB,EAAgBA,KAAkB,GAC/C6J,EAAI,EAAI91B,EAAI,GAAa,KAARisB,EAAgBA,KAAkB,GAIrD,IAAKjsB,EAAI,EAAIwpB,EAAKxpB,EAAIy1B,IAAKz1B,EACzB81B,EAAI91B,GAAK,EAGX4nB,EAAiB,IAAVqE,GACPrE,EAA6B,MAAb,KAARqE,GACV,EAEAqJ,EAAKr0B,UAAUq2B,KAAO,SAAe7B,GAEnC,IADA,IAAI8B,EAAK,IAAI9yB,MAAMgxB,GACVz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBu3B,EAAGv3B,GAAK,EAGV,OAAOu3B,CACT,EAEAjC,EAAKr0B,UAAUu2B,KAAO,SAAetf,EAAGlT,EAAGgnB,GACzC,IAAIyJ,EAAI,EAAIjxB,KAAKuyB,YAAY7e,EAAE1W,OAAQwD,EAAExD,QAErCq0B,EAAMrxB,KAAKgxB,QAAQC,GAEnB7uB,EAAIpC,KAAK8yB,KAAK7B,GAEdK,EAAM,IAAIrxB,MAAMgxB,GAChBgC,EAAO,IAAIhzB,MAAMgxB,GACjBiC,EAAO,IAAIjzB,MAAMgxB,GAEjBkC,EAAO,IAAIlzB,MAAMgxB,GACjBmC,EAAQ,IAAInzB,MAAMgxB,GAClBoC,EAAQ,IAAIpzB,MAAMgxB,GAElBqC,EAAO9L,EAAItD,MACfoP,EAAKt2B,OAASi0B,EAEdjxB,KAAK6yB,WAAWnf,EAAEwQ,MAAOxQ,EAAE1W,OAAQs0B,EAAKL,GACxCjxB,KAAK6yB,WAAWryB,EAAE0jB,MAAO1jB,EAAExD,OAAQm2B,EAAMlC,GAEzCjxB,KAAK0xB,UAAUJ,EAAKlvB,EAAG6wB,EAAMC,EAAMjC,EAAGI,GACtCrxB,KAAK0xB,UAAUyB,EAAM/wB,EAAGgxB,EAAOC,EAAOpC,EAAGI,GAEzC,IAAK,IAAI71B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IAAK,CAC1B,IAAI82B,EAAKW,EAAKz3B,GAAK43B,EAAM53B,GAAK03B,EAAK13B,GAAK63B,EAAM73B,GAC9C03B,EAAK13B,GAAKy3B,EAAKz3B,GAAK63B,EAAM73B,GAAK03B,EAAK13B,GAAK43B,EAAM53B,GAC/Cy3B,EAAKz3B,GAAK82B,CACZ,CASA,OAPAtyB,KAAKyyB,UAAUQ,EAAMC,EAAMjC,GAC3BjxB,KAAK0xB,UAAUuB,EAAMC,EAAMI,EAAMlxB,EAAG6uB,EAAGI,GACvCrxB,KAAKyyB,UAAUa,EAAMlxB,EAAG6uB,GACxBjxB,KAAK0yB,aAAaY,EAAMrC,GAExBzJ,EAAIvD,SAAWvQ,EAAEuQ,SAAWzjB,EAAEyjB,SAC9BuD,EAAIxqB,OAAS0W,EAAE1W,OAASwD,EAAExD,OACnBwqB,EAAIyT,OACb,EAGArX,EAAGnnB,UAAUsoB,IAAM,SAAcO,GAC/B,IAAIkC,EAAM,IAAI5D,EAAG,MAEjB,OADA4D,EAAItD,MAAQ,IAAIjkB,MAAMD,KAAKhD,OAASsoB,EAAItoB,QACjCgD,KAAK+wB,MAAMzL,EAAKkC,EACzB,EAGA5D,EAAGnnB,UAAU82B,KAAO,SAAejO,GACjC,IAAIkC,EAAM,IAAI5D,EAAG,MAEjB,OADA4D,EAAItD,MAAQ,IAAIjkB,MAAMD,KAAKhD,OAASsoB,EAAItoB,QACjC6zB,EAAW7wB,KAAMslB,EAAKkC,EAC/B,EAGA5D,EAAGnnB,UAAU8yB,KAAO,SAAejK,GACjC,OAAOtlB,KAAK8mB,QAAQiK,MAAMzL,EAAKtlB,KACjC,EAEA4jB,EAAGnnB,UAAUgqB,MAAQ,SAAgBnB,GACnClC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UAIb,IADA,IAAImC,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI2G,GAAqB,EAAhBnC,KAAKkkB,MAAM1oB,IAAU8pB,EAC1BuD,GAAU,SAAJ1mB,IAA0B,SAARslB,GAC5BA,IAAU,GACVA,GAAUtlB,EAAI,SAAa,EAE3BslB,GAASoB,IAAO,GAChB7oB,KAAKkkB,MAAM1oB,GAAU,SAALqtB,CAClB,CAOA,OALc,IAAVpB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,UAGAgD,IACT,EAEA4jB,EAAGnnB,UAAUg3B,KAAO,SAAenO,GACjC,OAAOtlB,KAAK8mB,QAAQL,MAAMnB,EAC5B,EAGA1B,EAAGnnB,UAAUi3B,IAAM,WACjB,OAAO1zB,KAAK+kB,IAAI/kB,KAClB,EAGA4jB,EAAGnnB,UAAUk3B,KAAO,WAClB,OAAO3zB,KAAKuvB,KAAKvvB,KAAK8mB,QACxB,EAGAlD,EAAGnnB,UAAUkqB,IAAM,SAAcrB,GAC/B,IAAInjB,EAAIomB,EAAWjD,GACnB,GAAiB,IAAbnjB,EAAEnF,OAAc,OAAO,IAAI4mB,EAAG,GAIlC,IADA,IAAIuF,EAAMnpB,KACDxE,EAAI,EAAGA,EAAI2G,EAAEnF,OAAQxB,IAAK2tB,EAAMA,EAAIuK,MAC3C,GAAa,IAATvxB,EAAE3G,GAAU,MAGlB,KAAMA,EAAI2G,EAAEnF,OACV,IAAK,IAAI42B,EAAIzK,EAAIuK,MAAOl4B,EAAI2G,EAAEnF,OAAQxB,IAAKo4B,EAAIA,EAAEF,MAClC,IAATvxB,EAAE3G,KAEN2tB,EAAMA,EAAIpE,IAAI6O,IAIlB,OAAOzK,CACT,EAGAvF,EAAGnnB,UAAUo3B,OAAS,SAAiBC,GACrC1Q,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAC3C,IAGIt4B,EAHAH,EAAIy4B,EAAO,GACXl3B,GAAKk3B,EAAOz4B,GAAK,GACjB04B,EAAa,WAAe,GAAK14B,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIosB,EAAQ,EAEZ,IAAKjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CAChC,IAAIw4B,EAAWh0B,KAAKkkB,MAAM1oB,GAAKu4B,EAC3Bn4B,GAAsB,EAAhBoE,KAAKkkB,MAAM1oB,IAAUw4B,GAAa34B,EAC5C2E,KAAKkkB,MAAM1oB,GAAKI,EAAI6rB,EACpBA,EAAQuM,IAAc,GAAK34B,CAC7B,CAEIosB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,SAET,CAEA,GAAU,IAANJ,EAAS,CACX,IAAKpB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAChCwE,KAAKkkB,MAAM1oB,EAAIoB,GAAKoD,KAAKkkB,MAAM1oB,GAGjC,IAAKA,EAAI,EAAGA,EAAIoB,EAAGpB,IACjBwE,KAAKkkB,MAAM1oB,GAAK,EAGlBwE,KAAKhD,QAAUJ,CACjB,CAEA,OAAOoD,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAUw3B,MAAQ,SAAgBH,GAGnC,OADA1Q,EAAyB,IAAlBpjB,KAAKikB,UACLjkB,KAAK6zB,OAAOC,EACrB,EAKAlQ,EAAGnnB,UAAUy3B,OAAS,SAAiBJ,EAAMK,EAAMC,GAEjD,IAAI7zB,EADJ6iB,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAGzCvzB,EADE4zB,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI94B,EAAIy4B,EAAO,GACXl3B,EAAIqoB,KAAKC,KAAK4O,EAAOz4B,GAAK,GAAI2E,KAAKhD,QACnCq3B,EAAO,SAAc,WAAch5B,GAAMA,EACzCi5B,EAAcF,EAMlB,GAJA7zB,GAAK3D,EACL2D,EAAI0kB,KAAKM,IAAI,EAAGhlB,GAGZ+zB,EAAa,CACf,IAAK,IAAI94B,EAAI,EAAGA,EAAIoB,EAAGpB,IACrB84B,EAAYpQ,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAEpC84B,EAAYt3B,OAASJ,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIoD,KAAKhD,OAASJ,EAEvB,IADAoD,KAAKhD,QAAUJ,EACVpB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC3BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,EAAIoB,QAGjCoD,KAAKkkB,MAAM,GAAK,EAChBlkB,KAAKhD,OAAS,EAGhB,IAAIyqB,EAAQ,EACZ,IAAKjsB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,IAAgB,IAAVisB,GAAejsB,GAAK+E,GAAI/E,IAAK,CAChE,IAAIgrB,EAAuB,EAAhBxmB,KAAKkkB,MAAM1oB,GACtBwE,KAAKkkB,MAAM1oB,GAAMisB,GAAU,GAAKpsB,EAAOmrB,IAASnrB,EAChDosB,EAAQjB,EAAO6N,CACjB,CAYA,OATIC,GAAyB,IAAV7M,IACjB6M,EAAYpQ,MAAMoQ,EAAYt3B,UAAYyqB,GAGxB,IAAhBznB,KAAKhD,SACPgD,KAAKkkB,MAAM,GAAK,EAChBlkB,KAAKhD,OAAS,GAGTgD,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAU83B,MAAQ,SAAgBT,EAAMK,EAAMC,GAG/C,OADAhR,EAAyB,IAAlBpjB,KAAKikB,UACLjkB,KAAKk0B,OAAOJ,EAAMK,EAAMC,EACjC,EAGAxQ,EAAGnnB,UAAU+3B,KAAO,SAAeV,GACjC,OAAO9zB,KAAK8mB,QAAQmN,MAAMH,EAC5B,EAEAlQ,EAAGnnB,UAAUg4B,MAAQ,SAAgBX,GACnC,OAAO9zB,KAAK8mB,QAAQ+M,OAAOC,EAC7B,EAGAlQ,EAAGnnB,UAAUi4B,KAAO,SAAeZ,GACjC,OAAO9zB,KAAK8mB,QAAQyN,MAAMT,EAC5B,EAEAlQ,EAAGnnB,UAAUk4B,MAAQ,SAAgBb,GACnC,OAAO9zB,KAAK8mB,QAAQoN,OAAOJ,EAC7B,EAGAlQ,EAAGnnB,UAAUytB,MAAQ,SAAgBzB,GACnCrF,EAAsB,kBAARqF,GAAoBA,GAAO,GACzC,IAAIptB,EAAIotB,EAAM,GACV7rB,GAAK6rB,EAAMptB,GAAK,GAChBu4B,EAAI,GAAKv4B,EAGb,GAAI2E,KAAKhD,QAAUJ,EAAG,OAAO,EAG7B,IAAIuF,EAAInC,KAAKkkB,MAAMtnB,GAEnB,SAAUuF,EAAIyxB,EAChB,EAGAhQ,EAAGnnB,UAAUm4B,OAAS,SAAiBd,GACrC1Q,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAC3C,IAAIz4B,EAAIy4B,EAAO,GACXl3B,GAAKk3B,EAAOz4B,GAAK,GAIrB,GAFA+nB,EAAyB,IAAlBpjB,KAAKikB,SAAgB,2CAExBjkB,KAAKhD,QAAUJ,EACjB,OAAOoD,KAQT,GALU,IAAN3E,GACFuB,IAEFoD,KAAKhD,OAASioB,KAAKC,IAAItoB,EAAGoD,KAAKhD,QAErB,IAAN3B,EAAS,CACX,IAAIg5B,EAAO,SAAc,WAAch5B,GAAMA,EAC7C2E,KAAKkkB,MAAMlkB,KAAKhD,OAAS,IAAMq3B,CACjC,CAEA,OAAOr0B,KAAKi7B,OACd,EAGArX,EAAGnnB,UAAUo4B,MAAQ,SAAgBf,GACnC,OAAO9zB,KAAK8mB,QAAQ8N,OAAOd,EAC7B,EAGAlQ,EAAGnnB,UAAUutB,MAAQ,SAAgB1E,GAGnC,OAFAlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UACTA,EAAM,EAAUtlB,KAAK80B,OAAOxP,GAGV,IAAlBtlB,KAAKikB,SACa,IAAhBjkB,KAAKhD,SAAiC,EAAhBgD,KAAKkkB,MAAM,IAAUoB,GAC7CtlB,KAAKkkB,MAAM,GAAKoB,GAAuB,EAAhBtlB,KAAKkkB,MAAM,IAClClkB,KAAKikB,SAAW,EACTjkB,OAGTA,KAAKikB,SAAW,EAChBjkB,KAAK80B,MAAMxP,GACXtlB,KAAKikB,SAAW,EACTjkB,MAIFA,KAAK0mB,OAAOpB,EACrB,EAEA1B,EAAGnnB,UAAUiqB,OAAS,SAAiBpB,GACrCtlB,KAAKkkB,MAAM,IAAMoB,EAGjB,IAAK,IAAI9pB,EAAI,EAAGA,EAAIwE,KAAKhD,QAAUgD,KAAKkkB,MAAM1oB,IAAM,SAAWA,IAC7DwE,KAAKkkB,MAAM1oB,IAAM,SACbA,IAAMwE,KAAKhD,OAAS,EACtBgD,KAAKkkB,MAAM1oB,EAAI,GAAK,EAEpBwE,KAAKkkB,MAAM1oB,EAAI,KAKnB,OAFAwE,KAAKhD,OAASioB,KAAKM,IAAIvlB,KAAKhD,OAAQxB,EAAI,GAEjCwE,IACT,EAGA4jB,EAAGnnB,UAAUq4B,MAAQ,SAAgBxP,GAGnC,GAFAlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UACTA,EAAM,EAAG,OAAOtlB,KAAKgqB,OAAO1E,GAEhC,GAAsB,IAAlBtlB,KAAKikB,SAIP,OAHAjkB,KAAKikB,SAAW,EAChBjkB,KAAKgqB,MAAM1E,GACXtlB,KAAKikB,SAAW,EACTjkB,KAKT,GAFAA,KAAKkkB,MAAM,IAAMoB,EAEG,IAAhBtlB,KAAKhD,QAAgBgD,KAAKkkB,MAAM,GAAK,EACvClkB,KAAKkkB,MAAM,IAAMlkB,KAAKkkB,MAAM,GAC5BlkB,KAAKikB,SAAW,OAGhB,IAAK,IAAIzoB,EAAI,EAAGA,EAAIwE,KAAKhD,QAAUgD,KAAKkkB,MAAM1oB,GAAK,EAAGA,IACpDwE,KAAKkkB,MAAM1oB,IAAM,SACjBwE,KAAKkkB,MAAM1oB,EAAI,IAAM,EAIzB,OAAOwE,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAUs4B,KAAO,SAAezP,GACjC,OAAOtlB,KAAK8mB,QAAQkD,MAAM1E,EAC5B,EAEA1B,EAAGnnB,UAAUu4B,KAAO,SAAe1P,GACjC,OAAOtlB,KAAK8mB,QAAQgO,MAAMxP,EAC5B,EAEA1B,EAAGnnB,UAAUw4B,KAAO,WAGlB,OAFAj1B,KAAKikB,SAAW,EAETjkB,IACT,EAEA4jB,EAAGnnB,UAAUqtB,IAAM,WACjB,OAAO9pB,KAAK8mB,QAAQmO,MACtB,EAEArR,EAAGnnB,UAAUy4B,aAAe,SAAuB5P,EAAKP,EAAKjd,GAC3D,IACItM,EAIA2G,EALA6iB,EAAMM,EAAItoB,OAAS8K,EAGvB9H,KAAK+mB,QAAQ/B,GAGb,IAAIyC,EAAQ,EACZ,IAAKjsB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CAC/B2G,GAA6B,EAAxBnC,KAAKkkB,MAAM1oB,EAAIsM,IAAc2f,EAClC,IAAIhC,GAAwB,EAAfH,EAAIpB,MAAM1oB,IAAUupB,EACjC5iB,GAAa,SAARsjB,EACLgC,GAAStlB,GAAK,KAAQsjB,EAAQ,SAAa,GAC3CzlB,KAAKkkB,MAAM1oB,EAAIsM,GAAa,SAAJ3F,CAC1B,CACA,KAAO3G,EAAIwE,KAAKhD,OAAS8K,EAAOtM,IAC9B2G,GAA6B,EAAxBnC,KAAKkkB,MAAM1oB,EAAIsM,IAAc2f,EAClCA,EAAQtlB,GAAK,GACbnC,KAAKkkB,MAAM1oB,EAAIsM,GAAa,SAAJ3F,EAG1B,GAAc,IAAVslB,EAAa,OAAOznB,KAAKi7B,QAK7B,IAFA7X,GAAkB,IAAXqE,GACPA,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC3B2G,IAAsB,EAAhBnC,KAAKkkB,MAAM1oB,IAAUisB,EAC3BA,EAAQtlB,GAAK,GACbnC,KAAKkkB,MAAM1oB,GAAS,SAAJ2G,EAIlB,OAFAnC,KAAKikB,SAAW,EAETjkB,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAU04B,SAAW,SAAmB7P,EAAK8P,GAC9C,IAAIttB,EAAQ9H,KAAKhD,OAASsoB,EAAItoB,OAE1BD,EAAIiD,KAAK8mB,QACT5gB,EAAIof,EAGJ+P,EAA8B,EAAxBnvB,EAAEge,MAAMhe,EAAElJ,OAAS,GACzBs4B,EAAUt1B,KAAKypB,WAAW4L,GAC9BvtB,EAAQ,GAAKwtB,EACC,IAAVxtB,IACF5B,EAAIA,EAAEuuB,MAAM3sB,GACZ/K,EAAE82B,OAAO/rB,GACTutB,EAA8B,EAAxBnvB,EAAEge,MAAMhe,EAAElJ,OAAS,IAI3B,IACI42B,EADAj4B,EAAIoB,EAAEC,OAASkJ,EAAElJ,OAGrB,GAAa,QAATo4B,EAAgB,CAClBxB,EAAI,IAAIhQ,EAAG,MACXgQ,EAAE52B,OAASrB,EAAI,EACfi4B,EAAE1P,MAAQ,IAAIjkB,MAAM2zB,EAAE52B,QACtB,IAAK,IAAIxB,EAAI,EAAGA,EAAIo4B,EAAE52B,OAAQxB,IAC5Bo4B,EAAE1P,MAAM1oB,GAAK,CAEjB,CAEA,IAAI+5B,EAAOx4B,EAAE+pB,QAAQoO,aAAahvB,EAAG,EAAGvK,GAClB,IAAlB45B,EAAKtR,WACPlnB,EAAIw4B,EACA3B,IACFA,EAAE1P,MAAMvoB,GAAK,IAIjB,IAAK,IAAIsqB,EAAItqB,EAAI,EAAGsqB,GAAK,EAAGA,IAAK,CAC/B,IAAIuP,EAAmC,UAAL,EAAxBz4B,EAAEmnB,MAAMhe,EAAElJ,OAASipB,KACE,EAA5BlpB,EAAEmnB,MAAMhe,EAAElJ,OAASipB,EAAI,IAI1BuP,EAAKvQ,KAAKC,IAAKsQ,EAAKH,EAAO,EAAG,UAE9Bt4B,EAAEm4B,aAAahvB,EAAGsvB,EAAIvP,GACtB,MAAsB,IAAflpB,EAAEknB,SACPuR,IACAz4B,EAAEknB,SAAW,EACblnB,EAAEm4B,aAAahvB,EAAG,EAAG+f,GAChBlpB,EAAE6qB,WACL7qB,EAAEknB,UAAY,GAGd2P,IACFA,EAAE1P,MAAM+B,GAAKuP,EAEjB,CAWA,OAVI5B,GACFA,EAAEqH,QAEJl+B,EAAEk+B,QAGW,QAAT7F,GAA4B,IAAVttB,GACpB/K,EAAEm3B,OAAOpsB,GAGJ,CACL2tB,IAAK7B,GAAK,KACVrN,IAAKxpB,EAET,EAMA6mB,EAAGnnB,UAAUi5B,OAAS,SAAiBpQ,EAAK8P,EAAMO,GAGhD,OAFAvS,GAAQkC,EAAIsC,UAER5nB,KAAK4nB,SACA,CACL6N,IAAK,IAAI7R,EAAG,GACZ2C,IAAK,IAAI3C,EAAG,IAKM,IAAlB5jB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,UAC7BkF,EAAMnpB,KAAKsqB,MAAMoL,OAAOpQ,EAAK8P,GAEhB,QAATA,IACFK,EAAMtM,EAAIsM,IAAInL,OAGH,QAAT8K,IACF7O,EAAM4C,EAAI5C,IAAI+D,MACVqL,GAA6B,IAAjBpP,EAAItC,UAClBsC,EAAI+E,KAAKhG,IAIN,CACLmQ,IAAKA,EACLlP,IAAKA,IAIa,IAAlBvmB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,UAC7BkF,EAAMnpB,KAAK01B,OAAOpQ,EAAIgF,MAAO8K,GAEhB,QAATA,IACFK,EAAMtM,EAAIsM,IAAInL,OAGT,CACLmL,IAAKA,EACLlP,IAAK4C,EAAI5C,MAI0B,KAAlCvmB,KAAKikB,SAAWqB,EAAIrB,WACvBkF,EAAMnpB,KAAKsqB,MAAMoL,OAAOpQ,EAAIgF,MAAO8K,GAEtB,QAATA,IACF7O,EAAM4C,EAAI5C,IAAI+D,MACVqL,GAA6B,IAAjBpP,EAAItC,UAClBsC,EAAIgF,KAAKjG,IAIN,CACLmQ,IAAKtM,EAAIsM,IACTlP,IAAKA,IAOLjB,EAAItoB,OAASgD,KAAKhD,QAAUgD,KAAK0lB,IAAIJ,GAAO,EACvC,CACLmQ,IAAK,IAAI7R,EAAG,GACZ2C,IAAKvmB,MAKU,IAAfslB,EAAItoB,OACO,QAATo4B,EACK,CACLK,IAAKz1B,KAAK41B,KAAKtQ,EAAIpB,MAAM,IACzBqC,IAAK,MAII,QAAT6O,EACK,CACLK,IAAK,KACLlP,IAAK,IAAI3C,EAAG5jB,KAAKo2B,KAAK9Q,EAAIpB,MAAM,MAI7B,CACLuR,IAAKz1B,KAAK41B,KAAKtQ,EAAIpB,MAAM,IACzBqC,IAAK,IAAI3C,EAAG5jB,KAAKo2B,KAAK9Q,EAAIpB,MAAM,MAI7BlkB,KAAKm1B,SAAS7P,EAAK8P,GAlF1B,IAAIK,EAAKlP,EAAK4C,CAmFhB,EAGAvF,EAAGnnB,UAAUg5B,IAAM,SAAcnQ,GAC/B,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAOmQ,GACxC,EAGA7R,EAAGnnB,UAAU8pB,IAAM,SAAcjB,GAC/B,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAOiB,GACxC,EAEA3C,EAAGnnB,UAAUo5B,KAAO,SAAevQ,GACjC,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAMiB,GACvC,EAGA3C,EAAGnnB,UAAUq5B,SAAW,SAAmBxQ,GACzC,IAAIyQ,EAAK/1B,KAAK01B,OAAOpQ,GAGrB,GAAIyQ,EAAGxP,IAAIqB,SAAU,OAAOmO,EAAGN,IAE/B,IAAIlP,EAA0B,IAApBwP,EAAGN,IAAIxR,SAAiB8R,EAAGxP,IAAIgF,KAAKjG,GAAOyQ,EAAGxP,IAEpDyP,EAAO1Q,EAAIqP,MAAM,GACjBsB,EAAK3Q,EAAI4Q,MAAM,GACfxQ,EAAMa,EAAIb,IAAIsQ,GAGlB,OAAItQ,EAAM,GAAY,IAAPuQ,GAAoB,IAARvQ,EAAkBqQ,EAAGN,IAGrB,IAApBM,EAAGN,IAAIxR,SAAiB8R,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIzL,MAAM,EAChE,EAEApG,EAAGnnB,UAAU25B,KAAO,SAAe9Q,GACjClC,EAAOkC,GAAO,UAId,IAHA,IAAI3oB,GAAK,GAAK,IAAM2oB,EAEhB6Q,EAAM,EACD36B,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IACpC26B,GAAOx5B,EAAIw5B,GAAuB,EAAhBn2B,KAAKkkB,MAAM1oB,KAAW8pB,EAG1C,OAAO6Q,CACT,EAGAvS,EAAGnnB,UAAUqrB,MAAQ,SAAgBxC,GACnClC,EAAOkC,GAAO,UAGd,IADA,IAAImC,EAAQ,EACHjsB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CACzC,IAAI2G,GAAqB,EAAhBnC,KAAKkkB,MAAM1oB,IAAkB,SAARisB,EAC9BznB,KAAKkkB,MAAM1oB,GAAM2G,EAAImjB,EAAO,EAC5BmC,EAAQtlB,EAAImjB,CACd,CAEA,OAAOtlB,KAAKi7B,OACd,EAEArX,EAAGnnB,UAAUm5B,KAAO,SAAetQ,GACjC,OAAOtlB,KAAK8mB,QAAQgB,MAAMxC,EAC5B,EAEA1B,EAAGnnB,UAAU45B,KAAO,SAAe15B,GACjCymB,EAAsB,IAAfzmB,EAAEsnB,UACTb,GAAQzmB,EAAEirB,UAEV,IAAIlU,EAAI1T,KACJQ,EAAI7D,EAAEmqB,QAGRpT,EADiB,IAAfA,EAAEuQ,SACAvQ,EAAEmiB,KAAKl5B,GAEP+W,EAAEoT,QAIR,IAAIwP,EAAI,IAAI1S,EAAG,GACX2S,EAAI,IAAI3S,EAAG,GAGX4S,EAAI,IAAI5S,EAAG,GACX6S,EAAI,IAAI7S,EAAG,GAEXzd,EAAI,EAER,MAAOuN,EAAEgjB,UAAYl2B,EAAEk2B,SACrBhjB,EAAEwgB,OAAO,GACT1zB,EAAE0zB,OAAO,KACP/tB,EAGJ,IAAIwwB,EAAKn2B,EAAEsmB,QACP8P,EAAKljB,EAAEoT,QAEX,OAAQpT,EAAEkU,SAAU,CAClB,IAAK,IAAIpsB,EAAI,EAAGq7B,EAAK,EAAyB,KAArBnjB,EAAEwQ,MAAM,GAAK2S,IAAar7B,EAAI,KAAMA,EAAGq7B,IAAO,GACvE,GAAIr7B,EAAI,EAAG,CACTkY,EAAEwgB,OAAO14B,GACT,MAAOA,KAAM,GACP86B,EAAEQ,SAAWP,EAAEO,WACjBR,EAAEhL,KAAKqL,GACPJ,EAAEhL,KAAKqL,IAGTN,EAAEpC,OAAO,GACTqC,EAAErC,OAAO,EAEb,CAEA,IAAK,IAAIjO,EAAI,EAAG8Q,EAAK,EAAyB,KAArBv2B,EAAE0jB,MAAM,GAAK6S,IAAa9Q,EAAI,KAAMA,EAAG8Q,IAAO,GACvE,GAAI9Q,EAAI,EAAG,CACTzlB,EAAE0zB,OAAOjO,GACT,MAAOA,KAAM,GACPuQ,EAAEM,SAAWL,EAAEK,WACjBN,EAAElL,KAAKqL,GACPF,EAAElL,KAAKqL,IAGTJ,EAAEtC,OAAO,GACTuC,EAAEvC,OAAO,EAEb,CAEIxgB,EAAEgS,IAAIllB,IAAM,GACdkT,EAAE6X,KAAK/qB,GACP81B,EAAE/K,KAAKiL,GACPD,EAAEhL,KAAKkL,KAEPj2B,EAAE+qB,KAAK7X,GACP8iB,EAAEjL,KAAK+K,GACPG,EAAElL,KAAKgL,GAEX,CAEA,MAAO,CACLx5B,EAAGy5B,EACHtwB,EAAGuwB,EACHO,IAAKx2B,EAAEqzB,OAAO1tB,GAElB,EAKAyd,EAAGnnB,UAAUw6B,OAAS,SAAiBt6B,GACrCymB,EAAsB,IAAfzmB,EAAEsnB,UACTb,GAAQzmB,EAAEirB,UAEV,IAAI7qB,EAAIiD,KACJkG,EAAIvJ,EAAEmqB,QAGR/pB,EADiB,IAAfA,EAAEknB,SACAlnB,EAAE84B,KAAKl5B,GAEPI,EAAE+pB,QAGR,IAuCIqC,EAvCA+N,EAAK,IAAItT,EAAG,GACZuT,EAAK,IAAIvT,EAAG,GAEZwT,EAAQlxB,EAAE4gB,QAEd,MAAO/pB,EAAEs6B,KAAK,GAAK,GAAKnxB,EAAEmxB,KAAK,GAAK,EAAG,CACrC,IAAK,IAAI77B,EAAI,EAAGq7B,EAAK,EAAyB,KAArB95B,EAAEmnB,MAAM,GAAK2S,IAAar7B,EAAI,KAAMA,EAAGq7B,IAAO,GACvE,GAAIr7B,EAAI,EAAG,CACTuB,EAAEm3B,OAAO14B,GACT,MAAOA,KAAM,EACP07B,EAAGJ,SACLI,EAAG5L,KAAK8L,GAGVF,EAAGhD,OAAO,EAEd,CAEA,IAAK,IAAIjO,EAAI,EAAG8Q,EAAK,EAAyB,KAArB7wB,EAAEge,MAAM,GAAK6S,IAAa9Q,EAAI,KAAMA,EAAG8Q,IAAO,GACvE,GAAI9Q,EAAI,EAAG,CACT/f,EAAEguB,OAAOjO,GACT,MAAOA,KAAM,EACPkR,EAAGL,SACLK,EAAG7L,KAAK8L,GAGVD,EAAGjD,OAAO,EAEd,CAEIn3B,EAAE2oB,IAAIxf,IAAM,GACdnJ,EAAEwuB,KAAKrlB,GACPgxB,EAAG3L,KAAK4L,KAERjxB,EAAEqlB,KAAKxuB,GACPo6B,EAAG5L,KAAK2L,GAEZ,CAaA,OATE/N,EADgB,IAAdpsB,EAAEs6B,KAAK,GACHH,EAEAC,EAGJhO,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAK3uB,GAGJwsB,CACT,EAEAvF,EAAGnnB,UAAUu6B,IAAM,SAAc1R,GAC/B,GAAItlB,KAAK4nB,SAAU,OAAOtC,EAAIwE,MAC9B,GAAIxE,EAAIsC,SAAU,OAAO5nB,KAAK8pB,MAE9B,IAAI/sB,EAAIiD,KAAK8mB,QACT5gB,EAAIof,EAAIwB,QACZ/pB,EAAEknB,SAAW,EACb/d,EAAE+d,SAAW,EAGb,IAAK,IAAInc,EAAQ,EAAG/K,EAAE25B,UAAYxwB,EAAEwwB,SAAU5uB,IAC5C/K,EAAEm3B,OAAO,GACThuB,EAAEguB,OAAO,GAGX,EAAG,CACD,MAAOn3B,EAAE25B,SACP35B,EAAEm3B,OAAO,GAEX,MAAOhuB,EAAEwwB,SACPxwB,EAAEguB,OAAO,GAGX,IAAI74B,EAAI0B,EAAE2oB,IAAIxf,GACd,GAAI7K,EAAI,EAAG,CAET,IAAIH,EAAI6B,EACRA,EAAImJ,EACJA,EAAIhL,CACN,MAAO,GAAU,IAANG,GAAyB,IAAd6K,EAAEmxB,KAAK,GAC3B,MAGFt6B,EAAEwuB,KAAKrlB,EACT,OAAS,GAET,OAAOA,EAAE2tB,OAAO/rB,EAClB,EAGA8b,EAAGnnB,UAAU66B,KAAO,SAAehS,GACjC,OAAOtlB,KAAKq2B,KAAK/Q,GAAKvoB,EAAE84B,KAAKvQ,EAC/B,EAEA1B,EAAGnnB,UAAUi6B,OAAS,WACpB,OAA+B,KAAP,EAAhB12B,KAAKkkB,MAAM,GACrB,EAEAN,EAAGnnB,UAAUq6B,MAAQ,WACnB,OAA+B,KAAP,EAAhB92B,KAAKkkB,MAAM,GACrB,EAGAN,EAAGnnB,UAAUy5B,MAAQ,SAAgB5Q,GACnC,OAAOtlB,KAAKkkB,MAAM,GAAKoB,CACzB,EAGA1B,EAAGnnB,UAAU86B,MAAQ,SAAgB9O,GACnCrF,EAAsB,kBAARqF,GACd,IAAIptB,EAAIotB,EAAM,GACV7rB,GAAK6rB,EAAMptB,GAAK,GAChBu4B,EAAI,GAAKv4B,EAGb,GAAI2E,KAAKhD,QAAUJ,EAGjB,OAFAoD,KAAK+mB,QAAQnqB,EAAI,GACjBoD,KAAKkkB,MAAMtnB,IAAMg3B,EACV5zB,KAKT,IADA,IAAIynB,EAAQmM,EACHp4B,EAAIoB,EAAa,IAAV6qB,GAAejsB,EAAIwE,KAAKhD,OAAQxB,IAAK,CACnD,IAAI2G,EAAoB,EAAhBnC,KAAKkkB,MAAM1oB,GACnB2G,GAAKslB,EACLA,EAAQtlB,IAAM,GACdA,GAAK,SACLnC,KAAKkkB,MAAM1oB,GAAK2G,CAClB,CAKA,OAJc,IAAVslB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,UAEAgD,IACT,EAEA4jB,EAAGnnB,UAAUmrB,OAAS,WACpB,OAAuB,IAAhB5nB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,EACzC,EAEAN,EAAGnnB,UAAU46B,KAAO,SAAe/R,GACjC,IAOI6D,EAPAlF,EAAWqB,EAAM,EAErB,GAAsB,IAAlBtlB,KAAKikB,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBjkB,KAAKikB,UAAkBA,EAAU,OAAO,EAK5C,GAHAjkB,KAAKi7B,QAGDj7B,KAAKhD,OAAS,EAChBmsB,EAAM,MACD,CACDlF,IACFqB,GAAOA,GAGTlC,EAAOkC,GAAO,SAAW,qBAEzB,IAAInjB,EAAoB,EAAhBnC,KAAKkkB,MAAM,GACnBiF,EAAMhnB,IAAMmjB,EAAM,EAAInjB,EAAImjB,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlBtlB,KAAKikB,SAA8B,GAANkF,EAC1BA,CACT,EAMAvF,EAAGnnB,UAAUipB,IAAM,SAAcJ,GAC/B,GAAsB,IAAlBtlB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAAgB,OAAQ,EACvD,GAAsB,IAAlBjkB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAAgB,OAAO,EAEtD,IAAIkF,EAAMnpB,KAAKw3B,KAAKlS,GACpB,OAAsB,IAAlBtlB,KAAKikB,SAA8B,GAANkF,EAC1BA,CACT,EAGAvF,EAAGnnB,UAAU+6B,KAAO,SAAelS,GAEjC,GAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAQ,OAAO,EACrC,GAAIgD,KAAKhD,OAASsoB,EAAItoB,OAAQ,OAAQ,EAGtC,IADA,IAAImsB,EAAM,EACD3tB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CACzC,IAAIuB,EAAoB,EAAhBiD,KAAKkkB,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM1oB,GAElB,GAAIuB,IAAMmJ,EAAV,CACInJ,EAAImJ,EACNijB,GAAO,EACEpsB,EAAImJ,IACbijB,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAvF,EAAGnnB,UAAUg7B,IAAM,SAAcnS,GAC/B,OAA0B,IAAnBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUi7B,GAAK,SAAapS,GAC7B,OAAyB,IAAlBtlB,KAAK0lB,IAAIJ,EAClB,EAEA1B,EAAGnnB,UAAUk7B,KAAO,SAAerS,GACjC,OAAOtlB,KAAKq3B,KAAK/R,IAAQ,CAC3B,EAEA1B,EAAGnnB,UAAUm7B,IAAM,SAActS,GAC/B,OAAOtlB,KAAK0lB,IAAIJ,IAAQ,CAC1B,EAEA1B,EAAGnnB,UAAUo7B,IAAM,SAAcvS,GAC/B,OAA2B,IAApBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUq7B,GAAK,SAAaxS,GAC7B,OAA0B,IAAnBtlB,KAAK0lB,IAAIJ,EAClB,EAEA1B,EAAGnnB,UAAUs7B,KAAO,SAAezS,GACjC,OAAOtlB,KAAKq3B,KAAK/R,IAAQ,CAC3B,EAEA1B,EAAGnnB,UAAUu7B,IAAM,SAAc1S,GAC/B,OAAOtlB,KAAK0lB,IAAIJ,IAAQ,CAC1B,EAEA1B,EAAGnnB,UAAUw7B,IAAM,SAAc3S,GAC/B,OAA0B,IAAnBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUy7B,GAAK,SAAa5S,GAC7B,OAAyB,IAAlBtlB,KAAK0lB,IAAIJ,EAClB,EAMA1B,EAAGO,IAAM,SAAcmB,GACrB,OAAO,IAAI6S,EAAI7S,EACjB,EAEA1B,EAAGnnB,UAAU27B,MAAQ,SAAgBC,GAGnC,OAFAjV,GAAQpjB,KAAKmkB,IAAK,yCAClBf,EAAyB,IAAlBpjB,KAAKikB,SAAgB,iCACrBoU,EAAIC,UAAUt4B,MAAMu4B,UAAUF,EACvC,EAEAzU,EAAGnnB,UAAU+7B,QAAU,WAErB,OADApV,EAAOpjB,KAAKmkB,IAAK,wDACVnkB,KAAKmkB,IAAIsU,YAAYz4B,KAC9B,EAEA4jB,EAAGnnB,UAAU87B,UAAY,SAAoBF,GAE3C,OADAr4B,KAAKmkB,IAAMkU,EACJr4B,IACT,EAEA4jB,EAAGnnB,UAAUi8B,SAAW,SAAmBL,GAEzC,OADAjV,GAAQpjB,KAAKmkB,IAAK,yCACXnkB,KAAKu4B,UAAUF,EACxB,EAEAzU,EAAGnnB,UAAUk8B,OAAS,SAAiBrT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAIrU,IAAI9P,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUm8B,QAAU,SAAkBtT,GAEvC,OADAlC,EAAOpjB,KAAKmkB,IAAK,uCACVnkB,KAAKmkB,IAAImH,KAAKtrB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAUo8B,OAAS,SAAiBvT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAIqH,IAAIxrB,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUq8B,QAAU,SAAkBxT,GAEvC,OADAlC,EAAOpjB,KAAKmkB,IAAK,uCACVnkB,KAAKmkB,IAAIoH,KAAKvrB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAUs8B,OAAS,SAAiBzT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAI6U,IAAIh5B,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUw8B,OAAS,SAAiB3T,GAGrC,OAFAlC,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAI+U,SAASl5B,KAAMslB,GACjBtlB,KAAKmkB,IAAIY,IAAI/kB,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAU08B,QAAU,SAAkB7T,GAGvC,OAFAlC,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAI+U,SAASl5B,KAAMslB,GACjBtlB,KAAKmkB,IAAIoL,KAAKvvB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAU28B,OAAS,WAGpB,OAFAhW,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIuP,IAAI1zB,KACtB,EAEA4jB,EAAGnnB,UAAU68B,QAAU,WAGrB,OAFAlW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIwP,KAAK3zB,KACvB,EAGA4jB,EAAGnnB,UAAU88B,QAAU,WAGrB,OAFAnW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIqV,KAAKx5B,KACvB,EAEA4jB,EAAGnnB,UAAUg9B,QAAU,WAGrB,OAFArW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAImT,KAAKt3B,KACvB,EAGA4jB,EAAGnnB,UAAUi9B,OAAS,WAGpB,OAFAtW,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAImG,IAAItqB,KACtB,EAEA4jB,EAAGnnB,UAAUk9B,OAAS,SAAiBrU,GAGrC,OAFAlC,EAAOpjB,KAAKmkB,MAAQmB,EAAInB,IAAK,qBAC7BnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIwC,IAAI3mB,KAAMslB,EAC5B,EAGA,IAAIsU,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQnuB,EAAMnP,GAErBqD,KAAK8L,KAAOA,EACZ9L,KAAKrD,EAAI,IAAIinB,EAAGjnB,EAAG,IACnBqD,KAAK5E,EAAI4E,KAAKrD,EAAE6rB,YAChBxoB,KAAKgjB,EAAI,IAAIY,EAAG,GAAGiQ,OAAO7zB,KAAK5E,GAAGmwB,KAAKvrB,KAAKrD,GAE5CqD,KAAKk6B,IAAMl6B,KAAKm6B,MAClB,CAgDA,SAASC,IACPH,EAAOv+B,KACLsE,KACA,OACA,0EACJ,CA8DA,SAASq6B,IACPJ,EAAOv+B,KACLsE,KACA,OACA,iEACJ,CAGA,SAASs6B,IACPL,EAAOv+B,KACLsE,KACA,OACA,wDACJ,CAGA,SAASu6B,IAEPN,EAAOv+B,KACLsE,KACA,QACA,sEACJ,CA6CA,SAASm4B,EAAKx8B,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI6+B,EAAQ5W,EAAG6W,OAAO9+B,GACtBqE,KAAKrE,EAAI6+B,EAAM79B,EACfqD,KAAKw6B,MAAQA,CACf,MACEpX,EAAOznB,EAAE87B,IAAI,GAAI,kCACjBz3B,KAAKrE,EAAIA,EACTqE,KAAKw6B,MAAQ,IAEjB,CAgOA,SAASE,EAAM/+B,GACbw8B,EAAIz8B,KAAKsE,KAAMrE,GAEfqE,KAAK8H,MAAQ9H,KAAKrE,EAAE6sB,YAChBxoB,KAAK8H,MAAQ,KAAO,IACtB9H,KAAK8H,OAAS,GAAM9H,KAAK8H,MAAQ,IAGnC9H,KAAK3E,EAAI,IAAIuoB,EAAG,GAAGiQ,OAAO7zB,KAAK8H,OAC/B9H,KAAKi2B,GAAKj2B,KAAK26B,KAAK36B,KAAK3E,EAAEq4B,OAC3B1zB,KAAK46B,KAAO56B,KAAK3E,EAAE47B,OAAOj3B,KAAKrE,GAE/BqE,KAAK66B,KAAO76B,KAAK46B,KAAK7V,IAAI/kB,KAAK3E,GAAGy5B,MAAM,GAAGW,IAAIz1B,KAAKrE,GACpDqE,KAAK66B,KAAO76B,KAAK66B,KAAKhF,KAAK71B,KAAK3E,GAChC2E,KAAK66B,KAAO76B,KAAK3E,EAAEmwB,IAAIxrB,KAAK66B,KAC9B,CA7aAZ,EAAOx9B,UAAU09B,KAAO,WACtB,IAAID,EAAM,IAAItW,EAAG,MAEjB,OADAsW,EAAIhW,MAAQ,IAAIjkB,MAAMglB,KAAKe,KAAKhmB,KAAK5E,EAAI,KAClC8+B,CACT,EAEAD,EAAOx9B,UAAUq+B,QAAU,SAAkBxV,GAG3C,IACIyV,EADA1/B,EAAIiqB,EAGR,GACEtlB,KAAKgL,MAAM3P,EAAG2E,KAAKk6B,KACnB7+B,EAAI2E,KAAKg7B,MAAM3/B,GACfA,EAAIA,EAAEiwB,KAAKtrB,KAAKk6B,KAChBa,EAAO1/B,EAAEmtB,kBACFuS,EAAO/6B,KAAK5E,GAErB,IAAIsqB,EAAMqV,EAAO/6B,KAAK5E,GAAK,EAAIC,EAAEm8B,KAAKx3B,KAAKrD,GAgB3C,OAfY,IAAR+oB,GACFrqB,EAAE6oB,MAAM,GAAK,EACb7oB,EAAE2B,OAAS,GACF0oB,EAAM,EACfrqB,EAAEkwB,KAAKvrB,KAAKrD,QAEI+T,IAAZrV,EAAE4/B,MAEJ5/B,EAAE4/B,QAGF5/B,EAAE6qB,SAIC7qB,CACT,EAEA4+B,EAAOx9B,UAAUuO,MAAQ,SAAgB6I,EAAO2T,GAC9C3T,EAAMqgB,OAAOl0B,KAAK5E,EAAG,EAAGosB,EAC1B,EAEAyS,EAAOx9B,UAAUu+B,MAAQ,SAAgB1V,GACvC,OAAOA,EAAIiK,KAAKvvB,KAAKgjB,EACvB,EAQAO,EAAS6W,EAAMH,GAEfG,EAAK39B,UAAUuO,MAAQ,SAAgB6I,EAAOqnB,GAK5C,IAHA,IAAI7G,EAAO,QAEP8G,EAASlW,KAAKC,IAAIrR,EAAM7W,OAAQ,GAC3BxB,EAAI,EAAGA,EAAI2/B,EAAQ3/B,IAC1B0/B,EAAOhX,MAAM1oB,GAAKqY,EAAMqQ,MAAM1oB,GAIhC,GAFA0/B,EAAOl+B,OAASm+B,EAEZtnB,EAAM7W,QAAU,EAGlB,OAFA6W,EAAMqQ,MAAM,GAAK,OACjBrQ,EAAM7W,OAAS,GAKjB,IAAI+W,EAAOF,EAAMqQ,MAAM,GAGvB,IAFAgX,EAAOhX,MAAMgX,EAAOl+B,UAAY+W,EAAOsgB,EAElC74B,EAAI,GAAIA,EAAIqY,EAAM7W,OAAQxB,IAAK,CAClC,IAAIsL,EAAwB,EAAjB+M,EAAMqQ,MAAM1oB,GACvBqY,EAAMqQ,MAAM1oB,EAAI,KAAQsL,EAAOutB,IAAS,EAAMtgB,IAAS,GACvDA,EAAOjN,CACT,CACAiN,KAAU,GACVF,EAAMqQ,MAAM1oB,EAAI,IAAMuY,EACT,IAATA,GAAcF,EAAM7W,OAAS,GAC/B6W,EAAM7W,QAAU,GAEhB6W,EAAM7W,QAAU,CAEpB,EAEAo9B,EAAK39B,UAAUu+B,MAAQ,SAAgB1V,GAErCA,EAAIpB,MAAMoB,EAAItoB,QAAU,EACxBsoB,EAAIpB,MAAMoB,EAAItoB,OAAS,GAAK,EAC5BsoB,EAAItoB,QAAU,EAId,IADA,IAAI6rB,EAAK,EACArtB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CACnC,IAAI2G,EAAmB,EAAfmjB,EAAIpB,MAAM1oB,GAClBqtB,GAAU,IAAJ1mB,EACNmjB,EAAIpB,MAAM1oB,GAAU,SAALqtB,EACfA,EAAS,GAAJ1mB,GAAa0mB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BvD,EAAIpB,MAAMoB,EAAItoB,OAAS,KACzBsoB,EAAItoB,SAC8B,IAA9BsoB,EAAIpB,MAAMoB,EAAItoB,OAAS,IACzBsoB,EAAItoB,UAGDsoB,CACT,EAQA/B,EAAS8W,EAAMJ,GAQf1W,EAAS+W,EAAML,GASf1W,EAASgX,EAAQN,GAEjBM,EAAO99B,UAAUu+B,MAAQ,SAAgB1V,GAGvC,IADA,IAAImC,EAAQ,EACHjsB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CACnC,IAAImuB,EAA0B,IAAL,EAAfrE,EAAIpB,MAAM1oB,IAAiBisB,EACjCoB,EAAU,SAALc,EACTA,KAAQ,GAERrE,EAAIpB,MAAM1oB,GAAKqtB,EACfpB,EAAQkC,CACV,CAIA,OAHc,IAAVlC,IACFnC,EAAIpB,MAAMoB,EAAItoB,UAAYyqB,GAErBnC,CACT,EAGA1B,EAAG6W,OAAS,SAAgB3uB,GAE1B,GAAI8tB,EAAO9tB,GAAO,OAAO8tB,EAAO9tB,GAEhC,IAAI0uB,EACJ,GAAa,SAAT1uB,EACF0uB,EAAQ,IAAIJ,OACP,GAAa,SAATtuB,EACT0uB,EAAQ,IAAIH,OACP,GAAa,SAATvuB,EACT0uB,EAAQ,IAAIF,MACP,IAAa,WAATxuB,EAGT,MAAM,IAAI5I,MAAM,iBAAmB4I,GAFnC0uB,EAAQ,IAAID,CAGd,CAGA,OAFAX,EAAO9tB,GAAQ0uB,EAERA,CACT,EAiBArC,EAAI17B,UAAU48B,SAAW,SAAmBt8B,GAC1CqmB,EAAsB,IAAfrmB,EAAEknB,SAAgB,iCACzBb,EAAOrmB,EAAEonB,IAAK,kCAChB,EAEAgU,EAAI17B,UAAUy8B,SAAW,SAAmBn8B,EAAGmJ,GAC7Ckd,EAAqC,KAA7BrmB,EAAEknB,SAAW/d,EAAE+d,UAAiB,iCACxCb,EAAOrmB,EAAEonB,KAAOpnB,EAAEonB,MAAQje,EAAEie,IAC1B,kCACJ,EAEAgU,EAAI17B,UAAUk+B,KAAO,SAAe59B,GAClC,OAAIiD,KAAKw6B,MAAcx6B,KAAKw6B,MAAMM,QAAQ/9B,GAAGw7B,UAAUv4B,MAChDjD,EAAE84B,KAAK71B,KAAKrE,GAAG48B,UAAUv4B,KAClC,EAEAm4B,EAAI17B,UAAU6tB,IAAM,SAAcvtB,GAChC,OAAIA,EAAE6qB,SACG7qB,EAAE+pB,QAGJ9mB,KAAKrE,EAAE6vB,IAAIzuB,GAAGw7B,UAAUv4B,KACjC,EAEAm4B,EAAI17B,UAAUqT,IAAM,SAAc/S,EAAGmJ,GACnClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAE+S,IAAI5J,GAIhB,OAHIijB,EAAIzD,IAAI1lB,KAAKrE,IAAM,GACrBwtB,EAAIoC,KAAKvrB,KAAKrE,GAETwtB,EAAIoP,UAAUv4B,KACvB,EAEAm4B,EAAI17B,UAAU6uB,KAAO,SAAevuB,EAAGmJ,GACrClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEuuB,KAAKplB,GAIjB,OAHIijB,EAAIzD,IAAI1lB,KAAKrE,IAAM,GACrBwtB,EAAIoC,KAAKvrB,KAAKrE,GAETwtB,CACT,EAEAgP,EAAI17B,UAAU+uB,IAAM,SAAczuB,EAAGmJ,GACnClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEyuB,IAAItlB,GAIhB,OAHIijB,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAKtrB,KAAKrE,GAETwtB,EAAIoP,UAAUv4B,KACvB,EAEAm4B,EAAI17B,UAAU8uB,KAAO,SAAexuB,EAAGmJ,GACrClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEwuB,KAAKrlB,GAIjB,OAHIijB,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAKtrB,KAAKrE,GAETwtB,CACT,EAEAgP,EAAI17B,UAAUu8B,IAAM,SAAcj8B,EAAGuoB,GAEnC,OADAtlB,KAAKq5B,SAASt8B,GACPiD,KAAK26B,KAAK59B,EAAE03B,MAAMnP,GAC3B,EAEA6S,EAAI17B,UAAU8yB,KAAO,SAAexyB,EAAGmJ,GAErC,OADAlG,KAAKk5B,SAASn8B,EAAGmJ,GACVlG,KAAK26B,KAAK59B,EAAEwyB,KAAKrpB,GAC1B,EAEAiyB,EAAI17B,UAAUsoB,IAAM,SAAchoB,EAAGmJ,GAEnC,OADAlG,KAAKk5B,SAASn8B,EAAGmJ,GACVlG,KAAK26B,KAAK59B,EAAEgoB,IAAI7e,GACzB,EAEAiyB,EAAI17B,UAAUk3B,KAAO,SAAe52B,GAClC,OAAOiD,KAAKuvB,KAAKxyB,EAAGA,EAAE+pB,QACxB,EAEAqR,EAAI17B,UAAUi3B,IAAM,SAAc32B,GAChC,OAAOiD,KAAK+kB,IAAIhoB,EAAGA,EACrB,EAEAo7B,EAAI17B,UAAU+8B,KAAO,SAAez8B,GAClC,GAAIA,EAAE6qB,SAAU,OAAO7qB,EAAE+pB,QAEzB,IAAIsU,EAAOp7B,KAAKrE,EAAEu6B,MAAM,GAIxB,GAHA9S,EAAOgY,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIzU,EAAM3mB,KAAKrE,EAAEmU,IAAI,IAAI8T,EAAG,IAAIsQ,OAAO,GACvC,OAAOl0B,KAAK2mB,IAAI5pB,EAAG4pB,EACrB,CAKA,IAAIiN,EAAI5zB,KAAKrE,EAAEq5B,KAAK,GAChBp4B,EAAI,EACR,OAAQg3B,EAAEhM,UAA2B,IAAfgM,EAAEsC,MAAM,GAC5Bt5B,IACAg3B,EAAEM,OAAO,GAEX9Q,GAAQwQ,EAAEhM,UAEV,IAAIyT,EAAM,IAAIzX,EAAG,GAAGwU,MAAMp4B,MACtBs7B,EAAOD,EAAI3B,SAIX6B,EAAOv7B,KAAKrE,EAAEq5B,KAAK,GAAGd,OAAO,GAC7BsH,EAAIx7B,KAAKrE,EAAE6sB,YACfgT,EAAI,IAAI5X,EAAG,EAAI4X,EAAIA,GAAGpD,MAAMp4B,MAE5B,MAAuC,IAAhCA,KAAK2mB,IAAI6U,EAAGD,GAAM7V,IAAI4V,GAC3BE,EAAE5C,QAAQ0C,GAGZ,IAAI1/B,EAAIoE,KAAK2mB,IAAI6U,EAAG5H,GAChBv4B,EAAI2E,KAAK2mB,IAAI5pB,EAAG62B,EAAEmB,KAAK,GAAGb,OAAO,IACjCh5B,EAAI8E,KAAK2mB,IAAI5pB,EAAG62B,GAChBj4B,EAAIiB,EACR,MAAsB,IAAf1B,EAAEwqB,IAAI2V,GAAY,CAEvB,IADA,IAAInB,EAAMh/B,EACDM,EAAI,EAAoB,IAAjB0+B,EAAIxU,IAAI2V,GAAY7/B,IAClC0+B,EAAMA,EAAId,SAEZhW,EAAO5nB,EAAIG,GACX,IAAIuK,EAAIlG,KAAK2mB,IAAI/qB,EAAG,IAAIgoB,EAAG,GAAGiQ,OAAOl4B,EAAIH,EAAI,IAE7CH,EAAIA,EAAE49B,OAAO/yB,GACbtK,EAAIsK,EAAEkzB,SACNl+B,EAAIA,EAAE+9B,OAAOr9B,GACbD,EAAIH,CACN,CAEA,OAAOH,CACT,EAEA88B,EAAI17B,UAAU66B,KAAO,SAAev6B,GAClC,IAAI0+B,EAAM1+B,EAAEk6B,OAAOj3B,KAAKrE,GACxB,OAAqB,IAAjB8/B,EAAIxX,UACNwX,EAAIxX,SAAW,EACRjkB,KAAK26B,KAAKc,GAAK/B,UAEf15B,KAAK26B,KAAKc,EAErB,EAEAtD,EAAI17B,UAAUkqB,IAAM,SAAc5pB,EAAGuoB,GACnC,GAAIA,EAAIsC,SAAU,OAAO,IAAIhE,EAAG,GAAGwU,MAAMp4B,MACzC,GAAoB,IAAhBslB,EAAI+R,KAAK,GAAU,OAAOt6B,EAAE+pB,QAEhC,IAAI4U,EAAa,EACbC,EAAM,IAAI17B,MAAM,GAAKy7B,GACzBC,EAAI,GAAK,IAAI/X,EAAG,GAAGwU,MAAMp4B,MACzB27B,EAAI,GAAK5+B,EACT,IAAK,IAAIvB,EAAI,EAAGA,EAAImgC,EAAI3+B,OAAQxB,IAC9BmgC,EAAIngC,GAAKwE,KAAK+kB,IAAI4W,EAAIngC,EAAI,GAAIuB,GAGhC,IAAIosB,EAAMwS,EAAI,GACVC,EAAU,EACVC,EAAa,EACbhX,EAAQS,EAAIkD,YAAc,GAK9B,IAJc,IAAV3D,IACFA,EAAQ,IAGLrpB,EAAI8pB,EAAItoB,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIgrB,EAAOlB,EAAIpB,MAAM1oB,GACZyqB,EAAIpB,EAAQ,EAAGoB,GAAK,EAAGA,IAAK,CACnC,IAAIwC,EAAOjC,GAAQP,EAAK,EACpBkD,IAAQwS,EAAI,KACdxS,EAAMnpB,KAAK0zB,IAAIvK,IAGL,IAARV,GAAyB,IAAZmT,GAKjBA,IAAY,EACZA,GAAWnT,EACXoT,KACIA,IAAeH,GAAqB,IAANlgC,GAAiB,IAANyqB,KAE7CkD,EAAMnpB,KAAK+kB,IAAIoE,EAAKwS,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAhX,EAAQ,EACV,CAEA,OAAOsE,CACT,EAEAgP,EAAI17B,UAAU67B,UAAY,SAAoBhT,GAC5C,IAAIjqB,EAAIiqB,EAAIuQ,KAAK71B,KAAKrE,GAEtB,OAAON,IAAMiqB,EAAMjqB,EAAEyrB,QAAUzrB,CACjC,EAEA88B,EAAI17B,UAAUg8B,YAAc,SAAsBnT,GAChD,IAAI6D,EAAM7D,EAAIwB,QAEd,OADAqC,EAAIhF,IAAM,KACHgF,CACT,EAMAvF,EAAGkY,KAAO,SAAexW,GACvB,OAAO,IAAIoV,EAAKpV,EAClB,EAkBA/B,EAASmX,EAAMvC,GAEfuC,EAAKj+B,UAAU67B,UAAY,SAAoBhT,GAC7C,OAAOtlB,KAAK26B,KAAKrV,EAAImP,MAAMz0B,KAAK8H,OAClC,EAEA4yB,EAAKj+B,UAAUg8B,YAAc,SAAsBnT,GACjD,IAAIjqB,EAAI2E,KAAK26B,KAAKrV,EAAIP,IAAI/kB,KAAK46B,OAE/B,OADAv/B,EAAE8oB,IAAM,KACD9oB,CACT,EAEAq/B,EAAKj+B,UAAU8yB,KAAO,SAAexyB,EAAGmJ,GACtC,GAAInJ,EAAE6qB,UAAY1hB,EAAE0hB,SAGlB,OAFA7qB,EAAEmnB,MAAM,GAAK,EACbnnB,EAAEC,OAAS,EACJD,EAGT,IAAI7B,EAAI6B,EAAEwyB,KAAKrpB,GACXtK,EAAIV,EAAE25B,MAAM70B,KAAK8H,OAAOid,IAAI/kB,KAAK66B,MAAMjG,OAAO50B,KAAK8H,OAAOid,IAAI/kB,KAAKrE,GACnEmB,EAAI5B,EAAEqwB,KAAK3vB,GAAGs4B,OAAOl0B,KAAK8H,OAC1BqhB,EAAMrsB,EAQV,OANIA,EAAE4oB,IAAI1lB,KAAKrE,IAAM,EACnBwtB,EAAMrsB,EAAEyuB,KAAKvrB,KAAKrE,GACTmB,EAAEu6B,KAAK,GAAK,IACrBlO,EAAMrsB,EAAEwuB,KAAKtrB,KAAKrE,IAGbwtB,EAAIoP,UAAUv4B,KACvB,EAEA06B,EAAKj+B,UAAUsoB,IAAM,SAAchoB,EAAGmJ,GACpC,GAAInJ,EAAE6qB,UAAY1hB,EAAE0hB,SAAU,OAAO,IAAIhE,EAAG,GAAG2U,UAAUv4B,MAEzD,IAAI9E,EAAI6B,EAAEgoB,IAAI7e,GACVtK,EAAIV,EAAE25B,MAAM70B,KAAK8H,OAAOid,IAAI/kB,KAAK66B,MAAMjG,OAAO50B,KAAK8H,OAAOid,IAAI/kB,KAAKrE,GACnEmB,EAAI5B,EAAEqwB,KAAK3vB,GAAGs4B,OAAOl0B,KAAK8H,OAC1BqhB,EAAMrsB,EAOV,OANIA,EAAE4oB,IAAI1lB,KAAKrE,IAAM,EACnBwtB,EAAMrsB,EAAEyuB,KAAKvrB,KAAKrE,GACTmB,EAAEu6B,KAAK,GAAK,IACrBlO,EAAMrsB,EAAEwuB,KAAKtrB,KAAKrE,IAGbwtB,EAAIoP,UAAUv4B,KACvB,EAEA06B,EAAKj+B,UAAU66B,KAAO,SAAev6B,GAEnC,IAAIosB,EAAMnpB,KAAK26B,KAAK59B,EAAEk6B,OAAOj3B,KAAKrE,GAAGopB,IAAI/kB,KAAKi2B,KAC9C,OAAO9M,EAAIoP,UAAUv4B,KACvB,CACD,CAr3GD,CAq3GoCmjB,EAAQnjB,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC50G3C,IAAI8kD,EAAU,WAKb,IAKIC,EAAOC,EALPC,GAAa,EAUjB,SAASC,IACPH,EAAQ,GACNC,EAAQ,GAEV,IAAWppD,EAAGC,EAAVkB,EAAI,EACR,IAAKnB,EAAI,EAAGA,EAAI,IAAKA,IACnBmpD,EAAMnpD,GAAKmB,EAGXlB,EAAQ,IAAJkB,EAAUA,IAAM,EAAGA,GAAK,IAClB,MAANlB,IAAYkB,GAAK,IACrBA,GAAKgoD,EAAMnpD,GAGXopD,EAAMD,EAAMnpD,IAAMA,EAEpBmpD,EAAM,KAAOA,EAAM,GACnBC,EAAM,GAAK,EAEXC,GAAa,CACf,CAQA,SAASE,EAAKpoD,EAAGmJ,GACf,IAAItK,EAAImpD,GAAOC,EAAMjoD,GAAKioD,EAAM9+C,IAAM,KAEtC,OADU,IAANnJ,GAAiB,IAANmJ,IAAStK,EAAI,GACrBA,CACT,CAOA,SAASwpD,EAAKroD,GACZ,IAAIvB,EAAIupD,EAAM,IAAMC,EAAMjoD,IAE1B,OADU,IAANA,IAASvB,EAAI,GACVA,CACT,CAKA,IAOI6pD,EAKAC,EAKAC,EAKAC,EAtBAC,GAAgB,EA2BpB,SAASC,IAIP,SAASC,EAAG5oD,GACV,IAAInB,EAAGgB,EAAG8W,EAEV,IADA9W,EAAI8W,EAAI0xC,EAAKroD,GACRnB,EAAI,EAAGA,EAAI,EAAGA,IACjBgB,EAA6B,KAAvBA,GAAK,EAAMA,IAAM,GACvB8W,GAAK9W,EAGP,OADA8W,GAAK,GACEA,CACT,CAZKuxC,GAAYC,IAejBG,EAAW,GACTC,EAAW,GACXC,EAAU,CAAC,GAAI,GAAI,GAAI,IACvBC,EAAU,CAAC,GAAI,GAAI,GAAI,IAEzB,IAAK,IAAIhqD,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5B,IAAIoB,EAAI+oD,EAAGnqD,GAGX6pD,EAAS7pD,GAAKoB,EACd0oD,EAAS1oD,GAAKpB,EAGd+pD,EAAQ,GAAG/pD,GAAM2pD,EAAK,EAAGvoD,IAAM,GAAOA,GAAK,GAAOA,GAAK,EAAKuoD,EAAK,EAAGvoD,GACpE4oD,EAAQ,GAAG5oD,GAAMuoD,EAAK,GAAI3pD,IAAM,GAAO2pD,EAAK,EAAG3pD,IAAM,GAAO2pD,EAAK,GAAI3pD,IAAM,EAAK2pD,EAAK,GAAI3pD,GAEzF,IAAK,IAAIN,EAAI,EAAGA,EAAI,EAAGA,IACrBqqD,EAAQrqD,GAAGM,GAAM+pD,EAAQrqD,EAAI,GAAGM,KAAO,EAAM+pD,EAAQrqD,EAAI,GAAGM,IAAM,GAClEgqD,EAAQtqD,GAAG0B,GAAM4oD,EAAQtqD,EAAI,GAAG0B,KAAO,EAAM4oD,EAAQtqD,EAAI,GAAG0B,IAAM,EAEtE,CAEA6oD,GAAgB,CAClB,CA0BA,IAAIG,EAAU,SAAUC,EAASpoD,GAE1BgoD,GAAeC,IAGpB,IAAII,EAAO,IAAI1J,YAAY3+C,GAC3BqoD,EAAK7lB,IAAIolB,EAAU,KACnBS,EAAK7lB,IAAIqlB,EAAU,KACnB,IAAK,IAAI9pD,EAAI,EAAGA,EAAI,EAAGA,IACrBsqD,EAAK7lB,IAAIslB,EAAQ/pD,GAAK,KAAS,KAAQA,GAAM,GAC7CsqD,EAAK7lB,IAAIulB,EAAQhqD,GAAK,KAAS,KAAQA,GAAM,GAiB/C,SAASuqD,EAAQC,EAAIC,EAAIC,EAAIjjC,EAAIkjC,EAAIC,EAAIC,EAAIC,EAAIC,GAC/C,IAAIC,EAAQV,EAAKtlB,SAAS,EAAO,IAC/BimB,EAAQX,EAAKtlB,SAAS,IAAO,KAG/BgmB,EAAMvmB,IAAI,CAACgmB,EAAIC,EAAIjjC,EAAIkjC,EAAIC,EAAIC,EAAIC,EAAIC,IACvC,IAAK,IAAI/qD,EAAIwqD,EAAIU,EAAO,EAAGlrD,EAAI,EAAIwqD,EAAK,GAAIxqD,IAAK,CAC/C,IAAIwnB,EAAIwjC,EAAMhrD,EAAI,IACbA,EAAIwqD,IAAO,GAAc,IAAPA,GAAYxqD,EAAIwqD,IAAO,KAC5ChjC,EAAIqiC,EAASriC,IAAM,KAAO,GAAKqiC,EAASriC,IAAM,GAAK,MAAQ,GAAKqiC,EAASriC,IAAM,EAAI,MAAQ,EAAIqiC,EAAa,IAAJriC,IAEtGxnB,EAAIwqD,IAAO,IACbhjC,EAAKA,GAAK,EAAMA,IAAM,GAAO0jC,GAAQ,GACrCA,EAAQA,GAAQ,GAAc,IAAPA,EAAe,GAAO,IAE/CF,EAAMhrD,GAAKgrD,EAAMhrD,EAAIwqD,GAAMhjC,CAC7B,CAGA,IAAK,IAAIiD,EAAI,EAAGA,EAAIzqB,EAAGyqB,GAAK,EAC1B,IAAK,IAAI0gC,EAAK,EAAGA,EAAK,EAAGA,IAAM,CACzB3jC,EAAIwjC,EAAMhrD,GAAK,EAAIyqB,IAAM,EAAI0gC,GAAM,GAErCF,EAAMxgC,EAAI0gC,GADR1gC,EAAI,GAAKA,GAAKzqB,EAAI,EACJwnB,EAEAwiC,EAAQ,GAAGH,EAASriC,IAAM,KACtCwiC,EAAQ,GAAGH,EAASriC,IAAM,GAAK,MAC/BwiC,EAAQ,GAAGH,EAASriC,IAAM,EAAI,MAC9BwiC,EAAQ,GAAGH,EAAa,IAAJriC,GAE5B,CAIF4jC,EAAIC,WAAWb,EAAK,EACtB,CAGA,IAAIc,EAAS,CAACjpB,WAAYA,WAAYue,YAAaA,aAE/CwK,EAAM,SAAUE,EAAQjB,EAASpoD,GACnC,UAEA,IAAIspD,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC/BC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC7BC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC7BC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC7BC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC7BC,EAAI,EAEN,IAAIC,EAAO,IAAItB,EAAO1K,YAAY3+C,GAChC4qD,EAAO,IAAIvB,EAAOjpB,WAAWpgC,GAa/B,SAAS6qD,EAAMtlC,EAAGpmB,EAAG1B,EAAGG,EAAGktD,EAAIrxB,EAAIC,EAAIqxB,GACrCxlC,EAAIA,EAAI,EACRpmB,EAAIA,EAAI,EACR1B,EAAIA,EAAI,EACRG,EAAIA,EAAI,EACRktD,EAAKA,EAAK,EACVrxB,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVqxB,EAAKA,EAAK,EAEV,IAAIC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EACvBC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC7BvtD,EAAI,EAENitD,EAAKvtD,EAAI,MAAOwtD,EAAKxtD,EAAI,MAAOytD,EAAKztD,EAAI,MAGzCqtD,EAAKA,EAAKH,GAAMplC,EAAI,IAAM,GACxBkU,EAAKA,EAAKkxB,GAAMplC,EAAI,IAAM,GAC1BmU,EAAKA,EAAKixB,GAAMplC,EAAI,IAAM,GAC1BwlC,EAAKA,EAAKJ,GAAMplC,EAAI,KAAO,GAG7B,IAAKxnB,EAAI,IAAKA,EAAI,IAAOH,GAAK,EAAIG,EAAKA,EAAI,GAAM,EAAG,CAClDotD,EAAKR,GAAMltD,EAAIqtD,GAAM,GAAK,OAAS,GAAKH,GAAMK,EAAKvxB,GAAM,GAAK,OAAS,GAAKkxB,GAAMM,EAAKvxB,GAAM,EAAI,OAAS,GAAKixB,GAAMO,EAAKH,GAAM,EAAI,OAAS,GAAKJ,GAAMplC,EAAIxnB,EAAI,IAAM,GACpKqtD,EAAKT,GAAMltD,EAAIg8B,GAAM,GAAK,OAAS,GAAKkxB,GAAMK,EAAKtxB,GAAM,GAAK,OAAS,GAAKixB,GAAMM,EAAKF,GAAM,EAAI,OAAS,GAAKJ,GAAMO,EAAKJ,GAAM,EAAI,OAAS,GAAKH,GAAMplC,EAAIxnB,EAAI,IAAM,GACtKstD,EAAKV,GAAMltD,EAAIi8B,GAAM,GAAK,OAAS,GAAKixB,GAAMK,EAAKD,GAAM,GAAK,OAAS,GAAKJ,GAAMM,EAAKH,GAAM,EAAI,OAAS,GAAKH,GAAMO,EAAKzxB,GAAM,EAAI,OAAS,GAAKkxB,GAAMplC,EAAIxnB,EAAI,IAAM,GACtKutD,EAAKX,GAAMltD,EAAIstD,GAAM,GAAK,OAAS,GAAKJ,GAAMK,EAAKF,GAAM,GAAK,OAAS,GAAKH,GAAMM,EAAKxxB,GAAM,EAAI,OAAS,GAAKkxB,GAAMO,EAAKxxB,GAAM,EAAI,OAAS,GAAKixB,GAAMplC,EAAIxnB,EAAI,KAAO,GACzK+sD,EAAKK,EAAI1xB,EAAK2xB,EAAI1xB,EAAK2xB,EAAIN,EAAKO,CAClC,CAGAhC,EAAKqB,GAAMxrD,EAAI2rD,GAAM,GAAK,OAAS,IAAM,GAAKH,GAAMxrD,EAAIs6B,GAAM,GAAK,OAAS,IAAM,GAAKkxB,GAAMxrD,EAAIu6B,GAAM,EAAI,OAAS,IAAM,EAAIixB,GAAMxrD,EAAI4rD,GAAM,EAAI,OAAS,GAAKJ,GAAMplC,EAAIxnB,EAAI,IAAM,GAClLwrD,EAAKoB,GAAMxrD,EAAIs6B,GAAM,GAAK,OAAS,IAAM,GAAKkxB,GAAMxrD,EAAIu6B,GAAM,GAAK,OAAS,IAAM,GAAKixB,GAAMxrD,EAAI4rD,GAAM,EAAI,OAAS,IAAM,EAAIJ,GAAMxrD,EAAI2rD,GAAM,EAAI,OAAS,GAAKH,GAAMplC,EAAIxnB,EAAI,IAAM,GACpLyrD,EAAKmB,GAAMxrD,EAAIu6B,GAAM,GAAK,OAAS,IAAM,GAAKixB,GAAMxrD,EAAI4rD,GAAM,GAAK,OAAS,IAAM,GAAKJ,GAAMxrD,EAAI2rD,GAAM,EAAI,OAAS,IAAM,EAAIH,GAAMxrD,EAAIs6B,GAAM,EAAI,OAAS,GAAKkxB,GAAMplC,EAAIxnB,EAAI,IAAM,GACpL0rD,EAAKkB,GAAMxrD,EAAI4rD,GAAM,GAAK,OAAS,IAAM,GAAKJ,GAAMxrD,EAAI2rD,GAAM,GAAK,OAAS,IAAM,GAAKH,GAAMxrD,EAAIs6B,GAAM,EAAI,OAAS,IAAM,EAAIkxB,GAAMxrD,EAAIu6B,GAAM,EAAI,OAAS,GAAKixB,GAAMplC,EAAIxnB,EAAI,KAAO,EACzL,CA4DA,SAASwtD,EAAST,EAAIrxB,EAAIC,EAAIqxB,GAC5BD,EAAKA,EAAK,EACVrxB,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVqxB,EAAKA,EAAK,EAEVF,EACE,OAAQ,OAAQ,OAChBH,EACAhB,EAAKoB,EACLnB,EAAKlwB,EACLmwB,EAAKlwB,EACLmwB,EAAKkB,GAGPrB,EAAKJ,EACHK,EAAKJ,EACLK,EAAKJ,EACLK,EAAKJ,CACT,CASA,SAAS+B,EAASV,EAAIrxB,EAAIC,EAAIqxB,GAC5BD,EAAKA,EAAK,EACVrxB,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVqxB,EAAKA,EAAK,EAEV,IAAIttD,EAAI,EAERotD,EACE,OAAQ,OAAQ,OAChBH,EACAI,EACAC,EACArxB,EACAD,GAGFh8B,EAAI8rD,EAAIA,EAAKE,EAAIA,EAAKhsD,EAEtB6rD,EAAKA,EAAKI,EACRH,EAAKA,EAAKI,EACVH,EAAKA,EAAKI,EACVH,EAAKA,EAAKI,EAEZH,EAAKoB,EACHnB,EAAKlwB,EACLmwB,EAAKlwB,EACLmwB,EAAKkB,CACT,CAyIA,SAASU,EAASX,EAAIrxB,EAAIC,EAAIqxB,GAC5BD,EAAKA,EAAK,EACVrxB,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVqxB,EAAKA,EAAK,EAEV,IAAII,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC/BI,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EAC7B9tD,EAAI,EAAGI,EAAI,EAEb2sD,EAAKA,EAAKpB,EACRjwB,EAAKA,EAAKkwB,EACVjwB,EAAKA,EAAKkwB,EACVmB,EAAKA,EAAKlB,EAEZsB,EAAKb,EAAK,EACRc,EAAKb,EAAK,EACVc,EAAKb,EAAK,EACVc,EAAKb,EAAK,EAEZ,MAAQ1sD,EAAI,GAAK,IAAKA,EAAKA,EAAI,EAAK,EAAG,CACrC,GAAIotD,IAAO,GAAI,CACbO,EAAKA,EAAKZ,EACRa,EAAKA,EAAKlyB,EACVmyB,EAAKA,EAAKlyB,EACVmyB,EAAKA,EAAKd,CACd,CAEAI,EAAMA,GAAM,EAAMC,IAAO,GACvBA,EAAMA,GAAM,EAAMC,IAAO,GACzBA,EAAMA,GAAM,EAAMC,IAAO,GACzBA,EAAMA,GAAM,EAEdntD,EAAI4sD,EAAK,EAETA,EAAMA,IAAO,EAAMrxB,GAAM,GACvBA,EAAMA,IAAO,EAAMD,GAAM,GACzBA,EAAMA,IAAO,EAAMqxB,GAAM,GACzBA,EAAMA,IAAO,EAEf,GAAI3sD,EAAG2sD,EAAKA,EAAK,UACnB,CAEApB,EAAKgC,EACH/B,EAAKgC,EACL/B,EAAKgC,EACL/B,EAAKgC,CACT,CAQA,SAASzC,EAAWxrD,GAClBA,EAAIA,EAAI,EACR8sD,EAAI9sD,CACN,CAWA,SAASkuD,EAAUC,EAAIC,EAAIC,EAAIC,GAC7BH,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EAEV5C,EAAKyC,EACHxC,EAAKyC,EACLxC,EAAKyC,EACLxC,EAAKyC,CACT,CAWA,SAASC,EAAOC,EAAIC,EAAIC,EAAIC,GAC1BH,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EAEV7C,EAAK0C,EACHzC,EAAK0C,EACLzC,EAAK0C,EACLzC,EAAK0C,CACT,CAWA,SAASC,EAAUC,EAAIC,EAAIC,EAAIC,GAC7BH,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EAEV9C,EAAK2C,EACH1C,EAAK2C,EACL1C,EAAK2C,EACL1C,EAAK2C,CACT,CAWA,SAASC,EAASC,EAAIC,EAAIC,EAAIC,GAC5BH,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EAEV/C,EAAK4C,EACH3C,EAAK4C,EACL3C,EAAK4C,EACL3C,EAAK4C,CACT,CAWA,SAASC,EAAYC,EAAIC,EAAIC,EAAIC,GAC/BH,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EACVC,EAAKA,EAAK,EAEVrD,GAAOI,EAAKJ,EAAMI,EAAKiD,EACrBtD,GAAOI,EAAKJ,EAAMI,EAAKiD,EACvBtD,GAAOI,EAAKJ,EAAMI,EAAKiD,EACvBtD,GAAOI,EAAKJ,EAAMI,EAAKiD,CAC3B,CASA,SAASI,EAAUtgB,GACjBA,EAAMA,EAAM,EAEZ,GAAIA,EAAM,GAAI,OAAQ,EAEtB2d,EAAK3d,EAAM,GAAKqc,IAAO,GACrBsB,EAAK3d,EAAM,GAAKqc,IAAO,GAAK,IAC5BsB,EAAK3d,EAAM,GAAKqc,IAAO,EAAI,IAC3BsB,EAAK3d,EAAM,GAAKqc,EAAK,IACrBsB,EAAK3d,EAAM,GAAKsc,IAAO,GACvBqB,EAAK3d,EAAM,GAAKsc,IAAO,GAAK,IAC5BqB,EAAK3d,EAAM,GAAKsc,IAAO,EAAI,IAC3BqB,EAAK3d,EAAM,GAAKsc,EAAK,IACrBqB,EAAK3d,EAAM,GAAKuc,IAAO,GACvBoB,EAAK3d,EAAM,GAAKuc,IAAO,GAAK,IAC5BoB,EAAK3d,EAAM,IAAMuc,IAAO,EAAI,IAC5BoB,EAAK3d,EAAM,IAAMuc,EAAK,IACtBoB,EAAK3d,EAAM,IAAMwc,IAAO,GACxBmB,EAAK3d,EAAM,IAAMwc,IAAO,GAAK,IAC7BmB,EAAK3d,EAAM,IAAMwc,IAAO,EAAI,IAC5BmB,EAAK3d,EAAM,IAAMwc,EAAK,IAExB,OAAO,EACT,CASA,SAAS+D,EAAOvgB,GACdA,EAAMA,EAAM,EAEZ,GAAIA,EAAM,GAAI,OAAQ,EAEtB2d,EAAK3d,EAAM,GAAKyc,IAAO,GACrBkB,EAAK3d,EAAM,GAAKyc,IAAO,GAAK,IAC5BkB,EAAK3d,EAAM,GAAKyc,IAAO,EAAI,IAC3BkB,EAAK3d,EAAM,GAAKyc,EAAK,IACrBkB,EAAK3d,EAAM,GAAK0c,IAAO,GACvBiB,EAAK3d,EAAM,GAAK0c,IAAO,GAAK,IAC5BiB,EAAK3d,EAAM,GAAK0c,IAAO,EAAI,IAC3BiB,EAAK3d,EAAM,GAAK0c,EAAK,IACrBiB,EAAK3d,EAAM,GAAK2c,IAAO,GACvBgB,EAAK3d,EAAM,GAAK2c,IAAO,GAAK,IAC5BgB,EAAK3d,EAAM,IAAM2c,IAAO,EAAI,IAC5BgB,EAAK3d,EAAM,IAAM2c,EAAK,IACtBgB,EAAK3d,EAAM,IAAM4c,IAAO,GACxBe,EAAK3d,EAAM,IAAM4c,IAAO,GAAK,IAC7Be,EAAK3d,EAAM,IAAM4c,IAAO,EAAI,IAC5Be,EAAK3d,EAAM,IAAM4c,EAAK,IAExB,OAAO,EACT,CAwBA,SAAS4D,EAAO91B,EAAMsV,EAAK1lB,GACzBoQ,EAAOA,EAAO,EACdsV,EAAMA,EAAM,EACZ1lB,EAAMA,EAAM,EAEZ,IAAIgD,EAAM,EAEV,GAAI0iB,EAAM,GAAI,OAAQ,EAEtB,OAAQ1lB,EAAM,IAAM,GAAI,CACtBmmC,EAAc/1B,EAAO,GACnBizB,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,EAAI2d,EAAK3d,EAAM,GAC5E2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,EAAI2d,EAAK3d,EAAM,GAC5E2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,KAAO,EAAI2d,EAAK3d,EAAM,IAC7E2d,EAAK3d,EAAM,KAAO,GAAK2d,EAAK3d,EAAM,KAAO,GAAK2d,EAAK3d,EAAM,KAAO,EAAI2d,EAAK3d,EAAM,KAGjF2d,EAAK3d,EAAM,GAAKqc,IAAO,GACrBsB,EAAK3d,EAAM,GAAKqc,IAAO,GAAK,IAC5BsB,EAAK3d,EAAM,GAAKqc,IAAO,EAAI,IAC3BsB,EAAK3d,EAAM,GAAKqc,EAAK,IACrBsB,EAAK3d,EAAM,GAAKsc,IAAO,GACvBqB,EAAK3d,EAAM,GAAKsc,IAAO,GAAK,IAC5BqB,EAAK3d,EAAM,GAAKsc,IAAO,EAAI,IAC3BqB,EAAK3d,EAAM,GAAKsc,EAAK,IACrBqB,EAAK3d,EAAM,GAAKuc,IAAO,GACvBoB,EAAK3d,EAAM,GAAKuc,IAAO,GAAK,IAC5BoB,EAAK3d,EAAM,IAAMuc,IAAO,EAAI,IAC5BoB,EAAK3d,EAAM,IAAMuc,EAAK,IACtBoB,EAAK3d,EAAM,IAAMwc,IAAO,GACxBmB,EAAK3d,EAAM,IAAMwc,IAAO,GAAK,IAC7BmB,EAAK3d,EAAM,IAAMwc,IAAO,EAAI,IAC5BmB,EAAK3d,EAAM,IAAMwc,EAAK,IAExBl/B,EAAOA,EAAM,GAAM,EACjB0iB,EAAOA,EAAM,GAAM,EACnB1lB,EAAOA,EAAM,GAAM,CACvB,CAEA,OAAOgD,EAAM,CACf,CAWA,SAASojC,EAAIh2B,EAAMsV,EAAK1lB,GACtBoQ,EAAOA,EAAO,EACdsV,EAAMA,EAAM,EACZ1lB,EAAMA,EAAM,EAEZ,IAAIgD,EAAM,EAEV,GAAI0iB,EAAM,GAAI,OAAQ,EAEtB,OAAQ1lB,EAAM,IAAM,GAAI,CACtBqmC,EAAWj2B,EAAO,GAChBizB,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,EAAI2d,EAAK3d,EAAM,GAC5E2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,EAAI2d,EAAK3d,EAAM,GAC5E2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,IAAM,GAAK2d,EAAK3d,EAAM,KAAO,EAAI2d,EAAK3d,EAAM,IAC7E2d,EAAK3d,EAAM,KAAO,GAAK2d,EAAK3d,EAAM,KAAO,GAAK2d,EAAK3d,EAAM,KAAO,EAAI2d,EAAK3d,EAAM,KAGjF1iB,EAAOA,EAAM,GAAM,EACjB0iB,EAAOA,EAAM,GAAM,EACnB1lB,EAAOA,EAAM,GAAM,CACvB,CAEA,OAAOgD,EAAM,CACf,CAKA,IAAImjC,EAAgB,CAACnC,EAAUA,EAAUA,EAAUC,EAAUA,EAAUA,EAAUA,EAAUA,GAK3F,IAAIoC,EAAa,CAACrC,EAAUA,GAK5B,MAAO,CACLnC,WAAYA,EACZ0C,UAAWA,EACXK,OAAQA,EACRK,UAAWA,EACXK,SAAUA,EACVK,YAAaA,EACbK,UAAWA,EACXC,OAAQA,EAERC,OAAQA,EACRE,IAAKA,EAET,CA1pBU,CA0pBRtE,EAAQjB,EAASpoD,GAInB,OAFAmpD,EAAIb,QAAUA,EAEPa,CACT,EA6CA,OAtCAhB,EAAQ0F,IAAM,CAEZC,IAAK,GAWL3F,EAAQ4F,IAAM,CAEZD,IAAK,GAWP3F,EAAQ6F,IAAM,CACZF,IAAK,GAST3F,EAAQ8F,UAAY,MAEb9F,CACT,CA36Be,GA66Bf,SAAS+F,EAAW7F,EAAM8F,GACtB,MAAM5kC,EAAO8+B,EAAOA,EAAK78B,WAAa2iC,GAAY,MAClD,GAAW,KAAP5kC,GAAgBA,GAAQ,EACxB,MAAM,IAAI9jB,MAAM,+DAEpB,OADA4iD,EAAOA,GAAQ,IAAIjoB,WAAW,IAAItgC,YAAYypB,IACvC8+B,CACX,CACA,SAAS+F,EAAY/F,EAAMgG,EAAMxrD,EAAMyrD,EAAMC,GACzC,MAAMC,EAAOnG,EAAK9oD,OAAS8uD,EACrBI,EAAOD,EAAOD,EAAOC,EAAOD,EAElC,OADAlG,EAAK7lB,IAAI3/B,EAAKkgC,SAASurB,EAAMA,EAAOG,GAAOJ,GACpCI,CACX,CACA,SAASC,EAASpvD,GACd,OAAOA,aAAa8gC,UACxB,CACA,SAASuuB,KAAaC,GAClB,MAAMC,EAAcD,EAAIv4C,QAAO,CAACy4C,EAAKC,IAASD,EAAMC,EAAKxvD,QAAQ,GAC3DgrB,EAAM,IAAI6V,WAAWyuB,GAC3B,IAAIG,EAAS,EACb,IAAK,IAAIjxD,EAAI,EAAGA,EAAI6wD,EAAIrvD,OAAQxB,IAC5BwsB,EAAIiY,IAAIosB,EAAI7wD,GAAIixD,GAChBA,GAAUJ,EAAI7wD,GAAGwB,OAErB,OAAOgrB,CACX,CAEA,MAAM0kC,EACF,WAAAnmD,CAAY2hC,EAAKykB,EAAIplC,GAAU,EAAM6N,GACjCp1B,KAAK0qC,IAAM,EACX1qC,KAAKglB,IAAM,EACXhlB,KAAKo1B,KAAOA,EAEZp1B,KAAK8lD,KAAO6F,IAAanrB,SAASskB,EAAQ4G,WAC1C1rD,KAAK4mD,IAAM,IAAI9B,EAAQ,KAAM9kD,KAAK8lD,KAAKroD,QAEvCuC,KAAK0qC,IAAM,EACX1qC,KAAKglB,IAAM,EAEX,MAAM4nC,EAAS1kB,EAAIlrC,OACnB,GAAe,KAAX4vD,GAA4B,KAAXA,GAA4B,KAAXA,EAClC,MAAM,IAAIrlD,UAAU,oBACxB,MAAMslD,EAAU,IAAIliB,SAASzC,EAAIzqC,OAAQyqC,EAAIrJ,WAAYqJ,EAAIjf,YAG7D,GAFAjpB,KAAK4mD,IAAIb,QAAQ6G,GAAU,EAAGC,EAAQvI,UAAU,GAAIuI,EAAQvI,UAAU,GAAIuI,EAAQvI,UAAU,GAAIuI,EAAQvI,UAAU,IAAKsI,EAAS,GAAKC,EAAQvI,UAAU,IAAM,EAAGsI,EAAS,GAAKC,EAAQvI,UAAU,IAAM,EAAGsI,EAAS,GAAKC,EAAQvI,UAAU,IAAM,EAAGsI,EAAS,GAAKC,EAAQvI,UAAU,IAAM,QAE7Q5zC,IAAPi8C,EAAkB,CAClB,GAAkB,KAAdA,EAAG3vD,OACH,MAAM,IAAIuK,UAAU,mBACxB,MAAMulD,EAAS,IAAIniB,SAASgiB,EAAGlvD,OAAQkvD,EAAG9tB,WAAY8tB,EAAG1jC,YACzDjpB,KAAK4mD,IAAIgD,OAAOkD,EAAOxI,UAAU,GAAIwI,EAAOxI,UAAU,GAAIwI,EAAOxI,UAAU,GAAIwI,EAAOxI,UAAU,IACpG,MAEItkD,KAAK4mD,IAAIgD,OAAO,EAAG,EAAG,EAAG,GAE7B5pD,KAAKunB,QAAUA,CACnB,CACA,mBAAAwlC,CAAoBzsD,GAChB,IAAK6rD,EAAS7rD,GACV,MAAM,IAAIiH,UAAU,+BACxB,MAAMq/C,EAAM5mD,KAAK4mD,IACXd,EAAO9lD,KAAK8lD,KACZkH,EAAQlI,EAAQwG,IAAItrD,KAAKo1B,MACzB02B,EAAOhH,EAAQ4G,UACrB,IAAIhhB,EAAM1qC,KAAK0qC,IACX1lB,EAAMhlB,KAAKglB,IACX+mC,EAAO,EACPC,EAAO1rD,EAAKtD,QAAU,EACtBiwD,EAAO,EACX,MAAMlyB,EAAQ/V,EAAMgnC,GAAS,GAC7B,IAAIE,EAAO,EACX,MAAMlmD,EAAS,IAAI63B,WAAW9C,GAC9B,MAAOixB,EAAO,EACVE,EAAOL,EAAY/F,EAAMpb,EAAM1lB,EAAK1kB,EAAMyrD,EAAMC,GAChDhnC,GAAOknC,EACPH,GAAQG,EACRF,GAAQE,EACRA,EAAOtF,EAAIsE,OAAO8B,EAAOlB,EAAOphB,EAAK1lB,GACjCknC,GACAlmD,EAAOi6B,IAAI6lB,EAAKtlB,SAASkK,EAAKA,EAAMwhB,GAAOe,GAC/CA,GAAQf,EACJA,EAAOlnC,GACP0lB,GAAOwhB,EACPlnC,GAAOknC,IAGPxhB,EAAM,EACN1lB,EAAM,GAKd,OAFAhlB,KAAK0qC,IAAMA,EACX1qC,KAAKglB,IAAMA,EACJhf,CACX,CACA,kBAAAknD,GACI,MAAMtG,EAAM5mD,KAAK4mD,IACXd,EAAO9lD,KAAK8lD,KACZkH,EAAQlI,EAAQwG,IAAItrD,KAAKo1B,MACzB02B,EAAOhH,EAAQ4G,UACfhhB,EAAM1qC,KAAK0qC,IACjB,IAAI1lB,EAAMhlB,KAAKglB,IACf,MAAMmoC,EAAO,GAAMnoC,EAAM,GACzB,IAAI+V,EAAO/V,EAEX,GAAIhlB,KAAKunB,QAAS,CACd,IAAK,IAAI5qB,EAAI,EAAGA,EAAIwwD,IAAQxwD,EACxBmpD,EAAKpb,EAAM1lB,EAAMroB,GAAKwwD,EAE1BnoC,GAAOmoC,EACPpyB,EAAO/V,CACX,MACK,GAAIA,EAAM,GACX,MAAM,IAAIzd,UAAU,oDAKxB,MAAMvB,EAAS,IAAI63B,WAAW9C,GAO9B,OANI/V,GACA4hC,EAAIsE,OAAO8B,EAAOlB,EAAOphB,EAAK1lB,GAC9B+V,GACA/0B,EAAOi6B,IAAI6lB,EAAKtlB,SAASkK,EAAKA,EAAM3P,IACxC/6B,KAAK0qC,IAAM,EACX1qC,KAAKglB,IAAM,EACJhf,CACX,CACA,mBAAAonD,CAAoB9sD,GAChB,IAAK6rD,EAAS7rD,GACV,MAAM,IAAIiH,UAAU,+BACxB,MAAMq/C,EAAM5mD,KAAK4mD,IACXd,EAAO9lD,KAAK8lD,KACZkH,EAAQlI,EAAQ0G,IAAIxrD,KAAKo1B,MACzB02B,EAAOhH,EAAQ4G,UACrB,IAAIhhB,EAAM1qC,KAAK0qC,IACX1lB,EAAMhlB,KAAKglB,IACX+mC,EAAO,EACPC,EAAO1rD,EAAKtD,QAAU,EACtBiwD,EAAO,EACPlyB,EAAQ/V,EAAMgnC,GAAS,GACvBmB,EAAO,EACPjB,EAAO,EACPlsD,KAAKunB,UACL4lC,EAAOnoC,EAAMgnC,EAAOjxB,GAAQ,GAC5BA,GAAQoyB,GAEZ,MAAMnnD,EAAS,IAAI63B,WAAW9C,GAC9B,MAAOixB,EAAO,EACVE,EAAOL,EAAY/F,EAAMpb,EAAM1lB,EAAK1kB,EAAMyrD,EAAMC,GAChDhnC,GAAOknC,EACPH,GAAQG,EACRF,GAAQE,EACRA,EAAOtF,EAAIsE,OAAO8B,EAAOlB,EAAOphB,EAAK1lB,GAAQgnC,EAAc,EAAPmB,IAChDjB,GACAlmD,EAAOi6B,IAAI6lB,EAAKtlB,SAASkK,EAAKA,EAAMwhB,GAAOe,GAC/CA,GAAQf,EACJA,EAAOlnC,GACP0lB,GAAOwhB,EACPlnC,GAAOknC,IAGPxhB,EAAM,EACN1lB,EAAM,GAKd,OAFAhlB,KAAK0qC,IAAMA,EACX1qC,KAAKglB,IAAMA,EACJhf,CACX,CACA,kBAAAqnD,GACI,MAAMzG,EAAM5mD,KAAK4mD,IACXd,EAAO9lD,KAAK8lD,KACZkH,EAAQlI,EAAQ0G,IAAIxrD,KAAKo1B,MACzB02B,EAAOhH,EAAQ4G,UACfhhB,EAAM1qC,KAAK0qC,IACX1lB,EAAMhlB,KAAKglB,IACjB,IAAI+V,EAAO/V,EACX,GAAIA,EAAM,EAAG,CACT,GAAIA,EAAM,GAEN,MAAM,IAAI9hB,MAAM,oDAMpB,GADA0jD,EAAIsE,OAAO8B,EAAOlB,EAAOphB,EAAK1lB,GACahlB,KAAKunB,QAAS,CACrD,MAAM+lC,EAAMxH,EAAKpb,EAAM3P,EAAO,GAC9B,GAAIuyB,EAAM,GAAKA,EAAM,IAAMA,EAAMvyB,EAC7B,MAAM,IAAI73B,MAAM,eACpB,IAAIqqD,EAAS,EACb,IAAK,IAAI/xD,EAAI8xD,EAAK9xD,EAAI,EAAGA,IACrB+xD,GAAUD,EAAMxH,EAAKpb,EAAM3P,EAAOv/B,GACtC,GAAI+xD,EACA,MAAM,IAAIrqD,MAAM,eACpB63B,GAAQuyB,CACZ,CACJ,CACA,MAAMtnD,EAAS,IAAI63B,WAAW9C,GAM9B,OALIA,EAAO,GACP/0B,EAAOi6B,IAAI6lB,EAAKtlB,SAASkK,EAAKA,EAAM3P,IAExC/6B,KAAK0qC,IAAM,EACX1qC,KAAKglB,IAAM,EACJhf,CACX,EAGJ,MAAMwnD,EACF,WAAAjnD,CAAY2hC,EAAKykB,EAAIplC,GAAU,EAAMkmC,GACjCztD,KAAKytD,IAAMA,GAAY,IAAIf,EAAIxkB,EAAKykB,EAAIplC,EAAS,MACrD,CACA,cAAOmmC,CAAQptD,EAAM4nC,EAAK3gB,GAAU,EAAMolC,GACtC,OAAO,IAAIa,EAAQtlB,EAAKykB,EAAIplC,GAASmmC,QAAQptD,EACjD,CACA,cAAOqtD,CAAQrtD,EAAM4nC,EAAK3gB,GAAU,EAAMolC,GACtC,OAAO,IAAIa,EAAQtlB,EAAKykB,EAAIplC,GAASomC,QAAQrtD,EACjD,CACA,OAAAotD,CAAQptD,GACJ,MAAMstD,EAAK5tD,KAAKytD,IAAIV,oBAAoBzsD,GAClC21B,EAAKj2B,KAAKytD,IAAIP,qBACpB,OAAOd,EAAUwB,EAAI33B,EACzB,CACA,OAAA03B,CAAQrtD,GACJ,MAAMstD,EAAK5tD,KAAKytD,IAAIL,oBAAoB9sD,GAClC21B,EAAKj2B,KAAKytD,IAAIJ,qBACpB,OAAOjB,EAAUwB,EAAI33B,EACzB,E,mCCvrCJ,SAAW9S,EAAQ7nB,GACjB,aAGA,SAAS8nB,EAAQC,EAAKC,GACpB,IAAKD,EAAK,MAAM,IAAIngB,MAAMogB,GAAO,mBACnC,CAIA,SAASC,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,WAAa,EAC5BA,EAASlnB,UAAYgnB,EAAUhnB,UAC/B+mB,EAAK/mB,UAAY,IAAIknB,EACrBH,EAAK/mB,UAAU8J,YAAcid,CAC/B,CAIA,SAASI,EAAIC,EAAQC,EAAMC,GACzB,GAAIH,EAAGI,KAAKH,GACV,OAAOA,EAGT7jB,KAAKikB,SAAW,EAChBjkB,KAAKkkB,MAAQ,KACblkB,KAAKhD,OAAS,EAGdgD,KAAKmkB,IAAM,KAEI,OAAXN,IACW,OAATC,GAA0B,OAATA,IACnBC,EAASD,EACTA,EAAO,IAGT9jB,KAAKokB,MAAMP,GAAU,EAAGC,GAAQ,GAAIC,GAAU,MAElD,CAUA,IAAIM,EATkB,kBAAXlB,EACTA,EAAO7nB,QAAUsoB,EAEjBtoB,EAAQsoB,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGU,SAAW,GAGd,IAEID,EADoB,qBAAX5lB,QAAmD,qBAAlBA,OAAO4lB,OACxC5lB,OAAO4lB,OAEP,eAEb,CAAE,MAAOlpB,GACT,CA+HA,SAASopB,EAAeC,EAAQnW,GAC9B,IAAIzS,EAAI4oB,EAAOxY,WAAWqC,GAE1B,OAAIzS,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEXwnB,GAAO,EAAO,wBAA0BoB,EAE5C,CAEA,SAASC,EAAcD,EAAQE,EAAYrW,GACzC,IAAIhT,EAAIkpB,EAAcC,EAAQnW,GAI9B,OAHIA,EAAQ,GAAKqW,IACfrpB,GAAKkpB,EAAcC,EAAQnW,EAAQ,IAAM,GAEpChT,CACT,CA6CA,SAASspB,EAAWC,EAAKC,EAAOC,EAAKC,GAInC,IAHA,IAAI1pB,EAAI,EACJ6K,EAAI,EACJ8e,EAAMC,KAAKC,IAAIN,EAAI5nB,OAAQ8nB,GACtBtpB,EAAIqpB,EAAOrpB,EAAIwpB,EAAKxpB,IAAK,CAChC,IAAII,EAAIgpB,EAAI5Y,WAAWxQ,GAAK,GAE5BH,GAAK0pB,EAIH7e,EADEtK,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAENwnB,EAAOxnB,GAAK,GAAKsK,EAAI6e,EAAK,qBAC1B1pB,GAAK6K,CACP,CACA,OAAO7K,CACT,CA2DA,SAAS8pB,EAAMC,EAAMC,GACnBD,EAAKlB,MAAQmB,EAAInB,MACjBkB,EAAKpoB,OAASqoB,EAAIroB,OAClBooB,EAAKnB,SAAWoB,EAAIpB,SACpBmB,EAAKjB,IAAMkB,EAAIlB,GACjB,CAqCA,GA9TAP,EAAGI,KAAO,SAAesB,GACvB,OAAIA,aAAe1B,GAIJ,OAAR0B,GAA+B,kBAARA,GAC5BA,EAAI/e,YAAY+d,WAAaV,EAAGU,UAAYrkB,MAAMhD,QAAQqoB,EAAIpB,MAClE,EAEAN,EAAG2B,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEA7B,EAAGsB,IAAM,SAAcM,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,CACT,EAEA7B,EAAGnnB,UAAU2nB,MAAQ,SAAeP,EAAQC,EAAMC,GAChD,GAAsB,kBAAXF,EACT,OAAO7jB,KAAK2lB,YAAY9B,EAAQC,EAAMC,GAGxC,GAAsB,kBAAXF,EACT,OAAO7jB,KAAK4lB,WAAW/B,EAAQC,EAAMC,GAG1B,QAATD,IACFA,EAAO,IAETV,EAAOU,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAEnDD,EAASA,EAAOhnB,WAAWmC,QAAQ,OAAQ,IAC3C,IAAI6lB,EAAQ,EACM,MAAdhB,EAAO,KACTgB,IACA7kB,KAAKikB,SAAW,GAGdY,EAAQhB,EAAO7mB,SACJ,KAAT8mB,EACF9jB,KAAK6lB,UAAUhC,EAAQgB,EAAOd,IAE9B/jB,KAAK8lB,WAAWjC,EAAQC,EAAMe,GACf,OAAXd,GACF/jB,KAAK4lB,WAAW5lB,KAAK+lB,UAAWjC,EAAMC,IAI9C,EAEAH,EAAGnnB,UAAUkpB,YAAc,SAAsB9B,EAAQC,EAAMC,GACzDF,EAAS,IACX7jB,KAAKikB,SAAW,EAChBJ,GAAUA,GAERA,EAAS,UACX7jB,KAAKkkB,MAAQ,CAAU,SAATL,GACd7jB,KAAKhD,OAAS,GACL6mB,EAAS,kBAClB7jB,KAAKkkB,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,UAEzB7jB,KAAKhD,OAAS,IAEdomB,EAAOS,EAAS,kBAChB7jB,KAAKkkB,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,SACvB,GAEF7jB,KAAKhD,OAAS,GAGD,OAAX+mB,GAGJ/jB,KAAK4lB,WAAW5lB,KAAK+lB,UAAWjC,EAAMC,EACxC,EAEAH,EAAGnnB,UAAUmpB,WAAa,SAAqB/B,EAAQC,EAAMC,GAG3D,GADAX,EAAgC,kBAAlBS,EAAO7mB,QACjB6mB,EAAO7mB,QAAU,EAGnB,OAFAgD,KAAKkkB,MAAQ,CAAC,GACdlkB,KAAKhD,OAAS,EACPgD,KAGTA,KAAKhD,OAASioB,KAAKe,KAAKnC,EAAO7mB,OAAS,GACxCgD,KAAKkkB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/BwE,KAAKkkB,MAAM1oB,GAAK,EAGlB,IAAIyqB,EAAG9jB,EACH8H,EAAM,EACV,GAAe,OAAX8Z,EACF,IAAKvoB,EAAIqoB,EAAO7mB,OAAS,EAAGipB,EAAI,EAAGzqB,GAAK,EAAGA,GAAK,EAC9C2G,EAAI0hB,EAAOroB,GAAMqoB,EAAOroB,EAAI,IAAM,EAAMqoB,EAAOroB,EAAI,IAAM,GACzDwE,KAAKkkB,MAAM+B,IAAO9jB,GAAK8H,EAAO,SAC9BjK,KAAKkkB,MAAM+B,EAAI,GAAM9jB,IAAO,GAAK8H,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPgc,UAGC,GAAe,OAAXlC,EACT,IAAKvoB,EAAI,EAAGyqB,EAAI,EAAGzqB,EAAIqoB,EAAO7mB,OAAQxB,GAAK,EACzC2G,EAAI0hB,EAAOroB,GAAMqoB,EAAOroB,EAAI,IAAM,EAAMqoB,EAAOroB,EAAI,IAAM,GACzDwE,KAAKkkB,MAAM+B,IAAO9jB,GAAK8H,EAAO,SAC9BjK,KAAKkkB,MAAM+B,EAAI,GAAM9jB,IAAO,GAAK8H,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPgc,KAIN,OAAOjmB,KAAKkmB,QACd,EA0BAtC,EAAGnnB,UAAUopB,UAAY,SAAoBhC,EAAQgB,EAAOd,GAE1D/jB,KAAKhD,OAASioB,KAAKe,MAAMnC,EAAO7mB,OAAS6nB,GAAS,GAClD7kB,KAAKkkB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/BwE,KAAKkkB,MAAM1oB,GAAK,EAIlB,IAGI2G,EAHA8H,EAAM,EACNgc,EAAI,EAGR,GAAe,OAAXlC,EACF,IAAKvoB,EAAIqoB,EAAO7mB,OAAS,EAAGxB,GAAKqpB,EAAOrpB,GAAK,EAC3C2G,EAAIsiB,EAAaZ,EAAQgB,EAAOrpB,IAAMyO,EACtCjK,KAAKkkB,MAAM+B,IAAU,SAAJ9jB,EACb8H,GAAO,IACTA,GAAO,GACPgc,GAAK,EACLjmB,KAAKkkB,MAAM+B,IAAM9jB,IAAM,IAEvB8H,GAAO,MAGN,CACL,IAAIkc,EAActC,EAAO7mB,OAAS6nB,EAClC,IAAKrpB,EAAI2qB,EAAc,IAAM,EAAItB,EAAQ,EAAIA,EAAOrpB,EAAIqoB,EAAO7mB,OAAQxB,GAAK,EAC1E2G,EAAIsiB,EAAaZ,EAAQgB,EAAOrpB,IAAMyO,EACtCjK,KAAKkkB,MAAM+B,IAAU,SAAJ9jB,EACb8H,GAAO,IACTA,GAAO,GACPgc,GAAK,EACLjmB,KAAKkkB,MAAM+B,IAAM9jB,IAAM,IAEvB8H,GAAO,CAGb,CAEAjK,KAAKkmB,QACP,EA6BAtC,EAAGnnB,UAAUqpB,WAAa,SAAqBjC,EAAQC,EAAMe,GAE3D7kB,KAAKkkB,MAAQ,CAAC,GACdlkB,KAAKhD,OAAS,EAGd,IAAK,IAAIopB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWvC,EAClEsC,IAEFA,IACAC,EAAWA,EAAUvC,EAAQ,EAO7B,IALA,IAAIwC,EAAQzC,EAAO7mB,OAAS6nB,EACxB0B,EAAMD,EAAQF,EACdtB,EAAMG,KAAKC,IAAIoB,EAAOA,EAAQC,GAAO1B,EAErC2B,EAAO,EACFhrB,EAAIqpB,EAAOrpB,EAAIspB,EAAKtpB,GAAK4qB,EAChCI,EAAO7B,EAAUd,EAAQroB,EAAGA,EAAI4qB,EAAStC,GAEzC9jB,KAAKymB,MAAMJ,GACPrmB,KAAKkkB,MAAM,GAAKsC,EAAO,SACzBxmB,KAAKkkB,MAAM,IAAMsC,EAEjBxmB,KAAK0mB,OAAOF,GAIhB,GAAY,IAARD,EAAW,CACb,IAAII,EAAM,EAGV,IAFAH,EAAO7B,EAAUd,EAAQroB,EAAGqoB,EAAO7mB,OAAQ8mB,GAEtCtoB,EAAI,EAAGA,EAAI+qB,EAAK/qB,IACnBmrB,GAAO7C,EAGT9jB,KAAKymB,MAAME,GACP3mB,KAAKkkB,MAAM,GAAKsC,EAAO,SACzBxmB,KAAKkkB,MAAM,IAAMsC,EAEjBxmB,KAAK0mB,OAAOF,EAEhB,CAEAxmB,KAAKkmB,QACP,EAEAtC,EAAGnnB,UAAUmqB,KAAO,SAAexB,GACjCA,EAAKlB,MAAQ,IAAIjkB,MAAMD,KAAKhD,QAC5B,IAAK,IAAIxB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC/B4pB,EAAKlB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAE7B4pB,EAAKpoB,OAASgD,KAAKhD,OACnBooB,EAAKnB,SAAWjkB,KAAKikB,SACrBmB,EAAKjB,IAAMnkB,KAAKmkB,GAClB,EASAP,EAAGnnB,UAAUoqB,MAAQ,SAAgBzB,GACnCD,EAAKC,EAAMplB,KACb,EAEA4jB,EAAGnnB,UAAUqqB,MAAQ,WACnB,IAAIzrB,EAAI,IAAIuoB,EAAG,MAEf,OADA5jB,KAAK4mB,KAAKvrB,GACHA,CACT,EAEAuoB,EAAGnnB,UAAUsqB,QAAU,SAAkBC,GACvC,MAAOhnB,KAAKhD,OAASgqB,EACnBhnB,KAAKkkB,MAAMlkB,KAAKhD,UAAY,EAE9B,OAAOgD,IACT,EAGA4jB,EAAGnnB,UAAUypB,OAAS,WACpB,MAAOlmB,KAAKhD,OAAS,GAAqC,IAAhCgD,KAAKkkB,MAAMlkB,KAAKhD,OAAS,GACjDgD,KAAKhD,SAEP,OAAOgD,KAAKinB,WACd,EAEArD,EAAGnnB,UAAUwqB,UAAY,WAKvB,OAHoB,IAAhBjnB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,KAClClkB,KAAKikB,SAAW,GAEXjkB,IACT,EAIsB,qBAAX9D,QAAgD,oBAAfA,OAAOgrB,IACjD,IACEtD,EAAGnnB,UAAUP,OAAOgrB,IAAI,+BAAiCC,CAC3D,CAAE,MAAOhsB,GACPyoB,EAAGnnB,UAAU0qB,QAAUA,CACzB,MAEAvD,EAAGnnB,UAAU0qB,QAAUA,EAGzB,SAASA,IACP,OAAQnnB,KAAKmkB,IAAM,UAAY,SAAWnkB,KAAKnD,SAAS,IAAM,GAChE,CAgCA,IAAIuqB,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,UAG9D1D,EAAGnnB,UAAUI,SAAW,SAAmBinB,EAAMyD,GAI/C,IAAIC,EACJ,GAJA1D,EAAOA,GAAQ,GACfyD,EAAoB,EAAVA,GAAe,EAGZ,KAATzD,GAAwB,QAATA,EAAgB,CACjC0D,EAAM,GAGN,IAFA,IAAIvd,EAAM,EACNwd,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI2G,EAAInC,KAAKkkB,MAAM1oB,GACfgrB,GAA+B,UAArBrkB,GAAK8H,EAAOwd,IAAmB5qB,SAAS,IACtD4qB,EAAStlB,IAAO,GAAK8H,EAAQ,SAC7BA,GAAO,EACHA,GAAO,KACTA,GAAO,GACPzO,KAGAgsB,EADY,IAAVC,GAAejsB,IAAMwE,KAAKhD,OAAS,EAC/BoqB,EAAM,EAAIZ,EAAKxpB,QAAUwpB,EAAOgB,EAEhChB,EAAOgB,CAEjB,CACc,IAAVC,IACFD,EAAMC,EAAM5qB,SAAS,IAAM2qB,GAE7B,MAAOA,EAAIxqB,OAASuqB,IAAY,EAC9BC,EAAM,IAAMA,EAKd,OAHsB,IAAlBxnB,KAAKikB,WACPuD,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAI1D,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI4D,EAAYL,EAAWvD,GAEvB6D,EAAYL,EAAWxD,GAC3B0D,EAAM,GACN,IAAI5rB,EAAIoE,KAAK8mB,QACblrB,EAAEqoB,SAAW,EACb,OAAQroB,EAAEgsB,SAAU,CAClB,IAAIvsB,EAAIO,EAAEisB,MAAMF,GAAW9qB,SAASinB,GACpCloB,EAAIA,EAAEksB,MAAMH,GAKVH,EAHG5rB,EAAEgsB,SAGCvsB,EAAImsB,EAFJJ,EAAMM,EAAYrsB,EAAE2B,QAAU3B,EAAImsB,CAI5C,CACIxnB,KAAK4nB,WACPJ,EAAM,IAAMA,GAEd,MAAOA,EAAIxqB,OAASuqB,IAAY,EAC9BC,EAAM,IAAMA,EAKd,OAHsB,IAAlBxnB,KAAKikB,WACPuD,EAAM,IAAMA,GAEPA,CACT,CAEApE,GAAO,EAAO,kCAChB,EAEAQ,EAAGnnB,UAAUsrB,SAAW,WACtB,IAAIC,EAAMhoB,KAAKkkB,MAAM,GASrB,OARoB,IAAhBlkB,KAAKhD,OACPgrB,GAAuB,SAAhBhoB,KAAKkkB,MAAM,GACO,IAAhBlkB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,GAEzC8D,GAAO,iBAAoC,SAAhBhoB,KAAKkkB,MAAM,GAC7BlkB,KAAKhD,OAAS,GACvBomB,GAAO,EAAO,8CAEU,IAAlBpjB,KAAKikB,UAAmB+D,EAAMA,CACxC,EAEApE,EAAGnnB,UAAUwrB,OAAS,WACpB,OAAOjoB,KAAKnD,SAAS,GAAI,EAC3B,EAEIwnB,IACFT,EAAGnnB,UAAUyrB,SAAW,SAAmBnE,EAAQ/mB,GACjD,OAAOgD,KAAKmoB,YAAY9D,EAAQN,EAAQ/mB,EAC1C,GAGF4mB,EAAGnnB,UAAUspB,QAAU,SAAkBhC,EAAQ/mB,GAC/C,OAAOgD,KAAKmoB,YAAYloB,MAAO8jB,EAAQ/mB,EACzC,EAEA,IAAIorB,EAAW,SAAmBC,EAAWrB,GAC3C,OAAIqB,EAAUC,YACLD,EAAUC,YAAYtB,GAExB,IAAIqB,EAAUrB,EACvB,EAuJA,SAASuB,EAAYjD,GAGnB,IAFA,IAAInjB,EAAI,IAAIlC,MAAMqlB,EAAIkD,aAEbC,EAAM,EAAGA,EAAMtmB,EAAEnF,OAAQyrB,IAAO,CACvC,IAAIxe,EAAOwe,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBtmB,EAAEsmB,GAAQnD,EAAIpB,MAAMja,KAASye,EAAQ,CACvC,CAEA,OAAOvmB,CACT,CAkWA,SAASwmB,EAAYC,EAAMtD,EAAKkC,GAC9BA,EAAIvD,SAAWqB,EAAIrB,SAAW2E,EAAK3E,SACnC,IAAIe,EAAO4D,EAAK5rB,OAASsoB,EAAItoB,OAAU,EACvCwqB,EAAIxqB,OAASgoB,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIjoB,EAAoB,EAAhB6rB,EAAK1E,MAAM,GACfhe,EAAmB,EAAfof,EAAIpB,MAAM,GACd7oB,EAAI0B,EAAImJ,EAER2iB,EAAS,SAAJxtB,EACLosB,EAASpsB,EAAI,SAAa,EAC9BmsB,EAAItD,MAAM,GAAK2E,EAEf,IAAK,IAAI7F,EAAI,EAAGA,EAAIgC,EAAKhC,IAAK,CAM5B,IAHA,IAAI8F,EAASrB,IAAU,GACnBsB,EAAgB,SAARtB,EACRuB,EAAO/D,KAAKC,IAAIlC,EAAGsC,EAAItoB,OAAS,GAC3BipB,EAAIhB,KAAKM,IAAI,EAAGvC,EAAI4F,EAAK5rB,OAAS,GAAIipB,GAAK+C,EAAM/C,IAAK,CAC7D,IAAIzqB,EAAKwnB,EAAIiD,EAAK,EAClBlpB,EAAoB,EAAhB6rB,EAAK1E,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM+B,GACd5qB,EAAI0B,EAAImJ,EAAI6iB,EACZD,GAAWztB,EAAI,SAAa,EAC5B0tB,EAAY,SAAJ1tB,CACV,CACAmsB,EAAItD,MAAMlB,GAAa,EAAR+F,EACftB,EAAiB,EAATqB,CACV,CAOA,OANc,IAAVrB,EACFD,EAAItD,MAAMlB,GAAa,EAARyE,EAEfD,EAAIxqB,SAGCwqB,EAAItB,QACb,CAziBAtC,EAAGnnB,UAAU0rB,YAAc,SAAsBE,EAAWtE,EAAQ/mB,GAClEgD,KAAKkmB,SAEL,IAAI+C,EAAajpB,KAAKipB,aAClBC,EAAYlsB,GAAUioB,KAAKM,IAAI,EAAG0D,GACtC7F,EAAO6F,GAAcC,EAAW,yCAChC9F,EAAO8F,EAAY,EAAG,+BAEtB,IAAIC,EAAMf,EAASC,EAAWa,GAC1BE,EAAqB,OAAXrF,EAAkB,KAAO,KAEvC,OADA/jB,KAAK,eAAiBopB,GAASD,EAAKF,GAC7BE,CACT,EAEAvF,EAAGnnB,UAAU4sB,eAAiB,SAAyBF,EAAKF,GAI1D,IAHA,IAAIK,EAAW,EACX7B,EAAQ,EAEHjsB,EAAI,EAAGsM,EAAQ,EAAGtM,EAAIwE,KAAKhD,OAAQxB,IAAK,CAC/C,IAAIgrB,EAAQxmB,KAAKkkB,MAAM1oB,IAAMsM,EAAS2f,EAEtC0B,EAAIG,KAAqB,IAAP9C,EACd8C,EAAWH,EAAInsB,SACjBmsB,EAAIG,KAAe9C,GAAQ,EAAK,KAE9B8C,EAAWH,EAAInsB,SACjBmsB,EAAIG,KAAe9C,GAAQ,GAAM,KAGrB,IAAV1e,GACEwhB,EAAWH,EAAInsB,SACjBmsB,EAAIG,KAAe9C,GAAQ,GAAM,KAEnCiB,EAAQ,EACR3f,EAAQ,IAER2f,EAAQjB,IAAS,GACjB1e,GAAS,EAEb,CAEA,GAAIwhB,EAAWH,EAAInsB,OAAQ,CACzBmsB,EAAIG,KAAc7B,EAElB,MAAO6B,EAAWH,EAAInsB,OACpBmsB,EAAIG,KAAc,CAEtB,CACF,EAEA1F,EAAGnnB,UAAU8sB,eAAiB,SAAyBJ,EAAKF,GAI1D,IAHA,IAAIK,EAAWH,EAAInsB,OAAS,EACxByqB,EAAQ,EAEHjsB,EAAI,EAAGsM,EAAQ,EAAGtM,EAAIwE,KAAKhD,OAAQxB,IAAK,CAC/C,IAAIgrB,EAAQxmB,KAAKkkB,MAAM1oB,IAAMsM,EAAS2f,EAEtC0B,EAAIG,KAAqB,IAAP9C,EACd8C,GAAY,IACdH,EAAIG,KAAe9C,GAAQ,EAAK,KAE9B8C,GAAY,IACdH,EAAIG,KAAe9C,GAAQ,GAAM,KAGrB,IAAV1e,GACEwhB,GAAY,IACdH,EAAIG,KAAe9C,GAAQ,GAAM,KAEnCiB,EAAQ,EACR3f,EAAQ,IAER2f,EAAQjB,IAAS,GACjB1e,GAAS,EAEb,CAEA,GAAIwhB,GAAY,EAAG,CACjBH,EAAIG,KAAc7B,EAElB,MAAO6B,GAAY,EACjBH,EAAIG,KAAc,CAEtB,CACF,EAEIrE,KAAKuE,MACP5F,EAAGnnB,UAAUgtB,WAAa,SAAqBtnB,GAC7C,OAAO,GAAK8iB,KAAKuE,MAAMrnB,EACzB,EAEAyhB,EAAGnnB,UAAUgtB,WAAa,SAAqBtnB,GAC7C,IAAIjH,EAAIiH,EACJ9G,EAAI,EAiBR,OAhBIH,GAAK,OACPG,GAAK,GACLH,KAAO,IAELA,GAAK,KACPG,GAAK,EACLH,KAAO,GAELA,GAAK,IACPG,GAAK,EACLH,KAAO,GAELA,GAAK,IACPG,GAAK,EACLH,KAAO,GAEFG,EAAIH,CACb,EAGF0oB,EAAGnnB,UAAUitB,UAAY,SAAoBvnB,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAIjH,EAAIiH,EACJ9G,EAAI,EAoBR,OAnBqB,KAAZ,KAAJH,KACHG,GAAK,GACLH,KAAO,IAEU,KAAV,IAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,GAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,EAAJA,KACHG,GAAK,EACLH,KAAO,GAES,KAAT,EAAJA,IACHG,IAEKA,CACT,EAGAuoB,EAAGnnB,UAAU+rB,UAAY,WACvB,IAAIrmB,EAAInC,KAAKkkB,MAAMlkB,KAAKhD,OAAS,GAC7B2sB,EAAK3pB,KAAKypB,WAAWtnB,GACzB,OAA2B,IAAnBnC,KAAKhD,OAAS,GAAU2sB,CAClC,EAgBA/F,EAAGnnB,UAAUmtB,SAAW,WACtB,GAAI5pB,KAAK4nB,SAAU,OAAO,EAG1B,IADA,IAAIvsB,EAAI,EACCG,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI0K,EAAIlG,KAAK0pB,UAAU1pB,KAAKkkB,MAAM1oB,IAElC,GADAH,GAAK6K,EACK,KAANA,EAAU,KAChB,CACA,OAAO7K,CACT,EAEAuoB,EAAGnnB,UAAUwsB,WAAa,WACxB,OAAOhE,KAAKe,KAAKhmB,KAAKwoB,YAAc,EACtC,EAEA5E,EAAGnnB,UAAUotB,OAAS,SAAiBhmB,GACrC,OAAsB,IAAlB7D,KAAKikB,SACAjkB,KAAK8pB,MAAMC,MAAMlmB,GAAOmmB,MAAM,GAEhChqB,KAAK8mB,OACd,EAEAlD,EAAGnnB,UAAUwtB,SAAW,SAAmBpmB,GACzC,OAAI7D,KAAKkqB,MAAMrmB,EAAQ,GACd7D,KAAKmqB,KAAKtmB,GAAOmmB,MAAM,GAAGI,OAE5BpqB,KAAK8mB,OACd,EAEAlD,EAAGnnB,UAAU4tB,MAAQ,WACnB,OAAyB,IAAlBrqB,KAAKikB,QACd,EAGAL,EAAGnnB,UAAU6tB,IAAM,WACjB,OAAOtqB,KAAK8mB,QAAQsD,MACtB,EAEAxG,EAAGnnB,UAAU2tB,KAAO,WAKlB,OAJKpqB,KAAK4nB,WACR5nB,KAAKikB,UAAY,GAGZjkB,IACT,EAGA4jB,EAAGnnB,UAAU8tB,KAAO,SAAejF,GACjC,MAAOtlB,KAAKhD,OAASsoB,EAAItoB,OACvBgD,KAAKkkB,MAAMlkB,KAAKhD,UAAY,EAG9B,IAAK,IAAIxB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAC9BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAAK8pB,EAAIpB,MAAM1oB,GAG5C,OAAOwE,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU+tB,IAAM,SAAclF,GAE/B,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAKuqB,KAAKjF,EACnB,EAGA1B,EAAGnnB,UAAUguB,GAAK,SAAanF,GAC7B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ0D,IAAIlF,GAC/CA,EAAIwB,QAAQ0D,IAAIxqB,KACzB,EAEA4jB,EAAGnnB,UAAUiuB,IAAM,SAAcpF,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQyD,KAAKjF,GAChDA,EAAIwB,QAAQyD,KAAKvqB,KAC1B,EAGA4jB,EAAGnnB,UAAUkuB,MAAQ,SAAgBrF,GAEnC,IAAIpf,EAEFA,EADElG,KAAKhD,OAASsoB,EAAItoB,OAChBsoB,EAEAtlB,KAGN,IAAK,IAAIxE,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAAK8pB,EAAIpB,MAAM1oB,GAK5C,OAFAwE,KAAKhD,OAASkJ,EAAElJ,OAETgD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUmuB,KAAO,SAAetF,GAEjC,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAK2qB,MAAMrF,EACpB,EAGA1B,EAAGnnB,UAAUouB,IAAM,SAAcvF,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ8D,KAAKtF,GAChDA,EAAIwB,QAAQ8D,KAAK5qB,KAC1B,EAEA4jB,EAAGnnB,UAAUquB,KAAO,SAAexF,GACjC,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQ6D,MAAMrF,GACjDA,EAAIwB,QAAQ6D,MAAM3qB,KAC3B,EAGA4jB,EAAGnnB,UAAUsuB,MAAQ,SAAgBzF,GAEnC,IAAIvoB,EACAmJ,EACAlG,KAAKhD,OAASsoB,EAAItoB,QACpBD,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAGN,IAAK,IAAIxE,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAAK0K,EAAEge,MAAM1oB,GAGvC,GAAIwE,OAASjD,EACX,KAAOvB,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAM5B,OAFAwE,KAAKhD,OAASD,EAAEC,OAETgD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUuuB,KAAO,SAAe1F,GAEjC,OADAlC,EAA0C,KAAlCpjB,KAAKikB,SAAWqB,EAAIrB,WACrBjkB,KAAK+qB,MAAMzF,EACpB,EAGA1B,EAAGnnB,UAAUwuB,IAAM,SAAc3F,GAC/B,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQkE,KAAK1F,GAChDA,EAAIwB,QAAQkE,KAAKhrB,KAC1B,EAEA4jB,EAAGnnB,UAAUyuB,KAAO,SAAe5F,GACjC,OAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQiE,MAAMzF,GACjDA,EAAIwB,QAAQiE,MAAM/qB,KAC3B,EAGA4jB,EAAGnnB,UAAUstB,MAAQ,SAAgBlmB,GACnCuf,EAAwB,kBAAVvf,GAAsBA,GAAS,GAE7C,IAAIsnB,EAAsC,EAAxBlG,KAAKe,KAAKniB,EAAQ,IAChCunB,EAAWvnB,EAAQ,GAGvB7D,KAAK+mB,QAAQoE,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI3vB,EAAI,EAAGA,EAAI2vB,EAAa3vB,IAC/BwE,KAAKkkB,MAAM1oB,GAAsB,UAAhBwE,KAAKkkB,MAAM1oB,GAS9B,OALI4vB,EAAW,IACbprB,KAAKkkB,MAAM1oB,IAAMwE,KAAKkkB,MAAM1oB,GAAM,UAAc,GAAK4vB,GAIhDprB,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU0tB,KAAO,SAAetmB,GACjC,OAAO7D,KAAK8mB,QAAQiD,MAAMlmB,EAC5B,EAGA+f,EAAGnnB,UAAU4uB,KAAO,SAAe5C,EAAKpF,GACtCD,EAAsB,kBAARqF,GAAoBA,GAAO,GAEzC,IAAIxe,EAAOwe,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAzoB,KAAK+mB,QAAQ9c,EAAM,GAGjBjK,KAAKkkB,MAAMja,GADToZ,EACgBrjB,KAAKkkB,MAAMja,GAAQ,GAAKye,EAExB1oB,KAAKkkB,MAAMja,KAAS,GAAKye,GAGtC1oB,KAAKkmB,QACd,EAGAtC,EAAGnnB,UAAU6uB,KAAO,SAAehG,GACjC,IAAIjqB,EAkBA0B,EAAGmJ,EAfP,GAAsB,IAAlBlG,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAI7B,OAHAjkB,KAAKikB,SAAW,EAChB5oB,EAAI2E,KAAKurB,KAAKjG,GACdtlB,KAAKikB,UAAY,EACVjkB,KAAKinB,YAGP,GAAsB,IAAlBjnB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAIpC,OAHAqB,EAAIrB,SAAW,EACf5oB,EAAI2E,KAAKurB,KAAKjG,GACdA,EAAIrB,SAAW,EACR5oB,EAAE4rB,YAKPjnB,KAAKhD,OAASsoB,EAAItoB,QACpBD,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAIN,IADA,IAAIynB,EAAQ,EACHjsB,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,KAAwB,EAAb0K,EAAEge,MAAM1oB,IAAUisB,EAC1CznB,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAChBosB,EAAQpsB,IAAM,GAEhB,KAAiB,IAAVosB,GAAejsB,EAAIuB,EAAEC,OAAQxB,IAClCH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,IAAUisB,EACvBznB,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAChBosB,EAAQpsB,IAAM,GAIhB,GADA2E,KAAKhD,OAASD,EAAEC,OACF,IAAVyqB,EACFznB,KAAKkkB,MAAMlkB,KAAKhD,QAAUyqB,EAC1BznB,KAAKhD,cAEA,GAAID,IAAMiD,KACf,KAAOxE,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAI5B,OAAOwE,IACT,EAGA4jB,EAAGnnB,UAAUqT,IAAM,SAAcwV,GAC/B,IAAI6D,EACJ,OAAqB,IAAjB7D,EAAIrB,UAAoC,IAAlBjkB,KAAKikB,UAC7BqB,EAAIrB,SAAW,EACfkF,EAAMnpB,KAAKwrB,IAAIlG,GACfA,EAAIrB,UAAY,EACTkF,GACmB,IAAjB7D,EAAIrB,UAAoC,IAAlBjkB,KAAKikB,UACpCjkB,KAAKikB,SAAW,EAChBkF,EAAM7D,EAAIkG,IAAIxrB,MACdA,KAAKikB,SAAW,EACTkF,GAGLnpB,KAAKhD,OAASsoB,EAAItoB,OAAegD,KAAK8mB,QAAQwE,KAAKhG,GAEhDA,EAAIwB,QAAQwE,KAAKtrB,KAC1B,EAGA4jB,EAAGnnB,UAAU8uB,KAAO,SAAejG,GAEjC,GAAqB,IAAjBA,EAAIrB,SAAgB,CACtBqB,EAAIrB,SAAW,EACf,IAAI5oB,EAAI2E,KAAKsrB,KAAKhG,GAElB,OADAA,EAAIrB,SAAW,EACR5oB,EAAE4rB,WAGX,CAAO,GAAsB,IAAlBjnB,KAAKikB,SAId,OAHAjkB,KAAKikB,SAAW,EAChBjkB,KAAKsrB,KAAKhG,GACVtlB,KAAKikB,SAAW,EACTjkB,KAAKinB,YAId,IAWIlqB,EAAGmJ,EAXHwf,EAAM1lB,KAAK0lB,IAAIJ,GAGnB,GAAY,IAARI,EAIF,OAHA1lB,KAAKikB,SAAW,EAChBjkB,KAAKhD,OAAS,EACdgD,KAAKkkB,MAAM,GAAK,EACTlkB,KAKL0lB,EAAM,GACR3oB,EAAIiD,KACJkG,EAAIof,IAEJvoB,EAAIuoB,EACJpf,EAAIlG,MAIN,IADA,IAAIynB,EAAQ,EACHjsB,EAAI,EAAGA,EAAI0K,EAAElJ,OAAQxB,IAC5BH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,KAAwB,EAAb0K,EAAEge,MAAM1oB,IAAUisB,EAC1CA,EAAQpsB,GAAK,GACb2E,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAElB,KAAiB,IAAVosB,GAAejsB,EAAIuB,EAAEC,OAAQxB,IAClCH,GAAkB,EAAb0B,EAAEmnB,MAAM1oB,IAAUisB,EACvBA,EAAQpsB,GAAK,GACb2E,KAAKkkB,MAAM1oB,GAAS,SAAJH,EAIlB,GAAc,IAAVosB,GAAejsB,EAAIuB,EAAEC,QAAUD,IAAMiD,KACvC,KAAOxE,EAAIuB,EAAEC,OAAQxB,IACnBwE,KAAKkkB,MAAM1oB,GAAKuB,EAAEmnB,MAAM1oB,GAU5B,OANAwE,KAAKhD,OAASioB,KAAKM,IAAIvlB,KAAKhD,OAAQxB,GAEhCuB,IAAMiD,OACRA,KAAKikB,SAAW,GAGXjkB,KAAKkmB,QACd,EAGAtC,EAAGnnB,UAAU+uB,IAAM,SAAclG,GAC/B,OAAOtlB,KAAK8mB,QAAQyE,KAAKjG,EAC3B,EA8CA,IAAImG,EAAc,SAAsB7C,EAAMtD,EAAKkC,GACjD,IAIIqB,EACA6C,EACA/B,EANA5sB,EAAI6rB,EAAK1E,MACThe,EAAIof,EAAIpB,MACR3oB,EAAIisB,EAAItD,MACRtoB,EAAI,EAIJ+vB,EAAY,EAAP5uB,EAAE,GACP6uB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/uB,EAAE,GACPgvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlvB,EAAE,GACPmvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrvB,EAAE,GACPsvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxvB,EAAE,GACPyvB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3vB,EAAE,GACP4vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9vB,EAAE,GACP+vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjwB,EAAE,GACPkwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPpwB,EAAE,GACPqwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvwB,EAAE,GACPwwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvnB,EAAE,GACPwnB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1nB,EAAE,GACP2nB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7nB,EAAE,GACP8nB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhoB,EAAE,GACPioB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnoB,EAAE,GACPooB,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPtoB,EAAE,GACPuoB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPzoB,EAAE,GACP0oB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5oB,EAAE,GACP6oB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/oB,EAAE,GACPgpB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlpB,EAAE,GACPmpB,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB5H,EAAIvD,SAAW2E,EAAK3E,SAAWqB,EAAIrB,SACnCuD,EAAIxqB,OAAS,GAEb6rB,EAAK5D,KAAKsK,KAAK3D,EAAK8B,GACpBhC,EAAMzG,KAAKsK,KAAK3D,EAAK+B,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK6B,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK1D,EAAK8B,GACpB,IAAI6B,IAAQ5zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAEN3G,EAAK5D,KAAKsK,KAAKxD,EAAK2B,GACpBhC,EAAMzG,KAAKsK,KAAKxD,EAAK4B,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK0B,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKvD,EAAK2B,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKiC,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKkC,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKgC,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKiC,GAAQ,EAClC,IAAI2B,IAAQ7zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN5G,EAAK5D,KAAKsK,KAAKrD,EAAKwB,GACpBhC,EAAMzG,KAAKsK,KAAKrD,EAAKyB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKuB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKpD,EAAKwB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK8B,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK+B,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK6B,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK8B,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKoC,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKqC,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKmC,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKoC,GAAQ,EAClC,IAAIyB,IAAQ9zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN7G,EAAK5D,KAAKsK,KAAKlD,EAAKqB,GACpBhC,EAAMzG,KAAKsK,KAAKlD,EAAKsB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKoB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKjD,EAAKqB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK2B,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK4B,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK0B,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK2B,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKiC,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKkC,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKgC,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKiC,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKuC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKwC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKsC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKuC,GAAQ,EAClC,IAAIuB,IAAQ/zB,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN9G,EAAK5D,KAAKsK,KAAK/C,EAAKkB,GACpBhC,EAAMzG,KAAKsK,KAAK/C,EAAKmB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKiB,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK9C,EAAKkB,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKwB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKyB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKuB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKwB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK8B,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK+B,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK8B,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKoC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKqC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKmC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKoC,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAK0C,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK2C,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKyC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAK0C,IAAQ,EAClC,IAAIqB,IAAQh0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAEN/G,EAAK5D,KAAKsK,KAAK5C,EAAKe,GACpBhC,EAAMzG,KAAKsK,KAAK5C,EAAKgB,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKc,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK3C,EAAKe,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKqB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKsB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKoB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKqB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK2B,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK4B,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK2B,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKiC,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKkC,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKgC,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKiC,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKuC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKwC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKsC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKuC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAK6C,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK8C,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK4C,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAK6C,IAAQ,EAClC,IAAImB,IAAQj0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENhH,EAAK5D,KAAKsK,KAAKzC,EAAKY,GACpBhC,EAAMzG,KAAKsK,KAAKzC,EAAKa,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKW,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKxC,EAAKY,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKkB,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKmB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKiB,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKkB,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKwB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKyB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKwB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK8B,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK+B,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK6B,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK8B,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKoC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKqC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKmC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKoC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK0C,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK2C,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKyC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK0C,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKgD,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKiD,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAK+C,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKgD,IAAQ,EAClC,IAAIiB,IAAQl0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENjH,EAAK5D,KAAKsK,KAAKtC,EAAKS,GACpBhC,EAAMzG,KAAKsK,KAAKtC,EAAKU,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKQ,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKrC,EAAKS,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKe,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKgB,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKc,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKe,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKqB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKsB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKqB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK2B,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK4B,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK0B,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK2B,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKiC,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKkC,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKgC,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKiC,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKuC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKwC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKsC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKuC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAK6C,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAK8C,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK4C,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAK6C,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKmD,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKoD,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKkD,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKmD,IAAQ,EAClC,IAAIe,IAAQn0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENlH,EAAK5D,KAAKsK,KAAKnC,EAAKM,GACpBhC,EAAMzG,KAAKsK,KAAKnC,EAAKO,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKK,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAKlC,EAAKM,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKY,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKa,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKW,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKY,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKkB,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKmB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKkB,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKwB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKyB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKuB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKwB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK8B,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK+B,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK6B,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK8B,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKoC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKqC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKmC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKoC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK0C,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK2C,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK0C,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKgD,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKiD,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAK+C,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKgD,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKsD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAKuD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKqD,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKsD,IAAQ,EAClC,IAAIa,IAAQp0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAK5D,KAAKsK,KAAKhC,EAAKG,GACpBhC,EAAMzG,KAAKsK,KAAKhC,EAAKI,GACrBjC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKE,GAAQ,EACpC/D,EAAK1E,KAAKsK,KAAK/B,EAAKG,GACpB9E,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKS,GAAQ,EAClCnC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKU,GAAQ,EACpCpC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKQ,GAAQ,EACpClE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKS,GAAQ,EAClCjF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKe,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKgB,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKc,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKe,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKqB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKsB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKoB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKqB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK2B,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK4B,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAK0B,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK2B,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKiC,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKkC,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKgC,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKiC,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKuC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKwC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKuC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAK6C,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAK8C,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK4C,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAK6C,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKmD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKoD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKkD,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKmD,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK3D,EAAKyD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK3D,EAAK0D,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK1D,EAAKwD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK1D,EAAKyD,IAAQ,EAClC,IAAIW,IAAQr0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACrD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENpH,EAAK5D,KAAKsK,KAAKhC,EAAKM,GACpBnC,EAAMzG,KAAKsK,KAAKhC,EAAKO,GACrBpC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKK,GAAQ,EACpClE,EAAK1E,KAAKsK,KAAK/B,EAAKM,GACpBjF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKY,GAAQ,EAClCtC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKa,GAAQ,EACpCvC,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKW,GAAQ,EACpCrE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKY,GAAQ,EAClCpF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKkB,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKmB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKiB,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKkB,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKwB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKyB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKuB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKwB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK8B,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK+B,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAK6B,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK8B,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKoC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKqC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKoC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK0C,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK2C,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAKyC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK0C,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKgD,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKiD,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAK+C,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKgD,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKxD,EAAKsD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKxD,EAAKuD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKvD,EAAKqD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKvD,EAAKsD,IAAQ,EAClC,IAAIY,IAASt0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEPrH,EAAK5D,KAAKsK,KAAKhC,EAAKS,GACpBtC,EAAMzG,KAAKsK,KAAKhC,EAAKU,GACrBvC,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKQ,GAAQ,EACpCrE,EAAK1E,KAAKsK,KAAK/B,EAAKS,GACpBpF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKe,GAAQ,EAClCzC,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKgB,GAAQ,EACpC1C,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKc,GAAQ,EACpCxE,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKe,GAAQ,EAClCvF,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKqB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKsB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKoB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKqB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAK2B,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAK4B,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAK0B,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAK2B,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKiC,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKkC,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKiC,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAKuC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAKwC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKsC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAKuC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAK6C,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAK8C,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK4C,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAK6C,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKrD,EAAKmD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKrD,EAAKoD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKpD,EAAKkD,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKpD,EAAKmD,IAAQ,EAClC,IAAIa,IAASv0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPtH,EAAK5D,KAAKsK,KAAKhC,EAAKY,GACpBzC,EAAMzG,KAAKsK,KAAKhC,EAAKa,GACrB1C,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKW,GAAQ,EACpCxE,EAAK1E,KAAKsK,KAAK/B,EAAKY,GACpBvF,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKkB,GAAQ,EAClC5C,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKmB,IAAQ,EACpC7C,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKiB,GAAQ,EACpC3E,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKkB,IAAQ,EAClC1F,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKwB,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKyB,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKuB,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKwB,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAK8B,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAK+B,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAK8B,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKoC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKqC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKmC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK0C,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK2C,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAKyC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK0C,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKlD,EAAKgD,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKlD,EAAKiD,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKjD,EAAK+C,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKjD,EAAKgD,IAAQ,EAClC,IAAIc,IAASx0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPvH,EAAK5D,KAAKsK,KAAKhC,EAAKe,GACpB5C,EAAMzG,KAAKsK,KAAKhC,EAAKgB,IACrB7C,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKc,GAAQ,EACpC3E,EAAK1E,KAAKsK,KAAK/B,EAAKe,IACpB1F,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKqB,IAAQ,EAClC/C,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKsB,IAAQ,EACpChD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKoB,IAAQ,EACpC9E,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKqB,IAAQ,EAClC7F,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAK2B,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAK4B,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAK0B,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAK2B,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKiC,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKkC,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKgC,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAKuC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAKwC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKsC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK/C,EAAK6C,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK/C,EAAK8C,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK9C,EAAK4C,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK9C,EAAK6C,IAAQ,EAClC,IAAIe,IAASz0B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPxH,EAAK5D,KAAKsK,KAAKhC,EAAKkB,IACpB/C,EAAMzG,KAAKsK,KAAKhC,EAAKmB,IACrBhD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKiB,IAAQ,EACpC9E,EAAK1E,KAAKsK,KAAK/B,EAAKkB,IACpB7F,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKwB,IAAQ,EAClClD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKyB,IAAQ,EACpCnD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKuB,IAAQ,EACpCjF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKwB,IAAQ,EAClChG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAK8B,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAK+B,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAK6B,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKoC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKqC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKmC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAK5C,EAAK0C,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAK5C,EAAK2C,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAK3C,EAAKyC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAK3C,EAAK0C,IAAQ,EAClC,IAAIgB,IAAS10B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPzH,EAAK5D,KAAKsK,KAAKhC,EAAKqB,IACpBlD,EAAMzG,KAAKsK,KAAKhC,EAAKsB,IACrBnD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKoB,IAAQ,EACpCjF,EAAK1E,KAAKsK,KAAK/B,EAAKqB,IACpBhG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAK2B,IAAQ,EAClCrD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAK4B,IAAQ,EACpCtD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAK0B,IAAQ,EACpCpF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKiC,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKkC,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKgC,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKzC,EAAKuC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKzC,EAAKwC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKxC,EAAKsC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKxC,EAAKuC,IAAQ,EAClC,IAAIiB,IAAS30B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP1H,EAAK5D,KAAKsK,KAAKhC,EAAKwB,IACpBrD,EAAMzG,KAAKsK,KAAKhC,EAAKyB,IACrBtD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAKuB,IAAQ,EACpCpF,EAAK1E,KAAKsK,KAAK/B,EAAKwB,IACpBnG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAK8B,IAAQ,EAClCxD,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAK+B,IAAQ,EACpCzD,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAK6B,IAAQ,EACpCvF,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAK5D,KAAKsK,KAAKtC,EAAKoC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKtC,EAAKqC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKrC,EAAKmC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKrC,EAAKoC,IAAQ,EAClC,IAAIkB,IAAS50B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP3H,EAAK5D,KAAKsK,KAAKhC,EAAK2B,IACpBxD,EAAMzG,KAAKsK,KAAKhC,EAAK4B,IACrBzD,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAK0B,IAAQ,EACpCvF,EAAK1E,KAAKsK,KAAK/B,EAAK2B,IACpBtG,EAAMA,EAAK5D,KAAKsK,KAAKnC,EAAKiC,IAAQ,EAClC3D,EAAOA,EAAMzG,KAAKsK,KAAKnC,EAAKkC,IAAQ,EACpC5D,EAAOA,EAAMzG,KAAKsK,KAAKlC,EAAKgC,IAAQ,EACpC1F,EAAMA,EAAK1E,KAAKsK,KAAKlC,EAAKiC,IAAQ,EAClC,IAAImB,IAAS70B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EACtD9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAEP5H,EAAK5D,KAAKsK,KAAKhC,EAAK8B,IACpB3D,EAAMzG,KAAKsK,KAAKhC,EAAK+B,IACrB5D,EAAOA,EAAMzG,KAAKsK,KAAK/B,EAAK6B,IAAQ,EACpC1F,EAAK1E,KAAKsK,KAAK/B,EAAK8B,IACpB,IAAIoB,IAAS90B,EAAIitB,EAAM,KAAa,KAAN6C,IAAiB,IAAO,EA0BtD,OAzBA9vB,GAAO+tB,GAAM+B,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPn1B,EAAE,GAAKi0B,GACPj0B,EAAE,GAAKk0B,GACPl0B,EAAE,GAAKm0B,GACPn0B,EAAE,GAAKo0B,GACPp0B,EAAE,GAAKq0B,GACPr0B,EAAE,GAAKs0B,GACPt0B,EAAE,GAAKu0B,GACPv0B,EAAE,GAAKw0B,GACPx0B,EAAE,GAAKy0B,GACPz0B,EAAE,GAAK00B,GACP10B,EAAE,IAAM20B,GACR30B,EAAE,IAAM40B,GACR50B,EAAE,IAAM60B,GACR70B,EAAE,IAAM80B,GACR90B,EAAE,IAAM+0B,GACR/0B,EAAE,IAAMg1B,GACRh1B,EAAE,IAAMi1B,GACRj1B,EAAE,IAAMk1B,GACRl1B,EAAE,IAAMm1B,GACE,IAAN90B,IACFL,EAAE,IAAMK,EACR4rB,EAAIxqB,UAECwqB,CACT,EAOA,SAASmJ,EAAU/H,EAAMtD,EAAKkC,GAC5BA,EAAIvD,SAAWqB,EAAIrB,SAAW2E,EAAK3E,SACnCuD,EAAIxqB,OAAS4rB,EAAK5rB,OAASsoB,EAAItoB,OAI/B,IAFA,IAAIyqB,EAAQ,EACRmJ,EAAU,EACL5N,EAAI,EAAGA,EAAIwE,EAAIxqB,OAAS,EAAGgmB,IAAK,CAGvC,IAAI8F,EAAS8H,EACbA,EAAU,EAGV,IAFA,IAAI7H,EAAgB,SAARtB,EACRuB,EAAO/D,KAAKC,IAAIlC,EAAGsC,EAAItoB,OAAS,GAC3BipB,EAAIhB,KAAKM,IAAI,EAAGvC,EAAI4F,EAAK5rB,OAAS,GAAIipB,GAAK+C,EAAM/C,IAAK,CAC7D,IAAIzqB,EAAIwnB,EAAIiD,EACRlpB,EAAoB,EAAhB6rB,EAAK1E,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM+B,GACd5qB,EAAI0B,EAAImJ,EAER2iB,EAAS,SAAJxtB,EACTytB,EAAUA,GAAWztB,EAAI,SAAa,GAAM,EAC5CwtB,EAAMA,EAAKE,EAAS,EACpBA,EAAa,SAALF,EACRC,EAAUA,GAAUD,IAAO,IAAO,EAElC+H,GAAW9H,IAAW,GACtBA,GAAU,QACZ,CACAtB,EAAItD,MAAMlB,GAAK+F,EACftB,EAAQqB,EACRA,EAAS8H,CACX,CAOA,OANc,IAAVnJ,EACFD,EAAItD,MAAMlB,GAAKyE,EAEfD,EAAIxqB,SAGCwqB,EAAItB,QACb,CAEA,SAAS2K,EAAYjI,EAAMtD,EAAKkC,GAI9B,OAAOmJ,EAAS/H,EAAMtD,EAAKkC,EAC7B,CAqBA,SAASsJ,EAAMpd,EAAGlT,GAChBR,KAAK0T,EAAIA,EACT1T,KAAKQ,EAAIA,CACX,CA1EKykB,KAAKsK,OACR9D,EAAc9C,GAmDhB/E,EAAGnnB,UAAUs0B,MAAQ,SAAgBzL,EAAKkC,GACxC,IAAI2B,EACAnE,EAAMhlB,KAAKhD,OAASsoB,EAAItoB,OAW5B,OATEmsB,EADkB,KAAhBnpB,KAAKhD,QAAgC,KAAfsoB,EAAItoB,OACtByuB,EAAYzrB,KAAMslB,EAAKkC,GACpBxC,EAAM,GACT2D,EAAW3oB,KAAMslB,EAAKkC,GACnBxC,EAAM,KACT2L,EAAS3wB,KAAMslB,EAAKkC,GAEpBqJ,EAAW7wB,KAAMslB,EAAKkC,GAGvB2B,CACT,EAUA2H,EAAKr0B,UAAUu0B,QAAU,SAAkBC,GAGzC,IAFA,IAAI/1B,EAAI,IAAI+E,MAAMgxB,GACdx1B,EAAImoB,EAAGnnB,UAAUgtB,WAAWwH,GAAK,EAC5Bz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBN,EAAEM,GAAKwE,KAAKkxB,OAAO11B,EAAGC,EAAGw1B,GAG3B,OAAO/1B,CACT,EAGA41B,EAAKr0B,UAAUy0B,OAAS,SAAiBxd,EAAGjY,EAAGw1B,GAC7C,GAAU,IAANvd,GAAWA,IAAMud,EAAI,EAAG,OAAOvd,EAGnC,IADA,IAAIyd,EAAK,EACA31B,EAAI,EAAGA,EAAIC,EAAGD,IACrB21B,IAAW,EAAJzd,IAAWjY,EAAID,EAAI,EAC1BkY,IAAM,EAGR,OAAOyd,CACT,EAIAL,EAAKr0B,UAAU20B,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GACpE,IAAK,IAAIz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBg2B,EAAKh2B,GAAK81B,EAAID,EAAI71B,IAClBi2B,EAAKj2B,GAAK+1B,EAAIF,EAAI71B,GAEtB,EAEAs1B,EAAKr0B,UAAUi1B,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMR,EAAGI,GACtErxB,KAAKoxB,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,GAExC,IAAK,IAAIr0B,EAAI,EAAGA,EAAIq0B,EAAGr0B,IAAM,EAM3B,IALA,IAAInB,EAAImB,GAAK,EAET+0B,EAAQ1M,KAAK2M,IAAI,EAAI3M,KAAK4M,GAAKp2B,GAC/Bq2B,EAAQ7M,KAAK8M,IAAI,EAAI9M,KAAK4M,GAAKp2B,GAE1BkB,EAAI,EAAGA,EAAIs0B,EAAGt0B,GAAKlB,EAI1B,IAHA,IAAIu2B,EAASL,EACTM,EAASH,EAEJ7L,EAAI,EAAGA,EAAIrpB,EAAGqpB,IAAK,CAC1B,IAAIiM,EAAKV,EAAK70B,EAAIspB,GACdkM,EAAKV,EAAK90B,EAAIspB,GAEdmM,EAAKZ,EAAK70B,EAAIspB,EAAIrpB,GAClBy1B,EAAKZ,EAAK90B,EAAIspB,EAAIrpB,GAElB01B,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELd,EAAK70B,EAAIspB,GAAKiM,EAAKE,EACnBX,EAAK90B,EAAIspB,GAAKkM,EAAKE,EAEnBb,EAAK70B,EAAIspB,EAAIrpB,GAAKs1B,EAAKE,EACvBX,EAAK90B,EAAIspB,EAAIrpB,GAAKu1B,EAAKE,EAGnBpM,IAAMxqB,IACR62B,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,EAEb,CAGN,EAEAxB,EAAKr0B,UAAU81B,YAAc,SAAsBn3B,EAAGO,GACpD,IAAIs1B,EAAqB,EAAjBhM,KAAKM,IAAI5pB,EAAGP,GAChBo3B,EAAU,EAAJvB,EACNz1B,EAAI,EACR,IAAKy1B,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/Bz1B,IAGF,OAAO,GAAKA,EAAI,EAAIg3B,CACtB,EAEA1B,EAAKr0B,UAAUg2B,UAAY,SAAoBnB,EAAKC,EAAKN,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIz1B,EAAI,EAAGA,EAAIy1B,EAAI,EAAGz1B,IAAK,CAC9B,IAAIN,EAAIo2B,EAAI91B,GAEZ81B,EAAI91B,GAAK81B,EAAIL,EAAIz1B,EAAI,GACrB81B,EAAIL,EAAIz1B,EAAI,GAAKN,EAEjBA,EAAIq2B,EAAI/1B,GAER+1B,EAAI/1B,IAAM+1B,EAAIN,EAAIz1B,EAAI,GACtB+1B,EAAIN,EAAIz1B,EAAI,IAAMN,CACpB,CACF,EAEA41B,EAAKr0B,UAAUi2B,aAAe,SAAuBC,EAAI1B,GAEvD,IADA,IAAIxJ,EAAQ,EACHjsB,EAAI,EAAGA,EAAIy1B,EAAI,EAAGz1B,IAAK,CAC9B,IAAI2G,EAAoC,KAAhC8iB,KAAK2N,MAAMD,EAAG,EAAIn3B,EAAI,GAAKy1B,GACjChM,KAAK2N,MAAMD,EAAG,EAAIn3B,GAAKy1B,GACvBxJ,EAEFkL,EAAGn3B,GAAS,SAAJ2G,EAGNslB,EADEtlB,EAAI,SACE,EAEAA,EAAI,SAAY,CAE5B,CAEA,OAAOwwB,CACT,EAEA7B,EAAKr0B,UAAUo2B,WAAa,SAAqBF,EAAI3N,EAAKsM,EAAKL,GAE7D,IADA,IAAIxJ,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwpB,EAAKxpB,IACvBisB,GAAyB,EAARkL,EAAGn3B,GAEpB81B,EAAI,EAAI91B,GAAa,KAARisB,EAAgBA,KAAkB,GAC/C6J,EAAI,EAAI91B,EAAI,GAAa,KAARisB,EAAgBA,KAAkB,GAIrD,IAAKjsB,EAAI,EAAIwpB,EAAKxpB,EAAIy1B,IAAKz1B,EACzB81B,EAAI91B,GAAK,EAGX4nB,EAAiB,IAAVqE,GACPrE,EAA6B,MAAb,KAARqE,GACV,EAEAqJ,EAAKr0B,UAAUq2B,KAAO,SAAe7B,GAEnC,IADA,IAAI8B,EAAK,IAAI9yB,MAAMgxB,GACVz1B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IACrBu3B,EAAGv3B,GAAK,EAGV,OAAOu3B,CACT,EAEAjC,EAAKr0B,UAAUu2B,KAAO,SAAetf,EAAGlT,EAAGgnB,GACzC,IAAIyJ,EAAI,EAAIjxB,KAAKuyB,YAAY7e,EAAE1W,OAAQwD,EAAExD,QAErCq0B,EAAMrxB,KAAKgxB,QAAQC,GAEnB7uB,EAAIpC,KAAK8yB,KAAK7B,GAEdK,EAAM,IAAIrxB,MAAMgxB,GAChBgC,EAAO,IAAIhzB,MAAMgxB,GACjBiC,EAAO,IAAIjzB,MAAMgxB,GAEjBkC,EAAO,IAAIlzB,MAAMgxB,GACjBmC,EAAQ,IAAInzB,MAAMgxB,GAClBoC,EAAQ,IAAIpzB,MAAMgxB,GAElBqC,EAAO9L,EAAItD,MACfoP,EAAKt2B,OAASi0B,EAEdjxB,KAAK6yB,WAAWnf,EAAEwQ,MAAOxQ,EAAE1W,OAAQs0B,EAAKL,GACxCjxB,KAAK6yB,WAAWryB,EAAE0jB,MAAO1jB,EAAExD,OAAQm2B,EAAMlC,GAEzCjxB,KAAK0xB,UAAUJ,EAAKlvB,EAAG6wB,EAAMC,EAAMjC,EAAGI,GACtCrxB,KAAK0xB,UAAUyB,EAAM/wB,EAAGgxB,EAAOC,EAAOpC,EAAGI,GAEzC,IAAK,IAAI71B,EAAI,EAAGA,EAAIy1B,EAAGz1B,IAAK,CAC1B,IAAI82B,EAAKW,EAAKz3B,GAAK43B,EAAM53B,GAAK03B,EAAK13B,GAAK63B,EAAM73B,GAC9C03B,EAAK13B,GAAKy3B,EAAKz3B,GAAK63B,EAAM73B,GAAK03B,EAAK13B,GAAK43B,EAAM53B,GAC/Cy3B,EAAKz3B,GAAK82B,CACZ,CASA,OAPAtyB,KAAKyyB,UAAUQ,EAAMC,EAAMjC,GAC3BjxB,KAAK0xB,UAAUuB,EAAMC,EAAMI,EAAMlxB,EAAG6uB,EAAGI,GACvCrxB,KAAKyyB,UAAUa,EAAMlxB,EAAG6uB,GACxBjxB,KAAK0yB,aAAaY,EAAMrC,GAExBzJ,EAAIvD,SAAWvQ,EAAEuQ,SAAWzjB,EAAEyjB,SAC9BuD,EAAIxqB,OAAS0W,EAAE1W,OAASwD,EAAExD,OACnBwqB,EAAItB,QACb,EAGAtC,EAAGnnB,UAAUsoB,IAAM,SAAcO,GAC/B,IAAIkC,EAAM,IAAI5D,EAAG,MAEjB,OADA4D,EAAItD,MAAQ,IAAIjkB,MAAMD,KAAKhD,OAASsoB,EAAItoB,QACjCgD,KAAK+wB,MAAMzL,EAAKkC,EACzB,EAGA5D,EAAGnnB,UAAU82B,KAAO,SAAejO,GACjC,IAAIkC,EAAM,IAAI5D,EAAG,MAEjB,OADA4D,EAAItD,MAAQ,IAAIjkB,MAAMD,KAAKhD,OAASsoB,EAAItoB,QACjC6zB,EAAW7wB,KAAMslB,EAAKkC,EAC/B,EAGA5D,EAAGnnB,UAAU8yB,KAAO,SAAejK,GACjC,OAAOtlB,KAAK8mB,QAAQiK,MAAMzL,EAAKtlB,KACjC,EAEA4jB,EAAGnnB,UAAUgqB,MAAQ,SAAgBnB,GACnC,IAAIkO,EAAWlO,EAAM,EACjBkO,IAAUlO,GAAOA,GAErBlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UAIb,IADA,IAAImC,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CACpC,IAAI2G,GAAqB,EAAhBnC,KAAKkkB,MAAM1oB,IAAU8pB,EAC1BuD,GAAU,SAAJ1mB,IAA0B,SAARslB,GAC5BA,IAAU,GACVA,GAAUtlB,EAAI,SAAa,EAE3BslB,GAASoB,IAAO,GAChB7oB,KAAKkkB,MAAM1oB,GAAU,SAALqtB,CAClB,CAOA,OALc,IAAVpB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,UAGAw2B,EAAWxzB,KAAKoqB,OAASpqB,IAClC,EAEA4jB,EAAGnnB,UAAUg3B,KAAO,SAAenO,GACjC,OAAOtlB,KAAK8mB,QAAQL,MAAMnB,EAC5B,EAGA1B,EAAGnnB,UAAUi3B,IAAM,WACjB,OAAO1zB,KAAK+kB,IAAI/kB,KAClB,EAGA4jB,EAAGnnB,UAAUk3B,KAAO,WAClB,OAAO3zB,KAAKuvB,KAAKvvB,KAAK8mB,QACxB,EAGAlD,EAAGnnB,UAAUkqB,IAAM,SAAcrB,GAC/B,IAAInjB,EAAIomB,EAAWjD,GACnB,GAAiB,IAAbnjB,EAAEnF,OAAc,OAAO,IAAI4mB,EAAG,GAIlC,IADA,IAAIuF,EAAMnpB,KACDxE,EAAI,EAAGA,EAAI2G,EAAEnF,OAAQxB,IAAK2tB,EAAMA,EAAIuK,MAC3C,GAAa,IAATvxB,EAAE3G,GAAU,MAGlB,KAAMA,EAAI2G,EAAEnF,OACV,IAAK,IAAI42B,EAAIzK,EAAIuK,MAAOl4B,EAAI2G,EAAEnF,OAAQxB,IAAKo4B,EAAIA,EAAEF,MAClC,IAATvxB,EAAE3G,KAEN2tB,EAAMA,EAAIpE,IAAI6O,IAIlB,OAAOzK,CACT,EAGAvF,EAAGnnB,UAAUo3B,OAAS,SAAiBC,GACrC1Q,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAC3C,IAGIt4B,EAHAH,EAAIy4B,EAAO,GACXl3B,GAAKk3B,EAAOz4B,GAAK,GACjB04B,EAAa,WAAe,GAAK14B,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIosB,EAAQ,EAEZ,IAAKjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAAK,CAChC,IAAIw4B,EAAWh0B,KAAKkkB,MAAM1oB,GAAKu4B,EAC3Bn4B,GAAsB,EAAhBoE,KAAKkkB,MAAM1oB,IAAUw4B,GAAa34B,EAC5C2E,KAAKkkB,MAAM1oB,GAAKI,EAAI6rB,EACpBA,EAAQuM,IAAc,GAAK34B,CAC7B,CAEIosB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,SAET,CAEA,GAAU,IAANJ,EAAS,CACX,IAAKpB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAChCwE,KAAKkkB,MAAM1oB,EAAIoB,GAAKoD,KAAKkkB,MAAM1oB,GAGjC,IAAKA,EAAI,EAAGA,EAAIoB,EAAGpB,IACjBwE,KAAKkkB,MAAM1oB,GAAK,EAGlBwE,KAAKhD,QAAUJ,CACjB,CAEA,OAAOoD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUw3B,MAAQ,SAAgBH,GAGnC,OADA1Q,EAAyB,IAAlBpjB,KAAKikB,UACLjkB,KAAK6zB,OAAOC,EACrB,EAKAlQ,EAAGnnB,UAAUy3B,OAAS,SAAiBJ,EAAMK,EAAMC,GAEjD,IAAI7zB,EADJ6iB,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAGzCvzB,EADE4zB,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI94B,EAAIy4B,EAAO,GACXl3B,EAAIqoB,KAAKC,KAAK4O,EAAOz4B,GAAK,GAAI2E,KAAKhD,QACnCq3B,EAAO,SAAc,WAAch5B,GAAMA,EACzCi5B,EAAcF,EAMlB,GAJA7zB,GAAK3D,EACL2D,EAAI0kB,KAAKM,IAAI,EAAGhlB,GAGZ+zB,EAAa,CACf,IAAK,IAAI94B,EAAI,EAAGA,EAAIoB,EAAGpB,IACrB84B,EAAYpQ,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,GAEpC84B,EAAYt3B,OAASJ,CACvB,CAEA,GAAU,IAANA,QAEG,GAAIoD,KAAKhD,OAASJ,EAEvB,IADAoD,KAAKhD,QAAUJ,EACVpB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC3BwE,KAAKkkB,MAAM1oB,GAAKwE,KAAKkkB,MAAM1oB,EAAIoB,QAGjCoD,KAAKkkB,MAAM,GAAK,EAChBlkB,KAAKhD,OAAS,EAGhB,IAAIyqB,EAAQ,EACZ,IAAKjsB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,IAAgB,IAAVisB,GAAejsB,GAAK+E,GAAI/E,IAAK,CAChE,IAAIgrB,EAAuB,EAAhBxmB,KAAKkkB,MAAM1oB,GACtBwE,KAAKkkB,MAAM1oB,GAAMisB,GAAU,GAAKpsB,EAAOmrB,IAASnrB,EAChDosB,EAAQjB,EAAO6N,CACjB,CAYA,OATIC,GAAyB,IAAV7M,IACjB6M,EAAYpQ,MAAMoQ,EAAYt3B,UAAYyqB,GAGxB,IAAhBznB,KAAKhD,SACPgD,KAAKkkB,MAAM,GAAK,EAChBlkB,KAAKhD,OAAS,GAGTgD,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU83B,MAAQ,SAAgBT,EAAMK,EAAMC,GAG/C,OADAhR,EAAyB,IAAlBpjB,KAAKikB,UACLjkB,KAAKk0B,OAAOJ,EAAMK,EAAMC,EACjC,EAGAxQ,EAAGnnB,UAAU+3B,KAAO,SAAeV,GACjC,OAAO9zB,KAAK8mB,QAAQmN,MAAMH,EAC5B,EAEAlQ,EAAGnnB,UAAUg4B,MAAQ,SAAgBX,GACnC,OAAO9zB,KAAK8mB,QAAQ+M,OAAOC,EAC7B,EAGAlQ,EAAGnnB,UAAUi4B,KAAO,SAAeZ,GACjC,OAAO9zB,KAAK8mB,QAAQyN,MAAMT,EAC5B,EAEAlQ,EAAGnnB,UAAUk4B,MAAQ,SAAgBb,GACnC,OAAO9zB,KAAK8mB,QAAQoN,OAAOJ,EAC7B,EAGAlQ,EAAGnnB,UAAUytB,MAAQ,SAAgBzB,GACnCrF,EAAsB,kBAARqF,GAAoBA,GAAO,GACzC,IAAIptB,EAAIotB,EAAM,GACV7rB,GAAK6rB,EAAMptB,GAAK,GAChBu4B,EAAI,GAAKv4B,EAGb,GAAI2E,KAAKhD,QAAUJ,EAAG,OAAO,EAG7B,IAAIuF,EAAInC,KAAKkkB,MAAMtnB,GAEnB,SAAUuF,EAAIyxB,EAChB,EAGAhQ,EAAGnnB,UAAUm4B,OAAS,SAAiBd,GACrC1Q,EAAuB,kBAAT0Q,GAAqBA,GAAQ,GAC3C,IAAIz4B,EAAIy4B,EAAO,GACXl3B,GAAKk3B,EAAOz4B,GAAK,GAIrB,GAFA+nB,EAAyB,IAAlBpjB,KAAKikB,SAAgB,2CAExBjkB,KAAKhD,QAAUJ,EACjB,OAAOoD,KAQT,GALU,IAAN3E,GACFuB,IAEFoD,KAAKhD,OAASioB,KAAKC,IAAItoB,EAAGoD,KAAKhD,QAErB,IAAN3B,EAAS,CACX,IAAIg5B,EAAO,SAAc,WAAch5B,GAAMA,EAC7C2E,KAAKkkB,MAAMlkB,KAAKhD,OAAS,IAAMq3B,CACjC,CAEA,OAAOr0B,KAAKkmB,QACd,EAGAtC,EAAGnnB,UAAUo4B,MAAQ,SAAgBf,GACnC,OAAO9zB,KAAK8mB,QAAQ8N,OAAOd,EAC7B,EAGAlQ,EAAGnnB,UAAUutB,MAAQ,SAAgB1E,GAGnC,OAFAlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UACTA,EAAM,EAAUtlB,KAAK80B,OAAOxP,GAGV,IAAlBtlB,KAAKikB,SACa,IAAhBjkB,KAAKhD,SAAiC,EAAhBgD,KAAKkkB,MAAM,KAAWoB,GAC9CtlB,KAAKkkB,MAAM,GAAKoB,GAAuB,EAAhBtlB,KAAKkkB,MAAM,IAClClkB,KAAKikB,SAAW,EACTjkB,OAGTA,KAAKikB,SAAW,EAChBjkB,KAAK80B,MAAMxP,GACXtlB,KAAKikB,SAAW,EACTjkB,MAIFA,KAAK0mB,OAAOpB,EACrB,EAEA1B,EAAGnnB,UAAUiqB,OAAS,SAAiBpB,GACrCtlB,KAAKkkB,MAAM,IAAMoB,EAGjB,IAAK,IAAI9pB,EAAI,EAAGA,EAAIwE,KAAKhD,QAAUgD,KAAKkkB,MAAM1oB,IAAM,SAAWA,IAC7DwE,KAAKkkB,MAAM1oB,IAAM,SACbA,IAAMwE,KAAKhD,OAAS,EACtBgD,KAAKkkB,MAAM1oB,EAAI,GAAK,EAEpBwE,KAAKkkB,MAAM1oB,EAAI,KAKnB,OAFAwE,KAAKhD,OAASioB,KAAKM,IAAIvlB,KAAKhD,OAAQxB,EAAI,GAEjCwE,IACT,EAGA4jB,EAAGnnB,UAAUq4B,MAAQ,SAAgBxP,GAGnC,GAFAlC,EAAsB,kBAARkC,GACdlC,EAAOkC,EAAM,UACTA,EAAM,EAAG,OAAOtlB,KAAKgqB,OAAO1E,GAEhC,GAAsB,IAAlBtlB,KAAKikB,SAIP,OAHAjkB,KAAKikB,SAAW,EAChBjkB,KAAKgqB,MAAM1E,GACXtlB,KAAKikB,SAAW,EACTjkB,KAKT,GAFAA,KAAKkkB,MAAM,IAAMoB,EAEG,IAAhBtlB,KAAKhD,QAAgBgD,KAAKkkB,MAAM,GAAK,EACvClkB,KAAKkkB,MAAM,IAAMlkB,KAAKkkB,MAAM,GAC5BlkB,KAAKikB,SAAW,OAGhB,IAAK,IAAIzoB,EAAI,EAAGA,EAAIwE,KAAKhD,QAAUgD,KAAKkkB,MAAM1oB,GAAK,EAAGA,IACpDwE,KAAKkkB,MAAM1oB,IAAM,SACjBwE,KAAKkkB,MAAM1oB,EAAI,IAAM,EAIzB,OAAOwE,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAUs4B,KAAO,SAAezP,GACjC,OAAOtlB,KAAK8mB,QAAQkD,MAAM1E,EAC5B,EAEA1B,EAAGnnB,UAAUu4B,KAAO,SAAe1P,GACjC,OAAOtlB,KAAK8mB,QAAQgO,MAAMxP,EAC5B,EAEA1B,EAAGnnB,UAAUw4B,KAAO,WAGlB,OAFAj1B,KAAKikB,SAAW,EAETjkB,IACT,EAEA4jB,EAAGnnB,UAAUqtB,IAAM,WACjB,OAAO9pB,KAAK8mB,QAAQmO,MACtB,EAEArR,EAAGnnB,UAAUy4B,aAAe,SAAuB5P,EAAKP,EAAKjd,GAC3D,IACItM,EAIA2G,EALA6iB,EAAMM,EAAItoB,OAAS8K,EAGvB9H,KAAK+mB,QAAQ/B,GAGb,IAAIyC,EAAQ,EACZ,IAAKjsB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CAC/B2G,GAA6B,EAAxBnC,KAAKkkB,MAAM1oB,EAAIsM,IAAc2f,EAClC,IAAIhC,GAAwB,EAAfH,EAAIpB,MAAM1oB,IAAUupB,EACjC5iB,GAAa,SAARsjB,EACLgC,GAAStlB,GAAK,KAAQsjB,EAAQ,SAAa,GAC3CzlB,KAAKkkB,MAAM1oB,EAAIsM,GAAa,SAAJ3F,CAC1B,CACA,KAAO3G,EAAIwE,KAAKhD,OAAS8K,EAAOtM,IAC9B2G,GAA6B,EAAxBnC,KAAKkkB,MAAM1oB,EAAIsM,IAAc2f,EAClCA,EAAQtlB,GAAK,GACbnC,KAAKkkB,MAAM1oB,EAAIsM,GAAa,SAAJ3F,EAG1B,GAAc,IAAVslB,EAAa,OAAOznB,KAAKkmB,SAK7B,IAFA9C,GAAkB,IAAXqE,GACPA,EAAQ,EACHjsB,EAAI,EAAGA,EAAIwE,KAAKhD,OAAQxB,IAC3B2G,IAAsB,EAAhBnC,KAAKkkB,MAAM1oB,IAAUisB,EAC3BA,EAAQtlB,GAAK,GACbnC,KAAKkkB,MAAM1oB,GAAS,SAAJ2G,EAIlB,OAFAnC,KAAKikB,SAAW,EAETjkB,KAAKkmB,QACd,EAEAtC,EAAGnnB,UAAU04B,SAAW,SAAmB7P,EAAK8P,GAC9C,IAAIttB,EAAQ9H,KAAKhD,OAASsoB,EAAItoB,OAE1BD,EAAIiD,KAAK8mB,QACT5gB,EAAIof,EAGJ+P,EAA8B,EAAxBnvB,EAAEge,MAAMhe,EAAElJ,OAAS,GACzBs4B,EAAUt1B,KAAKypB,WAAW4L,GAC9BvtB,EAAQ,GAAKwtB,EACC,IAAVxtB,IACF5B,EAAIA,EAAEuuB,MAAM3sB,GACZ/K,EAAE82B,OAAO/rB,GACTutB,EAA8B,EAAxBnvB,EAAEge,MAAMhe,EAAElJ,OAAS,IAI3B,IACI42B,EADAj4B,EAAIoB,EAAEC,OAASkJ,EAAElJ,OAGrB,GAAa,QAATo4B,EAAgB,CAClBxB,EAAI,IAAIhQ,EAAG,MACXgQ,EAAE52B,OAASrB,EAAI,EACfi4B,EAAE1P,MAAQ,IAAIjkB,MAAM2zB,EAAE52B,QACtB,IAAK,IAAIxB,EAAI,EAAGA,EAAIo4B,EAAE52B,OAAQxB,IAC5Bo4B,EAAE1P,MAAM1oB,GAAK,CAEjB,CAEA,IAAI+5B,EAAOx4B,EAAE+pB,QAAQoO,aAAahvB,EAAG,EAAGvK,GAClB,IAAlB45B,EAAKtR,WACPlnB,EAAIw4B,EACA3B,IACFA,EAAE1P,MAAMvoB,GAAK,IAIjB,IAAK,IAAIsqB,EAAItqB,EAAI,EAAGsqB,GAAK,EAAGA,IAAK,CAC/B,IAAIuP,EAAmC,UAAL,EAAxBz4B,EAAEmnB,MAAMhe,EAAElJ,OAASipB,KACE,EAA5BlpB,EAAEmnB,MAAMhe,EAAElJ,OAASipB,EAAI,IAI1BuP,EAAKvQ,KAAKC,IAAKsQ,EAAKH,EAAO,EAAG,UAE9Bt4B,EAAEm4B,aAAahvB,EAAGsvB,EAAIvP,GACtB,MAAsB,IAAflpB,EAAEknB,SACPuR,IACAz4B,EAAEknB,SAAW,EACblnB,EAAEm4B,aAAahvB,EAAG,EAAG+f,GAChBlpB,EAAE6qB,WACL7qB,EAAEknB,UAAY,GAGd2P,IACFA,EAAE1P,MAAM+B,GAAKuP,EAEjB,CAWA,OAVI5B,GACFA,EAAE1N,SAEJnpB,EAAEmpB,SAGW,QAATkP,GAA4B,IAAVttB,GACpB/K,EAAEm3B,OAAOpsB,GAGJ,CACL2tB,IAAK7B,GAAK,KACVrN,IAAKxpB,EAET,EAMA6mB,EAAGnnB,UAAUi5B,OAAS,SAAiBpQ,EAAK8P,EAAMO,GAGhD,OAFAvS,GAAQkC,EAAIsC,UAER5nB,KAAK4nB,SACA,CACL6N,IAAK,IAAI7R,EAAG,GACZ2C,IAAK,IAAI3C,EAAG,IAKM,IAAlB5jB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,UAC7BkF,EAAMnpB,KAAKsqB,MAAMoL,OAAOpQ,EAAK8P,GAEhB,QAATA,IACFK,EAAMtM,EAAIsM,IAAInL,OAGH,QAAT8K,IACF7O,EAAM4C,EAAI5C,IAAI+D,MACVqL,GAA6B,IAAjBpP,EAAItC,UAClBsC,EAAI+E,KAAKhG,IAIN,CACLmQ,IAAKA,EACLlP,IAAKA,IAIa,IAAlBvmB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,UAC7BkF,EAAMnpB,KAAK01B,OAAOpQ,EAAIgF,MAAO8K,GAEhB,QAATA,IACFK,EAAMtM,EAAIsM,IAAInL,OAGT,CACLmL,IAAKA,EACLlP,IAAK4C,EAAI5C,MAI0B,KAAlCvmB,KAAKikB,SAAWqB,EAAIrB,WACvBkF,EAAMnpB,KAAKsqB,MAAMoL,OAAOpQ,EAAIgF,MAAO8K,GAEtB,QAATA,IACF7O,EAAM4C,EAAI5C,IAAI+D,MACVqL,GAA6B,IAAjBpP,EAAItC,UAClBsC,EAAIgF,KAAKjG,IAIN,CACLmQ,IAAKtM,EAAIsM,IACTlP,IAAKA,IAOLjB,EAAItoB,OAASgD,KAAKhD,QAAUgD,KAAK0lB,IAAIJ,GAAO,EACvC,CACLmQ,IAAK,IAAI7R,EAAG,GACZ2C,IAAKvmB,MAKU,IAAfslB,EAAItoB,OACO,QAATo4B,EACK,CACLK,IAAKz1B,KAAK41B,KAAKtQ,EAAIpB,MAAM,IACzBqC,IAAK,MAII,QAAT6O,EACK,CACLK,IAAK,KACLlP,IAAK,IAAI3C,EAAG5jB,KAAK6nB,MAAMvC,EAAIpB,MAAM,MAI9B,CACLuR,IAAKz1B,KAAK41B,KAAKtQ,EAAIpB,MAAM,IACzBqC,IAAK,IAAI3C,EAAG5jB,KAAK6nB,MAAMvC,EAAIpB,MAAM,MAI9BlkB,KAAKm1B,SAAS7P,EAAK8P,GAlF1B,IAAIK,EAAKlP,EAAK4C,CAmFhB,EAGAvF,EAAGnnB,UAAUg5B,IAAM,SAAcnQ,GAC/B,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAOmQ,GACxC,EAGA7R,EAAGnnB,UAAU8pB,IAAM,SAAcjB,GAC/B,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAOiB,GACxC,EAEA3C,EAAGnnB,UAAUo5B,KAAO,SAAevQ,GACjC,OAAOtlB,KAAK01B,OAAOpQ,EAAK,OAAO,GAAMiB,GACvC,EAGA3C,EAAGnnB,UAAUq5B,SAAW,SAAmBxQ,GACzC,IAAIyQ,EAAK/1B,KAAK01B,OAAOpQ,GAGrB,GAAIyQ,EAAGxP,IAAIqB,SAAU,OAAOmO,EAAGN,IAE/B,IAAIlP,EAA0B,IAApBwP,EAAGN,IAAIxR,SAAiB8R,EAAGxP,IAAIgF,KAAKjG,GAAOyQ,EAAGxP,IAEpDyP,EAAO1Q,EAAIqP,MAAM,GACjBsB,EAAK3Q,EAAI4Q,MAAM,GACfxQ,EAAMa,EAAIb,IAAIsQ,GAGlB,OAAItQ,EAAM,GAAa,IAAPuQ,GAAoB,IAARvQ,EAAmBqQ,EAAGN,IAGvB,IAApBM,EAAGN,IAAIxR,SAAiB8R,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAIzL,MAAM,EAChE,EAEApG,EAAGnnB,UAAUorB,MAAQ,SAAgBvC,GACnC,IAAIkO,EAAWlO,EAAM,EACjBkO,IAAUlO,GAAOA,GAErBlC,EAAOkC,GAAO,UAId,IAHA,IAAI3oB,GAAK,GAAK,IAAM2oB,EAEhB6Q,EAAM,EACD36B,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IACpC26B,GAAOx5B,EAAIw5B,GAAuB,EAAhBn2B,KAAKkkB,MAAM1oB,KAAW8pB,EAG1C,OAAOkO,GAAY2C,EAAMA,CAC3B,EAGAvS,EAAGnnB,UAAU25B,KAAO,SAAe9Q,GACjC,OAAOtlB,KAAK6nB,MAAMvC,EACpB,EAGA1B,EAAGnnB,UAAUqrB,MAAQ,SAAgBxC,GACnC,IAAIkO,EAAWlO,EAAM,EACjBkO,IAAUlO,GAAOA,GAErBlC,EAAOkC,GAAO,UAGd,IADA,IAAImC,EAAQ,EACHjsB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CACzC,IAAI2G,GAAqB,EAAhBnC,KAAKkkB,MAAM1oB,IAAkB,SAARisB,EAC9BznB,KAAKkkB,MAAM1oB,GAAM2G,EAAImjB,EAAO,EAC5BmC,EAAQtlB,EAAImjB,CACd,CAGA,OADAtlB,KAAKkmB,SACEsN,EAAWxzB,KAAKoqB,OAASpqB,IAClC,EAEA4jB,EAAGnnB,UAAUm5B,KAAO,SAAetQ,GACjC,OAAOtlB,KAAK8mB,QAAQgB,MAAMxC,EAC5B,EAEA1B,EAAGnnB,UAAU45B,KAAO,SAAe15B,GACjCymB,EAAsB,IAAfzmB,EAAEsnB,UACTb,GAAQzmB,EAAEirB,UAEV,IAAIlU,EAAI1T,KACJQ,EAAI7D,EAAEmqB,QAGRpT,EADiB,IAAfA,EAAEuQ,SACAvQ,EAAEmiB,KAAKl5B,GAEP+W,EAAEoT,QAIR,IAAIwP,EAAI,IAAI1S,EAAG,GACX2S,EAAI,IAAI3S,EAAG,GAGX4S,EAAI,IAAI5S,EAAG,GACX6S,EAAI,IAAI7S,EAAG,GAEXzd,EAAI,EAER,MAAOuN,EAAEgjB,UAAYl2B,EAAEk2B,SACrBhjB,EAAEwgB,OAAO,GACT1zB,EAAE0zB,OAAO,KACP/tB,EAGJ,IAAIwwB,EAAKn2B,EAAEsmB,QACP8P,EAAKljB,EAAEoT,QAEX,OAAQpT,EAAEkU,SAAU,CAClB,IAAK,IAAIpsB,EAAI,EAAGq7B,EAAK,EAAyB,KAArBnjB,EAAEwQ,MAAM,GAAK2S,IAAar7B,EAAI,KAAMA,EAAGq7B,IAAO,GACvE,GAAIr7B,EAAI,EAAG,CACTkY,EAAEwgB,OAAO14B,GACT,MAAOA,KAAM,GACP86B,EAAEQ,SAAWP,EAAEO,WACjBR,EAAEhL,KAAKqL,GACPJ,EAAEhL,KAAKqL,IAGTN,EAAEpC,OAAO,GACTqC,EAAErC,OAAO,EAEb,CAEA,IAAK,IAAIjO,EAAI,EAAG8Q,EAAK,EAAyB,KAArBv2B,EAAE0jB,MAAM,GAAK6S,IAAa9Q,EAAI,KAAMA,EAAG8Q,IAAO,GACvE,GAAI9Q,EAAI,EAAG,CACTzlB,EAAE0zB,OAAOjO,GACT,MAAOA,KAAM,GACPuQ,EAAEM,SAAWL,EAAEK,WACjBN,EAAElL,KAAKqL,GACPF,EAAElL,KAAKqL,IAGTJ,EAAEtC,OAAO,GACTuC,EAAEvC,OAAO,EAEb,CAEIxgB,EAAEgS,IAAIllB,IAAM,GACdkT,EAAE6X,KAAK/qB,GACP81B,EAAE/K,KAAKiL,GACPD,EAAEhL,KAAKkL,KAEPj2B,EAAE+qB,KAAK7X,GACP8iB,EAAEjL,KAAK+K,GACPG,EAAElL,KAAKgL,GAEX,CAEA,MAAO,CACLx5B,EAAGy5B,EACHtwB,EAAGuwB,EACHO,IAAKx2B,EAAEqzB,OAAO1tB,GAElB,EAKAyd,EAAGnnB,UAAUw6B,OAAS,SAAiBt6B,GACrCymB,EAAsB,IAAfzmB,EAAEsnB,UACTb,GAAQzmB,EAAEirB,UAEV,IAAI7qB,EAAIiD,KACJkG,EAAIvJ,EAAEmqB,QAGR/pB,EADiB,IAAfA,EAAEknB,SACAlnB,EAAE84B,KAAKl5B,GAEPI,EAAE+pB,QAGR,IAuCIqC,EAvCA+N,EAAK,IAAItT,EAAG,GACZuT,EAAK,IAAIvT,EAAG,GAEZwT,EAAQlxB,EAAE4gB,QAEd,MAAO/pB,EAAEs6B,KAAK,GAAK,GAAKnxB,EAAEmxB,KAAK,GAAK,EAAG,CACrC,IAAK,IAAI77B,EAAI,EAAGq7B,EAAK,EAAyB,KAArB95B,EAAEmnB,MAAM,GAAK2S,IAAar7B,EAAI,KAAMA,EAAGq7B,IAAO,GACvE,GAAIr7B,EAAI,EAAG,CACTuB,EAAEm3B,OAAO14B,GACT,MAAOA,KAAM,EACP07B,EAAGJ,SACLI,EAAG5L,KAAK8L,GAGVF,EAAGhD,OAAO,EAEd,CAEA,IAAK,IAAIjO,EAAI,EAAG8Q,EAAK,EAAyB,KAArB7wB,EAAEge,MAAM,GAAK6S,IAAa9Q,EAAI,KAAMA,EAAG8Q,IAAO,GACvE,GAAI9Q,EAAI,EAAG,CACT/f,EAAEguB,OAAOjO,GACT,MAAOA,KAAM,EACPkR,EAAGL,SACLK,EAAG7L,KAAK8L,GAGVD,EAAGjD,OAAO,EAEd,CAEIn3B,EAAE2oB,IAAIxf,IAAM,GACdnJ,EAAEwuB,KAAKrlB,GACPgxB,EAAG3L,KAAK4L,KAERjxB,EAAEqlB,KAAKxuB,GACPo6B,EAAG5L,KAAK2L,GAEZ,CAaA,OATE/N,EADgB,IAAdpsB,EAAEs6B,KAAK,GACHH,EAEAC,EAGJhO,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAK3uB,GAGJwsB,CACT,EAEAvF,EAAGnnB,UAAUu6B,IAAM,SAAc1R,GAC/B,GAAItlB,KAAK4nB,SAAU,OAAOtC,EAAIwE,MAC9B,GAAIxE,EAAIsC,SAAU,OAAO5nB,KAAK8pB,MAE9B,IAAI/sB,EAAIiD,KAAK8mB,QACT5gB,EAAIof,EAAIwB,QACZ/pB,EAAEknB,SAAW,EACb/d,EAAE+d,SAAW,EAGb,IAAK,IAAInc,EAAQ,EAAG/K,EAAE25B,UAAYxwB,EAAEwwB,SAAU5uB,IAC5C/K,EAAEm3B,OAAO,GACThuB,EAAEguB,OAAO,GAGX,EAAG,CACD,MAAOn3B,EAAE25B,SACP35B,EAAEm3B,OAAO,GAEX,MAAOhuB,EAAEwwB,SACPxwB,EAAEguB,OAAO,GAGX,IAAI74B,EAAI0B,EAAE2oB,IAAIxf,GACd,GAAI7K,EAAI,EAAG,CAET,IAAIH,EAAI6B,EACRA,EAAImJ,EACJA,EAAIhL,CACN,MAAO,GAAU,IAANG,GAAyB,IAAd6K,EAAEmxB,KAAK,GAC3B,MAGFt6B,EAAEwuB,KAAKrlB,EACT,OAAS,GAET,OAAOA,EAAE2tB,OAAO/rB,EAClB,EAGA8b,EAAGnnB,UAAU66B,KAAO,SAAehS,GACjC,OAAOtlB,KAAKq2B,KAAK/Q,GAAKvoB,EAAE84B,KAAKvQ,EAC/B,EAEA1B,EAAGnnB,UAAUi6B,OAAS,WACpB,OAA+B,KAAP,EAAhB12B,KAAKkkB,MAAM,GACrB,EAEAN,EAAGnnB,UAAUq6B,MAAQ,WACnB,OAA+B,KAAP,EAAhB92B,KAAKkkB,MAAM,GACrB,EAGAN,EAAGnnB,UAAUy5B,MAAQ,SAAgB5Q,GACnC,OAAOtlB,KAAKkkB,MAAM,GAAKoB,CACzB,EAGA1B,EAAGnnB,UAAU86B,MAAQ,SAAgB9O,GACnCrF,EAAsB,kBAARqF,GACd,IAAIptB,EAAIotB,EAAM,GACV7rB,GAAK6rB,EAAMptB,GAAK,GAChBu4B,EAAI,GAAKv4B,EAGb,GAAI2E,KAAKhD,QAAUJ,EAGjB,OAFAoD,KAAK+mB,QAAQnqB,EAAI,GACjBoD,KAAKkkB,MAAMtnB,IAAMg3B,EACV5zB,KAKT,IADA,IAAIynB,EAAQmM,EACHp4B,EAAIoB,EAAa,IAAV6qB,GAAejsB,EAAIwE,KAAKhD,OAAQxB,IAAK,CACnD,IAAI2G,EAAoB,EAAhBnC,KAAKkkB,MAAM1oB,GACnB2G,GAAKslB,EACLA,EAAQtlB,IAAM,GACdA,GAAK,SACLnC,KAAKkkB,MAAM1oB,GAAK2G,CAClB,CAKA,OAJc,IAAVslB,IACFznB,KAAKkkB,MAAM1oB,GAAKisB,EAChBznB,KAAKhD,UAEAgD,IACT,EAEA4jB,EAAGnnB,UAAUmrB,OAAS,WACpB,OAAuB,IAAhB5nB,KAAKhD,QAAkC,IAAlBgD,KAAKkkB,MAAM,EACzC,EAEAN,EAAGnnB,UAAU46B,KAAO,SAAe/R,GACjC,IAOI6D,EAPAlF,EAAWqB,EAAM,EAErB,GAAsB,IAAlBtlB,KAAKikB,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBjkB,KAAKikB,UAAkBA,EAAU,OAAO,EAK5C,GAHAjkB,KAAKkmB,SAGDlmB,KAAKhD,OAAS,EAChBmsB,EAAM,MACD,CACDlF,IACFqB,GAAOA,GAGTlC,EAAOkC,GAAO,SAAW,qBAEzB,IAAInjB,EAAoB,EAAhBnC,KAAKkkB,MAAM,GACnBiF,EAAMhnB,IAAMmjB,EAAM,EAAInjB,EAAImjB,GAAO,EAAI,CACvC,CACA,OAAsB,IAAlBtlB,KAAKikB,SAA8B,GAANkF,EAC1BA,CACT,EAMAvF,EAAGnnB,UAAUipB,IAAM,SAAcJ,GAC/B,GAAsB,IAAlBtlB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAAgB,OAAQ,EACvD,GAAsB,IAAlBjkB,KAAKikB,UAAmC,IAAjBqB,EAAIrB,SAAgB,OAAO,EAEtD,IAAIkF,EAAMnpB,KAAKw3B,KAAKlS,GACpB,OAAsB,IAAlBtlB,KAAKikB,SAA8B,GAANkF,EAC1BA,CACT,EAGAvF,EAAGnnB,UAAU+6B,KAAO,SAAelS,GAEjC,GAAItlB,KAAKhD,OAASsoB,EAAItoB,OAAQ,OAAO,EACrC,GAAIgD,KAAKhD,OAASsoB,EAAItoB,OAAQ,OAAQ,EAGtC,IADA,IAAImsB,EAAM,EACD3tB,EAAIwE,KAAKhD,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CACzC,IAAIuB,EAAoB,EAAhBiD,KAAKkkB,MAAM1oB,GACf0K,EAAmB,EAAfof,EAAIpB,MAAM1oB,GAElB,GAAIuB,IAAMmJ,EAAV,CACInJ,EAAImJ,EACNijB,GAAO,EACEpsB,EAAImJ,IACbijB,EAAM,GAER,KANqB,CAOvB,CACA,OAAOA,CACT,EAEAvF,EAAGnnB,UAAUg7B,IAAM,SAAcnS,GAC/B,OAA0B,IAAnBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUi7B,GAAK,SAAapS,GAC7B,OAAyB,IAAlBtlB,KAAK0lB,IAAIJ,EAClB,EAEA1B,EAAGnnB,UAAUk7B,KAAO,SAAerS,GACjC,OAAOtlB,KAAKq3B,KAAK/R,IAAQ,CAC3B,EAEA1B,EAAGnnB,UAAUm7B,IAAM,SAActS,GAC/B,OAAOtlB,KAAK0lB,IAAIJ,IAAQ,CAC1B,EAEA1B,EAAGnnB,UAAUo7B,IAAM,SAAcvS,GAC/B,OAA2B,IAApBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUq7B,GAAK,SAAaxS,GAC7B,OAA0B,IAAnBtlB,KAAK0lB,IAAIJ,EAClB,EAEA1B,EAAGnnB,UAAUs7B,KAAO,SAAezS,GACjC,OAAOtlB,KAAKq3B,KAAK/R,IAAQ,CAC3B,EAEA1B,EAAGnnB,UAAUu7B,IAAM,SAAc1S,GAC/B,OAAOtlB,KAAK0lB,IAAIJ,IAAQ,CAC1B,EAEA1B,EAAGnnB,UAAUw7B,IAAM,SAAc3S,GAC/B,OAA0B,IAAnBtlB,KAAKq3B,KAAK/R,EACnB,EAEA1B,EAAGnnB,UAAUy7B,GAAK,SAAa5S,GAC7B,OAAyB,IAAlBtlB,KAAK0lB,IAAIJ,EAClB,EAMA1B,EAAGO,IAAM,SAAcmB,GACrB,OAAO,IAAI6S,EAAI7S,EACjB,EAEA1B,EAAGnnB,UAAU27B,MAAQ,SAAgBC,GAGnC,OAFAjV,GAAQpjB,KAAKmkB,IAAK,yCAClBf,EAAyB,IAAlBpjB,KAAKikB,SAAgB,iCACrBoU,EAAIC,UAAUt4B,MAAMu4B,UAAUF,EACvC,EAEAzU,EAAGnnB,UAAU+7B,QAAU,WAErB,OADApV,EAAOpjB,KAAKmkB,IAAK,wDACVnkB,KAAKmkB,IAAIsU,YAAYz4B,KAC9B,EAEA4jB,EAAGnnB,UAAU87B,UAAY,SAAoBF,GAE3C,OADAr4B,KAAKmkB,IAAMkU,EACJr4B,IACT,EAEA4jB,EAAGnnB,UAAUi8B,SAAW,SAAmBL,GAEzC,OADAjV,GAAQpjB,KAAKmkB,IAAK,yCACXnkB,KAAKu4B,UAAUF,EACxB,EAEAzU,EAAGnnB,UAAUk8B,OAAS,SAAiBrT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAIrU,IAAI9P,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUm8B,QAAU,SAAkBtT,GAEvC,OADAlC,EAAOpjB,KAAKmkB,IAAK,uCACVnkB,KAAKmkB,IAAImH,KAAKtrB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAUo8B,OAAS,SAAiBvT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAIqH,IAAIxrB,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUq8B,QAAU,SAAkBxT,GAEvC,OADAlC,EAAOpjB,KAAKmkB,IAAK,uCACVnkB,KAAKmkB,IAAIoH,KAAKvrB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAUs8B,OAAS,SAAiBzT,GAErC,OADAlC,EAAOpjB,KAAKmkB,IAAK,sCACVnkB,KAAKmkB,IAAI6U,IAAIh5B,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAUw8B,OAAS,SAAiB3T,GAGrC,OAFAlC,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAI+U,SAASl5B,KAAMslB,GACjBtlB,KAAKmkB,IAAIY,IAAI/kB,KAAMslB,EAC5B,EAEA1B,EAAGnnB,UAAU08B,QAAU,SAAkB7T,GAGvC,OAFAlC,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAI+U,SAASl5B,KAAMslB,GACjBtlB,KAAKmkB,IAAIoL,KAAKvvB,KAAMslB,EAC7B,EAEA1B,EAAGnnB,UAAU28B,OAAS,WAGpB,OAFAhW,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIuP,IAAI1zB,KACtB,EAEA4jB,EAAGnnB,UAAU68B,QAAU,WAGrB,OAFAlW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIwP,KAAK3zB,KACvB,EAGA4jB,EAAGnnB,UAAU88B,QAAU,WAGrB,OAFAnW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIqV,KAAKx5B,KACvB,EAEA4jB,EAAGnnB,UAAUg9B,QAAU,WAGrB,OAFArW,EAAOpjB,KAAKmkB,IAAK,uCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAImT,KAAKt3B,KACvB,EAGA4jB,EAAGnnB,UAAUi9B,OAAS,WAGpB,OAFAtW,EAAOpjB,KAAKmkB,IAAK,sCACjBnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAImG,IAAItqB,KACtB,EAEA4jB,EAAGnnB,UAAUk9B,OAAS,SAAiBrU,GAGrC,OAFAlC,EAAOpjB,KAAKmkB,MAAQmB,EAAInB,IAAK,qBAC7BnkB,KAAKmkB,IAAIkV,SAASr5B,MACXA,KAAKmkB,IAAIwC,IAAI3mB,KAAMslB,EAC5B,EAGA,IAAIsU,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQnuB,EAAMnP,GAErBqD,KAAK8L,KAAOA,EACZ9L,KAAKrD,EAAI,IAAIinB,EAAGjnB,EAAG,IACnBqD,KAAK5E,EAAI4E,KAAKrD,EAAE6rB,YAChBxoB,KAAKgjB,EAAI,IAAIY,EAAG,GAAGiQ,OAAO7zB,KAAK5E,GAAGmwB,KAAKvrB,KAAKrD,GAE5CqD,KAAKk6B,IAAMl6B,KAAKm6B,MAClB,CAgDA,SAASC,IACPH,EAAOv+B,KACLsE,KACA,OACA,0EACJ,CA8DA,SAASq6B,IACPJ,EAAOv+B,KACLsE,KACA,OACA,iEACJ,CAGA,SAASs6B,IACPL,EAAOv+B,KACLsE,KACA,OACA,wDACJ,CAGA,SAASu6B,IAEPN,EAAOv+B,KACLsE,KACA,QACA,sEACJ,CA6CA,SAASm4B,EAAKx8B,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI6+B,EAAQ5W,EAAG6W,OAAO9+B,GACtBqE,KAAKrE,EAAI6+B,EAAM79B,EACfqD,KAAKw6B,MAAQA,CACf,MACEpX,EAAOznB,EAAE87B,IAAI,GAAI,kCACjBz3B,KAAKrE,EAAIA,EACTqE,KAAKw6B,MAAQ,IAEjB,CAkOA,SAASE,EAAM/+B,GACbw8B,EAAIz8B,KAAKsE,KAAMrE,GAEfqE,KAAK8H,MAAQ9H,KAAKrE,EAAE6sB,YAChBxoB,KAAK8H,MAAQ,KAAO,IACtB9H,KAAK8H,OAAS,GAAM9H,KAAK8H,MAAQ,IAGnC9H,KAAK3E,EAAI,IAAIuoB,EAAG,GAAGiQ,OAAO7zB,KAAK8H,OAC/B9H,KAAKi2B,GAAKj2B,KAAK26B,KAAK36B,KAAK3E,EAAEq4B,OAC3B1zB,KAAK46B,KAAO56B,KAAK3E,EAAE47B,OAAOj3B,KAAKrE,GAE/BqE,KAAK66B,KAAO76B,KAAK46B,KAAK7V,IAAI/kB,KAAK3E,GAAGy5B,MAAM,GAAGW,IAAIz1B,KAAKrE,GACpDqE,KAAK66B,KAAO76B,KAAK66B,KAAKhF,KAAK71B,KAAK3E,GAChC2E,KAAK66B,KAAO76B,KAAK3E,EAAEmwB,IAAIxrB,KAAK66B,KAC9B,CA/aAZ,EAAOx9B,UAAU09B,KAAO,WACtB,IAAID,EAAM,IAAItW,EAAG,MAEjB,OADAsW,EAAIhW,MAAQ,IAAIjkB,MAAMglB,KAAKe,KAAKhmB,KAAK5E,EAAI,KAClC8+B,CACT,EAEAD,EAAOx9B,UAAUq+B,QAAU,SAAkBxV,GAG3C,IACIyV,EADA1/B,EAAIiqB,EAGR,GACEtlB,KAAKgL,MAAM3P,EAAG2E,KAAKk6B,KACnB7+B,EAAI2E,KAAKg7B,MAAM3/B,GACfA,EAAIA,EAAEiwB,KAAKtrB,KAAKk6B,KAChBa,EAAO1/B,EAAEmtB,kBACFuS,EAAO/6B,KAAK5E,GAErB,IAAIsqB,EAAMqV,EAAO/6B,KAAK5E,GAAK,EAAIC,EAAEm8B,KAAKx3B,KAAKrD,GAgB3C,OAfY,IAAR+oB,GACFrqB,EAAE6oB,MAAM,GAAK,EACb7oB,EAAE2B,OAAS,GACF0oB,EAAM,EACfrqB,EAAEkwB,KAAKvrB,KAAKrD,QAEI+T,IAAZrV,EAAE4/B,MAEJ5/B,EAAE4/B,QAGF5/B,EAAE6qB,SAIC7qB,CACT,EAEA4+B,EAAOx9B,UAAUuO,MAAQ,SAAgB6I,EAAO2T,GAC9C3T,EAAMqgB,OAAOl0B,KAAK5E,EAAG,EAAGosB,EAC1B,EAEAyS,EAAOx9B,UAAUu+B,MAAQ,SAAgB1V,GACvC,OAAOA,EAAIiK,KAAKvvB,KAAKgjB,EACvB,EAQAO,EAAS6W,EAAMH,GAEfG,EAAK39B,UAAUuO,MAAQ,SAAgB6I,EAAOqnB,GAK5C,IAHA,IAAI7G,EAAO,QAEP8G,EAASlW,KAAKC,IAAIrR,EAAM7W,OAAQ,GAC3BxB,EAAI,EAAGA,EAAI2/B,EAAQ3/B,IAC1B0/B,EAAOhX,MAAM1oB,GAAKqY,EAAMqQ,MAAM1oB,GAIhC,GAFA0/B,EAAOl+B,OAASm+B,EAEZtnB,EAAM7W,QAAU,EAGlB,OAFA6W,EAAMqQ,MAAM,GAAK,OACjBrQ,EAAM7W,OAAS,GAKjB,IAAI+W,EAAOF,EAAMqQ,MAAM,GAGvB,IAFAgX,EAAOhX,MAAMgX,EAAOl+B,UAAY+W,EAAOsgB,EAElC74B,EAAI,GAAIA,EAAIqY,EAAM7W,OAAQxB,IAAK,CAClC,IAAIsL,EAAwB,EAAjB+M,EAAMqQ,MAAM1oB,GACvBqY,EAAMqQ,MAAM1oB,EAAI,KAAQsL,EAAOutB,IAAS,EAAMtgB,IAAS,GACvDA,EAAOjN,CACT,CACAiN,KAAU,GACVF,EAAMqQ,MAAM1oB,EAAI,IAAMuY,EACT,IAATA,GAAcF,EAAM7W,OAAS,GAC/B6W,EAAM7W,QAAU,GAEhB6W,EAAM7W,QAAU,CAEpB,EAEAo9B,EAAK39B,UAAUu+B,MAAQ,SAAgB1V,GAErCA,EAAIpB,MAAMoB,EAAItoB,QAAU,EACxBsoB,EAAIpB,MAAMoB,EAAItoB,OAAS,GAAK,EAC5BsoB,EAAItoB,QAAU,EAId,IADA,IAAI6rB,EAAK,EACArtB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CACnC,IAAI2G,EAAmB,EAAfmjB,EAAIpB,MAAM1oB,GAClBqtB,GAAU,IAAJ1mB,EACNmjB,EAAIpB,MAAM1oB,GAAU,SAALqtB,EACfA,EAAS,GAAJ1mB,GAAa0mB,EAAK,SAAa,EACtC,CASA,OANkC,IAA9BvD,EAAIpB,MAAMoB,EAAItoB,OAAS,KACzBsoB,EAAItoB,SAC8B,IAA9BsoB,EAAIpB,MAAMoB,EAAItoB,OAAS,IACzBsoB,EAAItoB,UAGDsoB,CACT,EAQA/B,EAAS8W,EAAMJ,GAQf1W,EAAS+W,EAAML,GASf1W,EAASgX,EAAQN,GAEjBM,EAAO99B,UAAUu+B,MAAQ,SAAgB1V,GAGvC,IADA,IAAImC,EAAQ,EACHjsB,EAAI,EAAGA,EAAI8pB,EAAItoB,OAAQxB,IAAK,CACnC,IAAImuB,EAA0B,IAAL,EAAfrE,EAAIpB,MAAM1oB,IAAiBisB,EACjCoB,EAAU,SAALc,EACTA,KAAQ,GAERrE,EAAIpB,MAAM1oB,GAAKqtB,EACfpB,EAAQkC,CACV,CAIA,OAHc,IAAVlC,IACFnC,EAAIpB,MAAMoB,EAAItoB,UAAYyqB,GAErBnC,CACT,EAGA1B,EAAG6W,OAAS,SAAgB3uB,GAE1B,GAAI8tB,EAAO9tB,GAAO,OAAO8tB,EAAO9tB,GAEhC,IAAI0uB,EACJ,GAAa,SAAT1uB,EACF0uB,EAAQ,IAAIJ,OACP,GAAa,SAATtuB,EACT0uB,EAAQ,IAAIH,OACP,GAAa,SAATvuB,EACT0uB,EAAQ,IAAIF,MACP,IAAa,WAATxuB,EAGT,MAAM,IAAI5I,MAAM,iBAAmB4I,GAFnC0uB,EAAQ,IAAID,CAGd,CAGA,OAFAX,EAAO9tB,GAAQ0uB,EAERA,CACT,EAiBArC,EAAI17B,UAAU48B,SAAW,SAAmBt8B,GAC1CqmB,EAAsB,IAAfrmB,EAAEknB,SAAgB,iCACzBb,EAAOrmB,EAAEonB,IAAK,kCAChB,EAEAgU,EAAI17B,UAAUy8B,SAAW,SAAmBn8B,EAAGmJ,GAC7Ckd,EAAqC,KAA7BrmB,EAAEknB,SAAW/d,EAAE+d,UAAiB,iCACxCb,EAAOrmB,EAAEonB,KAAOpnB,EAAEonB,MAAQje,EAAEie,IAC1B,kCACJ,EAEAgU,EAAI17B,UAAUk+B,KAAO,SAAe59B,GAClC,OAAIiD,KAAKw6B,MAAcx6B,KAAKw6B,MAAMM,QAAQ/9B,GAAGw7B,UAAUv4B,OAEvDmlB,EAAKpoB,EAAGA,EAAE84B,KAAK71B,KAAKrE,GAAG48B,UAAUv4B,OAC1BjD,EACT,EAEAo7B,EAAI17B,UAAU6tB,IAAM,SAAcvtB,GAChC,OAAIA,EAAE6qB,SACG7qB,EAAE+pB,QAGJ9mB,KAAKrE,EAAE6vB,IAAIzuB,GAAGw7B,UAAUv4B,KACjC,EAEAm4B,EAAI17B,UAAUqT,IAAM,SAAc/S,EAAGmJ,GACnClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAE+S,IAAI5J,GAIhB,OAHIijB,EAAIzD,IAAI1lB,KAAKrE,IAAM,GACrBwtB,EAAIoC,KAAKvrB,KAAKrE,GAETwtB,EAAIoP,UAAUv4B,KACvB,EAEAm4B,EAAI17B,UAAU6uB,KAAO,SAAevuB,EAAGmJ,GACrClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEuuB,KAAKplB,GAIjB,OAHIijB,EAAIzD,IAAI1lB,KAAKrE,IAAM,GACrBwtB,EAAIoC,KAAKvrB,KAAKrE,GAETwtB,CACT,EAEAgP,EAAI17B,UAAU+uB,IAAM,SAAczuB,EAAGmJ,GACnClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEyuB,IAAItlB,GAIhB,OAHIijB,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAKtrB,KAAKrE,GAETwtB,EAAIoP,UAAUv4B,KACvB,EAEAm4B,EAAI17B,UAAU8uB,KAAO,SAAexuB,EAAGmJ,GACrClG,KAAKk5B,SAASn8B,EAAGmJ,GAEjB,IAAIijB,EAAMpsB,EAAEwuB,KAAKrlB,GAIjB,OAHIijB,EAAIkO,KAAK,GAAK,GAChBlO,EAAImC,KAAKtrB,KAAKrE,GAETwtB,CACT,EAEAgP,EAAI17B,UAAUu8B,IAAM,SAAcj8B,EAAGuoB,GAEnC,OADAtlB,KAAKq5B,SAASt8B,GACPiD,KAAK26B,KAAK59B,EAAE03B,MAAMnP,GAC3B,EAEA6S,EAAI17B,UAAU8yB,KAAO,SAAexyB,EAAGmJ,GAErC,OADAlG,KAAKk5B,SAASn8B,EAAGmJ,GACVlG,KAAK26B,KAAK59B,EAAEwyB,KAAKrpB,GAC1B,EAEAiyB,EAAI17B,UAAUsoB,IAAM,SAAchoB,EAAGmJ,GAEnC,OADAlG,KAAKk5B,SAASn8B,EAAGmJ,GACVlG,KAAK26B,KAAK59B,EAAEgoB,IAAI7e,GACzB,EAEAiyB,EAAI17B,UAAUk3B,KAAO,SAAe52B,GAClC,OAAOiD,KAAKuvB,KAAKxyB,EAAGA,EAAE+pB,QACxB,EAEAqR,EAAI17B,UAAUi3B,IAAM,SAAc32B,GAChC,OAAOiD,KAAK+kB,IAAIhoB,EAAGA,EACrB,EAEAo7B,EAAI17B,UAAU+8B,KAAO,SAAez8B,GAClC,GAAIA,EAAE6qB,SAAU,OAAO7qB,EAAE+pB,QAEzB,IAAIsU,EAAOp7B,KAAKrE,EAAEu6B,MAAM,GAIxB,GAHA9S,EAAOgY,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIzU,EAAM3mB,KAAKrE,EAAEmU,IAAI,IAAI8T,EAAG,IAAIsQ,OAAO,GACvC,OAAOl0B,KAAK2mB,IAAI5pB,EAAG4pB,EACrB,CAKA,IAAIiN,EAAI5zB,KAAKrE,EAAEq5B,KAAK,GAChBp4B,EAAI,EACR,OAAQg3B,EAAEhM,UAA2B,IAAfgM,EAAEsC,MAAM,GAC5Bt5B,IACAg3B,EAAEM,OAAO,GAEX9Q,GAAQwQ,EAAEhM,UAEV,IAAIyT,EAAM,IAAIzX,EAAG,GAAGwU,MAAMp4B,MACtBs7B,EAAOD,EAAI3B,SAIX6B,EAAOv7B,KAAKrE,EAAEq5B,KAAK,GAAGd,OAAO,GAC7BsH,EAAIx7B,KAAKrE,EAAE6sB,YACfgT,EAAI,IAAI5X,EAAG,EAAI4X,EAAIA,GAAGpD,MAAMp4B,MAE5B,MAAuC,IAAhCA,KAAK2mB,IAAI6U,EAAGD,GAAM7V,IAAI4V,GAC3BE,EAAE5C,QAAQ0C,GAGZ,IAAI1/B,EAAIoE,KAAK2mB,IAAI6U,EAAG5H,GAChBv4B,EAAI2E,KAAK2mB,IAAI5pB,EAAG62B,EAAEmB,KAAK,GAAGb,OAAO,IACjCh5B,EAAI8E,KAAK2mB,IAAI5pB,EAAG62B,GAChBj4B,EAAIiB,EACR,MAAsB,IAAf1B,EAAEwqB,IAAI2V,GAAY,CAEvB,IADA,IAAInB,EAAMh/B,EACDM,EAAI,EAAoB,IAAjB0+B,EAAIxU,IAAI2V,GAAY7/B,IAClC0+B,EAAMA,EAAId,SAEZhW,EAAO5nB,EAAIG,GACX,IAAIuK,EAAIlG,KAAK2mB,IAAI/qB,EAAG,IAAIgoB,EAAG,GAAGiQ,OAAOl4B,EAAIH,EAAI,IAE7CH,EAAIA,EAAE49B,OAAO/yB,GACbtK,EAAIsK,EAAEkzB,SACNl+B,EAAIA,EAAE+9B,OAAOr9B,GACbD,EAAIH,CACN,CAEA,OAAOH,CACT,EAEA88B,EAAI17B,UAAU66B,KAAO,SAAev6B,GAClC,IAAI0+B,EAAM1+B,EAAEk6B,OAAOj3B,KAAKrE,GACxB,OAAqB,IAAjB8/B,EAAIxX,UACNwX,EAAIxX,SAAW,EACRjkB,KAAK26B,KAAKc,GAAK/B,UAEf15B,KAAK26B,KAAKc,EAErB,EAEAtD,EAAI17B,UAAUkqB,IAAM,SAAc5pB,EAAGuoB,GACnC,GAAIA,EAAIsC,SAAU,OAAO,IAAIhE,EAAG,GAAGwU,MAAMp4B,MACzC,GAAoB,IAAhBslB,EAAI+R,KAAK,GAAU,OAAOt6B,EAAE+pB,QAEhC,IAAI4U,EAAa,EACbC,EAAM,IAAI17B,MAAM,GAAKy7B,GACzBC,EAAI,GAAK,IAAI/X,EAAG,GAAGwU,MAAMp4B,MACzB27B,EAAI,GAAK5+B,EACT,IAAK,IAAIvB,EAAI,EAAGA,EAAImgC,EAAI3+B,OAAQxB,IAC9BmgC,EAAIngC,GAAKwE,KAAK+kB,IAAI4W,EAAIngC,EAAI,GAAIuB,GAGhC,IAAIosB,EAAMwS,EAAI,GACVC,EAAU,EACVC,EAAa,EACbhX,EAAQS,EAAIkD,YAAc,GAK9B,IAJc,IAAV3D,IACFA,EAAQ,IAGLrpB,EAAI8pB,EAAItoB,OAAS,EAAGxB,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIgrB,EAAOlB,EAAIpB,MAAM1oB,GACZyqB,EAAIpB,EAAQ,EAAGoB,GAAK,EAAGA,IAAK,CACnC,IAAIwC,EAAOjC,GAAQP,EAAK,EACpBkD,IAAQwS,EAAI,KACdxS,EAAMnpB,KAAK0zB,IAAIvK,IAGL,IAARV,GAAyB,IAAZmT,GAKjBA,IAAY,EACZA,GAAWnT,EACXoT,KACIA,IAAeH,GAAqB,IAANlgC,GAAiB,IAANyqB,KAE7CkD,EAAMnpB,KAAK+kB,IAAIoE,EAAKwS,EAAIC,IACxBC,EAAa,EACbD,EAAU,IAXRC,EAAa,CAYjB,CACAhX,EAAQ,EACV,CAEA,OAAOsE,CACT,EAEAgP,EAAI17B,UAAU67B,UAAY,SAAoBhT,GAC5C,IAAIjqB,EAAIiqB,EAAIuQ,KAAK71B,KAAKrE,GAEtB,OAAON,IAAMiqB,EAAMjqB,EAAEyrB,QAAUzrB,CACjC,EAEA88B,EAAI17B,UAAUg8B,YAAc,SAAsBnT,GAChD,IAAI6D,EAAM7D,EAAIwB,QAEd,OADAqC,EAAIhF,IAAM,KACHgF,CACT,EAMAvF,EAAGkY,KAAO,SAAexW,GACvB,OAAO,IAAIoV,EAAKpV,EAClB,EAkBA/B,EAASmX,EAAMvC,GAEfuC,EAAKj+B,UAAU67B,UAAY,SAAoBhT,GAC7C,OAAOtlB,KAAK26B,KAAKrV,EAAImP,MAAMz0B,KAAK8H,OAClC,EAEA4yB,EAAKj+B,UAAUg8B,YAAc,SAAsBnT,GACjD,IAAIjqB,EAAI2E,KAAK26B,KAAKrV,EAAIP,IAAI/kB,KAAK46B,OAE/B,OADAv/B,EAAE8oB,IAAM,KACD9oB,CACT,EAEAq/B,EAAKj+B,UAAU8yB,KAAO,SAAexyB,EAAGmJ,GACtC,GAAInJ,EAAE6qB,UAAY1hB,EAAE0hB,SAGlB,OAFA7qB,EAAEmnB,MAAM,GAAK,EACbnnB,EAAEC,OAAS,EACJD,EAGT,IAAI7B,EAAI6B,EAAEwyB,KAAKrpB,GACXtK,EAAIV,EAAE25B,MAAM70B,KAAK8H,OAAOid,IAAI/kB,KAAK66B,MAAMjG,OAAO50B,KAAK8H,OAAOid,IAAI/kB,KAAKrE,GACnEmB,EAAI5B,EAAEqwB,KAAK3vB,GAAGs4B,OAAOl0B,KAAK8H,OAC1BqhB,EAAMrsB,EAQV,OANIA,EAAE4oB,IAAI1lB,KAAKrE,IAAM,EACnBwtB,EAAMrsB,EAAEyuB,KAAKvrB,KAAKrE,GACTmB,EAAEu6B,KAAK,GAAK,IACrBlO,EAAMrsB,EAAEwuB,KAAKtrB,KAAKrE,IAGbwtB,EAAIoP,UAAUv4B,KACvB,EAEA06B,EAAKj+B,UAAUsoB,IAAM,SAAchoB,EAAGmJ,GACpC,GAAInJ,EAAE6qB,UAAY1hB,EAAE0hB,SAAU,OAAO,IAAIhE,EAAG,GAAG2U,UAAUv4B,MAEzD,IAAI9E,EAAI6B,EAAEgoB,IAAI7e,GACVtK,EAAIV,EAAE25B,MAAM70B,KAAK8H,OAAOid,IAAI/kB,KAAK66B,MAAMjG,OAAO50B,KAAK8H,OAAOid,IAAI/kB,KAAKrE,GACnEmB,EAAI5B,EAAEqwB,KAAK3vB,GAAGs4B,OAAOl0B,KAAK8H,OAC1BqhB,EAAMrsB,EAOV,OANIA,EAAE4oB,IAAI1lB,KAAKrE,IAAM,EACnBwtB,EAAMrsB,EAAEyuB,KAAKvrB,KAAKrE,GACTmB,EAAEu6B,KAAK,GAAK,IACrBlO,EAAMrsB,EAAEwuB,KAAKtrB,KAAKrE,IAGbwtB,EAAIoP,UAAUv4B,KACvB,EAEA06B,EAAKj+B,UAAU66B,KAAO,SAAev6B,GAEnC,IAAIosB,EAAMnpB,KAAK26B,KAAK59B,EAAEk6B,OAAOj3B,KAAKrE,GAAGopB,IAAI/kB,KAAKi2B,KAC9C,OAAO9M,EAAIoP,UAAUv4B,KACvB,CACD,CA19GD,CA09GoCmjB,EAAQnjB,K,qCC19GwB1E,EAAQ,GAAqBA,EAAQ,QAAkC,EAAO,IAAIuyD,EAAUC,EAAwB,EAAQ,QAA0BC,EAAMC,EAAuB,EAAQ,QAASC,EAAOH,EAAwB,EAAQ,QAAe,SAASE,EAAuBjxD,GAAG,OAAOA,GAAGA,EAAEV,WAAWU,EAAE,CAACP,QAAQO,EAAE,CAAC,SAASmxD,EAAyBnxD,GAAG,GAAG,mBAAmBoxD,QAAQ,OAAO,KAAK,IAAIjoD,EAAE,IAAIioD,QAAQvyD,EAAE,IAAIuyD,QAAQ,OAAOD,EAAyB,SAASnxD,GAAG,OAAOA,EAAEnB,EAAEsK,CAAC,GAAGnJ,EAAE,CAAC,SAAS+wD,EAAwB5nD,EAAEtK,GAAG,IAAIA,GAAGsK,GAAGA,EAAE7J,WAAW,OAAO6J,EAAE,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAE,MAAM,CAAC1J,QAAQ0J,GAAG,IAAIrK,EAAEqyD,EAAyBtyD,GAAG,GAAGC,GAAGA,EAAEkgC,IAAI71B,GAAG,OAAOrK,EAAEI,IAAIiK,GAAG,IAAI/K,EAAE,CAACmL,UAAU,MAAMjG,EAAEvE,OAAOC,gBAAgBD,OAAO4K,yBAAyB,IAAI,IAAI3J,KAAKmJ,EAAE,GAAG,WAAWnJ,GAAGjB,OAAOW,UAAUC,eAAehB,KAAKwK,EAAEnJ,GAAG,CAAC,IAAIoJ,EAAE9F,EAAEvE,OAAO4K,yBAAyBR,EAAEnJ,GAAG,KAAKoJ,IAAIA,EAAElK,KAAKkK,EAAE85B,KAAKnkC,OAAOC,eAAeZ,EAAE4B,EAAEoJ,GAAGhL,EAAE4B,GAAGmJ,EAAEnJ,EAAE,CAAC,OAAO5B,EAAEqB,QAAQ0J,EAAErK,GAAGA,EAAEokC,IAAI/5B,EAAE/K,GAAGA,CAAC,CAAC,MAAM,IAAI4B,EAAE8wD,EAAUO,KAAK,MAAMrxD,EAAEsxD,OAAOxuC,QAAQC,IAAI,yCAAyC/iB,EAAEsxD,KAAKN,EAAMvxD,QAAQ,MAAMqxD,EAAUS,OAAOC,YAAYV,EAAUS,OAAOC,WAAWV,EAAUW,cAAe,EAA5M,GAAgN,MAAMF,EAAOT,EAAUS,OAA6B,MAAMG,EAAOZ,EAAUY,OAA6B,MAAMC,EAAMT,EAAOS,MAAMpzD,EAAQ,GAAMozD,EAAM,MAAMC,EAAIV,EAAOU,IAAIrzD,EAAQ,GAAIqzD,EAAI,MAAMC,EAAOX,EAAOW,M,qCCA57C,IAAIf,EAAUC,EAAwB,EAAQ,QAA8I,SAASI,EAAyB3yD,GAAG,GAAG,mBAAmB4yD,QAAQ,OAAO,KAAK,IAAI/yD,EAAE,IAAI+yD,QAAQ9yD,EAAE,IAAI8yD,QAAQ,OAAOD,EAAyB,SAAS3yD,GAAG,OAAOA,EAAEF,EAAED,CAAC,GAAGG,EAAE,CAAC,SAASuyD,EAAwBvyD,EAAEJ,GAAG,IAAIA,GAAGI,GAAGA,EAAEc,WAAW,OAAOd,EAAE,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAE,MAAM,CAACiB,QAAQjB,GAAG,IAAIF,EAAE6yD,EAAyB/yD,GAAG,GAAGE,GAAGA,EAAE0gC,IAAIxgC,GAAG,OAAOF,EAAEY,IAAIV,GAAG,IAAIL,EAAE,CAACoL,UAAU,MAAMlL,EAAEU,OAAOC,gBAAgBD,OAAO4K,yBAAyB,IAAI,IAAI7K,KAAKN,EAAE,GAAG,WAAWM,GAAGC,OAAOW,UAAUC,eAAehB,KAAKH,EAAEM,GAAG,CAAC,IAAIkB,EAAE3B,EAAEU,OAAO4K,yBAAyBnL,EAAEM,GAAG,KAAKkB,IAAIA,EAAEd,KAAKc,EAAEkjC,KAAKnkC,OAAOC,eAAeb,EAAEW,EAAEkB,GAAG7B,EAAEW,GAAGN,EAAEM,EAAE,CAAC,OAAOX,EAAEsB,QAAQjB,EAAEF,GAAGA,EAAE4kC,IAAI1kC,EAAEL,GAAGA,CAAC,CAA3xBY,OAAOC,eAAeT,EAAtB,cAA4Cc,OAAM,IAAKd,EAAQozD,MAAMpzD,EAAQszD,OAAOtzD,EAAA,WAAgBA,EAAQqzD,SAAI,EAA4qB,MAAME,EAAQhB,EAAUS,OAAOQ,EAAQjB,EAAUY,OAAOM,EAAMlB,EAAUO,KAAKY,EAAMnB,EAAUoB,MAAMC,YAAYrB,EAAUoB,MAAMC,UAAU,CAAC,GAAG5zD,EAAA,WAAgB0zD,EAAM,MAAML,EAAIK,EAAML,IAAI,MAAM,MAAMxzD,EAAE,CAACg0D,OAAO,WAAW,MAAMh0D,EAAE,CAACi0D,OAAO,WAAW,MAAMj0D,EAAE,CAACsI,IAAI,WAAW,MAAMtI,EAAE,CAACuzD,MAAM,WAAW,MAAMvzD,EAAE,CAACk0D,oBAAoB,WAAW,SAASl0D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6yD,QAAQ,KAAKn0D,EAAEsB,UAAU8yD,mBAAmB,KAAKp0D,EAAEsB,UAAU+yD,iBAAiB,KAAKr0D,EAAEsB,UAAUqjD,MAAMiP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm0D,SAASxzD,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMgB,QAAQ1wB,OAAO7jC,EAAEm0D,QAAQ/zD,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEo0D,oBAAoBzzD,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEo0D,mBAAmBh0D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq0D,kBAAkB1zD,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEq0D,iBAAiBj0D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2kD,OAAOhkD,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE2kD,OAAOvkD,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2FK,EAAvFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAML,IAAIQ,OAAOC,OAAO3rD,IAAIirD,MAAMW,oBAAsBl0D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEyzD,QAAQN,EAAMN,MAAMgB,QAAQ7vB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE0zD,mBAAmBP,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2zD,iBAAiBR,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEikD,MAAM3kD,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kDAAkD,EAAEA,CAAC,CAA39C,GAA+9C+0D,uBAAuB,WAAW,SAAS/0D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU0zD,mBAAmB,KAAKh1D,EAAEsB,UAAU2G,QAAQ2rD,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU4zD,YAAYtB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU6zD,eAAevB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU8zD,mBAAmBxB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU+zD,UAAU,KAAKr1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg1D,oBAAoBr0D,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEg1D,mBAAmB50D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEiI,SAAStH,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEiI,SAAS,MAAMjI,EAAEk1D,aAAav0D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEk1D,aAAa,MAAMl1D,EAAEm1D,gBAAgBx0D,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEm1D,gBAAgB,MAAMn1D,EAAEo1D,oBAAoBz0D,OAAOY,eAAehB,KAAKP,EAAE,uBAAuBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEo1D,oBAAoB,MAAMp1D,EAAEq1D,WAAW10D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM+B,0BAA0BzxB,OAAO7jC,EAAEq1D,UAAUj1D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8FK,EAA1FJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAML,IAAIQ,OAAOC,OAAO3rD,IAAIirD,MAAMwB,uBAAyB/0D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs0D,mBAAmBnB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEuH,QAAQjI,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEw0D,YAAYl1D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEy0D,eAAen1D,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE00D,mBAAmBp1D,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE20D,UAAUxB,EAAMN,MAAM+B,0BAA0B5wB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qDAAqD,EAAEA,CAAC,CAA53D,GAAg4Du1D,iBAAiB,WAAW,SAASv1D,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUm0D,eAAe,SAAS11D,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAML,IAAIQ,OAAOC,OAAO3rD,IAAIirD,MAAMW,oBAAoBL,EAAML,IAAIQ,OAAOC,OAAO3rD,IAAIirD,MAAMwB,uBAAuB/0D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBjB,CAAC,CAApb,GAAwb21D,iBAAiB,WAAW,SAAS31D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUs0D,OAAO,KAAK51D,EAAEsB,UAAUqjD,MAAM,EAAE3kD,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE41D,QAAQj1D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAE41D,OAAOx1D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2kD,OAAOhkD,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE2kD,OAAOvkD,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwFK,EAApFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAML,IAAIQ,OAAOC,OAAO3rD,IAAIirD,MAAMoC,iBAAmB31D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEk1D,OAAO/B,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEikD,MAAM3kD,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,+CAA+C,EAAEA,CAAC,CAA34B,GAA+4B+1D,eAAe,WAAW,SAAS/1D,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAU00D,SAAS,SAASj2D,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAML,IAAIQ,OAAOC,OAAO3rD,IAAIirD,MAAMoC,iBAAiB9B,EAAMN,MAAM0C,YAAYj2D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,aAAajB,CAAC,CAApY,IAAyY,OAAOA,CAAC,CAAvqK,IAA4qK,OAAOA,CAAC,CAA9sK,IAAmtK,OAAOA,CAAC,CAAnvK,GAAuvKk2D,KAAK,WAAW,MAAMl2D,EAAE,CAACm2D,KAAK,WAAW,MAAMn2D,EAAE,CAACo2D,YAAY,WAAW,MAAMp2D,EAAE,CAACq2D,0BAA0B,WAAW,SAASr2D,EAAEA,GAAG,GAAG6E,KAAKyxD,eAAe,GAAGzxD,KAAK0xD,gBAAgB,GAAGv2D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk1D,UAAU,KAAKx2D,EAAEsB,UAAUm1D,YAAY,GAAGz2D,EAAEsB,UAAUg1D,eAAe1C,EAAM8C,WAAW12D,EAAEsB,UAAUi1D,gBAAgB3C,EAAM8C,WAAW12D,EAAEsB,UAAUq1D,oBAAoB/C,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUs1D,oBAAoBhD,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw2D,WAAW71D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEw2D,UAAUp2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy2D,aAAa91D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEy2D,aAAa,MAAMz2D,EAAEs2D,gBAAgBt2D,EAAEs2D,eAAez0D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEs2D,eAAez0D,SAAS9B,EAAE8zD,EAAMN,MAAMwD,gBAAgBlzB,OAAO7jC,EAAEs2D,eAAev2D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAEu2D,iBAAiBv2D,EAAEu2D,gBAAgB10D,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEu2D,gBAAgB10D,SAAS9B,EAAE8zD,EAAMN,MAAMwD,gBAAgBlzB,OAAO7jC,EAAEu2D,gBAAgBx2D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAO,MAAM10D,EAAE22D,qBAAqBh2D,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE22D,qBAAqB,MAAM32D,EAAE42D,qBAAqBj2D,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE42D,qBAAqB,MAAM52D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsGK,EAAlGJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYC,0BAA4Br2D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE81D,UAAU3C,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+1D,YAAYz2D,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAE41D,gBAAgB51D,EAAE41D,eAAez0D,SAASnB,EAAE41D,eAAe,IAAI51D,EAAE41D,eAAehqD,KAAKunD,EAAMN,MAAMwD,gBAAgBryB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAE61D,iBAAiB71D,EAAE61D,gBAAgB10D,SAASnB,EAAE61D,gBAAgB,IAAI71D,EAAE61D,gBAAgBjqD,KAAKunD,EAAMN,MAAMwD,gBAAgBryB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEi2D,oBAAoB32D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEk2D,oBAAoB52D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6DAA6D,EAAEA,CAAC,CAA/4E,GAAm5Ei3D,0BAA0B,WAAW,SAASj3D,EAAEA,GAAG,GAAG6E,KAAKyxD,eAAe,GAAGzxD,KAAK0xD,gBAAgB,GAAGv2D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU41D,OAAOtD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUk1D,UAAU,KAAKx2D,EAAEsB,UAAUm1D,YAAY,KAAKz2D,EAAEsB,UAAUg1D,eAAe1C,EAAM8C,WAAW12D,EAAEsB,UAAUi1D,gBAAgB3C,EAAM8C,WAAW12D,EAAEsB,UAAUq1D,oBAAoB,KAAK32D,EAAEsB,UAAUs1D,oBAAoB,KAAK52D,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEk3D,QAAQv2D,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,GAAGI,OAAO50D,EAAEk3D,QAAQ,MAAMl3D,EAAEw2D,WAAW71D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEw2D,UAAUp2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy2D,aAAa91D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMJ,OAAO0D,SAASC,YAAYvzB,OAAO7jC,EAAEy2D,YAAYr2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs2D,gBAAgBt2D,EAAEs2D,eAAez0D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEs2D,eAAez0D,SAAS9B,EAAE8zD,EAAMN,MAAMwD,gBAAgBlzB,OAAO7jC,EAAEs2D,eAAev2D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAEu2D,iBAAiBv2D,EAAEu2D,gBAAgB10D,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEu2D,gBAAgB10D,SAAS9B,EAAE8zD,EAAMN,MAAMwD,gBAAgBlzB,OAAO7jC,EAAEu2D,gBAAgBx2D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAO,MAAM10D,EAAE22D,qBAAqBh2D,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMJ,OAAO0D,SAASE,WAAWxzB,OAAO7jC,EAAE22D,oBAAoBv2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE42D,qBAAqBj2D,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMJ,OAAO0D,SAASE,WAAWxzB,OAAO7jC,EAAE42D,oBAAoBx2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsGK,EAAlGJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYa,0BAA4Bj3D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEw2D,OAAOl3D,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE81D,UAAU3C,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+1D,YAAY5C,EAAMJ,OAAO0D,SAASC,YAAY1yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE41D,gBAAgB51D,EAAE41D,eAAez0D,SAASnB,EAAE41D,eAAe,IAAI51D,EAAE41D,eAAehqD,KAAKunD,EAAMN,MAAMwD,gBAAgBryB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAE61D,iBAAiB71D,EAAE61D,gBAAgB10D,SAASnB,EAAE61D,gBAAgB,IAAI71D,EAAE61D,gBAAgBjqD,KAAKunD,EAAMN,MAAMwD,gBAAgBryB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEi2D,oBAAoB9C,EAAMJ,OAAO0D,SAASE,WAAW3yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEk2D,oBAAoB/C,EAAMJ,OAAO0D,SAASE,WAAW3yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6DAA6D,EAAEA,CAAC,CAAh0F,GAAo0Fs3D,0BAA0B,WAAW,SAASt3D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU41D,OAAOtD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEk3D,QAAQv2D,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,GAAGI,OAAO50D,EAAEk3D,QAAQ92D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsGK,EAAlGJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYkB,0BAA4Bt3D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEw2D,OAAOl3D,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6DAA6D,EAAEA,CAAC,CAApwB,IAAywB,OAAOA,CAAC,CAA1kM,IAA+kM,OAAOA,CAAC,CAAvnM,IAA4nM,OAAOA,CAAC,CAA7pM,IAAkqM,OAAOA,CAAC,CAAj8W,IAAs8W,OAAOA,CAAE,EAAr+W,GAAy+WG,EAAQqzD,IAAIA,EAAI,MAAMD,EAAMM,EAAMN,MAAM,MAAM,MAAMvzD,EAAE,CAACu3D,gBAAgB,WAAW,SAASv3D,EAAEA,GAAG,GAAG6E,KAAK2yD,gBAAgB,GAAGx3D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk2D,gBAAgB5D,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw3D,iBAAiBx3D,EAAEw3D,gBAAgB31D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEw3D,gBAAgB31D,SAAS9B,EAAE8zD,EAAMN,MAAMzX,YAAYjY,OAAO7jC,EAAEw3D,gBAAgBz3D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgE,gBAAkBv3D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE82D,iBAAiB92D,EAAE82D,gBAAgB31D,SAASnB,EAAE82D,gBAAgB,IAAI92D,EAAE82D,gBAAgBlrD,KAAKunD,EAAMN,MAAMzX,YAAYpX,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAAr5B,GAAy5By3D,mBAAmB,WAAW,SAASz3D,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUo2D,WAAW,SAAS33D,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAeN,OAAOC,eAAeZ,EAAEsB,UAAUs2D,WAAW,SAAS73D,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAeN,OAAOC,eAAeZ,EAAEsB,UAAUu2D,WAAW,SAAS93D,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAejB,CAAC,CAAjtB,GAAqtB83D,MAAM,WAAW,SAAS93D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA23B,IAAIK,EAAE,OAAh4BJ,EAAEsB,UAAUy2D,SAAS,KAAK/3D,EAAEsB,UAAU02D,gBAAgB,KAAKh4D,EAAEsB,UAAU22D,kBAAkB,KAAKj4D,EAAEsB,UAAU42D,gBAAgB,KAAKl4D,EAAEsB,UAAU62D,oBAAoB,KAAKn4D,EAAEsB,UAAU82D,mBAAmB,KAAKp4D,EAAEsB,UAAU+2D,wBAAwB,KAAKr4D,EAAEsB,UAAUg3D,wBAAwB,KAAKt4D,EAAEsB,UAAUi3D,cAAc,KAAKv4D,EAAEsB,UAAUk3D,kBAAkB,KAAKx4D,EAAEsB,UAAUm3D,sBAAsB,KAAKz4D,EAAEsB,UAAUo3D,gBAAgB,KAAK14D,EAAEsB,UAAUq3D,YAAY,KAAK34D,EAAEsB,UAAUs3D,sBAAsB,KAAK54D,EAAEsB,UAAUu3D,qBAAqB,KAAK74D,EAAEsB,UAAUw3D,yBAAyB,KAAK94D,EAAEsB,UAAUy3D,sBAAsB,KAAK/4D,EAAEsB,UAAU03D,sBAAsB,KAAKh5D,EAAEsB,UAAU23D,aAAa,KAAKj5D,EAAEsB,UAAU43D,gBAAgB,KAAKl5D,EAAEsB,UAAU63D,wBAAwB,KAAKn5D,EAAEsB,UAAU83D,gBAAgB,KAAKp5D,EAAEsB,UAAU+3D,iBAAiB,KAAKr5D,EAAEsB,UAAUg4D,wBAAwB,KAAKt5D,EAAEsB,UAAUi4D,eAAe,KAAkB54D,OAAOC,eAAeZ,EAAEsB,UAAU,QAAQ,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,WAAW,kBAAkB,oBAAoB,kBAAkB,sBAAsB,qBAAqB,0BAA0B,0BAA0B,gBAAgB,oBAAoB,wBAAwB,kBAAkB,cAAc,wBAAwB,uBAAuB,2BAA2B,wBAAwB,wBAAwB,eAAe,kBAAkB,0BAA0B,kBAAkB,mBAAmB,0BAA0B,mBAAmB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+3D,UAAUp3D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMmG,cAAc71B,OAAO7jC,EAAE+3D,SAAS33D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEg4D,iBAAiBr3D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMoG,qBAAqB91B,OAAO7jC,EAAEg4D,gBAAgB53D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi4D,mBAAmBt3D,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMqG,uBAAuB/1B,OAAO7jC,EAAEi4D,kBAAkB73D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk4D,iBAAiBv3D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMsG,qBAAqBh2B,OAAO7jC,EAAEk4D,gBAAgB93D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm4D,qBAAqBx3D,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAMuG,yBAAyBj2B,OAAO7jC,EAAEm4D,oBAAoB/3D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEo4D,oBAAoBz3D,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMwG,wBAAwBl2B,OAAO7jC,EAAEo4D,mBAAmBh4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq4D,yBAAyB13D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAMyG,6BAA6Bn2B,OAAO7jC,EAAEq4D,wBAAwBj4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs4D,yBAAyB33D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAM0G,6BAA6Bp2B,OAAO7jC,EAAEs4D,wBAAwBl4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu4D,eAAe53D,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAM2G,mBAAmBr2B,OAAO7jC,EAAEu4D,cAAcn4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw4D,mBAAmB73D,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAM4G,uBAAuBt2B,OAAO7jC,EAAEw4D,kBAAkBp4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy4D,uBAAuB93D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAM6G,sBAAsBv2B,OAAO7jC,EAAEy4D,sBAAsBr4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE04D,iBAAiB/3D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM8G,qBAAqBx2B,OAAO7jC,EAAE04D,gBAAgBt4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE24D,aAAah4D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAM+G,iBAAiBz2B,OAAO7jC,EAAE24D,YAAYv4D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE44D,uBAAuBj4D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMgH,2BAA2B12B,OAAO7jC,EAAE44D,sBAAsBx4D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE64D,sBAAsBl4D,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMiH,0BAA0B32B,OAAO7jC,EAAE64D,qBAAqBz4D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE84D,0BAA0Bn4D,OAAOY,eAAehB,KAAKP,EAAE,6BAA6B6zD,EAAMN,MAAMkH,8BAA8B52B,OAAO7jC,EAAE84D,yBAAyB14D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+4D,uBAAuBp4D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMmH,2BAA2B72B,OAAO7jC,EAAE+4D,sBAAsB34D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEg5D,uBAAuBr4D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMoH,2BAA2B92B,OAAO7jC,EAAEg5D,sBAAsB54D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEi5D,cAAct4D,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMqH,kBAAkB/2B,OAAO7jC,EAAEi5D,aAAa74D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEk5D,iBAAiBv4D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMsH,qBAAqBh3B,OAAO7jC,EAAEk5D,gBAAgB94D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEm5D,yBAAyBx4D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAMuH,6BAA6Bj3B,OAAO7jC,EAAEm5D,wBAAwB/4D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEo5D,iBAAiBz4D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMwH,qBAAqBl3B,OAAO7jC,EAAEo5D,gBAAgBh5D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEq5D,kBAAkB14D,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMyH,sBAAsBn3B,OAAO7jC,EAAEq5D,iBAAiBj5D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEs5D,yBAAyB34D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAM0H,6BAA6Bp3B,OAAO7jC,EAAEs5D,wBAAwBl5D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEu5D,gBAAgB54D,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM2H,uBAAuBr3B,OAAO7jC,EAAEu5D,eAAen5D,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuDK,EAAnDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuE,MAAQ93D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEq3D,SAASlE,EAAMN,MAAMmG,cAAch1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEs3D,gBAAgBnE,EAAMN,MAAMoG,qBAAqBj1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu3D,kBAAkBpE,EAAMN,MAAMqG,uBAAuBl1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw3D,gBAAgBrE,EAAMN,MAAMsG,qBAAqBn1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEy3D,oBAAoBtE,EAAMN,MAAMuG,yBAAyBp1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE03D,mBAAmBvE,EAAMN,MAAMwG,wBAAwBr1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE23D,wBAAwBxE,EAAMN,MAAMyG,6BAA6Bt1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE43D,wBAAwBzE,EAAMN,MAAM0G,6BAA6Bv1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE63D,cAAc1E,EAAMN,MAAM2G,mBAAmBx1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE83D,kBAAkB3E,EAAMN,MAAM4G,uBAAuBz1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+3D,sBAAsB5E,EAAMN,MAAM6G,sBAAsB11B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEg4D,gBAAgB7E,EAAMN,MAAM8G,qBAAqB31B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEi4D,YAAY9E,EAAMN,MAAM+G,iBAAiB51B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEk4D,sBAAsB/E,EAAMN,MAAMgH,2BAA2B71B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEm4D,qBAAqBhF,EAAMN,MAAMiH,0BAA0B91B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEo4D,yBAAyBjF,EAAMN,MAAMkH,8BAA8B/1B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEq4D,sBAAsBlF,EAAMN,MAAMmH,2BAA2Bh2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEs4D,sBAAsBnF,EAAMN,MAAMoH,2BAA2Bj2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEu4D,aAAapF,EAAMN,MAAMqH,kBAAkBl2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEw4D,gBAAgBrF,EAAMN,MAAMsH,qBAAqBn2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEy4D,wBAAwBtF,EAAMN,MAAMuH,6BAA6Bp2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE04D,gBAAgBvF,EAAMN,MAAMwH,qBAAqBr2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE24D,iBAAiBxF,EAAMN,MAAMyH,sBAAsBt2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE44D,wBAAwBzF,EAAMN,MAAM0H,6BAA6Bv2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE64D,eAAe1F,EAAMN,MAAM2H,uBAAuBx2B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,cAAc,EAAEA,CAAC,CAA96Q,GAAk7Q05D,cAAc,WAAW,SAAS15D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUyrC,IAAI,KAAK/sC,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+sC,KAAKpsC,OAAOY,eAAehB,KAAKP,EAAE,QAAQ6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE+sC,IAAI3sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmG,cAAgB15D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqsC,IAAI8mB,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAAx5B,GAA45Bq7D,SAAS,WAAW,SAASr7D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA0G,IAAIK,EAAE,OAA/GJ,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUi6D,SAAS,KAAKv7D,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUm6D,WAAW,KAAkB96D,OAAOC,eAAeZ,EAAEsB,UAAU,SAAS,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,YAAY,WAAW,SAAS,eAAe0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu7D,UAAU56D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMmI,SAAS73B,OAAO7jC,EAAEu7D,SAASn7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0DK,EAAtDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8H,SAAWr7D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE66D,SAAS1H,EAAMN,MAAMmI,SAASh3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iBAAiB,EAAEA,CAAC,CAA7gD,GAAihD47D,iBAAiB,WAAW,SAAS57D,EAAEA,GAAG,GAAG6E,KAAKg3D,SAAS,GAAG77D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUu6D,SAASjI,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE67D,UAAU77D,EAAE67D,SAASh6D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE67D,SAASh6D,SAAS9B,EAAE8zD,EAAMN,MAAM8H,SAASx3B,OAAO7jC,EAAE67D,SAAS97D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqI,iBAAmB57D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm7D,UAAUn7D,EAAEm7D,SAASh6D,SAASnB,EAAEm7D,SAAS,IAAIn7D,EAAEm7D,SAASvvD,KAAKunD,EAAMN,MAAM8H,SAAS32B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAA3iC,GAA+iC+7D,QAAQ,WAAW,SAAS/7D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU57D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyDK,EAArDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwI,QAAU/7D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gBAAgB,EAAEA,CAAC,CAAlrB,GAAsrBk8D,QAAQ,WAAW,SAASl8D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU66D,SAASvI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU,MAAMh8D,EAAEm8D,UAAUx7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEm8D,UAAU/7D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyDK,EAArDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2I,QAAUl8D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy7D,SAASn8D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gBAAgB,EAAEA,CAAC,CAA92B,GAAk3B82D,UAAU,WAAW,SAAS92D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAgL,IAAIK,EAAE,OAArLJ,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU66D,SAASvI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU86D,WAAW,KAAKp8D,EAAEsB,UAAU6yC,MAAM,KAAkBxzC,OAAOC,eAAeZ,EAAEsB,UAAU,UAAU,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,aAAa,UAAU0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU,MAAMh8D,EAAEm8D,UAAUx7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEm8D,UAAU,MAAMn8D,EAAEo8D,YAAYz7D,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEo8D,YAAY,MAAMp8D,EAAEm0C,OAAOxzC,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEm0C,OAAO/zC,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2DK,EAAvDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuD,UAAY92D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy7D,SAASn8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE07D,WAAWp8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEyzC,MAAMn0C,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kBAAkB,EAAEA,CAAC,CAA3xC,GAA+xCq8D,MAAM,WAAW,SAASr8D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUg7D,SAAS,KAAKt8D,EAAEsB,UAAUi7D,aAAa3I,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEs8D,UAAU37D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAEs8D,SAASl8D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu8D,cAAc57D,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEu8D,cAAcn8D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuDK,EAAnDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8I,MAAQr8D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE47D,SAASzI,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE67D,aAAav8D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,cAAc,EAAEA,CAAC,CAA/5B,GAAm6B61D,OAAO,WAAW,SAAS71D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU66D,SAASvI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUm7D,QAAQ7I,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU,MAAMh8D,EAAEm8D,UAAUx7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEm8D,UAAU,MAAMn8D,EAAEy8D,SAAS97D,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEy8D,SAASr8D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwDK,EAApDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsC,OAAS71D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy7D,SAASn8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE+7D,QAAQz8D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,eAAe,EAAEA,CAAC,CAAniC,GAAuiC27D,WAAW,WAAW,SAAS37D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAsL,IAAIK,EAAE,OAA3LJ,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU66D,SAASvI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUo7D,YAAY,KAAK18D,EAAEsB,UAAUq7D,WAAW,KAAkBh8D,OAAOC,eAAeZ,EAAEsB,UAAU,WAAW,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,cAAc,eAAe0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU,MAAMh8D,EAAEm8D,UAAUx7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEm8D,UAAU,MAAMn8D,EAAE08D,aAAa/7D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE08D,aAAa,MAAM18D,EAAE28D,YAAYh8D,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE28D,YAAYv8D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4DK,EAAxDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoI,WAAa37D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy7D,SAASn8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEg8D,YAAY18D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEi8D,WAAW38D,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mBAAmB,EAAEA,CAAC,CAAl0C,GAAs0C48D,cAAc,WAAW,SAAS58D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUu7D,sBAAsB,KAAK78D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUw7D,WAAU,EAAG98D,EAAEsB,UAAUy7D,MAAM,EAAE/8D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE68D,uBAAuBl8D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAE68D,sBAAsBz8D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE88D,WAAWn8D,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAE88D,WAAW,MAAM98D,EAAE+8D,OAAOp8D,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE+8D,OAAO38D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqJ,cAAgB58D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEm8D,sBAAsBhJ,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEo8D,UAAU98D,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAEq8D,MAAM/8D,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAAxyC,GAA4yCi9D,cAAc,WAAW,SAASj9D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU47D,YAAW,EAAGl9D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAI2I,OAAOn9D,EAAE+0C,QAAQ,MAAM/0C,EAAEk9D,YAAYv8D,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEk9D,YAAY98D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0J,cAAgBj9D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAEm9D,SAAS,MAAM,KAAK,EAAGz8D,EAAEw8D,WAAWl9D,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAA1jC,GAA8jCo9D,aAAa,WAAW,SAASp9D,EAAEA,GAAG,GAAG6E,KAAKw4D,eAAe,GAAGr9D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+7D,eAAezJ,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEq9D,gBAAgBr9D,EAAEq9D,eAAex7D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEq9D,eAAex7D,SAAS9B,EAAE8zD,EAAMN,MAAM0J,cAAcp5B,OAAO7jC,EAAEq9D,eAAet9D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6J,aAAep9D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE28D,gBAAgB38D,EAAE28D,eAAex7D,SAASnB,EAAE28D,eAAe,IAAI38D,EAAE28D,eAAe/wD,KAAKunD,EAAMN,MAAM0J,cAAcv4B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAAz4B,GAA64Bs9D,YAAY,WAAW,SAASt9D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUi8D,gBAAgB,KAAKv9D,EAAEsB,UAAUk8D,kBAAkB,KAAKx9D,EAAEsB,UAAUi7D,aAAa3I,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU47D,YAAW,EAAGl9D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEu9D,iBAAiB58D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEu9D,gBAAgBn9D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw9D,mBAAmB78D,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEw9D,kBAAkBp9D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu8D,cAAc57D,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEu8D,cAAc,MAAMv8D,EAAEk9D,YAAYv8D,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEk9D,YAAY98D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+J,YAAct9D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE68D,gBAAgB1J,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE88D,kBAAkB3J,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE67D,aAAav8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEw8D,WAAWl9D,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAA73C,GAAi4Cy9D,kBAAkB,WAAW,SAASz9D,EAAEA,GAAG,GAAG6E,KAAK64D,UAAU,GAAG74D,KAAK84D,aAAa,GAAG39D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUo8D,UAAU9J,EAAM8C,WAAW12D,EAAEsB,UAAUq8D,aAAa/J,EAAM8C,WAAW12D,EAAEsB,UAAUs8D,iBAAiB,KAAK59D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE09D,WAAW19D,EAAE09D,UAAU77D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE09D,UAAU77D,SAAS9B,EAAE8zD,EAAMN,MAAM0J,cAAcp5B,OAAO7jC,EAAE09D,UAAU39D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAE29D,cAAc39D,EAAE29D,aAAa97D,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAE29D,aAAa97D,SAAS9B,EAAE8zD,EAAMN,MAAM+J,YAAYz5B,OAAO7jC,EAAE29D,aAAa59D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAO,MAAM10D,EAAE49D,kBAAkBj9D,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMJ,OAAO0D,SAAS0G,YAAYh6B,OAAO7jC,EAAE49D,iBAAiBx9D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmEK,EAA/DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkK,kBAAoBz9D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEg9D,WAAWh9D,EAAEg9D,UAAU77D,SAASnB,EAAEg9D,UAAU,IAAIh9D,EAAEg9D,UAAUpxD,KAAKunD,EAAMN,MAAM0J,cAAcv4B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEi9D,cAAcj9D,EAAEi9D,aAAa97D,SAASnB,EAAEi9D,aAAa,IAAIj9D,EAAEi9D,aAAarxD,KAAKunD,EAAMN,MAAM+J,YAAY54B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEk9D,iBAAiB/J,EAAMJ,OAAO0D,SAAS0G,YAAYn5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0BAA0B,EAAEA,CAAC,CAA9rD,GAAksD89D,SAAS,WAAW,SAAS99D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUy8D,UAAUnK,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU08D,YAAYpK,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+9D,WAAWp9D,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAE+9D,WAAW,MAAM/9D,EAAEg+D,aAAar9D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEg+D,aAAa59D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0DK,EAAtDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuK,SAAW99D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEq9D,UAAU/9D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEs9D,YAAYh+D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iBAAiB,EAAEA,CAAC,CAAp4B,GAAw4Bu0D,QAAQ,WAAW,SAASv0D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU66D,SAASvI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU28D,SAASrK,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU,MAAMh8D,EAAEm8D,UAAUx7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEm8D,UAAU,MAAMn8D,EAAEi+D,UAAUt9D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEi+D,UAAU79D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyDK,EAArDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgB,QAAUv0D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy7D,SAASn8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEu9D,SAASj+D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gBAAgB,EAAEA,CAAC,CAA1iC,GAA8iCw8D,QAAQ,WAAW,SAASx8D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU66D,SAASvI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU48D,SAAStK,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU,MAAMh8D,EAAEm8D,UAAUx7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEm8D,UAAU,MAAMn8D,EAAEk+D,UAAUv9D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEk+D,UAAU99D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyDK,EAArDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiJ,QAAUx8D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy7D,SAASn8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEw9D,SAASl+D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gBAAgB,EAAEA,CAAC,CAA1iC,GAA8iCm+D,WAAW,WAAW,SAASn+D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU06D,SAASpI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU66D,SAASvI,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU88D,YAAYxK,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg8D,UAAUr7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEg8D,UAAU,MAAMh8D,EAAEm8D,UAAUx7D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEm8D,UAAU,MAAMn8D,EAAEo+D,aAAaz9D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEo+D,aAAah+D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4DK,EAAxDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4K,WAAan+D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs7D,SAASh8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy7D,SAASn8D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE09D,YAAYp+D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mBAAmB,EAAEA,CAAC,CAA/jC,GAAmkCq+D,UAAU,WAAW,MAAMr+D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,mBAAmB,EAAEI,EAAEJ,EAAE,GAAG,uBAAuB,EAAEI,CAAC,CAA7G,GAAiHk+D,QAAQ,WAAW,MAAMt+D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,WAAW,EAAEI,EAAEJ,EAAE,GAAG,yBAAyB,EAAEI,EAAEJ,EAAE,GAAG,6BAA6B,EAAEI,EAAEJ,EAAE,GAAG,0CAA0C,EAAEI,EAAEJ,EAAE,GAAG,8CAA8C,EAAEI,EAAEJ,EAAE,GAAG,iCAAiC,EAAEI,CAAC,CAAjS,GAAqSm+D,gBAAgB,WAAW,MAAMv+D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,YAAY,EAAEI,EAAEJ,EAAE,GAAG,UAAU,EAAEI,CAAC,CAAzF,GAA6Fo+D,mBAAmB,WAAW,MAAMx+D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,mBAAmB,EAAEI,EAAEJ,EAAE,GAAG,iBAAiB,EAAEI,CAAC,CAAvG,GAA2Gq+D,kBAAkB,WAAW,MAAMz+D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,uBAAuB,EAAEI,EAAEJ,EAAE,GAAG,UAAU,EAAEI,EAAEJ,EAAE,GAAG,YAAY,EAAEI,CAAC,CAAzH,GAA6Hs+D,eAAe,WAAW,MAAM1+D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,oBAAoB,EAAEI,EAAEJ,EAAE,GAAG,WAAW,EAAEI,EAAEJ,EAAE,GAAG,WAAW,EAAEI,CAAC,CAAtH,GAA0Hu+D,iBAAiB,WAAW,MAAM3+D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,sBAAsB,EAAEI,EAAEJ,EAAE,GAAG,UAAU,EAAEI,EAAEJ,EAAE,GAAG,YAAY,EAAEI,CAAC,CAAxH,GAA4H42D,IAAI,WAAW,SAASh3D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAyO,IAAIK,EAAE,OAA9OJ,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAUs9D,QAAQ,KAAK5+D,EAAEsB,UAAUu9D,SAAS,KAAK7+D,EAAEsB,UAAUw9D,UAAU,KAAK9+D,EAAEsB,UAAUy9D,aAAa,KAAK/+D,EAAEsB,UAAU09D,QAAQ,KAAKh/D,EAAEsB,UAAU29D,eAAe,KAAKj/D,EAAEsB,UAAU49D,sBAAsB,KAAkBv+D,OAAOC,eAAeZ,EAAEsB,UAAU,MAAM,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,aAAa,UAAU,WAAW,YAAY,eAAe,UAAU,iBAAiB,0BAA0B0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4+D,SAASj+D,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE4+D,SAAS,MAAM5+D,EAAE6+D,UAAUl+D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE6+D,UAAU,MAAM7+D,EAAE8+D,WAAWn+D,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE8+D,WAAW,MAAM9+D,EAAE++D,cAAcp+D,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAM4L,aAAat7B,OAAO7jC,EAAE++D,aAAa3+D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEg/D,SAASr+D,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAM6L,QAAQv7B,OAAO7jC,EAAEg/D,QAAQ5+D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi/D,gBAAgBt+D,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEi/D,gBAAgB,MAAMj/D,EAAEk/D,uBAAuBv+D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEk/D,sBAAsB9+D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqDK,EAAjDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMyD,IAAMh3D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEk+D,QAAQ5+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEm+D,SAAS7+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEo+D,UAAU9+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEq+D,aAAalL,EAAMN,MAAM4L,aAAaz6B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEs+D,QAAQnL,EAAMN,MAAM6L,QAAQ16B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu+D,eAAej/D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEw+D,sBAAsBrL,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,YAAY,EAAEA,CAAC,CAAlyE,GAAsyEm/D,aAAa,WAAW,SAASn/D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU08C,UAAU,EAAEh+C,EAAEsB,UAAUwrC,KAAK,KAAK9sC,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg+C,WAAWr9C,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,GAAGA,OAAOx0D,EAAEg+C,WAAW,MAAMh+C,EAAE8sC,MAAMnsC,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAM6L,QAAQv7B,OAAO7jC,EAAE8sC,KAAK1sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4L,aAAen/D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs9C,UAAUh+C,EAAEw0D,SAAS,MAAM,KAAK,EAAG9zD,EAAEosC,KAAK+mB,EAAMN,MAAM6L,QAAQ16B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAAp2B,GAAw2Bo/D,QAAQ,WAAW,SAASp/D,EAAEA,GAAG,GAAG6E,KAAKioC,KAAK,GAAG9sC,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwrC,KAAK8mB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8sC,MAAM9sC,EAAE8sC,KAAKjrC,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE8sC,KAAKjrC,SAAS9B,EAAE8zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE8sC,KAAK/sC,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyDK,EAArDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6L,QAAUp/D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEosC,MAAMpsC,EAAEosC,KAAKjrC,SAASnB,EAAEosC,KAAK,IAAIpsC,EAAEosC,KAAKxgC,KAAKunD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gBAAgB,EAAEA,CAAC,CAAvwB,GAA2wBqsC,UAAU,WAAW,SAASrsC,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA4K,IAAIK,EAAE,OAAjLJ,EAAEsB,UAAU40C,SAAS,KAAKl2C,EAAEsB,UAAUs9D,QAAQ,KAAK5+D,EAAEsB,UAAUu9D,SAAS,KAAK7+D,EAAEsB,UAAUw9D,UAAU,KAAK9+D,EAAEsB,UAAU+9D,mBAAmB,KAAKr/D,EAAEsB,UAAUg+D,cAAc,KAAkB3+D,OAAOC,eAAeZ,EAAEsB,UAAU,YAAY,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,WAAW,UAAU,WAAW,YAAY,qBAAqB,kBAAkB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEk2C,UAAUv1C,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEk2C,UAAU,MAAMl2C,EAAE4+D,SAASj+D,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE4+D,SAAS,MAAM5+D,EAAE6+D,UAAUl+D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE6+D,UAAU,MAAM7+D,EAAE8+D,WAAWn+D,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE8+D,WAAW,MAAM9+D,EAAEq/D,oBAAoB1+D,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMgM,mBAAmB17B,OAAO7jC,EAAEq/D,mBAAmBj/D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs/D,eAAe3+D,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMiM,cAAc37B,OAAO7jC,EAAEs/D,cAAcl/D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2DK,EAAvDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMlnB,UAAYrsC,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEw1C,SAASl2C,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEk+D,QAAQ5+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEm+D,SAAS7+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEo+D,UAAU9+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE2+D,mBAAmBxL,EAAMN,MAAMgM,mBAAmB76B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4+D,cAAczL,EAAMN,MAAMiM,cAAc96B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kBAAkB,EAAEA,CAAC,CAA5zD,GAAg0Du/D,mBAAmB,WAAW,SAASv/D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm+D,KAAK,KAAKz/D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy/D,MAAM9+D,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAMiM,cAAc37B,OAAO7jC,EAAEy/D,KAAKr/D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAoEK,EAAhEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgM,mBAAqBv/D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE++D,KAAK5L,EAAMN,MAAMiM,cAAc96B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,2BAA2B,EAAEA,CAAC,CAAjuB,GAAquBw/D,cAAc,WAAW,SAASx/D,EAAEA,GAAG,GAAG6E,KAAK46D,KAAK,GAAGz/D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm+D,KAAK7L,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy/D,MAAMz/D,EAAEy/D,KAAK59D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEy/D,KAAK59D,SAAS9B,EAAE8zD,EAAMN,MAAMlnB,UAAUxI,OAAO7jC,EAAEy/D,KAAK1/D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiM,cAAgBx/D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE++D,MAAM/+D,EAAE++D,KAAK59D,SAASnB,EAAE++D,KAAK,IAAI/+D,EAAE++D,KAAKnzD,KAAKunD,EAAMN,MAAMlnB,UAAU3H,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAA/xB,GAAmyB0/D,cAAc,WAAW,SAAS1/D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAsL,IAAIK,EAAE,OAA3LJ,EAAEsB,UAAUq+D,aAAa/L,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU40C,SAAS,KAAKl2C,EAAEsB,UAAUs9D,QAAQ,KAAK5+D,EAAEsB,UAAUu9D,SAAS,KAAK7+D,EAAEsB,UAAUw9D,UAAU,KAAK9+D,EAAEsB,UAAU29D,eAAe,KAAkBt+D,OAAOC,eAAeZ,EAAEsB,UAAU,YAAY,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,WAAW,UAAU,WAAW,YAAY,mBAAmB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2/D,cAAch/D,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE2/D,cAAc,MAAM3/D,EAAEk2C,UAAUv1C,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEk2C,UAAU,MAAMl2C,EAAE4+D,SAASj+D,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE4+D,SAAS,MAAM5+D,EAAE6+D,UAAUl+D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE6+D,UAAU,MAAM7+D,EAAE8+D,WAAWn+D,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE8+D,WAAW,MAAM9+D,EAAEi/D,gBAAgBt+D,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEi/D,gBAAgB7+D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmM,cAAgB1/D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEi/D,aAAa3/D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEw1C,SAASl2C,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEk+D,QAAQ5+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEm+D,SAAS7+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEo+D,UAAU9+D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEu+D,eAAej/D,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAA5nD,GAAgoD4/D,aAAa,WAAW,SAAS5/D,EAAEA,GAAG,GAAG6E,KAAKg7D,QAAQ,GAAG7/D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUu+D,QAAQjM,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6/D,SAAS7/D,EAAE6/D,QAAQh+D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE6/D,QAAQh+D,SAAS9B,EAAE8zD,EAAMN,MAAMmM,cAAc77B,OAAO7jC,EAAE6/D,QAAQ9/D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqM,aAAe5/D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEm/D,SAASn/D,EAAEm/D,QAAQh+D,SAASnB,EAAEm/D,QAAQ,IAAIn/D,EAAEm/D,QAAQvzD,KAAKunD,EAAMN,MAAMmM,cAAch7B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAAn0B,GAAu0B8/D,oBAAoB,WAAW,MAAM9/D,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,QAAQ,EAAEI,EAAEJ,EAAE,GAAG,kBAAkB,EAAEI,EAAEJ,EAAE,GAAG,gBAAgB,EAAEI,EAAEJ,EAAE,GAAG,gBAAgB,EAAEI,EAAEJ,EAAE,GAAG,qBAAqB,EAAEI,EAAEJ,EAAE,GAAG,wBAAwB,EAAEI,EAAEJ,EAAE,GAAG,gBAAgB,EAAEI,EAAEJ,EAAE,GAAG,kBAAkB,EAAEI,EAAEJ,EAAE,GAAG,kBAAkB,EAAEI,EAAEJ,EAAE,GAAG,cAAc,EAAEI,EAAEJ,EAAE,IAAI,cAAc,GAAGI,EAAEJ,EAAE,IAAI,cAAc,GAAGI,EAAEJ,EAAE,IAAI,cAAc,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,iBAAiB,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,YAAY,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,eAAe,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,sBAAsB,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,kBAAkB,GAAGI,EAAEJ,EAAE,IAAI,kBAAkB,GAAGI,EAAEJ,EAAE,IAAI,UAAU,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,EAAEJ,EAAE,IAAI,kBAAkB,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,eAAe,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,sBAAsB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,6BAA6B,GAAGI,EAAEJ,EAAE,IAAI,eAAe,GAAGI,EAAEJ,EAAE,IAAI,eAAe,GAAGI,EAAEJ,EAAE,IAAI,aAAa,GAAGI,EAAEJ,EAAE,IAAI,aAAa,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,8BAA8B,GAAGI,EAAEJ,EAAE,IAAI,kBAAkB,GAAGI,EAAEJ,EAAE,IAAI,kBAAkB,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,cAAc,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,YAAY,GAAGI,EAAEJ,EAAE,IAAI,4BAA4B,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,cAAc,GAAGI,EAAEJ,EAAE,IAAI,cAAc,GAAGI,EAAEJ,EAAE,IAAI,cAAc,GAAGI,EAAEJ,EAAE,IAAI,eAAe,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,sBAAsB,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,CAAC,CAA3+E,GAA++E2/D,cAAc,WAAW,SAAS//D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUyoB,IAAI6pC,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU8oB,IAAIwpC,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU0+D,SAASpM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU2+D,IAAIrM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU4+D,IAAItM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU6+D,IAAIvM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU8+D,IAAIxM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU++D,IAAIzM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUg/D,GAAG1M,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUi/D,IAAI3M,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUk/D,KAAK5M,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+pB,KAAKppB,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAE+pB,KAAK,MAAM/pB,EAAEoqB,KAAKzpB,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEoqB,KAAK,MAAMpqB,EAAEggE,UAAUr/D,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEggE,UAAU,MAAMhgE,EAAEigE,KAAKt/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEigE,KAAK,MAAMjgE,EAAEkgE,KAAKv/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEkgE,KAAK,MAAMlgE,EAAEmgE,KAAKx/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEmgE,KAAK,MAAMngE,EAAEogE,KAAKz/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEogE,KAAK,MAAMpgE,EAAEqgE,KAAK1/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqgE,KAAK,MAAMrgE,EAAEsgE,IAAI3/D,OAAOY,eAAehB,KAAKP,EAAE,OAAOI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEsgE,IAAI,MAAMtgE,EAAEugE,KAAK5/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEugE,KAAK,MAAMvgE,EAAEwgE,MAAM7/D,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEwgE,MAAMpgE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwM,cAAgB//D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEqpB,IAAI/pB,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE0pB,IAAIpqB,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEs/D,SAAShgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEu/D,IAAIjgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEw/D,IAAIlgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEy/D,IAAIngE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE0/D,IAAIpgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE2/D,IAAIrgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE4/D,GAAGtgE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE6/D,IAAIvgE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE8/D,KAAKxgE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAA9xE,GAAkyEygE,uBAAuB,WAAW,SAASzgE,EAAEA,GAAG,GAAG6E,KAAK67D,KAAK,GAAG1gE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUq/D,oBAAoB,EAAE3gE,EAAEsB,UAAUs/D,QAAQ,KAAK5gE,EAAEsB,UAAUo/D,KAAK9M,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2gE,qBAAqBhgE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAE2gE,qBAAqB,MAAM3gE,EAAE4gE,SAASjgE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMsN,QAAQh9B,OAAO7jC,EAAE4gE,QAAQxgE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0gE,MAAM1gE,EAAE0gE,KAAK7+D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE0gE,KAAK7+D,SAAS9B,EAAE8zD,EAAMN,MAAMsN,QAAQh9B,OAAO7jC,EAAE0gE,KAAK3gE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwEK,EAApEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkN,uBAAyBzgE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEigE,oBAAoB3gE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEkgE,QAAQ/M,EAAMN,MAAMsN,QAAQn8B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEggE,MAAMhgE,EAAEggE,KAAK7+D,SAASnB,EAAEggE,KAAK,IAAIhgE,EAAEggE,KAAKp0D,KAAKunD,EAAMN,MAAMsN,QAAQn8B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,+BAA+B,EAAEA,CAAC,CAA/sC,GAAmtC6gE,QAAQ,WAAW,SAAS7gE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUw/D,SAAS,KAAK9gE,EAAEsB,UAAUy/D,YAAY,KAAK/gE,EAAEsB,UAAU0/D,YAAY,KAAKhhE,EAAEsB,UAAU2/D,QAAQ,EAAEjhE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8gE,UAAUngE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMwM,cAAcl8B,OAAO7jC,EAAE8gE,SAAS1gE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+gE,aAAapgE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMwM,cAAcl8B,OAAO7jC,EAAE+gE,YAAY3gE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEghE,aAAargE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMwM,cAAcl8B,OAAO7jC,EAAEghE,YAAY5gE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEihE,SAAStgE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEihE,SAAS7gE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyDK,EAArDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsN,QAAU7gE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEogE,SAASjN,EAAMN,MAAMwM,cAAcr7B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqgE,YAAYlN,EAAMN,MAAMwM,cAAcr7B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEsgE,YAAYnN,EAAMN,MAAMwM,cAAcr7B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEugE,QAAQjhE,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gBAAgB,EAAEA,CAAC,CAA71C,GAAi2CkhE,YAAY,WAAW,SAASlhE,EAAEA,GAAG,GAAG6E,KAAKs8D,uBAAuB,GAAGnhE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6/D,uBAAuBvN,EAAM8C,WAAW12D,EAAEsB,UAAU8/D,WAAW,KAAKphE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEmhE,wBAAwBnhE,EAAEmhE,uBAAuBt/D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEmhE,uBAAuBt/D,SAAS9B,EAAE8zD,EAAMN,MAAMkN,uBAAuB58B,OAAO7jC,EAAEmhE,uBAAuBphE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAO,MAAM10D,EAAEohE,YAAYzgE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM8N,iBAAiBx9B,OAAO7jC,EAAEohE,WAAWhhE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2N,YAAclhE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEygE,wBAAwBzgE,EAAEygE,uBAAuBt/D,SAASnB,EAAEygE,uBAAuB,IAAIzgE,EAAEygE,uBAAuB70D,KAAKunD,EAAMN,MAAMkN,uBAAuB/7B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAE0gE,WAAWvN,EAAMN,MAAM8N,iBAAiB38B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAAjuC,GAAquCshE,0BAA0B,WAAW,SAASthE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUigE,mBAAmB,KAAKvhE,EAAEsB,UAAUkgE,gBAAgB,KAAKxhE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEuhE,oBAAoB5gE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAM2N,YAAYr9B,OAAO7jC,EAAEuhE,mBAAmBnhE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwhE,iBAAiB7gE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM2N,YAAYr9B,OAAO7jC,EAAEwhE,gBAAgBphE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+N,0BAA4BthE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE6gE,mBAAmB1N,EAAMN,MAAM2N,YAAYx8B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8gE,gBAAgB3N,EAAMN,MAAM2N,YAAYx8B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAxjC,GAA4jC+2D,gBAAgB,WAAW,SAAS/2D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUmgE,YAAY7N,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUkP,KAAK,EAAExQ,EAAEsB,UAAUogE,WAAW,GAAG1hE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEyhE,aAAa9gE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEyhE,aAAa,MAAMzhE,EAAEwQ,MAAM7P,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEwQ,MAAM,MAAMxQ,EAAE0hE,YAAY/gE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE0hE,YAAYthE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwD,gBAAkB/2D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+gE,YAAYzhE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE8P,KAAKxQ,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEghE,WAAW1hE,EAAEqpB,SAAS,MAAM,QAAQrpB,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAAh+B,GAAo+Bi2D,YAAY,WAAW,SAASj2D,EAAEA,GAAG,GAAG6E,KAAK0xD,gBAAgB,GAAGv2D,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUqgE,UAAU/N,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUsgE,OAAO,EAAE5hE,EAAEsB,UAAUugE,KAAKjO,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUwgE,WAAW,GAAG9hE,EAAEsB,UAAU41D,OAAOtD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUygE,cAAc,KAAK/hE,EAAEsB,UAAU0gE,aAAapO,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUi1D,gBAAgB3C,EAAM8C,WAAW12D,EAAEsB,UAAUm1D,YAAY,GAAGz2D,EAAEsB,UAAU2gE,MAAMrO,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2hE,WAAWhhE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE2hE,WAAW,MAAM3hE,EAAE4hE,QAAQjhE,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE4hE,QAAQ,MAAM5hE,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE6hE,MAAM,MAAM7hE,EAAE8hE,YAAYnhE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE8hE,YAAY,MAAM9hE,EAAEk3D,QAAQv2D,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEk3D,QAAQ,MAAMl3D,EAAE+hE,eAAephE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+hE,cAAc3hE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEgiE,cAAcrhE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEgiE,cAAc,MAAMhiE,EAAEu2D,iBAAiBv2D,EAAEu2D,gBAAgB10D,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEu2D,gBAAgB10D,SAAS9B,EAAE8zD,EAAMN,MAAMwD,gBAAgBlzB,OAAO7jC,EAAEu2D,gBAAgBx2D,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAO,MAAM10D,EAAEy2D,aAAa91D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEy2D,aAAa,MAAMz2D,EAAEiiE,OAAOthE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEiiE,OAAO7hE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0C,YAAcj2D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEihE,UAAU3hE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEkhE,OAAO5hE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEmhE,KAAK7hE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEohE,WAAW9hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEw2D,OAAOl3D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEqhE,cAAclO,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEshE,aAAahiE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE61D,iBAAiB71D,EAAE61D,gBAAgB10D,SAASnB,EAAE61D,gBAAgB,IAAI71D,EAAE61D,gBAAgBjqD,KAAKunD,EAAMN,MAAMwD,gBAAgBryB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAE+1D,YAAYz2D,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAEuhE,MAAMjiE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAA57E,GAAg8EkiE,gBAAgB,WAAW,SAASliE,EAAEA,GAAG,GAAG6E,KAAKs9D,YAAY,GAAGniE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6gE,YAAYvO,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEmiE,aAAaniE,EAAEmiE,YAAYtgE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEmiE,YAAYtgE,SAAS9B,EAAE8zD,EAAMN,MAAM0C,YAAYpyB,OAAO7jC,EAAEmiE,YAAYpiE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2O,gBAAkBliE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEyhE,aAAazhE,EAAEyhE,YAAYtgE,SAASnB,EAAEyhE,YAAY,IAAIzhE,EAAEyhE,YAAY71D,KAAKunD,EAAMN,MAAM0C,YAAYvxB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAA72B,GAAi3BoiE,gBAAgB,WAAW,SAASpiE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+gE,MAAM,EAAEriE,EAAEsB,UAAUghE,MAAM,EAAEtiE,EAAEsB,UAAUihE,MAAM,EAAEviE,EAAEsB,UAAUkhE,IAAI,GAAGxiE,EAAEsB,UAAUmhE,MAAM,GAAGziE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqiE,OAAO1hE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEqiE,OAAO,MAAMriE,EAAEsiE,OAAO3hE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEsiE,OAAO,MAAMtiE,EAAEuiE,OAAO5hE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEuiE,OAAO,MAAMviE,EAAEwiE,KAAK7hE,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEwiE,KAAK,MAAMxiE,EAAEyiE,OAAO9hE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEyiE,OAAOriE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6O,gBAAkBpiE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2hE,MAAMriE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE4hE,MAAMtiE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE6hE,MAAMviE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE8hE,IAAIxiE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAE+hE,MAAMziE,EAAEqpB,SAAS,MAAM,QAAQrpB,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAAhqC,GAAoqC0iE,QAAQ,WAAW,SAAS1iE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUqP,KAAK,GAAG3Q,EAAEsB,UAAUL,MAAM,GAAGjB,EAAEsB,UAAU6D,KAAKyuD,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2Q,MAAMhQ,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE2Q,MAAM,MAAM3Q,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEiB,OAAO,MAAMjB,EAAEmF,MAAMxE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEmF,MAAM/E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyDK,EAArDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmP,QAAU1iE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEiQ,KAAK3Q,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEO,MAAMjB,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEyE,KAAKnF,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gBAAgB,EAAEA,CAAC,CAAv5B,GAA25B2iE,0BAA0B,WAAW,SAAS3iE,EAAEA,GAAG,GAAG6E,KAAK+9D,UAAU,GAAG5iE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUshE,UAAUhP,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE4iE,WAAW5iE,EAAE4iE,UAAU/gE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE4iE,UAAU/gE,SAAS9B,EAAE8zD,EAAMN,MAAMmP,QAAQ7+B,OAAO7jC,EAAE4iE,UAAU7iE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoP,0BAA4B3iE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEkiE,WAAWliE,EAAEkiE,UAAU/gE,SAASnB,EAAEkiE,UAAU,IAAIliE,EAAEkiE,UAAUt2D,KAAKunD,EAAMN,MAAMmP,QAAQh+B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAr2B,GAAy2B6iE,kBAAkB,WAAW,SAAS7iE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUszC,OAAO,GAAG50C,EAAEsB,UAAUyhE,QAAQnP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU0hE,UAAU,EAAEhjE,EAAEsB,UAAU2hE,aAAa,EAAEjjE,EAAEsB,UAAU4hE,SAAS,EAAEljE,EAAEsB,UAAU6hE,sBAAqB,EAAGnjE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE40C,QAAQj0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE40C,QAAQ,MAAM50C,EAAE+iE,SAASpiE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+iE,SAAS,MAAM/iE,EAAEgjE,WAAWriE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEgjE,WAAW,MAAMhjE,EAAEijE,cAActiE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEijE,cAAc,MAAMjjE,EAAEkjE,UAAUviE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIA,OAAOx0D,EAAEkjE,UAAU,MAAMljE,EAAEmjE,sBAAsBxiE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEmjE,sBAAsB/iE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmEK,EAA/DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsP,kBAAoB7iE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEk0C,OAAO50C,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEqiE,QAAQ/iE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEsiE,UAAUhjE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEuiE,aAAajjE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEwiE,SAASljE,EAAEw0D,SAAS,MAAM,KAAK,EAAG9zD,EAAEyiE,qBAAqBnjE,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0BAA0B,EAAEA,CAAC,CAAntD,GAAutDojE,aAAa,WAAW,SAASpjE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUyhE,QAAQnP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU4hE,SAAS,EAAEljE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+iE,SAASpiE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+iE,SAAS,MAAM/iE,EAAEkjE,UAAUviE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIA,OAAOx0D,EAAEkjE,UAAU9iE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6P,aAAepjE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqiE,QAAQ/iE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEwiE,SAASljE,EAAEw0D,SAAS,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAAxiC,GAA4iCqjE,cAAc,WAAW,SAASrjE,EAAEA,GAAG,GAAG6E,KAAKy+D,cAAc,GAAGtjE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUgiE,cAAc1P,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEsjE,eAAetjE,EAAEsjE,cAAczhE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEsjE,cAAczhE,SAAS9B,EAAE8zD,EAAMN,MAAM6P,aAAav/B,OAAO7jC,EAAEsjE,cAAcvjE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8P,cAAgBrjE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE4iE,eAAe5iE,EAAE4iE,cAAczhE,SAASnB,EAAE4iE,cAAc,IAAI5iE,EAAE4iE,cAAch3D,KAAKunD,EAAMN,MAAM6P,aAAa1+B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAA/3B,GAAm4BujE,iBAAiB,WAAW,SAASvjE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUk1D,UAAU,KAAKx2D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw2D,WAAW71D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEw2D,UAAUp2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgQ,iBAAmBvjE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE81D,UAAU3C,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAAr8B,GAAy8BwjE,YAAY,WAAW,SAASxjE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAkQ,IAAIK,EAAE,OAAvQJ,EAAEsB,UAAUmiE,eAAc,EAAGzjE,EAAEsB,UAAUoiE,iBAAiB,KAAK1jE,EAAEsB,UAAUqiE,cAAc/P,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUsiE,WAAWhQ,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUuiE,gBAAgB,KAAK7jE,EAAEsB,UAAUwiE,aAAa,KAAkBnjE,OAAOC,eAAeZ,EAAEsB,UAAU,WAAW,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,kBAAkB,iBAAiB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEyjE,eAAe9iE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,GAAGwI,KAAKh9D,EAAEyjE,eAAe,MAAMzjE,EAAE0jE,kBAAkB/iE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAE0jE,iBAAiBtjE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2jE,eAAehjE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE2jE,eAAe,MAAM3jE,EAAE4jE,YAAYjjE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE4jE,YAAY,MAAM5jE,EAAE6jE,iBAAiBljE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6jE,gBAAgBzjE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8jE,cAAcnjE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE8jE,cAAc1jE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiQ,YAAcxjE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+iE,cAAczjE,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAEgjE,iBAAiB7P,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEijE,cAAc3jE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEkjE,WAAW5jE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEmjE,gBAAgBhQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEojE,aAAa9jE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAAx4D,GAA44D+jE,iBAAiB,WAAW,SAAS/jE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA4H,IAAIK,EAAE,OAAjIJ,EAAEsB,UAAU0iE,SAAS,KAAKhkE,EAAEsB,UAAU2iE,WAAW,KAAKjkE,EAAEsB,UAAU4iE,kBAAkB,KAAKlkE,EAAEsB,UAAU6iE,iBAAiB,KAAkBxjE,OAAOC,eAAeZ,EAAEsB,UAAU,iBAAiB,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,oBAAoB,qBAAqB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEgkE,UAAUrjE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEgkE,SAAS5jE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEikE,YAAYtjE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEikE,WAAW7jE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkkE,mBAAmBvjE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAEkkE,kBAAkB9jE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmkE,kBAAkBxjE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAM8I,MAAMx4B,OAAO7jC,EAAEmkE,iBAAiB/jE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwQ,iBAAmB/jE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEsjE,SAASnQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEujE,WAAWpQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwjE,kBAAkBrQ,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyjE,iBAAiBtQ,EAAMN,MAAM8I,MAAM33B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAAnnD,GAAunDokE,oBAAoB,WAAW,SAASpkE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,GAAGI,OAAO50D,EAAE+0C,QAAQ30C,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6Q,oBAAsBpkE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEq0C,OAAO/0C,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,CAAC,CAAlsB,GAAssB20D,UAAU,WAAW,SAAS30D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+iE,QAAQzQ,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUgjE,MAAM,EAAEtkE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqkE,SAAS1jE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEqkE,SAAS,MAAMrkE,EAAEskE,OAAO3jE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEskE,OAAOlkE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2DK,EAAvDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoB,UAAY30D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2jE,QAAQrkE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE4jE,MAAMtkE,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kBAAkB,EAAEA,CAAC,CAAvzB,GAA2zBqhE,iBAAiB,WAAW,SAASrhE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+iE,QAAQzQ,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqkE,SAAS1jE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEqkE,SAASjkE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8N,iBAAmBrhE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2jE,QAAQrkE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAA/rB,GAAmsBukE,aAAa,WAAW,MAAMvkE,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,eAAe,EAAEI,EAAEJ,EAAE,GAAG,sBAAsB,EAAEI,EAAEJ,EAAE,GAAG,eAAe,EAAEI,EAAEJ,EAAE,GAAG,2BAA2B,EAAEI,CAAC,CAApK,GAAwKg7D,YAAY,WAAW,SAASp7D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUkjE,QAAQ,KAAKxkE,EAAEsB,UAAUmF,aAAa,EAAEzG,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEwkE,SAAS7jE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMzX,YAAYjY,OAAO7jC,EAAEwkE,QAAQpkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyG,cAAc9F,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEyG,cAAcrG,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6H,YAAcp7D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE8jE,QAAQ3Q,EAAMN,MAAMzX,YAAYpX,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+F,aAAazG,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAAv4B,GAA24B87C,YAAY,WAAW,SAAS97C,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUqyC,KAAK,KAAK3zC,EAAEsB,UAAUm+D,KAAK,KAAKz/D,EAAEsB,UAAUmjE,OAAO,KAAKzkE,EAAEsB,UAAUojE,UAAU9Q,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUqjE,uBAAuB/Q,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2zC,MAAMhzC,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAMqR,gBAAgB/gC,OAAO7jC,EAAE2zC,KAAKvzC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy/D,MAAM9+D,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAMiM,cAAc37B,OAAO7jC,EAAEy/D,KAAKr/D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEykE,QAAQ9jE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMqM,aAAa/7B,OAAO7jC,EAAEykE,OAAOrkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0kE,WAAW/jE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE0kE,WAAW,MAAM1kE,EAAE2kE,wBAAwBhkE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2BI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE2kE,wBAAwBvkE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMzX,YAAc97C,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEizC,KAAKkgB,EAAMN,MAAMqR,gBAAgBlgC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE++D,KAAK5L,EAAMN,MAAMiM,cAAc96B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+jE,OAAO5Q,EAAMN,MAAMqM,aAAal7B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgkE,UAAU1kE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEikE,uBAAuB3kE,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAAhiD,GAAoiD4kE,gBAAgB,WAAW,SAAS5kE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAq5D,IAAIK,EAAE,OAA15DJ,EAAEsB,UAAUujE,cAAc,KAAK7kE,EAAEsB,UAAUwjE,cAAc,KAAK9kE,EAAEsB,UAAUyjE,eAAenR,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU0jE,yBAAyB,KAAKhlE,EAAEsB,UAAU2jE,gBAAe,EAAGjlE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAU4jE,aAAa,KAAKllE,EAAEsB,UAAU6jE,uBAAuB,KAAKnlE,EAAEsB,UAAU8jE,uBAAuB,KAAKplE,EAAEsB,UAAU+jE,kBAAkB,KAAKrlE,EAAEsB,UAAUgkE,oBAAoB,KAAKtlE,EAAEsB,UAAUikE,aAAa,KAAKvlE,EAAEsB,UAAUkkE,qBAAqB,KAAKxlE,EAAEsB,UAAUmkE,eAAe,KAAKzlE,EAAEsB,UAAUokE,oBAAoB,KAAK1lE,EAAEsB,UAAUqkE,WAAW,KAAK3lE,EAAEsB,UAAUskE,WAAW,KAAK5lE,EAAEsB,UAAUukE,WAAW,KAAK7lE,EAAEsB,UAAUwkE,WAAW,KAAK9lE,EAAEsB,UAAUykE,aAAa,KAAK/lE,EAAEsB,UAAU0kE,eAAe,KAAKhmE,EAAEsB,UAAU2kE,uBAAuB,KAAKjmE,EAAEsB,UAAUkhD,OAAO,KAAKxiD,EAAEsB,UAAU4kE,qBAAqB,KAAKlmE,EAAEsB,UAAU6kE,qBAAqB,KAAKnmE,EAAEsB,UAAU8kE,qBAAqB,KAAKpmE,EAAEsB,UAAU+kE,uBAAuB,KAAKrmE,EAAEsB,UAAUglE,gBAAgB,KAAKtmE,EAAEsB,UAAUilE,cAAc,KAAKvmE,EAAEsB,UAAUklE,YAAY,KAAKxmE,EAAEsB,UAAUmlE,cAAc,KAAKzmE,EAAEsB,UAAUolE,cAAc,KAAK1mE,EAAEsB,UAAUqlE,eAAe,KAAK3mE,EAAEsB,UAAUslE,cAAc,KAAK5mE,EAAEsB,UAAUulE,YAAY,KAAK7mE,EAAEsB,UAAUwlE,UAAU,KAAK9mE,EAAEsB,UAAUylE,UAAU,KAAK/mE,EAAEsB,UAAU0lE,UAAU,KAAKhnE,EAAEsB,UAAU2lE,eAAe,KAAKjnE,EAAEsB,UAAU4lE,gBAAgB,KAAKlnE,EAAEsB,UAAU6lE,eAAe,KAAKnnE,EAAEsB,UAAU8lE,eAAe,KAAKpnE,EAAEsB,UAAU+lE,aAAa,KAAKrnE,EAAEsB,UAAUgmE,uBAAuB,KAAKtnE,EAAEsB,UAAUimE,WAAW,KAAKvnE,EAAEsB,UAAUkmE,aAAa,KAAKxnE,EAAEsB,UAAUmmE,uBAAuB,KAAKznE,EAAEsB,UAAUomE,sBAAsB,KAAK1nE,EAAEsB,UAAUqmE,oBAAoB,KAAK3nE,EAAEsB,UAAUsmE,gBAAgB,KAAK5nE,EAAEsB,UAAUumE,SAAS,KAAK7nE,EAAEsB,UAAUwmE,gBAAgB,KAAK9nE,EAAEsB,UAAUymE,WAAW,KAAK/nE,EAAEsB,UAAU0mE,WAAW,KAAKhoE,EAAEsB,UAAU2mE,WAAW,KAAKjoE,EAAEsB,UAAU4mE,YAAY,KAAKloE,EAAEsB,UAAU6mE,aAAa,KAAKnoE,EAAEsB,UAAU8mE,mBAAmB,KAAKpoE,EAAEsB,UAAU+mE,kBAAkB,KAAkB1nE,OAAOC,eAAeZ,EAAEsB,UAAU,OAAO,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,eAAe,yBAAyB,yBAAyB,oBAAoB,sBAAsB,eAAe,uBAAuB,iBAAiB,sBAAsB,aAAa,aAAa,aAAa,aAAa,eAAe,iBAAiB,yBAAyB,SAAS,uBAAuB,uBAAuB,uBAAuB,yBAAyB,kBAAkB,gBAAgB,cAAc,gBAAgB,gBAAgB,iBAAiB,gBAAgB,cAAc,YAAY,YAAY,YAAY,iBAAiB,kBAAkB,iBAAiB,iBAAiB,eAAe,yBAAyB,aAAa,eAAe,yBAAyB,wBAAwB,sBAAsB,kBAAkB,WAAW,kBAAkB,aAAa,aAAa,aAAa,cAAc,eAAe,qBAAqB,sBAAsB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6kE,eAAelkE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAE6kE,cAAczkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8kE,eAAenkE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE8kE,cAAc1kE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+kE,gBAAgBpkE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+kE,gBAAgB,MAAM/kE,EAAEglE,0BAA0BrkE,OAAOY,eAAehB,KAAKP,EAAE,6BAA6B6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEglE,yBAAyB5kE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEilE,gBAAgBtkE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEilE,gBAAgB,MAAMjlE,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAEklE,cAAcvkE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMgV,4BAA4B1kC,OAAO7jC,EAAEklE,aAAa9kE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmlE,wBAAwBxkE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMiV,8BAA8B3kC,OAAO7jC,EAAEmlE,uBAAuB/kE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEolE,wBAAwBzkE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMkV,8BAA8B5kC,OAAO7jC,EAAEolE,uBAAuBhlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqlE,mBAAmB1kE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMmV,iCAAiC7kC,OAAO7jC,EAAEqlE,kBAAkBjlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEslE,qBAAqB3kE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAMoV,4BAA4B9kC,OAAO7jC,EAAEslE,oBAAoBllE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEulE,cAAc5kE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMqV,4BAA4B/kC,OAAO7jC,EAAEulE,aAAanlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwlE,sBAAsB7kE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMsV,oCAAoChlC,OAAO7jC,EAAEwlE,qBAAqBplE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEylE,gBAAgB9kE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuV,8BAA8BjlC,OAAO7jC,EAAEylE,eAAerlE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE0lE,qBAAqB/kE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAMwV,4BAA4BllC,OAAO7jC,EAAE0lE,oBAAoBtlE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE2lE,YAAYhlE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMyV,0BAA0BnlC,OAAO7jC,EAAE2lE,WAAWvlE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE4lE,YAAYjlE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM0V,0BAA0BplC,OAAO7jC,EAAE4lE,WAAWxlE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6lE,YAAYllE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM2V,0BAA0BrlC,OAAO7jC,EAAE6lE,WAAWzlE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8lE,YAAYnlE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM4V,0BAA0BtlC,OAAO7jC,EAAE8lE,WAAW1lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+lE,cAAcplE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAM6V,4BAA4BvlC,OAAO7jC,EAAE+lE,aAAa3lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEgmE,gBAAgBrlE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM8V,8BAA8BxlC,OAAO7jC,EAAEgmE,eAAe5lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEimE,wBAAwBtlE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAM+V,8BAA8BzlC,OAAO7jC,EAAEimE,uBAAuB7lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEwiD,QAAQ7hD,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMgW,sBAAsB1lC,OAAO7jC,EAAEwiD,OAAOpiD,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEkmE,sBAAsBvlE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMiW,oCAAoC3lC,OAAO7jC,EAAEkmE,qBAAqB9lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEmmE,sBAAsBxlE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMkW,oCAAoC5lC,OAAO7jC,EAAEmmE,qBAAqB/lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEomE,sBAAsBzlE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMmW,oCAAoC7lC,OAAO7jC,EAAEomE,qBAAqBhmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEqmE,wBAAwB1lE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMoW,sCAAsC9lC,OAAO7jC,EAAEqmE,uBAAuBjmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEsmE,iBAAiB3lE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMqW,oBAAoB/lC,OAAO7jC,EAAEsmE,gBAAgBlmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEumE,eAAe5lE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMsW,2BAA2BhmC,OAAO7jC,EAAEumE,cAAcnmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEwmE,aAAa7lE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMuW,kCAAkCjmC,OAAO7jC,EAAEwmE,YAAYpmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEymE,eAAe9lE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMwW,oCAAoClmC,OAAO7jC,EAAEymE,cAAcrmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE0mE,eAAe/lE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMyW,6BAA6BnmC,OAAO7jC,EAAE0mE,cAActmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE2mE,gBAAgBhmE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM0W,8BAA8BpmC,OAAO7jC,EAAE2mE,eAAevmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE4mE,eAAejmE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAM2W,2BAA2BrmC,OAAO7jC,EAAE4mE,cAAcxmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6mE,aAAalmE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAM4W,2BAA2BtmC,OAAO7jC,EAAE6mE,YAAYzmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8mE,WAAWnmE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM6W,yBAAyBvmC,OAAO7jC,EAAE8mE,UAAU1mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+mE,WAAWpmE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM8W,yBAAyBxmC,OAAO7jC,EAAE+mE,UAAU3mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEgnE,WAAWrmE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM+W,gCAAgCzmC,OAAO7jC,EAAEgnE,UAAU5mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEinE,gBAAgBtmE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMgX,8BAA8B1mC,OAAO7jC,EAAEinE,eAAe7mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEknE,iBAAiBvmE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMiX,+BAA+B3mC,OAAO7jC,EAAEknE,gBAAgB9mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEmnE,gBAAgBxmE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMkX,8BAA8B5mC,OAAO7jC,EAAEmnE,eAAe/mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEonE,gBAAgBzmE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMmX,8BAA8B7mC,OAAO7jC,EAAEonE,eAAehnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEqnE,cAAc1mE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMoX,4BAA4B9mC,OAAO7jC,EAAEqnE,aAAajnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEsnE,wBAAwB3mE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMqX,sCAAsC/mC,OAAO7jC,EAAEsnE,uBAAuBlnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEunE,YAAY5mE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMsX,0BAA0BhnC,OAAO7jC,EAAEunE,WAAWnnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEwnE,cAAc7mE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMuX,4BAA4BjnC,OAAO7jC,EAAEwnE,aAAapnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEynE,wBAAwB9mE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMwX,sCAAsClnC,OAAO7jC,EAAEynE,uBAAuBrnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE0nE,uBAAuB/mE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMyX,qCAAqCnnC,OAAO7jC,EAAE0nE,sBAAsBtnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE2nE,qBAAqBhnE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAM0X,wBAAwBpnC,OAAO7jC,EAAE2nE,oBAAoBvnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE4nE,iBAAiBjnE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM2X,+BAA+BrnC,OAAO7jC,EAAE4nE,gBAAgBxnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6nE,UAAUlnE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAM4X,wBAAwBtnC,OAAO7jC,EAAE6nE,SAASznE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8nE,iBAAiBnnE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM6X,+BAA+BvnC,OAAO7jC,EAAE8nE,gBAAgB1nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+nE,YAAYpnE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYC,0BAA0BxyB,OAAO7jC,EAAE+nE,WAAW3nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEgoE,YAAYrnE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYa,0BAA0BpzB,OAAO7jC,EAAEgoE,WAAW5nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEioE,YAAYtnE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYkB,0BAA0BzzB,OAAO7jC,EAAEioE,WAAW7nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEkoE,aAAavnE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAM8X,2BAA2BxnC,OAAO7jC,EAAEkoE,YAAY9nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEmoE,cAAcxnE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAM+X,4BAA4BznC,OAAO7jC,EAAEmoE,aAAa/nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEooE,oBAAoBznE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMgY,kCAAkC1nC,OAAO7jC,EAAEooE,mBAAmBhoE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEqoE,mBAAmB1nE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMiY,iCAAiC3nC,OAAO7jC,EAAEqoE,kBAAkBjoE,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqR,gBAAkB5kE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmkE,cAAchR,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEokE,cAAcjR,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqkE,eAAe/kE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEskE,yBAAyBnR,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEukE,eAAejlE,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEwkE,aAAarR,EAAMN,MAAMgV,4BAA4B7jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEykE,uBAAuBtR,EAAMN,MAAMiV,8BAA8B9jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE0kE,uBAAuBvR,EAAMN,MAAMkV,8BAA8B/jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE2kE,kBAAkBxR,EAAMN,MAAMmV,iCAAiChkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE4kE,oBAAoBzR,EAAMN,MAAMoV,4BAA4BjkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6kE,aAAa1R,EAAMN,MAAMqV,4BAA4BlkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE8kE,qBAAqB3R,EAAMN,MAAMsV,oCAAoCnkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+kE,eAAe5R,EAAMN,MAAMuV,8BAA8BpkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEglE,oBAAoB7R,EAAMN,MAAMwV,4BAA4BrkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEilE,WAAW9R,EAAMN,MAAMyV,0BAA0BtkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEklE,WAAW/R,EAAMN,MAAM0V,0BAA0BvkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmlE,WAAWhS,EAAMN,MAAM2V,0BAA0BxkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEolE,WAAWjS,EAAMN,MAAM4V,0BAA0BzkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEqlE,aAAalS,EAAMN,MAAM6V,4BAA4B1kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEslE,eAAenS,EAAMN,MAAM8V,8BAA8B3kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEulE,uBAAuBpS,EAAMN,MAAM+V,8BAA8B5kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE8hD,OAAOqR,EAAMN,MAAMgW,sBAAsB7kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEwlE,qBAAqBrS,EAAMN,MAAMiW,oCAAoC9kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEylE,qBAAqBtS,EAAMN,MAAMkW,oCAAoC/kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0lE,qBAAqBvS,EAAMN,MAAMmW,oCAAoChlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE2lE,uBAAuBxS,EAAMN,MAAMoW,sCAAsCjlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE4lE,gBAAgBzS,EAAMN,MAAMqW,oBAAoBllC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6lE,cAAc1S,EAAMN,MAAMsW,2BAA2BnlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE8lE,YAAY3S,EAAMN,MAAMuW,kCAAkCplC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+lE,cAAc5S,EAAMN,MAAMwW,oCAAoCrlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgmE,cAAc7S,EAAMN,MAAMyW,6BAA6BtlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEimE,eAAe9S,EAAMN,MAAM0W,8BAA8BvlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEkmE,cAAc/S,EAAMN,MAAM2W,2BAA2BxlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmmE,YAAYhT,EAAMN,MAAM4W,2BAA2BzlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEomE,UAAUjT,EAAMN,MAAM6W,yBAAyB1lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEqmE,UAAUlT,EAAMN,MAAM8W,yBAAyB3lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEsmE,UAAUnT,EAAMN,MAAM+W,gCAAgC5lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEumE,eAAepT,EAAMN,MAAMgX,8BAA8B7lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEwmE,gBAAgBrT,EAAMN,MAAMiX,+BAA+B9lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEymE,eAAetT,EAAMN,MAAMkX,8BAA8B/lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0mE,eAAevT,EAAMN,MAAMmX,8BAA8BhmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE2mE,aAAaxT,EAAMN,MAAMoX,4BAA4BjmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE4mE,uBAAuBzT,EAAMN,MAAMqX,sCAAsClmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6mE,WAAW1T,EAAMN,MAAMsX,0BAA0BnmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE8mE,aAAa3T,EAAMN,MAAMuX,4BAA4BpmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+mE,uBAAuB5T,EAAMN,MAAMwX,sCAAsCrmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgnE,sBAAsB7T,EAAMN,MAAMyX,qCAAqCtmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEinE,oBAAoB9T,EAAMN,MAAM0X,wBAAwBvmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEknE,gBAAgB/T,EAAMN,MAAM2X,+BAA+BxmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmnE,SAAShU,EAAMN,MAAM4X,wBAAwBzmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEonE,gBAAgBjU,EAAMN,MAAM6X,+BAA+B1mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEqnE,WAAWlU,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYC,0BAA0B3xB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEsnE,WAAWnU,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYa,0BAA0BvyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEunE,WAAWpU,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYkB,0BAA0B5yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEwnE,YAAYrU,EAAMN,MAAM8X,2BAA2B3mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEynE,aAAatU,EAAMN,MAAM+X,4BAA4B5mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0nE,mBAAmBvU,EAAMN,MAAMgY,kCAAkC7mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE2nE,kBAAkBxU,EAAMN,MAAMiY,iCAAiC9mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAAv2kB,GAA22kBopE,4BAA4B,WAAW,SAASppE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAqF,IAAIK,EAAE,OAA1FJ,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAUmqE,eAAe,KAAkB9qE,OAAOC,eAAeZ,EAAEsB,UAAU,KAAK,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,SAAS,eAAe0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM8N,iBAAiBx9B,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6V,4BAA8BppE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAM8N,iBAAiB38B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAAj2C,GAAq2CqpE,8BAA8B,WAAW,SAASrpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAqD,IAAIK,EAAE,OAA1DJ,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUm6D,WAAW,KAAkB96D,OAAOC,eAAeZ,EAAEsB,UAAU,KAAK,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,SAAS,eAAe0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8V,8BAAgCrpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAAzlC,GAA6lCupE,sBAAsB,WAAW,SAASvpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUoqE,UAAU,EAAE1rE,EAAEsB,UAAUqqE,SAAS,EAAE3rE,EAAEsB,UAAUsqE,QAAQ,EAAE5rE,EAAEsB,UAAUuqE,OAAO,EAAE7rE,EAAEsB,UAAUwqE,WAAW,KAAK9rE,EAAEsB,UAAUyqE,SAASnY,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU0qE,UAAU,KAAKhsE,EAAEsB,UAAU2qE,WAAW,EAAEjsE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE0rE,WAAW/qE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAE0rE,WAAW,MAAM1rE,EAAE2rE,UAAUhrE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE2rE,UAAU,MAAM3rE,EAAE4rE,SAASjrE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE4rE,SAAS,MAAM5rE,EAAE6rE,QAAQlrE,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE6rE,QAAQ,MAAM7rE,EAAE8rE,YAAYnrE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAE8rE,WAAW1rE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+rE,UAAUprE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE+rE,UAAU,MAAM/rE,EAAEgsE,WAAWrrE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEgsE,UAAU5rE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEisE,YAAYtrE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEisE,YAAY7rE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgW,sBAAwBvpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEgrE,UAAU1rE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEirE,SAAS3rE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEkrE,QAAQ5rE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEmrE,OAAO7rE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEorE,WAAWjY,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqrE,SAAS/rE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEsrE,UAAUnY,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEurE,WAAWjsE,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAA32D,GAA+2DksE,WAAW,WAAW,MAAMlsE,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,uBAAuB,EAAEI,EAAEJ,EAAE,GAAG,eAAe,EAAEI,EAAEJ,EAAE,GAAG,mBAAmB,EAAEI,EAAEJ,EAAE,GAAG,kBAAkB,EAAEI,EAAEJ,EAAE,GAAG,gBAAgB,EAAEI,EAAEJ,EAAE,GAAG,qBAAqB,EAAEI,CAAC,CAAvN,GAA2NmoE,4BAA4B,WAAW,SAASvoE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAU++D,IAAIzM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU6qE,mBAAmBvY,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqgE,KAAK1/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqgE,KAAK,MAAMrgE,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+0C,QAAQ,MAAM/0C,EAAEmsE,oBAAoBxrE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEmsE,oBAAoB/rE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgV,4BAA8BvoE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2/D,IAAIrgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEyrE,mBAAmBnsE,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAAzzC,GAA6zCwoE,8BAA8B,WAAW,SAASxoE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAqlB,IAAIK,EAAE,OAA1lBJ,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAU8qE,SAAS,KAAKpsE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAU++D,IAAIzM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU+qE,eAAezY,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUgrE,eAAe,KAAKtsE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAUkrE,sBAAsB5Y,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUmrE,QAAQ,KAAKzsE,EAAEsB,UAAUorE,QAAQ,KAAK1sE,EAAEsB,UAAUqrE,iBAAiB,KAAK3sE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUsrE,8BAA8B,EAAE5sE,EAAEsB,UAAUurE,mBAAmB,KAAK7sE,EAAEsB,UAAUuiE,gBAAgB,KAAK7jE,EAAEsB,UAAUwiE,aAAa,KAAK9jE,EAAEsB,UAAUmiE,eAAc,EAAgB9iE,OAAOC,eAAeZ,EAAEsB,UAAU,iBAAiB,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,SAAS,aAAa0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,WAAW,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,kBAAkB,iBAAiB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqgE,KAAK1/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqgE,KAAK,MAAMrgE,EAAEqsE,gBAAgB1rE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqsE,gBAAgB,MAAMrsE,EAAEssE,gBAAgB3rE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEssE,eAAelsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwsE,uBAAuB7rE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0BI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEwsE,uBAAuB,MAAMxsE,EAAEysE,SAAS9rE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMwI,QAAQl4B,OAAO7jC,EAAEysE,QAAQrsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0sE,SAAS/rE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAM2I,QAAQr4B,OAAO7jC,EAAE0sE,QAAQtsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2sE,kBAAkBhsE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE2sE,iBAAiBvsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,KAAKnrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE4sE,+BAA+BjsE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkCI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE4sE,+BAA+B,MAAM5sE,EAAE6sE,oBAAoBlsE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6sE,mBAAmBzsE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEosE,UAAUzrE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEosE,UAAU,MAAMpsE,EAAE6jE,iBAAiBljE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6jE,gBAAgBzjE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8jE,cAAcnjE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAE8jE,cAAc,MAAM9jE,EAAEyjE,eAAe9iE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,KAAKwI,KAAKh9D,EAAEyjE,eAAerjE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiV,8BAAgCxoE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0rE,SAASpsE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2/D,IAAIrgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE2rE,eAAersE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE4rE,eAAezY,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8rE,sBAAsBxsE,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE+rE,QAAQ5Y,EAAMN,MAAMwI,QAAQr3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgsE,QAAQ7Y,EAAMN,MAAM2I,QAAQx3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEisE,iBAAiB9Y,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAEksE,8BAA8B5sE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEmsE,mBAAmBhZ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmjE,gBAAgBhQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEojE,aAAa9jE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE+iE,cAAczjE,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAAv3I,GAA23IsoE,SAAS,WAAW,SAAStoE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+iE,QAAQzQ,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqkE,SAAS1jE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEqkE,SAASjkE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0DK,EAAtDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+U,SAAWtoE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2jE,QAAQrkE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iBAAiB,EAAEA,CAAC,CAA/qB,GAAmrByoE,8BAA8B,WAAW,SAASzoE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAoZ,IAAIK,EAAE,OAAzZJ,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAUgrE,eAAe,KAAKtsE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUugE,KAAK,KAAK7hE,EAAEsB,UAAUwrE,YAAY,KAAK9sE,EAAEsB,UAAUsrE,8BAA8B,KAAK5sE,EAAEsB,UAAUurE,mBAAmB,KAAK7sE,EAAEsB,UAAUuiE,gBAAgB,KAAK7jE,EAAEsB,UAAUwiE,aAAa,KAAK9jE,EAAEsB,UAAUmiE,cAAc,KAAkB9iE,OAAOC,eAAeZ,EAAEsB,UAAU,YAAY,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,OAAO,gBAAgB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,WAAW,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,kBAAkB,iBAAiB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEssE,gBAAgB3rE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEssE,eAAelsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE8sE,aAAansE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMJ,OAAO0D,SAASC,YAAYvzB,OAAO7jC,EAAE8sE,YAAY1sE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4sE,+BAA+BjsE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkC6zD,EAAMJ,OAAO0D,SAAS4V,WAAWlpC,OAAO7jC,EAAE4sE,8BAA8BxsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6sE,oBAAoBlsE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6sE,mBAAmBzsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6jE,iBAAiBljE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6jE,gBAAgBzjE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8jE,cAAcnjE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAE8jE,cAAc,MAAM9jE,EAAEyjE,eAAe9iE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMJ,OAAO0D,SAAS6V,UAAUnpC,OAAO7jC,EAAEyjE,cAAcrjE,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkV,8BAAgCzoE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4rE,eAAezY,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAEosE,YAAYjZ,EAAMJ,OAAO0D,SAASC,YAAY1yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEksE,8BAA8B/Y,EAAMJ,OAAO0D,SAAS4V,WAAWroC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmsE,mBAAmBhZ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmjE,gBAAgBhQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEojE,aAAa9jE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE+iE,cAAc5P,EAAMJ,OAAO0D,SAAS6V,UAAUtoC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAAx3H,GAA43H07D,SAAS,WAAW,SAAS17D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk1D,UAAU,KAAKx2D,EAAEsB,UAAUgP,KAAKsjD,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUwrC,KAAK,KAAK9sC,EAAEsB,UAAU2rE,SAAS,KAAKjtE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw2D,WAAW71D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEw2D,UAAUp2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEsQ,MAAM3P,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEsQ,MAAM,MAAMtQ,EAAE8sC,MAAMnsC,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAM6L,QAAQv7B,OAAO7jC,EAAE8sC,KAAK1sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEitE,UAAUtsE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEitE,SAAS7sE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0DK,EAAtDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmI,SAAW17D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE81D,UAAU3C,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4P,KAAKtQ,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEosC,KAAK+mB,EAAMN,MAAM6L,QAAQ16B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEusE,SAASpZ,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iBAAiB,EAAEA,CAAC,CAAvxC,GAA2xC0oE,iCAAiC,WAAW,SAAS1oE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUi6D,SAAS,KAAKv7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEu7D,UAAU56D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMmI,SAAS73B,OAAO7jC,EAAEu7D,SAASn7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkFK,EAA9EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmV,iCAAmC1oE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE66D,SAAS1H,EAAMN,MAAMmI,SAASh3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yCAAyC,EAAEA,CAAC,CAAvwB,GAA2wB2oE,4BAA4B,WAAW,SAAS3oE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAymB,IAAIK,EAAE,OAA9mBJ,EAAEsB,UAAUyrC,IAAI,KAAK/sC,EAAEsB,UAAU+qE,eAAezY,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUgrE,eAAe,KAAKtsE,EAAEsB,UAAU4rE,oBAAoBtZ,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU6rE,uBAAuBvZ,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU8rE,qBAAoB,EAAGptE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAUmrE,QAAQ,KAAKzsE,EAAEsB,UAAUorE,QAAQ,KAAK1sE,EAAEsB,UAAUqrE,iBAAiB,KAAK3sE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUsrE,8BAA8B,EAAE5sE,EAAEsB,UAAUuiE,gBAAgB,KAAK7jE,EAAEsB,UAAUwiE,aAAa,KAAK9jE,EAAEsB,UAAUmiE,eAAc,EAAGzjE,EAAEsB,UAAU6yC,MAAMyf,EAAMqB,UAAU,IAAiBt0D,OAAOC,eAAeZ,EAAEsB,UAAU,WAAW,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,kBAAkB,iBAAiB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+sC,KAAKpsC,OAAOY,eAAehB,KAAKP,EAAE,QAAQ6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE+sC,IAAI3sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqsE,gBAAgB1rE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEqsE,gBAAgB,MAAMrsE,EAAEssE,gBAAgB3rE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEssE,eAAelsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEktE,qBAAqBvsE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEktE,qBAAqB,MAAMltE,EAAEmtE,wBAAwBxsE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2BI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEmtE,wBAAwB,MAAMntE,EAAEotE,qBAAqBzsE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEotE,qBAAqB,MAAMptE,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEysE,SAAS9rE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMwI,QAAQl4B,OAAO7jC,EAAEysE,QAAQrsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0sE,SAAS/rE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAM2I,QAAQr4B,OAAO7jC,EAAE0sE,QAAQtsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2sE,kBAAkBhsE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE2sE,iBAAiBvsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,KAAKnrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE4sE,+BAA+BjsE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkCI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE4sE,+BAA+B,MAAM5sE,EAAE6jE,iBAAiBljE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6jE,gBAAgBzjE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8jE,cAAcnjE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAE8jE,cAAc,MAAM9jE,EAAEyjE,eAAe9iE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,KAAKwI,KAAKh9D,EAAEyjE,eAAe,MAAMzjE,EAAEm0C,OAAOxzC,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEm0C,OAAO/zC,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoV,4BAA8B3oE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEqsC,IAAI8mB,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2rE,eAAersE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE4rE,eAAezY,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwsE,oBAAoBltE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEysE,uBAAuBntE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE0sE,oBAAoBptE,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+rE,QAAQ5Y,EAAMN,MAAMwI,QAAQr3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgsE,QAAQ7Y,EAAMN,MAAM2I,QAAQx3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEisE,iBAAiB9Y,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAEksE,8BAA8B5sE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEmjE,gBAAgBhQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEojE,aAAa9jE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE+iE,cAAczjE,EAAEg9D,OAAO,MAAM,KAAK,GAAIt8D,EAAEyzC,MAAMn0C,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAAnjI,GAAujI4oE,4BAA4B,WAAW,SAAS5oE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+rE,kBAAkB,KAAKrtE,EAAEsB,UAAUgsE,gBAAgB,KAAKttE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqtE,mBAAmB1sE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEqtE,kBAAkBjtE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEstE,iBAAiB3sE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEstE,gBAAgBltE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqV,4BAA8B5oE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2sE,kBAAkBxZ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4sE,gBAAgBzZ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAA/iC,GAAmjC6oE,oCAAoC,WAAW,SAAS7oE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUisE,kBAAkB,KAAKvtE,EAAEsB,UAAUksE,iBAAiB5Z,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEutE,mBAAmB5sE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEutE,kBAAkBntE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwtE,kBAAkB7sE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEwtE,kBAAkBptE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqFK,EAAjFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsV,oCAAsC7oE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE6sE,kBAAkB1Z,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8sE,iBAAiBxtE,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4CAA4C,EAAEA,CAAC,CAA3gC,GAA+gC8oE,8BAA8B,WAAW,SAAS9oE,EAAEA,GAAG,GAAG6E,KAAK4oE,eAAe,GAAGztE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUo8D,UAAU,KAAK19D,EAAEsB,UAAUmsE,eAAe7Z,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE09D,WAAW/8D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM6J,aAAav5B,OAAO7jC,EAAE09D,UAAUt9D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEytE,gBAAgBztE,EAAEytE,eAAe5rE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEytE,eAAe5rE,SAAS9B,EAAE8zD,EAAMN,MAAMkK,kBAAkB55B,OAAO7jC,EAAEytE,eAAe1tE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuV,8BAAgC9oE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEg9D,UAAU7J,EAAMN,MAAM6J,aAAa14B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+sE,gBAAgB/sE,EAAE+sE,eAAe5rE,SAASnB,EAAE+sE,eAAe,IAAI/sE,EAAE+sE,eAAenhE,KAAKunD,EAAMN,MAAMkK,kBAAkB/4B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAA9pC,GAAkqC+oE,4BAA4B,WAAW,SAAS/oE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAklB,IAAIK,EAAE,OAAvlBJ,EAAEsB,UAAUosE,kBAAkB,KAAK1tE,EAAEsB,UAAUyrC,IAAI,KAAK/sC,EAAEsB,UAAUgrE,eAAe,KAAKtsE,EAAEsB,UAAUqsE,cAAc,EAAE3tE,EAAEsB,UAAU4rE,oBAAoB,KAAKltE,EAAEsB,UAAUssE,2BAA2B,KAAK5tE,EAAEsB,UAAU6rE,uBAAuB,KAAKntE,EAAEsB,UAAUusE,8BAA8B,KAAK7tE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAU8rE,oBAAoB,KAAKptE,EAAEsB,UAAUwsE,2BAA2B,KAAK9tE,EAAEsB,UAAUugE,KAAK,KAAK7hE,EAAEsB,UAAUsrE,8BAA8B,KAAK5sE,EAAEsB,UAAUuiE,gBAAgB,KAAK7jE,EAAEsB,UAAUwiE,aAAa,KAAK9jE,EAAEsB,UAAUmiE,cAAc,KAAkB9iE,OAAOC,eAAeZ,EAAEsB,UAAU,2BAA2B,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,sBAAsB,+BAA+B0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,8BAA8B,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,yBAAyB,kCAAkC0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,2BAA2B,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,sBAAsB,+BAA+B0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,WAAW,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,kBAAkB,iBAAiB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE0tE,mBAAmB/sE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE0tE,kBAAkBttE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+sC,KAAKpsC,OAAOY,eAAehB,KAAKP,EAAE,QAAQ6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE+sC,IAAI3sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEssE,gBAAgB3rE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEssE,eAAelsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2tE,eAAehtE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE2tE,eAAe,MAAM3tE,EAAEktE,qBAAqBvsE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEktE,qBAAqB,MAAMltE,EAAEmtE,wBAAwBxsE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2BI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEmtE,wBAAwB,MAAMntE,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEotE,qBAAqBzsE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEotE,qBAAqB,MAAMptE,EAAE4tE,4BAA4BjtE,OAAOY,eAAehB,KAAKP,EAAE,+BAA+B6zD,EAAMJ,OAAO0D,SAAS4W,YAAYlqC,OAAO7jC,EAAE4tE,2BAA2BxtE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6tE,+BAA+BltE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkC6zD,EAAMJ,OAAO0D,SAAS4W,YAAYlqC,OAAO7jC,EAAE6tE,8BAA8BztE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8tE,4BAA4BntE,OAAOY,eAAehB,KAAKP,EAAE,+BAA+B6zD,EAAMJ,OAAO0D,SAAS6V,UAAUnpC,OAAO7jC,EAAE8tE,2BAA2B1tE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMJ,OAAO0D,SAASC,YAAYvzB,OAAO7jC,EAAE6hE,KAAKzhE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE4sE,+BAA+BjsE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkC6zD,EAAMJ,OAAO0D,SAAS4V,WAAWlpC,OAAO7jC,EAAE4sE,8BAA8BxsE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6jE,iBAAiBljE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6jE,gBAAgBzjE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8jE,cAAcnjE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAE8jE,cAAc,MAAM9jE,EAAEyjE,eAAe9iE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMJ,OAAO0D,SAAS6V,UAAUnpC,OAAO7jC,EAAEyjE,cAAcrjE,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwV,4BAA8B/oE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEgtE,kBAAkB7Z,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqsC,IAAI8mB,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4rE,eAAezY,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEitE,cAAc3tE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEwsE,oBAAoBltE,EAAE40D,SAAS,MAAM,KAAK,GAAIl0D,EAAEktE,2BAA2B/Z,EAAMJ,OAAO0D,SAAS4W,YAAYrpC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEysE,uBAAuBntE,EAAE40D,SAAS,MAAM,KAAK,GAAIl0D,EAAEmtE,8BAA8Bha,EAAMJ,OAAO0D,SAAS4W,YAAYrpC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0sE,oBAAoBptE,EAAEg9D,OAAO,MAAM,KAAK,GAAIt8D,EAAEotE,2BAA2Bja,EAAMJ,OAAO0D,SAAS6V,UAAUtoC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAKhO,EAAMJ,OAAO0D,SAASC,YAAY1yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEksE,8BAA8B/Y,EAAMJ,OAAO0D,SAAS4V,WAAWroC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmjE,gBAAgBhQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEojE,aAAa9jE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE+iE,cAAc5P,EAAMJ,OAAO0D,SAAS6V,UAAUtoC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAAx6K,GAA46K+qE,sCAAsC,WAAW,SAAS/qE,EAAEA,GAAG,GAAG6E,KAAKmpE,iBAAiB,GAAGnpE,KAAKopE,cAAc,GAAGppE,KAAKqpE,gBAAgB,GAAGluE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU0sE,iBAAiBpa,EAAM8C,WAAW12D,EAAEsB,UAAU2sE,cAAcra,EAAM8C,WAAW12D,EAAEsB,UAAU4sE,gBAAgBta,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEguE,kBAAkBhuE,EAAEguE,iBAAiBnsE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEguE,iBAAiBnsE,SAAS9B,EAAE8zD,EAAMN,MAAM4a,gBAAgBtqC,OAAO7jC,EAAEguE,iBAAiBjuE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAEiuE,eAAejuE,EAAEiuE,cAAcpsE,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEiuE,cAAcpsE,SAAS9B,EAAE8zD,EAAMN,MAAM6a,aAAavqC,OAAO7jC,EAAEiuE,cAAcluE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAEkuE,iBAAiBluE,EAAEkuE,gBAAgBrsE,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEkuE,gBAAgBrsE,SAAS9B,EAAE8zD,EAAMN,MAAM8a,eAAexqC,OAAO7jC,EAAEkuE,gBAAgBnuE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuFK,EAAnFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwX,sCAAwC/qE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEstE,kBAAkBttE,EAAEstE,iBAAiBnsE,SAASnB,EAAEstE,iBAAiB,IAAIttE,EAAEstE,iBAAiB1hE,KAAKunD,EAAMN,MAAM4a,gBAAgBzpC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEutE,eAAevtE,EAAEutE,cAAcpsE,SAASnB,EAAEutE,cAAc,IAAIvtE,EAAEutE,cAAc3hE,KAAKunD,EAAMN,MAAM6a,aAAa1pC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEwtE,iBAAiBxtE,EAAEwtE,gBAAgBrsE,SAASnB,EAAEwtE,gBAAgB,IAAIxtE,EAAEwtE,gBAAgB5hE,KAAKunD,EAAMN,MAAM8a,eAAe3pC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8CAA8C,EAAEA,CAAC,CAAnuD,GAAuuDmuE,gBAAgB,WAAW,SAASnuE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUgtE,MAAM,KAAKtuE,EAAEsB,UAAUitE,QAAQ,KAAKvuE,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEsuE,OAAO3tE,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEsuE,MAAMluE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEuuE,SAAS5tE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEuuE,QAAQnuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+0C,QAAQ30C,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4a,gBAAkBnuE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE4tE,MAAMza,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6tE,QAAQ1a,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAArmC,GAAymCouE,aAAa,WAAW,SAASpuE,EAAEA,GAAG,GAAG6E,KAAK2pE,cAAc,GAAGxuE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUgtE,MAAM,KAAKtuE,EAAEsB,UAAUitE,QAAQ,KAAKvuE,EAAEsB,UAAUktE,cAAc5a,EAAM8C,WAAW12D,EAAEsB,UAAUmtE,eAAe,KAAKzuE,EAAEsB,UAAUotE,kBAAkB,KAAK1uE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEsuE,OAAO3tE,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEsuE,MAAMluE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEuuE,SAAS5tE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEuuE,QAAQnuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwuE,eAAexuE,EAAEwuE,cAAc3sE,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEwuE,cAAc3sE,SAAS9B,EAAEK,EAAE67D,MAAMj8D,EAAEwuE,cAAczuE,IAAIK,EAAEs0D,QAAQ,CAAC,OAAO,MAAM10D,EAAEyuE,gBAAgB9tE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMJ,OAAO0D,SAAS6V,UAAUnpC,OAAO7jC,EAAEyuE,eAAeruE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0uE,mBAAmB/tE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE0uE,kBAAkBtuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6a,aAAepuE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4tE,MAAMza,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6tE,QAAQ1a,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG,GAAG9zD,EAAE8tE,eAAe9tE,EAAE8tE,cAAc3sE,SAASnB,EAAE8tE,cAAc,IAAI,IAAI,EAAEnuE,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,cAAcv7D,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,SAAS,MAAM,KAAK,EAAGv7D,EAAE+tE,eAAe5a,EAAMJ,OAAO0D,SAAS6V,UAAUtoC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEguE,kBAAkB7a,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAA3jE,GAA+jEquE,eAAe,WAAW,SAASruE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUgtE,MAAM,KAAKtuE,EAAEsB,UAAUitE,QAAQ,KAAKvuE,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEsuE,OAAO3tE,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEsuE,MAAMluE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEuuE,SAAS5tE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEuuE,QAAQnuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+0C,QAAQ30C,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgEK,EAA5DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8a,eAAiBruE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4tE,MAAMza,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6tE,QAAQ1a,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uBAAuB,EAAEA,CAAC,CAA1zC,GAA8zCgrE,qCAAqC,WAAW,SAAShrE,EAAEA,GAAG,GAAG6E,KAAKopE,cAAc,GAAGjuE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU2sE,cAAcra,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiuE,eAAejuE,EAAEiuE,cAAcpsE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEiuE,cAAcpsE,SAAS9B,EAAE8zD,EAAMN,MAAMob,mBAAmB9qC,OAAO7jC,EAAEiuE,cAAcluE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsFK,EAAlFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMyX,qCAAuChrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEutE,eAAevtE,EAAEutE,cAAcpsE,SAASnB,EAAEutE,cAAc,IAAIvtE,EAAEutE,cAAc3hE,KAAKunD,EAAMN,MAAMob,mBAAmBjqC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6CAA6C,EAAEA,CAAC,CAAz7B,GAA67B2uE,mBAAmB,WAAW,SAAS3uE,EAAEA,GAAG,GAAG6E,KAAK2pE,cAAc,GAAGxuE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUgtE,MAAM,KAAKtuE,EAAEsB,UAAUktE,cAAc5a,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEsuE,OAAO3tE,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEsuE,MAAMluE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwuE,eAAexuE,EAAEwuE,cAAc3sE,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEwuE,cAAc3sE,SAAS9B,EAAEK,EAAE67D,MAAMj8D,EAAEwuE,cAAczuE,IAAIK,EAAEs0D,QAAQ,CAAC,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAoEK,EAAhEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMob,mBAAqB3uE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4tE,MAAMza,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG,GAAG9zD,EAAE8tE,eAAe9tE,EAAE8tE,cAAc3sE,SAASnB,EAAE8tE,cAAc,IAAI,IAAI,EAAEnuE,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,cAAcv7D,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,SAAS,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,2BAA2B,EAAEA,CAAC,CAA70C,GAAi1CirE,wBAAwB,WAAW,SAASjrE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUstE,aAAahb,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUutE,SAAS,KAAK7uE,EAAEsB,UAAUwtE,gBAAgBlb,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE4uE,cAAcjuE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE4uE,cAAc,MAAM5uE,EAAE6uE,UAAUluE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAE6uE,SAASzuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8uE,iBAAiBnuE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE8uE,iBAAiB1uE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0X,wBAA0BjrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEkuE,aAAa5uE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEmuE,SAAShb,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEouE,gBAAgB9uE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,CAAC,CAA3oC,GAA+oCgpE,0BAA0B,WAAW,SAAShpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUytE,SAASnb,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+uE,UAAUpuE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE+uE,UAAU3uE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMyV,0BAA4BhpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEquE,SAAS/uE,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAl5B,GAAs5BipE,0BAA0B,WAAW,SAASjpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUwrC,KAAK,KAAK9sC,EAAEsB,UAAUytE,SAASnb,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUmrE,QAAQ,KAAKzsE,EAAEsB,UAAUorE,QAAQ,KAAK1sE,EAAEsB,UAAUqrE,iBAAiB,KAAK3sE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8sC,MAAMnsC,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAM6L,QAAQv7B,OAAO7jC,EAAE8sC,KAAK1sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+uE,UAAUpuE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE+uE,UAAU,MAAM/uE,EAAEysE,SAAS9rE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMwI,QAAQl4B,OAAO7jC,EAAEysE,QAAQrsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0sE,SAAS/rE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAM2I,QAAQr4B,OAAO7jC,EAAE0sE,QAAQtsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2sE,kBAAkBhsE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE2sE,iBAAiBvsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAMzhE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0V,0BAA4BjpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEosC,KAAK+mB,EAAMN,MAAM6L,QAAQ16B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEquE,SAAS/uE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE+rE,QAAQ5Y,EAAMN,MAAMwI,QAAQr3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgsE,QAAQ7Y,EAAMN,MAAM2I,QAAQx3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEisE,iBAAiB9Y,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,QAAQrpB,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAt7D,GAA07DkpE,0BAA0B,WAAW,SAASlpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2V,0BAA4BlpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAA3uB,GAA+uBmpE,0BAA0B,WAAW,SAASnpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUwrC,KAAK,KAAK9sC,EAAEsB,UAAUytE,SAASnb,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUugE,KAAK,KAAK7hE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8sC,MAAMnsC,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAM6L,QAAQv7B,OAAO7jC,EAAE8sC,KAAK1sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+uE,UAAUpuE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE+uE,UAAU,MAAM/uE,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMJ,OAAO0D,SAASC,YAAYvzB,OAAO7jC,EAAE6hE,KAAKzhE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4V,0BAA4BnpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEosC,KAAK+mB,EAAMN,MAAM6L,QAAQ16B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEquE,SAAS/uE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEmhE,KAAKhO,EAAMJ,OAAO0D,SAASC,YAAY1yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAA5jD,GAAgkDspE,8BAA8B,WAAW,SAAStpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAoI,IAAIK,EAAE,OAAzIJ,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAU+rE,kBAAkB,KAAKrtE,EAAEsB,UAAU0tE,mBAAmB,KAAKhvE,EAAEsB,UAAU2tE,kBAAiB,EAAgBtuE,OAAOC,eAAeZ,EAAEsB,UAAU,YAAY,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,oBAAoB,uBAAuB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqtE,mBAAmB1sE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEqtE,kBAAkBjtE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEgvE,oBAAoBruE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEgvE,mBAAmB5uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEivE,kBAAkBtuE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEivE,kBAAkB7uE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+V,8BAAgCtpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2sE,kBAAkBxZ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEsuE,mBAAmBnb,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEuuE,iBAAiBjvE,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAAhoD,GAAooDwpE,oCAAoC,WAAW,SAASxpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAU4tE,UAAU,KAAKlvE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAU6tE,iBAAiB,KAAKnvE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkvE,WAAWvuE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEkvE,UAAU9uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmvE,kBAAkBxuE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmvE,iBAAiB/uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqFK,EAAjFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiW,oCAAsCxpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwuE,UAAUrb,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyuE,iBAAiBtb,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4CAA4C,EAAEA,CAAC,CAAzmD,GAA6mDypE,oCAAoC,WAAW,SAASzpE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6yD,QAAQ,KAAKn0D,EAAEsB,UAAUugE,KAAK,KAAK7hE,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAU4tE,UAAU,KAAKlvE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAU6tE,iBAAiB,KAAKnvE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm0D,SAASxzD,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMgB,QAAQ1wB,OAAO7jC,EAAEm0D,QAAQ/zD,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMJ,OAAO0D,SAASC,YAAYvzB,OAAO7jC,EAAE6hE,KAAKzhE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkvE,WAAWvuE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEkvE,UAAU9uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmvE,kBAAkBxuE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmvE,iBAAiB/uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqFK,EAAjFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkW,oCAAsCzpE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEyzD,QAAQN,EAAMN,MAAMgB,QAAQ7vB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmhE,KAAKhO,EAAMJ,OAAO0D,SAASC,YAAY1yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwuE,UAAUrb,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyuE,iBAAiBtb,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4CAA4C,EAAEA,CAAC,CAA9pE,GAAkqE0pE,oCAAoC,WAAW,SAAS1pE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6yD,QAAQ,KAAKn0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm0D,SAASxzD,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMgB,QAAQ1wB,OAAO7jC,EAAEm0D,QAAQ/zD,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqFK,EAAjFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmW,oCAAsC1pE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEyzD,QAAQN,EAAMN,MAAMgB,QAAQ7vB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4CAA4C,EAAEA,CAAC,CAAtwB,GAA0wBs1D,0BAA0B,WAAW,SAASt1D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU8tE,qBAAqB,KAAKpvE,EAAEsB,UAAU6pB,MAAM,EAAEnrB,EAAEsB,UAAUonB,OAAO,EAAE1oB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEovE,sBAAsBzuE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAEovE,qBAAqBhvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmrB,OAAOxqB,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEmrB,OAAO,MAAMnrB,EAAE0oB,QAAQ/nB,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE0oB,QAAQtoB,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+B,0BAA4Bt1D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE0uE,qBAAqBvb,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyqB,MAAMnrB,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEgoB,OAAO1oB,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAhlC,GAAolC2pE,sCAAsC,WAAW,SAAS3pE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6yD,QAAQ,KAAKn0D,EAAEsB,UAAU2G,QAAQ2rD,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU+zD,UAAU,KAAKr1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm0D,SAASxzD,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMgB,QAAQ1wB,OAAO7jC,EAAEm0D,QAAQ/zD,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEiI,SAAStH,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEiI,SAAS,MAAMjI,EAAEq1D,WAAW10D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM+B,0BAA0BzxB,OAAO7jC,EAAEq1D,UAAUj1D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuFK,EAAnFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoW,sCAAwC3pE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEyzD,QAAQN,EAAMN,MAAMgB,QAAQ7vB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEuH,QAAQjI,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE20D,UAAUxB,EAAMN,MAAM+B,0BAA0B5wB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8CAA8C,EAAEA,CAAC,CAAjrC,GAAqrC4pE,oBAAoB,WAAW,SAAS5pE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+tE,iBAAiBzb,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqvE,kBAAkB1uE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEqvE,kBAAkBjvE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqW,oBAAsB5pE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2uE,iBAAiBrvE,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,CAAC,CAA9tB,GAAkuB6pE,2BAA2B,WAAW,SAAS7pE,EAAEA,GAAG,GAAG6E,KAAKyqE,WAAW,GAAGtvE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUqP,KAAK,GAAG3Q,EAAEsB,UAAUszC,OAAO,GAAG50C,EAAEsB,UAAU4hE,SAAS,EAAEljE,EAAEsB,UAAUiuE,cAAc3b,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUkuE,SAAS,KAAKxvE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAUmuE,OAAO,KAAKzvE,EAAEsB,UAAUouE,UAAU,KAAK1vE,EAAEsB,UAAUquE,QAAQ,KAAK3vE,EAAEsB,UAAUsuE,UAAU,KAAK5vE,EAAEsB,UAAUuuE,eAAc,EAAG7vE,EAAEsB,UAAUwuE,OAAO,KAAK9vE,EAAEsB,UAAU6tE,iBAAiB,KAAKnvE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUyuE,UAAU,EAAE/vE,EAAEsB,UAAU0uE,WAAW,EAAEhwE,EAAEsB,UAAU2uE,UAAUrc,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU4uE,eAAe,KAAKlwE,EAAEsB,UAAUguE,WAAW1b,EAAM8C,WAAW12D,EAAEsB,UAAU6uE,SAAS,KAAKnwE,EAAEsB,UAAUoK,SAASkoD,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU8uE,YAAY,KAAKpwE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2Q,MAAMhQ,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE2Q,MAAM,MAAM3Q,EAAE40C,QAAQj0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE40C,QAAQ,MAAM50C,EAAEkjE,UAAUviE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIA,OAAOx0D,EAAEkjE,UAAU,MAAMljE,EAAEuvE,eAAe5uE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEuvE,eAAe,MAAMvvE,EAAEwvE,UAAU7uE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEwvE,SAASpvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyvE,QAAQ9uE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEyvE,OAAOrvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0vE,WAAW/uE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE0vE,UAAUtvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2vE,SAAShvE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE2vE,QAAQvvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4vE,WAAWjvE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE4vE,UAAUxvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6vE,eAAelvE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAE6vE,eAAe,MAAM7vE,EAAE8vE,QAAQnvE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAE8vE,OAAO1vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEmvE,kBAAkBxuE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmvE,iBAAiB/uE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,KAAKnrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE+vE,WAAWpvE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE+vE,WAAW,MAAM/vE,EAAEgwE,YAAYrvE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAEgwE,YAAY,MAAMhwE,EAAEiwE,WAAWtvE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAEiwE,WAAW,MAAMjwE,EAAEkwE,gBAAgBvvE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEkwE,eAAe9vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEsvE,YAAYtvE,EAAEsvE,WAAWztE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEsvE,WAAWztE,SAAS9B,EAAE8zD,EAAMN,MAAM8c,UAAUxsC,OAAO7jC,EAAEsvE,WAAWvvE,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,OAAO,MAAM10D,EAAEmwE,UAAUxvE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEmwE,SAAS/vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE0L,UAAU/K,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAE0L,UAAU,MAAM1L,EAAEowE,aAAazvE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEowE,YAAYhwE,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsW,2BAA6B7pE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEiQ,KAAK3Q,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEk0C,OAAO50C,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEwiE,SAASljE,EAAEw0D,SAAS,MAAM,KAAK,EAAG9zD,EAAE6uE,cAAcvvE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE8uE,SAAS3b,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+uE,OAAO5b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgvE,UAAU7b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEivE,QAAQ9b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEkvE,UAAU/b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmvE,cAAc7vE,EAAEg9D,OAAO,MAAM,KAAK,GAAIt8D,EAAEovE,OAAOjc,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEyuE,iBAAiBtb,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAEqvE,UAAU/vE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEsvE,WAAWhwE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEuvE,UAAUjwE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEwvE,eAAerc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE4uE,YAAY5uE,EAAE4uE,WAAWztE,SAASnB,EAAE4uE,WAAW,IAAI5uE,EAAE4uE,WAAWhjE,KAAKunD,EAAMN,MAAM8c,UAAU3rC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEyvE,SAAStc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgL,SAAS1L,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE0vE,YAAYvc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAAxmK,GAA4mKswE,cAAc,WAAW,SAAStwE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUivE,iBAAiB,KAAKvwE,EAAEsB,UAAUkvE,cAAc5c,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUmvE,cAAc7c,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUovE,gBAAe,EAAG1wE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEuwE,kBAAkB5vE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuK,SAASj6B,OAAO7jC,EAAEuwE,iBAAiBnwE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwwE,eAAe7vE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEwwE,eAAe,MAAMxwE,EAAEywE,eAAe9vE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEywE,eAAe,MAAMzwE,EAAE0wE,gBAAgB/vE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAE0wE,gBAAgBtwE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+c,cAAgBtwE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE6vE,iBAAiB1c,EAAMN,MAAMuK,SAASp5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8vE,cAAcxwE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE+vE,cAAczwE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEgwE,eAAe1wE,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAAr2C,GAAy2C2wE,SAAS,WAAW,SAAS3wE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUsvE,oBAAoB,KAAK5wE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAE+0C,QAAQ,MAAM/0C,EAAE4wE,qBAAqBjwE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE4wE,oBAAoBxwE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0DK,EAAtDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMod,SAAW3wE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEkwE,oBAAoB/c,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iBAAiB,EAAEA,CAAC,CAA77B,GAAi8B6wE,WAAW,WAAW,SAAS7wE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwvE,sBAAsB,KAAK9wE,EAAEsB,UAAUyvE,YAAY,KAAK/wE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8wE,uBAAuBnwE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMuK,SAASj6B,OAAO7jC,EAAE8wE,sBAAsB1wE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+wE,aAAapwE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMod,SAAS9sC,OAAO7jC,EAAE+wE,YAAY3wE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4DK,EAAxDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsd,WAAa7wE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEowE,sBAAsBjd,EAAMN,MAAMuK,SAASp5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqwE,YAAYld,EAAMN,MAAMod,SAASjsC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mBAAmB,EAAEA,CAAC,CAAzgC,GAA6gCqwE,UAAU,WAAW,SAASrwE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAmK,IAAIK,EAAE,OAAxKJ,EAAEsB,UAAU0vE,SAAS,KAAKhxE,EAAEsB,UAAU2vE,cAAc,KAAKjxE,EAAEsB,UAAU4vE,WAAW,KAAKlxE,EAAEsB,UAAU6vE,sBAAsB,KAAKnxE,EAAEsB,UAAU8vE,wBAAuB,EAAgBzwE,OAAOC,eAAeZ,EAAEsB,UAAU,MAAM,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,WAAW,gBAAgB,eAAe0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEgxE,UAAUrwE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMod,SAAS9sC,OAAO7jC,EAAEgxE,SAAS5wE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEixE,eAAetwE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAM+c,cAAczsC,OAAO7jC,EAAEixE,cAAc7wE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmxE,uBAAuBxwE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmxE,sBAAsB/wE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkxE,YAAYvwE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMsd,WAAWhtC,OAAO7jC,EAAEkxE,WAAW9wE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEoxE,wBAAwBzwE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2BI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEoxE,wBAAwBhxE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2DK,EAAvDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8c,UAAYrwE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEswE,SAASnd,EAAMN,MAAMod,SAASjsC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEuwE,cAAcpd,EAAMN,MAAM+c,cAAc5rC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwwE,WAAWrd,EAAMN,MAAMsd,WAAWnsC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEywE,sBAAsBtd,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE0wE,uBAAuBpxE,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kBAAkB,EAAEA,CAAC,CAA90D,GAAk1DqxE,kBAAkB,WAAW,SAASrxE,EAAEA,GAAG,GAAG6E,KAAKysE,wBAAwB,GAAGtxE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAU6vE,sBAAsB,KAAKnxE,EAAEsB,UAAUgwE,wBAAwB1d,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAE+0C,QAAQ,MAAM/0C,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmxE,uBAAuBxwE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmxE,sBAAsB/wE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEsxE,yBAAyBtxE,EAAEsxE,wBAAwBzvE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEsxE,wBAAwBzvE,SAAS9B,EAAE8zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEsxE,wBAAwBvxE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmEK,EAA/DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8d,kBAAoBrxE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEywE,sBAAsBtd,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4wE,yBAAyB5wE,EAAE4wE,wBAAwBzvE,SAASnB,EAAE4wE,wBAAwB,IAAI5wE,EAAE4wE,wBAAwBhlE,KAAKunD,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0BAA0B,EAAEA,CAAC,CAA9oD,GAAkpD8pE,kCAAkC,WAAW,SAAS9pE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUylB,QAAQ,KAAK/mB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+mB,SAASpmB,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+mB,QAAQ3mB,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmFK,EAA/EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuW,kCAAoC9pE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqmB,QAAQ8sC,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0CAA0C,EAAEA,CAAC,CAAn9B,GAAu9B+pE,oCAAoC,WAAW,SAAS/pE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUylB,QAAQ,KAAK/mB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+mB,SAASpmB,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+mB,QAAQ3mB,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqFK,EAAjFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwW,oCAAsC/pE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqmB,QAAQ8sC,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4CAA4C,EAAEA,CAAC,CAAv9B,GAA29BgqE,6BAA6B,WAAW,SAAShqE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUylB,QAAQ,KAAK/mB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+mB,SAASpmB,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+mB,QAAQ3mB,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8EK,EAA1EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMyW,6BAA+BhqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqmB,QAAQ8sC,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qCAAqC,EAAEA,CAAC,CAAz8B,GAA68BiqE,8BAA8B,WAAW,SAASjqE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUylB,QAAQ,KAAK/mB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+mB,SAASpmB,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+mB,QAAQ3mB,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0W,8BAAgCjqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqmB,QAAQ8sC,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAA38B,GAA+8BkqE,2BAA2B,WAAW,SAASlqE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2W,2BAA6BlqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAA1uB,GAA8uBmqE,2BAA2B,WAAW,SAASnqE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUszC,OAAO,GAAG50C,EAAEsB,UAAUqP,KAAK,GAAG3Q,EAAEsB,UAAUkuE,SAAS,KAAKxvE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAUmuE,OAAO,KAAKzvE,EAAEsB,UAAUouE,UAAU,KAAK1vE,EAAEsB,UAAUquE,QAAQ,KAAK3vE,EAAEsB,UAAUsuE,UAAU,KAAK5vE,EAAEsB,UAAU6tE,iBAAiB,KAAKnvE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAUwuE,OAAO,KAAK9vE,EAAEsB,UAAUugE,KAAK,KAAK7hE,EAAEsB,UAAU4uE,eAAe,KAAKlwE,EAAEsB,UAAU6uE,SAAS,KAAKnwE,EAAEsB,UAAUoK,SAAS,KAAK1L,EAAEsB,UAAU8uE,YAAY,KAAKpwE,EAAEsB,UAAUiwE,oBAAoB,EAAEvxE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE40C,QAAQj0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE40C,QAAQ,MAAM50C,EAAE2Q,MAAMhQ,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE2Q,MAAM,MAAM3Q,EAAEwvE,UAAU7uE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEwvE,SAASpvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyvE,QAAQ9uE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEyvE,OAAOrvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0vE,WAAW/uE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE0vE,UAAUtvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2vE,SAAShvE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE2vE,QAAQvvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4vE,WAAWjvE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE4vE,UAAUxvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmvE,kBAAkBxuE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmvE,iBAAiB/uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8vE,QAAQnvE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAE8vE,OAAO1vE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMJ,OAAO0D,SAASC,YAAYvzB,OAAO7jC,EAAE6hE,KAAKzhE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEkwE,gBAAgBvvE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEkwE,eAAe9vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEmwE,UAAUxvE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEmwE,SAAS/vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE0L,UAAU/K,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMJ,OAAO0D,SAASE,WAAWxzB,OAAO7jC,EAAE0L,SAAStL,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEowE,aAAazvE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEowE,YAAYhwE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEuxE,qBAAqB5wE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAEuxE,qBAAqBnxE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4W,2BAA6BnqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEk0C,OAAO50C,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEiQ,KAAK3Q,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAE8uE,SAAS3b,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+uE,OAAO5b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgvE,UAAU7b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEivE,QAAQ9b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEkvE,UAAU/b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEyuE,iBAAiBtb,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEovE,OAAOjc,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAKhO,EAAMJ,OAAO0D,SAASC,YAAY1yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEwvE,eAAerc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEyvE,SAAStc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgL,SAASmoD,EAAMJ,OAAO0D,SAASE,WAAW3yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0vE,YAAYvc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6wE,oBAAoBvxE,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAAxzI,GAA4zIoqE,yBAAyB,WAAW,SAASpqE,EAAEA,GAAG,GAAG6E,KAAK6G,SAAS,GAAG1L,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUoK,SAASkoD,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+0C,QAAQ,MAAM/0C,EAAE0L,UAAU1L,EAAE0L,SAAS7J,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE0L,SAAS7J,SAAS9B,EAAEK,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE0L,SAAS3L,IAAI,OAAOK,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0EK,EAAtEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6W,yBAA2BpqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEgL,UAAUhL,EAAEgL,SAAS7J,SAASnB,EAAEgL,SAAS,IAAIhL,EAAEgL,SAASY,KAAKtM,EAAEiuC,SAAS,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iCAAiC,EAAEA,CAAC,CAAtpC,GAA0pCqqE,yBAAyB,WAAW,SAASrqE,EAAEA,GAAG,GAAG6E,KAAK2pE,cAAc,GAAGxuE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUktE,cAAc5a,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+0C,QAAQ,MAAM/0C,EAAEwuE,eAAexuE,EAAEwuE,cAAc3sE,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEwuE,cAAc3sE,SAAS9B,EAAEK,EAAE67D,MAAMj8D,EAAEwuE,cAAczuE,IAAIK,EAAEs0D,QAAQ,CAAC,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0EK,EAAtEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8W,yBAA2BrqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAE40D,SAAS,MAAM,KAAK,EAAG,GAAGl0D,EAAE8tE,eAAe9tE,EAAE8tE,cAAc3sE,SAASnB,EAAE8tE,cAAc,IAAI,IAAI,EAAEnuE,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,cAAcv7D,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,SAAS,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iCAAiC,EAAEA,CAAC,CAAlzC,GAAszCsqE,gCAAgC,WAAW,SAAStqE,EAAEA,GAAG,GAAG6E,KAAK2pE,cAAc,GAAGxuE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUylB,QAAQ,KAAK/mB,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUktE,cAAc5a,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+mB,SAASpmB,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+mB,QAAQ3mB,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+0C,QAAQ,MAAM/0C,EAAEwuE,eAAexuE,EAAEwuE,cAAc3sE,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEwuE,cAAc3sE,SAAS9B,EAAEK,EAAE67D,MAAMj8D,EAAEwuE,cAAczuE,IAAIK,EAAEs0D,QAAQ,CAAC,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiFK,EAA7EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+W,gCAAkCtqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqmB,QAAQ8sC,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAE40D,SAAS,MAAM,KAAK,EAAG,GAAGl0D,EAAE8tE,eAAe9tE,EAAE8tE,cAAc3sE,SAASnB,EAAE8tE,cAAc,IAAI,IAAI,EAAEnuE,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,cAAcv7D,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,SAAS,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wCAAwC,EAAEA,CAAC,CAA3hD,GAA+hDuqE,8BAA8B,WAAW,SAASvqE,EAAEA,GAAG,GAAG6E,KAAK2sE,OAAO,GAAGxxE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUylB,QAAQ,KAAK/mB,EAAEsB,UAAUkwE,OAAO5d,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+mB,SAASpmB,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+mB,QAAQ3mB,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwxE,QAAQxxE,EAAEwxE,OAAO3vE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEwxE,OAAO3vE,SAAS9B,EAAE8zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAEwxE,OAAOzxE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgX,8BAAgCvqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEqmB,QAAQ8sC,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8wE,QAAQ9wE,EAAE8wE,OAAO3vE,SAASnB,EAAE8wE,OAAO,IAAI9wE,EAAE8wE,OAAOllE,KAAKunD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAA1iC,GAA8iCwqE,+BAA+B,WAAW,SAASxqE,EAAEA,GAAG,GAAG6E,KAAK2sE,OAAO,GAAGxxE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUylB,QAAQ,KAAK/mB,EAAEsB,UAAUkwE,OAAO5d,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+mB,SAASpmB,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+mB,QAAQ3mB,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwxE,QAAQxxE,EAAEwxE,OAAO3vE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEwxE,OAAO3vE,SAAS9B,EAAE8zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAEwxE,OAAOzxE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgFK,EAA5EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiX,+BAAiCxqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEqmB,QAAQ8sC,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8wE,QAAQ9wE,EAAE8wE,OAAO3vE,SAASnB,EAAE8wE,OAAO,IAAI9wE,EAAE8wE,OAAOllE,KAAKunD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uCAAuC,EAAEA,CAAC,CAA5iC,GAAgjC4qE,sCAAsC,WAAW,SAAS5qE,EAAEA,GAAG,GAAG6E,KAAKyqE,WAAW,GAAGtvE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUguE,WAAW1b,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEsvE,YAAYtvE,EAAEsvE,WAAWztE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEsvE,WAAWztE,SAAS9B,EAAE8zD,EAAMN,MAAM8c,UAAUxsC,OAAO7jC,EAAEsvE,WAAWvvE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuFK,EAAnFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqX,sCAAwC5qE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4uE,YAAY5uE,EAAE4uE,WAAWztE,SAASnB,EAAE4uE,WAAW,IAAI5uE,EAAE4uE,WAAWhjE,KAAKunD,EAAMN,MAAM8c,UAAU3rC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8CAA8C,EAAEA,CAAC,CAAlmC,GAAsmC6qE,0BAA0B,WAAW,SAAS7qE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsX,0BAA4B7qE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAxuB,GAA4uB8qE,4BAA4B,WAAW,SAAS9qE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuX,4BAA8B9qE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAA5uB,GAAgvBorE,+BAA+B,WAAW,SAASprE,EAAEA,GAAG,GAAG6E,KAAK2pE,cAAc,GAAGxuE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEsB,UAAUktE,cAAc5a,EAAM8C,WAAW12D,EAAEsB,UAAUoK,SAAS,KAAK1L,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwuE,eAAexuE,EAAEwuE,cAAc3sE,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEwuE,cAAc3sE,SAAS9B,EAAEK,EAAE67D,MAAMj8D,EAAEwuE,cAAczuE,IAAIK,EAAEs0D,QAAQ,CAAC,OAAO,MAAM10D,EAAE0L,UAAU/K,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMJ,OAAO0D,SAASE,WAAWxzB,OAAO7jC,EAAE0L,SAAStL,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgFK,EAA5EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6X,+BAAiCprE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG,GAAG9zD,EAAE8tE,eAAe9tE,EAAE8tE,cAAc3sE,SAASnB,EAAE8tE,cAAc,IAAI,IAAI,EAAEnuE,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,cAAcv7D,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,SAAS,MAAM,KAAK,EAAGv7D,EAAEgL,SAASmoD,EAAMJ,OAAO0D,SAASE,WAAW3yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uCAAuC,EAAEA,CAAC,CAAh4C,GAAo4CqrE,2BAA2B,WAAW,SAASrrE,EAAEA,GAAG,GAAG6E,KAAK4sE,WAAW,GAAGzxE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUgtE,MAAM,KAAKtuE,EAAEsB,UAAUmwE,WAAW7d,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEsuE,OAAO3tE,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEsuE,MAAMluE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyxE,YAAYzxE,EAAEyxE,WAAW5vE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEyxE,WAAW5vE,SAAS9B,EAAE8zD,EAAMN,MAAMme,eAAe7tC,OAAO7jC,EAAEyxE,WAAW1xE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8X,2BAA6BrrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE4tE,MAAMza,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+wE,YAAY/wE,EAAE+wE,WAAW5vE,SAASnB,EAAE+wE,WAAW,IAAI/wE,EAAE+wE,WAAWnlE,KAAKunD,EAAMN,MAAMme,eAAehtC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAAhlC,GAAolC0xE,eAAe,WAAW,SAAS1xE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAqD,IAAIK,EAAE,OAA1DJ,EAAEsB,UAAUqwE,cAAc,KAAK3xE,EAAEsB,UAAUswE,IAAI,KAAkBjxE,OAAOC,eAAeZ,EAAEsB,UAAU,kBAAkB,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,gBAAgB,QAAQ0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2xE,eAAehxE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE2xE,cAAcvxE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4xE,KAAKjxE,OAAOY,eAAehB,KAAKP,EAAE,QAAQ6zD,EAAMN,MAAM8I,MAAMx4B,OAAO7jC,EAAE4xE,IAAIxxE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgEK,EAA5DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMme,eAAiB1xE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEixE,cAAc9d,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEkxE,IAAI/d,EAAMN,MAAM8I,MAAM33B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uBAAuB,EAAEA,CAAC,CAAhkC,GAAokCsrE,4BAA4B,WAAW,SAAStrE,EAAEA,GAAG,GAAG6E,KAAK4oE,eAAe,GAAGztE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUmsE,eAAe7Z,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEytE,gBAAgBztE,EAAEytE,eAAe5rE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEytE,eAAe5rE,SAAS9B,EAAE8zD,EAAMN,MAAMkK,kBAAkB55B,OAAO7jC,EAAEytE,eAAe1tE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+X,4BAA8BtrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+sE,gBAAgB/sE,EAAE+sE,eAAe5rE,SAASnB,EAAE+sE,eAAe,IAAI/sE,EAAE+sE,eAAenhE,KAAKunD,EAAMN,MAAMkK,kBAAkB/4B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAA/6B,GAAm7BurE,kCAAkC,WAAW,SAASvrE,EAAEA,GAAG,GAAG6E,KAAKgtE,gBAAgB,GAAG7xE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuwE,gBAAgBje,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6xE,iBAAiB7xE,EAAE6xE,gBAAgBhwE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE6xE,gBAAgBhwE,SAAS9B,EAAE8zD,EAAMN,MAAMwQ,iBAAiBlgC,OAAO7jC,EAAE6xE,gBAAgB9xE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmFK,EAA/EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgY,kCAAoCvrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmxE,iBAAiBnxE,EAAEmxE,gBAAgBhwE,SAASnB,EAAEmxE,gBAAgB,IAAInxE,EAAEmxE,gBAAgBvlE,KAAKunD,EAAMN,MAAMwQ,iBAAiBr/B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0CAA0C,EAAEA,CAAC,CAAn8B,GAAu8BwrE,iCAAiC,WAAW,SAASxrE,EAAEA,GAAG,GAAG6E,KAAKgtE,gBAAgB,GAAG7xE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuwE,gBAAgBje,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6xE,iBAAiB7xE,EAAE6xE,gBAAgBhwE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE6xE,gBAAgBhwE,SAAS9B,EAAE8zD,EAAMN,MAAMwQ,iBAAiBlgC,OAAO7jC,EAAE6xE,gBAAgB9xE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkFK,EAA9EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiY,iCAAmCxrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmxE,iBAAiBnxE,EAAEmxE,gBAAgBhwE,SAASnB,EAAEmxE,gBAAgB,IAAInxE,EAAEmxE,gBAAgBvlE,KAAKunD,EAAMN,MAAMwQ,iBAAiBr/B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yCAAyC,EAAEA,CAAC,CAAj8B,GAAq8ByqE,8BAA8B,WAAW,SAASzqE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwwE,yBAAyB,KAAK9xE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAUywE,eAAe,KAAK/xE,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAU0wE,eAAc,EAAGhyE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8xE,0BAA0BnxE,OAAOY,eAAehB,KAAKP,EAAE,6BAA6B6zD,EAAMN,MAAM0e,2BAA2BpuC,OAAO7jC,EAAE8xE,yBAAyB1xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+xE,gBAAgBpxE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+xE,eAAe3xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEgyE,eAAerxE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,KAAKwI,KAAKh9D,EAAEgyE,eAAe5xE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkX,8BAAgCzqE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoxE,yBAAyBje,EAAMN,MAAM0e,2BAA2BvtC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqxE,eAAele,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEsxE,cAAchyE,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAAx3D,GAA43DiyE,2BAA2B,WAAW,SAASjyE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAiiD,IAAIK,EAAE,OAAtiDJ,EAAEsB,UAAUyjE,eAAenR,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAU4jE,aAAa,KAAKllE,EAAEsB,UAAU6jE,uBAAuB,KAAKnlE,EAAEsB,UAAU8jE,uBAAuB,KAAKplE,EAAEsB,UAAU2kE,uBAAuB,KAAKjmE,EAAEsB,UAAUmmE,uBAAuB,KAAKznE,EAAEsB,UAAUomE,sBAAsB,KAAK1nE,EAAEsB,UAAUgkE,oBAAoB,KAAKtlE,EAAEsB,UAAUikE,aAAa,KAAKvlE,EAAEsB,UAAUmkE,eAAe,KAAKzlE,EAAEsB,UAAUokE,oBAAoB,KAAK1lE,EAAEsB,UAAUqkE,WAAW,KAAK3lE,EAAEsB,UAAUskE,WAAW,KAAK5lE,EAAEsB,UAAUukE,WAAW,KAAK7lE,EAAEsB,UAAUwkE,WAAW,KAAK9lE,EAAEsB,UAAUykE,aAAa,KAAK/lE,EAAEsB,UAAU0kE,eAAe,KAAKhmE,EAAEsB,UAAUkhD,OAAO,KAAKxiD,EAAEsB,UAAU4kE,qBAAqB,KAAKlmE,EAAEsB,UAAU6kE,qBAAqB,KAAKnmE,EAAEsB,UAAU8kE,qBAAqB,KAAKpmE,EAAEsB,UAAU+kE,uBAAuB,KAAKrmE,EAAEsB,UAAUilE,cAAc,KAAKvmE,EAAEsB,UAAUklE,YAAY,KAAKxmE,EAAEsB,UAAUmlE,cAAc,KAAKzmE,EAAEsB,UAAUolE,cAAc,KAAK1mE,EAAEsB,UAAUqlE,eAAe,KAAK3mE,EAAEsB,UAAUslE,cAAc,KAAK5mE,EAAEsB,UAAUulE,YAAY,KAAK7mE,EAAEsB,UAAUwlE,UAAU,KAAK9mE,EAAEsB,UAAUylE,UAAU,KAAK/mE,EAAEsB,UAAU0lE,UAAU,KAAKhnE,EAAEsB,UAAU2lE,eAAe,KAAKjnE,EAAEsB,UAAU4lE,gBAAgB,KAAKlnE,EAAEsB,UAAUgmE,uBAAuB,KAAKtnE,EAAEsB,UAAUimE,WAAW,KAAKvnE,EAAEsB,UAAUkmE,aAAa,KAAKxnE,EAAEsB,UAAU8lE,eAAe,KAAKpnE,EAAEsB,UAAUumE,SAAS,KAAK7nE,EAAEsB,UAAUwmE,gBAAgB,KAAK9nE,EAAEsB,UAAUymE,WAAW,KAAK/nE,EAAEsB,UAAU0mE,WAAW,KAAKhoE,EAAEsB,UAAU2mE,WAAW,KAAKjoE,EAAEsB,UAAU4mE,YAAY,KAAKloE,EAAEsB,UAAU8mE,mBAAmB,KAAKpoE,EAAEsB,UAAU+mE,kBAAkB,KAAKroE,EAAEsB,UAAU6mE,aAAa,KAAkBxnE,OAAOC,eAAeZ,EAAEsB,UAAU,OAAO,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,eAAe,yBAAyB,yBAAyB,yBAAyB,yBAAyB,wBAAwB,sBAAsB,eAAe,iBAAiB,sBAAsB,aAAa,aAAa,aAAa,aAAa,eAAe,iBAAiB,SAAS,uBAAuB,uBAAuB,uBAAuB,yBAAyB,gBAAgB,cAAc,gBAAgB,gBAAgB,iBAAiB,gBAAgB,cAAc,YAAY,YAAY,YAAY,iBAAiB,kBAAkB,yBAAyB,aAAa,eAAe,iBAAiB,WAAW,kBAAkB,aAAa,aAAa,aAAa,cAAc,qBAAqB,oBAAoB,iBAAiB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+kE,gBAAgBpkE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,GAAGI,OAAO50D,EAAE+kE,gBAAgB,MAAM/kE,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAEklE,cAAcvkE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMgV,4BAA4B1kC,OAAO7jC,EAAEklE,aAAa9kE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmlE,wBAAwBxkE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMiV,8BAA8B3kC,OAAO7jC,EAAEmlE,uBAAuB/kE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEolE,wBAAwBzkE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMkV,8BAA8B5kC,OAAO7jC,EAAEolE,uBAAuBhlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEimE,wBAAwBtlE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAM+V,8BAA8BzlC,OAAO7jC,EAAEimE,uBAAuB7lE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEslE,qBAAqB3kE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAMoV,4BAA4B9kC,OAAO7jC,EAAEslE,oBAAoBllE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEulE,cAAc5kE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMqV,4BAA4B/kC,OAAO7jC,EAAEulE,aAAanlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEylE,gBAAgB9kE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuV,8BAA8BjlC,OAAO7jC,EAAEylE,eAAerlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0lE,qBAAqB/kE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAMwV,4BAA4BllC,OAAO7jC,EAAE0lE,oBAAoBtlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2lE,YAAYhlE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMyV,0BAA0BnlC,OAAO7jC,EAAE2lE,WAAWvlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4lE,YAAYjlE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM0V,0BAA0BplC,OAAO7jC,EAAE4lE,WAAWxlE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6lE,YAAYllE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM2V,0BAA0BrlC,OAAO7jC,EAAE6lE,WAAWzlE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8lE,YAAYnlE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM4V,0BAA0BtlC,OAAO7jC,EAAE8lE,WAAW1lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+lE,cAAcplE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAM6V,4BAA4BvlC,OAAO7jC,EAAE+lE,aAAa3lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEgmE,gBAAgBrlE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM8V,8BAA8BxlC,OAAO7jC,EAAEgmE,eAAe5lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEwiD,QAAQ7hD,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMgW,sBAAsB1lC,OAAO7jC,EAAEwiD,OAAOpiD,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEkmE,sBAAsBvlE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMiW,oCAAoC3lC,OAAO7jC,EAAEkmE,qBAAqB9lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEmmE,sBAAsBxlE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMkW,oCAAoC5lC,OAAO7jC,EAAEmmE,qBAAqB/lE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEomE,sBAAsBzlE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMmW,oCAAoC7lC,OAAO7jC,EAAEomE,qBAAqBhmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEqmE,wBAAwB1lE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMoW,sCAAsC9lC,OAAO7jC,EAAEqmE,uBAAuBjmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEumE,eAAe5lE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMsW,2BAA2BhmC,OAAO7jC,EAAEumE,cAAcnmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEwmE,aAAa7lE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMuW,kCAAkCjmC,OAAO7jC,EAAEwmE,YAAYpmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEymE,eAAe9lE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMwW,oCAAoClmC,OAAO7jC,EAAEymE,cAAcrmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE0mE,eAAe/lE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMyW,6BAA6BnmC,OAAO7jC,EAAE0mE,cAActmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE2mE,gBAAgBhmE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM0W,8BAA8BpmC,OAAO7jC,EAAE2mE,eAAevmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE4mE,eAAejmE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAM2W,2BAA2BrmC,OAAO7jC,EAAE4mE,cAAcxmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6mE,aAAalmE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAM4W,2BAA2BtmC,OAAO7jC,EAAE6mE,YAAYzmE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8mE,WAAWnmE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM6W,yBAAyBvmC,OAAO7jC,EAAE8mE,UAAU1mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+mE,WAAWpmE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM8W,yBAAyBxmC,OAAO7jC,EAAE+mE,UAAU3mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEgnE,WAAWrmE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM+W,gCAAgCzmC,OAAO7jC,EAAEgnE,UAAU5mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEinE,gBAAgBtmE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMgX,8BAA8B1mC,OAAO7jC,EAAEinE,eAAe7mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEknE,iBAAiBvmE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMiX,+BAA+B3mC,OAAO7jC,EAAEknE,gBAAgB9mE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEonE,gBAAgBzmE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMmX,8BAA8B7mC,OAAO7jC,EAAEonE,eAAehnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEunE,YAAY5mE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMsX,0BAA0BhnC,OAAO7jC,EAAEunE,WAAWnnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEwnE,cAAc7mE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMuX,4BAA4BjnC,OAAO7jC,EAAEwnE,aAAapnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEynE,wBAAwB9mE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMwX,sCAAsClnC,OAAO7jC,EAAEynE,uBAAuBrnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE0nE,uBAAuB/mE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMyX,qCAAqCnnC,OAAO7jC,EAAE0nE,sBAAsBtnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEsnE,wBAAwB3mE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMqX,sCAAsC/mC,OAAO7jC,EAAEsnE,uBAAuBlnE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6nE,UAAUlnE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAM4X,wBAAwBtnC,OAAO7jC,EAAE6nE,SAASznE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8nE,iBAAiBnnE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM6X,+BAA+BvnC,OAAO7jC,EAAE8nE,gBAAgB1nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+nE,YAAYpnE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYC,0BAA0BxyB,OAAO7jC,EAAE+nE,WAAW3nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEgoE,YAAYrnE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYa,0BAA0BpzB,OAAO7jC,EAAEgoE,WAAW5nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEioE,YAAYtnE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYkB,0BAA0BzzB,OAAO7jC,EAAEioE,WAAW7nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEkoE,aAAavnE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAM8X,2BAA2BxnC,OAAO7jC,EAAEkoE,YAAY9nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEooE,oBAAoBznE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMgY,kCAAkC1nC,OAAO7jC,EAAEooE,mBAAmBhoE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEqoE,mBAAmB1nE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMiY,iCAAiC3nC,OAAO7jC,EAAEqoE,kBAAkBjoE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEmoE,cAAcxnE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAM+X,4BAA4BznC,OAAO7jC,EAAEmoE,aAAa/nE,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0e,2BAA6BjyE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEqkE,eAAe/kE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEwkE,aAAarR,EAAMN,MAAMgV,4BAA4B7jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEykE,uBAAuBtR,EAAMN,MAAMiV,8BAA8B9jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE0kE,uBAAuBvR,EAAMN,MAAMkV,8BAA8B/jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEulE,uBAAuBpS,EAAMN,MAAM+V,8BAA8B5kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+mE,uBAAuB5T,EAAMN,MAAMwX,sCAAsCrmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgnE,sBAAsB7T,EAAMN,MAAMyX,qCAAqCtmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4kE,oBAAoBzR,EAAMN,MAAMoV,4BAA4BjkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6kE,aAAa1R,EAAMN,MAAMqV,4BAA4BlkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+kE,eAAe5R,EAAMN,MAAMuV,8BAA8BpkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEglE,oBAAoB7R,EAAMN,MAAMwV,4BAA4BrkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEilE,WAAW9R,EAAMN,MAAMyV,0BAA0BtkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEklE,WAAW/R,EAAMN,MAAM0V,0BAA0BvkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmlE,WAAWhS,EAAMN,MAAM2V,0BAA0BxkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEolE,WAAWjS,EAAMN,MAAM4V,0BAA0BzkC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEqlE,aAAalS,EAAMN,MAAM6V,4BAA4B1kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEslE,eAAenS,EAAMN,MAAM8V,8BAA8B3kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE8hD,OAAOqR,EAAMN,MAAMgW,sBAAsB7kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEwlE,qBAAqBrS,EAAMN,MAAMiW,oCAAoC9kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEylE,qBAAqBtS,EAAMN,MAAMkW,oCAAoC/kC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0lE,qBAAqBvS,EAAMN,MAAMmW,oCAAoChlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE2lE,uBAAuBxS,EAAMN,MAAMoW,sCAAsCjlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6lE,cAAc1S,EAAMN,MAAMsW,2BAA2BnlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE8lE,YAAY3S,EAAMN,MAAMuW,kCAAkCplC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+lE,cAAc5S,EAAMN,MAAMwW,oCAAoCrlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEgmE,cAAc7S,EAAMN,MAAMyW,6BAA6BtlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEimE,eAAe9S,EAAMN,MAAM0W,8BAA8BvlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEkmE,cAAc/S,EAAMN,MAAM2W,2BAA2BxlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmmE,YAAYhT,EAAMN,MAAM4W,2BAA2BzlC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEomE,UAAUjT,EAAMN,MAAM6W,yBAAyB1lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEqmE,UAAUlT,EAAMN,MAAM8W,yBAAyB3lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEsmE,UAAUnT,EAAMN,MAAM+W,gCAAgC5lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEumE,eAAepT,EAAMN,MAAMgX,8BAA8B7lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEwmE,gBAAgBrT,EAAMN,MAAMiX,+BAA+B9lC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE4mE,uBAAuBzT,EAAMN,MAAMqX,sCAAsClmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6mE,WAAW1T,EAAMN,MAAMsX,0BAA0BnmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE8mE,aAAa3T,EAAMN,MAAMuX,4BAA4BpmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0mE,eAAevT,EAAMN,MAAMmX,8BAA8BhmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmnE,SAAShU,EAAMN,MAAM4X,wBAAwBzmC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEonE,gBAAgBjU,EAAMN,MAAM6X,+BAA+B1mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEqnE,WAAWlU,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYC,0BAA0B3xB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEsnE,WAAWnU,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYa,0BAA0BvyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEunE,WAAWpU,EAAML,IAAIQ,OAAOkC,KAAKC,KAAKC,YAAYkB,0BAA0B5yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEwnE,YAAYrU,EAAMN,MAAM8X,2BAA2B3mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0nE,mBAAmBvU,EAAMN,MAAMgY,kCAAkC7mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE2nE,kBAAkBxU,EAAMN,MAAMiY,iCAAiC9mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEynE,aAAatU,EAAMN,MAAM+X,4BAA4B5mC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAAvse,GAA2se0qE,8BAA8B,WAAW,SAAS1qE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU4wE,WAAW,KAAKlyE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEkyE,YAAYvxE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM4K,WAAWt6B,OAAO7jC,EAAEkyE,WAAW9xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmX,8BAAgC1qE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEwxE,WAAWre,EAAMN,MAAM4K,WAAWz5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAA/wB,GAAmxBmrE,wBAAwB,WAAW,SAASnrE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6wE,MAAM,EAAEnyE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEmyE,OAAOxxE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEmyE,OAAO/xE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4X,wBAA0BnrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEyxE,MAAMnyE,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,CAAC,CAA5pB,GAAgqB2qE,4BAA4B,WAAW,SAAS3qE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU4wE,WAAW,KAAKlyE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEkyE,YAAYvxE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM4K,WAAWt6B,OAAO7jC,EAAEkyE,WAAW9xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoX,4BAA8B3qE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEwxE,WAAWre,EAAMN,MAAM4K,WAAWz5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAA3wB,GAA+wBkrE,+BAA+B,WAAW,SAASlrE,EAAEA,GAAG,GAAG6E,KAAKutE,UAAU,GAAGpyE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+wE,mBAAmB,KAAKryE,EAAEsB,UAAU8wE,UAAUxe,EAAM8C,WAAW12D,EAAEsB,UAAUgxE,4BAA4B1e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUixE,sBAAsB,KAAKvyE,EAAEsB,UAAUkxE,qBAAqB5e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUmxE,cAAc7e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUoxE,yBAAyB,KAAK1yE,EAAEsB,UAAUqxE,sBAAsB/e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUsxE,kBAAkBhf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUuxE,uBAAuBjf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUwxE,+BAA+Blf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUyxE,uBAAuBnf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU0xE,iBAAiBpf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU2xE,eAAerf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqyE,oBAAoB1xE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEqyE,mBAAmBjyE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEoyE,WAAWpyE,EAAEoyE,UAAUvwE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEoyE,UAAUvwE,SAAS9B,EAAE8zD,EAAMN,MAAM2f,UAAUrvC,OAAO7jC,EAAEoyE,UAAUryE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAO,MAAM10D,EAAEsyE,6BAA6B3xE,OAAOY,eAAehB,KAAKP,EAAE,gCAAgCI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEsyE,6BAA6B,MAAMtyE,EAAEuyE,uBAAuB5xE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMuK,SAASj6B,OAAO7jC,EAAEuyE,sBAAsBnyE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwyE,sBAAsB7xE,OAAOY,eAAehB,KAAKP,EAAE,yBAAyBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEwyE,sBAAsB,MAAMxyE,EAAEyyE,eAAe9xE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEyyE,eAAe,MAAMzyE,EAAE0yE,0BAA0B/xE,OAAOY,eAAehB,KAAKP,EAAE,6BAA6B6zD,EAAMN,MAAMuK,SAASj6B,OAAO7jC,EAAE0yE,yBAAyBtyE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2yE,uBAAuBhyE,OAAOY,eAAehB,KAAKP,EAAE,0BAA0BI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE2yE,uBAAuB,MAAM3yE,EAAE4yE,mBAAmBjyE,OAAOY,eAAehB,KAAKP,EAAE,sBAAsBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE4yE,mBAAmB,MAAM5yE,EAAE6yE,wBAAwBlyE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2BI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE6yE,wBAAwB,MAAM7yE,EAAE8yE,gCAAgCnyE,OAAOY,eAAehB,KAAKP,EAAE,mCAAmCI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE8yE,gCAAgC,MAAM9yE,EAAE+yE,wBAAwBpyE,OAAOY,eAAehB,KAAKP,EAAE,2BAA2BI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+yE,wBAAwB,MAAM/yE,EAAEgzE,kBAAkBryE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqBI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAEgzE,kBAAkB,MAAMhzE,EAAEizE,gBAAgBtyE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAEizE,gBAAgB7yE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgFK,EAA5EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2X,+BAAiClrE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2xE,mBAAmBxe,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE0xE,WAAW1xE,EAAE0xE,UAAUvwE,SAASnB,EAAE0xE,UAAU,IAAI1xE,EAAE0xE,UAAU9lE,KAAKunD,EAAMN,MAAM2f,UAAUxuC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAE4xE,4BAA4BtyE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE6xE,sBAAsB1e,EAAMN,MAAMuK,SAASp5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8xE,qBAAqBxyE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE+xE,cAAczyE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEgyE,yBAAyB7e,EAAMN,MAAMuK,SAASp5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEiyE,sBAAsB3yE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEkyE,kBAAkB5yE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEmyE,uBAAuB7yE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEoyE,+BAA+B9yE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEqyE,uBAAuB/yE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEsyE,iBAAiBhzE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEuyE,eAAejzE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uCAAuC,EAAEA,CAAC,CAAnpI,GAAupIkzE,UAAU,WAAW,SAASlzE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU6xE,SAASvf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU8xE,SAASxf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU41D,OAAOtD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU+xE,WAAWzf,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU2gE,MAAMrO,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUgyE,iBAAiB1f,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUiyE,cAAc3f,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEmzE,UAAUxyE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEmzE,UAAU,MAAMnzE,EAAEozE,UAAUzyE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEozE,UAAU,MAAMpzE,EAAEk3D,QAAQv2D,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEk3D,QAAQ,MAAMl3D,EAAEqzE,YAAY1yE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqzE,YAAY,MAAMrzE,EAAEiiE,OAAOthE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEiiE,OAAO,MAAMjiE,EAAEszE,kBAAkB3yE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEszE,kBAAkB,MAAMtzE,EAAEuzE,eAAe5yE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEuzE,eAAenzE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2DK,EAAvDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2f,UAAYlzE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEyyE,SAASnzE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE0yE,SAASpzE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEw2D,OAAOl3D,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE2yE,WAAWrzE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEuhE,MAAMjiE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE4yE,iBAAiBtzE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE6yE,cAAcvzE,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kBAAkB,EAAEA,CAAC,CAAh1D,GAAo1D87D,eAAe,WAAW,SAAS97D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUkyE,4BAA4B,EAAExzE,EAAEsB,UAAUmF,aAAa,EAAEzG,EAAEsB,UAAUmyE,KAAK7f,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUoyE,WAAW9f,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEwzE,6BAA6B7yE,OAAOY,eAAehB,KAAKP,EAAE,gCAAgCI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEwzE,6BAA6B,MAAMxzE,EAAEyG,cAAc9F,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEyG,cAAc,MAAMzG,EAAEyzE,MAAM9yE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEyzE,MAAM,MAAMzzE,EAAE0zE,YAAY/yE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE0zE,YAAYtzE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgEK,EAA5DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuI,eAAiB97D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE8yE,4BAA4BxzE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE+F,aAAazG,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE+yE,KAAKzzE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEgzE,WAAW1zE,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uBAAuB,EAAEA,CAAC,CAA5vC,GAAgwC2zE,iBAAiB,WAAW,MAAM3zE,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,MAAM,EAAEI,EAAEJ,EAAE,GAAG,uBAAuB,EAAEI,EAAEJ,EAAE,GAAG,2BAA2B,EAAEI,EAAEJ,EAAE,GAAG,wBAAwB,EAAEI,EAAEJ,EAAE,GAAG,uBAAuB,EAAEI,EAAEJ,EAAE,GAAG,6BAA6B,EAAEI,EAAEJ,EAAE,GAAG,gCAAgC,EAAEI,EAAEJ,EAAE,GAAG,qBAAqB,EAAEI,EAAEJ,EAAE,GAAG,iBAAiB,EAAEI,EAAEJ,EAAE,GAAG,uBAAuB,EAAEI,EAAEJ,EAAE,IAAI,8BAA8B,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,QAAQ,GAAGI,EAAEJ,EAAE,IAAI,iBAAiB,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,sBAAsB,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,WAAW,GAAGI,EAAEJ,EAAE,IAAI,WAAW,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,YAAY,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,gCAAgC,GAAGI,EAAEJ,EAAE,IAAI,4BAA4B,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,gCAAgC,GAAGI,EAAEJ,EAAE,IAAI,qCAAqC,GAAGI,EAAEJ,EAAE,IAAI,4BAA4B,GAAGI,EAAEJ,EAAE,IAAI,gCAAgC,GAAGI,EAAEJ,EAAE,IAAI,kCAAkC,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,eAAe,GAAGI,EAAEJ,EAAE,IAAI,sBAAsB,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,4BAA4B,GAAGI,EAAEJ,EAAE,IAAI,0CAA0C,GAAGI,EAAEJ,EAAE,IAAI,2CAA2C,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,6BAA6B,GAAGI,EAAEJ,EAAE,IAAI,4BAA4B,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,wBAAwB,GAAGI,EAAEJ,EAAE,IAAI,+BAA+B,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,oCAAoC,GAAGI,EAAEJ,EAAE,IAAI,0BAA0B,GAAGI,EAAEJ,EAAE,IAAI,4BAA4B,GAAGI,EAAEJ,EAAE,IAAI,mBAAmB,GAAGI,EAAEJ,EAAE,IAAI,gBAAgB,GAAGI,EAAEJ,EAAE,IAAI,uCAAuC,GAAGI,EAAEJ,EAAE,IAAI,oCAAoC,GAAGI,EAAEJ,EAAE,IAAI,qBAAqB,GAAGI,EAAEJ,EAAE,IAAI,6BAA6B,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,gCAAgC,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,mCAAmC,GAAGI,EAAEJ,EAAE,IAAI,6BAA6B,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,oCAAoC,GAAGI,EAAEJ,EAAE,IAAI,iCAAiC,GAAGI,EAAEJ,EAAE,IAAI,kCAAkC,GAAGI,EAAEJ,EAAE,IAAI,8BAA8B,GAAGI,EAAEJ,EAAE,IAAI,mCAAmC,GAAGI,EAAEJ,EAAE,IAAI,qCAAqC,GAAGI,EAAEJ,EAAE,IAAI,qCAAqC,GAAGI,EAAEJ,EAAE,IAAI,8BAA8B,GAAGI,EAAEJ,EAAE,IAAI,uBAAuB,GAAGI,EAAEJ,EAAE,IAAI,yBAAyB,GAAGI,EAAEJ,EAAE,IAAI,2BAA2B,GAAGI,EAAEJ,EAAE,IAAI,oBAAoB,GAAGI,EAAEJ,EAAE,IAAI,8BAA8B,GAAGI,EAAEJ,EAAE,IAAI,+BAA+B,GAAGI,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,yCAAyC,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,2CAA2C,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,yBAAyB,IAAII,EAAEJ,EAAE,KAAK,oBAAoB,IAAII,EAAEJ,EAAE,KAAK,qBAAqB,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,gBAAgB,IAAII,EAAEJ,EAAE,KAAK,yBAAyB,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,iBAAiB,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,qCAAqC,IAAII,EAAEJ,EAAE,KAAK,oBAAoB,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,sCAAsC,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,yBAAyB,IAAII,EAAEJ,EAAE,KAAK,qCAAqC,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,8BAA8B,IAAII,EAAEJ,EAAE,KAAK,qBAAqB,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,yBAAyB,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,sCAAsC,IAAII,EAAEJ,EAAE,KAAK,mBAAmB,IAAII,EAAEJ,EAAE,KAAK,oBAAoB,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,uBAAuB,IAAII,EAAEJ,EAAE,KAAK,yBAAyB,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,4CAA4C,IAAII,EAAEJ,EAAE,KAAK,uBAAuB,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,2CAA2C,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,wCAAwC,IAAII,EAAEJ,EAAE,KAAK,uBAAuB,IAAII,EAAEJ,EAAE,KAAK,yBAAyB,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,sCAAsC,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,8CAA8C,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,kBAAkB,IAAII,EAAEJ,EAAE,KAAK,qBAAqB,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,uBAAuB,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,6CAA6C,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,yCAAyC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,qCAAqC,IAAII,EAAEJ,EAAE,KAAK,kCAAkC,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,sCAAsC,IAAII,EAAEJ,EAAE,KAAK,kDAAkD,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,mDAAmD,IAAII,EAAEJ,EAAE,KAAK,0DAA0D,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,kCAAkC,IAAII,EAAEJ,EAAE,KAAK,6DAA6D,IAAII,EAAEJ,EAAE,KAAK,6CAA6C,IAAII,EAAEJ,EAAE,KAAK,yBAAyB,IAAII,EAAEJ,EAAE,KAAK,oDAAoD,IAAII,EAAEJ,EAAE,KAAK,oDAAoD,IAAII,EAAEJ,EAAE,KAAK,sDAAsD,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,2DAA2D,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,sDAAsD,IAAII,EAAEJ,EAAE,KAAK,kEAAkE,IAAII,EAAEJ,EAAE,KAAK,mBAAmB,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,qBAAqB,IAAII,EAAEJ,EAAE,KAAK,qCAAqC,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,kDAAkD,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,qCAAqC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,8BAA8B,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,4CAA4C,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,oBAAoB,IAAII,EAAEJ,EAAE,KAAK,6CAA6C,IAAII,EAAEJ,EAAE,KAAK,qBAAqB,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,oBAAoB,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,8BAA8B,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,8BAA8B,IAAII,EAAEJ,EAAE,KAAK,mDAAmD,IAAII,EAAEJ,EAAE,KAAK,oDAAoD,IAAII,EAAEJ,EAAE,KAAK,8CAA8C,IAAII,EAAEJ,EAAE,KAAK,+DAA+D,IAAII,EAAEJ,EAAE,KAAK,qCAAqC,IAAII,EAAEJ,EAAE,KAAK,sCAAsC,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,EAAEJ,EAAE,KAAK,kBAAkB,IAAII,EAAEJ,EAAE,KAAK,eAAe,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,8BAA8B,IAAII,EAAEJ,EAAE,KAAK,wCAAwC,IAAII,EAAEJ,EAAE,KAAK,wCAAwC,IAAII,EAAEJ,EAAE,KAAK,sCAAsC,IAAII,EAAEJ,EAAE,KAAK,gDAAgD,IAAII,EAAEJ,EAAE,KAAK,wCAAwC,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,uBAAuB,IAAII,EAAEJ,EAAE,KAAK,sBAAsB,IAAII,EAAEJ,EAAE,KAAK,kDAAkD,IAAII,EAAEJ,EAAE,KAAK,gDAAgD,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,8BAA8B,IAAII,EAAEJ,EAAE,KAAK,0CAA0C,IAAII,EAAEJ,EAAE,KAAK,kCAAkC,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,6BAA6B,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,0BAA0B,IAAII,EAAEJ,EAAE,KAAK,gBAAgB,IAAII,EAAEJ,EAAE,KAAK,mBAAmB,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,2BAA2B,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,qBAAqB,IAAII,EAAEJ,EAAE,KAAK,2CAA2C,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,uBAAuB,IAAII,EAAEJ,EAAE,KAAK,oBAAoB,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,4BAA4B,IAAII,EAAEJ,EAAE,KAAK,oBAAoB,IAAII,EAAEJ,EAAE,KAAK,4CAA4C,IAAII,EAAEJ,EAAE,KAAK,oCAAoC,IAAII,EAAEJ,EAAE,KAAK,wBAAwB,IAAII,EAAEJ,EAAE,KAAK,8BAA8B,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,uCAAuC,IAAII,EAAEJ,EAAE,KAAK,iCAAiC,IAAII,EAAEJ,EAAE,KAAK,+BAA+B,IAAII,EAAEJ,EAAE,KAAK,mCAAmC,IAAII,EAAEJ,EAAE,KAAK,sCAAsC,IAAII,EAAEJ,EAAE,KAAK,gCAAgC,IAAII,CAAC,CAAvjb,GAA2jbu5D,qBAAqB,WAAW,SAAS35D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUsyE,WAAW,GAAG5zE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4zE,YAAYjzE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE4zE,YAAYxzE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoG,qBAAuB35D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEkzE,WAAW5zE,EAAEqpB,SAAS,MAAM,QAAQrpB,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAA74B,GAAi5B6zE,wBAAwB,WAAW,SAAS7zE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsgB,wBAA0B7zE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,CAAC,CAAx5C,GAA45C8zE,gBAAgB,WAAW,SAAS9zE,EAAEA,GAAG,GAAG6E,KAAKkvE,MAAM,GAAG/zE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAU0yE,MAAMpgB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUyyE,MAAMngB,EAAM8C,WAAW12D,EAAEsB,UAAU6D,KAAKyuD,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEg0E,OAAOrzE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEg0E,OAAO,MAAMh0E,EAAE+zE,OAAO/zE,EAAE+zE,MAAMlyE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE+zE,MAAMlyE,SAAS9B,EAAEK,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE+zE,MAAMh0E,IAAI,OAAO,MAAMC,EAAEmF,MAAMxE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEmF,MAAM/E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMugB,gBAAkB9zE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEszE,MAAMh0E,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEqzE,OAAOrzE,EAAEqzE,MAAMlyE,SAASnB,EAAEqzE,MAAM,IAAIrzE,EAAEqzE,MAAMznE,KAAKtM,EAAEiuC,SAAS,MAAM,KAAK,EAAGvtC,EAAEyE,KAAKnF,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAA5vC,GAAgwCi0E,uBAAuB,WAAW,SAASj0E,EAAEA,GAAG,GAAG6E,KAAKqvE,QAAQ,GAAGrvE,KAAKsvE,mBAAmB,GAAGtvE,KAAKuvE,eAAe,GAAGp0E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAU+yE,mBAAmBzgB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUgzE,aAAa,GAAGt0E,EAAEsB,UAAU0yE,MAAMpgB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUizE,QAAQ3gB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU4yE,QAAQtgB,EAAM8C,WAAW12D,EAAEsB,UAAU6yE,mBAAmBvgB,EAAM8C,WAAW12D,EAAEsB,UAAUq7D,WAAW,KAAK38D,EAAEsB,UAAU++D,IAAIzM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU6qE,mBAAmBvY,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU0iE,SAAS,KAAKhkE,EAAEsB,UAAU8yE,eAAexgB,EAAM8C,WAAW12D,EAAEsB,UAAUkzE,YAAY,KAAKx0E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq0E,oBAAoB1zE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEq0E,oBAAoB,MAAMr0E,EAAEs0E,cAAc3zE,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEs0E,cAAc,MAAMt0E,EAAEg0E,OAAOrzE,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEg0E,OAAO,MAAMh0E,EAAEu0E,SAAS5zE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEu0E,SAAS,MAAMv0E,EAAEk0E,SAASl0E,EAAEk0E,QAAQryE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEk0E,QAAQryE,SAAS9B,EAAE8zD,EAAMN,MAAMugB,gBAAgBjwC,OAAO7jC,EAAEk0E,QAAQn0E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAEm0E,oBAAoBn0E,EAAEm0E,mBAAmBtyE,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEm0E,mBAAmBtyE,SAAS9B,EAAE8zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEm0E,mBAAmBp0E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAE28D,YAAYh8D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMJ,OAAO0D,SAASE,WAAWxzB,OAAO7jC,EAAE28D,WAAWv8D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqgE,KAAK1/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqgE,KAAK,MAAMrgE,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+0C,QAAQ,MAAM/0C,EAAEmsE,oBAAoBxrE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEmsE,oBAAoB,MAAMnsE,EAAEgkE,UAAUrjE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEgkE,SAAS5jE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEo0E,gBAAgBp0E,EAAEo0E,eAAevyE,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEo0E,eAAevyE,SAAS9B,EAAE8zD,EAAMN,MAAMkhB,kBAAkB5wC,OAAO7jC,EAAEo0E,eAAer0E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,OAAO,MAAM10D,EAAEw0E,aAAa7zE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMJ,OAAO0D,SAASud,WAAW7wC,OAAO7jC,EAAEw0E,YAAYp0E,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwEK,EAApEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0gB,uBAAyBj0E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2zE,mBAAmBr0E,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE4zE,aAAat0E,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEszE,MAAMh0E,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE6zE,QAAQv0E,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEwzE,SAASxzE,EAAEwzE,QAAQryE,SAASnB,EAAEwzE,QAAQ,IAAIxzE,EAAEwzE,QAAQ5nE,KAAKunD,EAAMN,MAAMugB,gBAAgBpvC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEyzE,oBAAoBzzE,EAAEyzE,mBAAmBtyE,SAASnB,EAAEyzE,mBAAmB,IAAIzzE,EAAEyzE,mBAAmB7nE,KAAKunD,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEi8D,WAAW9I,EAAMJ,OAAO0D,SAASE,WAAW3yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE2/D,IAAIrgE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEyrE,mBAAmBnsE,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEsjE,SAASnQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE0zE,gBAAgB1zE,EAAE0zE,eAAevyE,SAASnB,EAAE0zE,eAAe,IAAI1zE,EAAE0zE,eAAe9nE,KAAKunD,EAAMN,MAAMkhB,kBAAkB/vC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAE8zE,YAAY3gB,EAAMJ,OAAO0D,SAASud,WAAWhwC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,+BAA+B,EAAEA,CAAC,CAAn3H,GAAu3H45D,uBAAuB,WAAW,SAAS55D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAU++D,IAAIzM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU6qE,mBAAmBvY,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUqzE,cAAc/gB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU0iE,SAAS,KAAKhkE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqgE,KAAK1/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqgE,KAAK,MAAMrgE,EAAEmsE,oBAAoBxrE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEmsE,oBAAoB,MAAMnsE,EAAE20E,eAAeh0E,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE20E,eAAe,MAAM30E,EAAEgkE,UAAUrjE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEgkE,SAAS5jE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwEK,EAApEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqG,uBAAyB55D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2/D,IAAIrgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEyrE,mBAAmBnsE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEi0E,cAAc30E,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEsjE,SAASnQ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,+BAA+B,EAAEA,CAAC,CAA5wD,GAAgxD40E,0BAA0B,WAAW,SAAS50E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUuzE,eAAe,KAAK70E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE60E,gBAAgBl0E,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM0gB,uBAAuBpwC,OAAO7jC,EAAE60E,eAAez0E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqhB,0BAA4B50E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm0E,eAAehhB,EAAMN,MAAM0gB,uBAAuBvvC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAnhC,GAAuhCy0E,kBAAkB,WAAW,SAASz0E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwzE,WAAW,KAAK90E,EAAEsB,UAAUy7D,MAAMnJ,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE80E,YAAYn0E,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAE80E,WAAW10E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+8D,OAAOp8D,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+8D,OAAO38D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmEK,EAA/DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkhB,kBAAoBz0E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEo0E,WAAWjhB,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq8D,MAAM/8D,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0BAA0B,EAAEA,CAAC,CAAp6B,GAAw6B65D,qBAAqB,WAAW,SAAS75D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsG,qBAAuB75D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAv9B,GAA29B+0E,wBAAwB,WAAW,SAAS/0E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU0zE,aAAa,KAAKh1E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEg1E,cAAcr0E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMwhB,wBAAwBE,aAAapxC,OAAO7jC,EAAEg1E,aAAa50E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwhB,wBAA0B/0E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEs0E,aAAanhB,EAAMN,MAAMwhB,wBAAwBE,aAAavwC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,EAAEi1E,aAAa,WAAW,SAASj1E,EAAEA,GAAG,GAAG6E,KAAKqwE,mBAAmB,GAAGl1E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAU6zE,kBAAkB,GAAGn1E,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAU8zE,QAAQxhB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUyhE,QAAQnP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU+zE,SAAQ,EAAGr1E,EAAEsB,UAAU4zE,mBAAmBthB,EAAM8C,WAAW12D,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUurE,mBAAmB,KAAK7sE,EAAEsB,UAAUsrE,8BAA8B,EAAE5sE,EAAEsB,UAAUi0E,YAAY,KAAKv1E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm1E,mBAAmBx0E,OAAOY,eAAehB,KAAKP,EAAE,sBAAsBI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEm1E,mBAAmB,MAAMn1E,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEo1E,SAASz0E,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEo1E,SAAS,MAAMp1E,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE+iE,SAASpiE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+iE,SAAS,MAAM/iE,EAAEq1E,SAAS10E,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEq1E,SAAS,MAAMr1E,EAAEk1E,oBAAoBl1E,EAAEk1E,mBAAmBrzE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEk1E,mBAAmBrzE,SAAS9B,EAAE8zD,EAAMN,MAAMsP,kBAAkBh/B,OAAO7jC,EAAEk1E,mBAAmBn1E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAO,MAAM10D,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEs1E,UAAU,MAAMt1E,EAAE6sE,oBAAoBlsE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE6sE,mBAAmBzsE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE4sE,+BAA+BjsE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkCI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE4sE,+BAA+B,MAAM5sE,EAAEu1E,aAAa50E,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMiQ,YAAY3/B,OAAO7jC,EAAEu1E,YAAYn1E,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsFK,EAAlFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwhB,wBAAwBE,aAAej1E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEy0E,kBAAkBn1E,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE00E,QAAQp1E,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEqiE,QAAQ/iE,EAAE40D,SAAS,MAAM,KAAK,GAAIl0D,EAAE20E,QAAQr1E,EAAEg9D,OAAO,MAAM,KAAK,GAAIt8D,EAAEw0E,oBAAoBx0E,EAAEw0E,mBAAmBrzE,SAASnB,EAAEw0E,mBAAmB,IAAIx0E,EAAEw0E,mBAAmB5oE,KAAKunD,EAAMN,MAAMsP,kBAAkBn+B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEmsE,mBAAmBhZ,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEksE,8BAA8B5sE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAE60E,YAAY1hB,EAAMN,MAAMiQ,YAAY9+B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6CAA6C,EAAEA,CAAC,CAAx4H,GAA44HA,CAAC,CAA57J,GAAg8J85D,yBAAyB,WAAW,SAAS95D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0EK,EAAtEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuG,yBAA2B95D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iCAAiC,EAAEA,CAAC,CAA/9B,GAAm+Bw1E,4BAA4B,WAAW,SAASx1E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUm0E,SAAS7hB,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy1E,UAAU90E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEy1E,UAAUr1E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6EK,EAAzEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiiB,4BAA8Bx1E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+0E,SAASz1E,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oCAAoC,EAAEA,CAAC,CAAt6B,GAA06B+5D,wBAAwB,WAAW,SAAS/5D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwG,wBAA0B/5D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,CAAC,CAA79B,GAAi+B01E,2BAA2B,WAAW,SAAS11E,EAAEA,GAAG,GAAG6E,KAAK8wE,QAAQ,GAAG31E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAUq0E,QAAQ/hB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE21E,SAAS31E,EAAE21E,QAAQ9zE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE21E,QAAQ9zE,SAAS9B,EAAE8zD,EAAMN,MAAMqiB,kBAAkB/xC,OAAO7jC,EAAE21E,QAAQ51E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmiB,2BAA6B11E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEi1E,SAASj1E,EAAEi1E,QAAQ9zE,SAASnB,EAAEi1E,QAAQ,IAAIj1E,EAAEi1E,QAAQrpE,KAAKunD,EAAMN,MAAMqiB,kBAAkBlxC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAAnzC,GAAuzC41E,kBAAkB,WAAW,SAAS51E,EAAEA,GAAG,GAAG6E,KAAKgxE,mBAAmB,GAAGhxE,KAAKixE,mBAAmB,GAAGjxE,KAAKkxE,2BAA2B,GAAGlxE,KAAKmxE,mBAAmB,GAAGnxE,KAAKoxE,mBAAmB,GAAGj2E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAi0B,IAAIK,EAAE,OAAt0BJ,EAAEsB,UAAU40E,QAAQ,KAAKl2E,EAAEsB,UAAU60E,gBAAgBviB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU0zD,mBAAmB,KAAKh1D,EAAEsB,UAAUujE,cAAc,KAAK7kE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUyjE,eAAenR,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU+yE,mBAAmB,KAAKr0E,EAAEsB,UAAU80E,qBAAqB,KAAKp2E,EAAEsB,UAAU+0E,aAAa,KAAKr2E,EAAEsB,UAAUu0E,mBAAmBjiB,EAAM8C,WAAW12D,EAAEsB,UAAUg1E,YAAY,KAAKt2E,EAAEsB,UAAUw0E,mBAAmBliB,EAAM8C,WAAW12D,EAAEsB,UAAUy0E,2BAA2BniB,EAAM8C,WAAW12D,EAAEsB,UAAUi1E,yBAAyB,KAAKv2E,EAAEsB,UAAU6yC,MAAMyf,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUk1E,aAAa5iB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU00E,mBAAmBpiB,EAAM8C,WAAW12D,EAAEsB,UAAUm1E,UAAU,KAAKz2E,EAAEsB,UAAUo1E,WAAW,KAAK12E,EAAEsB,UAAUq7D,WAAW/I,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU20E,mBAAmBriB,EAAM8C,WAAwB/1D,OAAOC,eAAeZ,EAAEsB,UAAU,OAAO,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,qBAAqB,yBAAyB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,UAAU,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,YAAY,eAAe0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEk2E,SAASv1E,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMrW,mBAAmBrZ,OAAO7jC,EAAEk2E,QAAQ91E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm2E,iBAAiBx1E,OAAOY,eAAehB,KAAKP,EAAE,oBAAoBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEm2E,iBAAiB,MAAMn2E,EAAEg1D,oBAAoBr0D,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEg1D,mBAAmB50D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6kE,eAAelkE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAE6kE,cAAczkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE+kE,gBAAgBpkE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+kE,gBAAgB,MAAM/kE,EAAEq0E,oBAAoB1zE,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAM0gB,uBAAuBpwC,OAAO7jC,EAAEq0E,mBAAmBj0E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEo2E,sBAAsBz1E,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAM0gB,uBAAuBpwC,OAAO7jC,EAAEo2E,qBAAqBh2E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq2E,cAAc11E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAM6J,aAAav5B,OAAO7jC,EAAEq2E,aAAaj2E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE61E,oBAAoB71E,EAAE61E,mBAAmBh0E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE61E,mBAAmBh0E,SAAS9B,EAAE8zD,EAAMN,MAAMkK,kBAAkB55B,OAAO7jC,EAAE61E,mBAAmB91E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAEs2E,aAAa31E,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAM4K,WAAWt6B,OAAO7jC,EAAEs2E,YAAYl2E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE81E,oBAAoB91E,EAAE81E,mBAAmBj0E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAE81E,mBAAmBj0E,SAAS9B,EAAE8zD,EAAMN,MAAM8d,kBAAkBxtC,OAAO7jC,EAAE81E,mBAAmB/1E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,GAAG,MAAM10D,EAAE+1E,4BAA4B/1E,EAAE+1E,2BAA2Bl0E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAE+1E,2BAA2Bl0E,SAAS9B,EAAE8zD,EAAMN,MAAMgQ,iBAAiB1/B,OAAO7jC,EAAE+1E,2BAA2Bh2E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,GAAG,MAAM10D,EAAEu2E,0BAA0B51E,OAAOY,eAAehB,KAAKP,EAAE,6BAA6B6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEu2E,yBAAyBn2E,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEm0C,OAAOxzC,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEm0C,OAAO,MAAMn0C,EAAEw2E,cAAc71E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEw2E,cAAc,MAAMx2E,EAAEg2E,oBAAoBh2E,EAAEg2E,mBAAmBn0E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEg2E,mBAAmBn0E,SAAS9B,EAAE8zD,EAAMN,MAAM0J,cAAcp5B,OAAO7jC,EAAEg2E,mBAAmBj2E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,GAAG,MAAM10D,EAAEy2E,WAAW91E,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEy2E,WAAW,MAAMz2E,EAAE02E,YAAY/1E,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE02E,YAAY,MAAM12E,EAAE28D,YAAYh8D,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAE28D,YAAY,MAAM38D,EAAEi2E,oBAAoBj2E,EAAEi2E,mBAAmBp0E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEi2E,mBAAmBp0E,SAAS9B,EAAE8zD,EAAMN,MAAMojB,qBAAqB9yC,OAAO7jC,EAAEi2E,mBAAmBl2E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmEK,EAA/DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqiB,kBAAoB51E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEw1E,QAAQriB,EAAMN,MAAMrW,mBAAmBxY,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEy1E,gBAAgBn2E,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEs0D,mBAAmBnB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmkE,cAAchR,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEqkE,eAAe/kE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE2zE,mBAAmBxgB,EAAMN,MAAM0gB,uBAAuBvvC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE01E,qBAAqBviB,EAAMN,MAAM0gB,uBAAuBvvC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE21E,aAAaxiB,EAAMN,MAAM6J,aAAa14B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEm1E,oBAAoBn1E,EAAEm1E,mBAAmBh0E,SAASnB,EAAEm1E,mBAAmB,IAAIn1E,EAAEm1E,mBAAmBvpE,KAAKunD,EAAMN,MAAMkK,kBAAkB/4B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAE41E,YAAYziB,EAAMN,MAAM4K,WAAWz5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEo1E,oBAAoBp1E,EAAEo1E,mBAAmBj0E,SAASnB,EAAEo1E,mBAAmB,IAAIp1E,EAAEo1E,mBAAmBxpE,KAAKunD,EAAMN,MAAM8d,kBAAkB3sC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEq1E,4BAA4Br1E,EAAEq1E,2BAA2Bl0E,SAASnB,EAAEq1E,2BAA2B,IAAIr1E,EAAEq1E,2BAA2BzpE,KAAKunD,EAAMN,MAAMgQ,iBAAiB7+B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAE61E,yBAAyB1iB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEyzC,MAAMn0C,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE81E,aAAax2E,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEs1E,oBAAoBt1E,EAAEs1E,mBAAmBn0E,SAASnB,EAAEs1E,mBAAmB,IAAIt1E,EAAEs1E,mBAAmB1pE,KAAKunD,EAAMN,MAAM0J,cAAcv4B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAE+1E,UAAUz2E,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEg2E,WAAW12E,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEi8D,WAAW38D,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEu1E,oBAAoBv1E,EAAEu1E,mBAAmBp0E,SAASnB,EAAEu1E,mBAAmB,IAAIv1E,EAAEu1E,mBAAmB3pE,KAAKunD,EAAMN,MAAMojB,qBAAqBjyC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0BAA0B,EAAEA,CAAC,CAA9/M,GAAkgN22E,qBAAqB,WAAW,SAAS32E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUs1E,iBAAiB,KAAK52E,EAAEsB,UAAUu1E,oBAAoB,KAAK72E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE42E,kBAAkBj2E,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMwQ,iBAAiBlgC,OAAO7jC,EAAE42E,iBAAiBx2E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62E,qBAAqBl2E,OAAOY,eAAehB,KAAKP,EAAE,wBAAwB6zD,EAAMN,MAAM6Q,oBAAoBvgC,OAAO7jC,EAAE62E,oBAAoBz2E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMojB,qBAAuB32E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEk2E,iBAAiB/iB,EAAMN,MAAMwQ,iBAAiBr/B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2E,oBAAoBhjB,EAAMN,MAAM6Q,oBAAoB1/B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAllC,GAAslCk9C,mBAAmB,WAAW,SAASl9C,EAAEA,GAAG,GAAG6E,KAAK2pE,cAAc,GAAGxuE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+E,OAAO,EAAErG,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUm6D,WAAW,KAAKz7D,EAAEsB,UAAUw1E,aAAa,KAAK92E,EAAEsB,UAAU6yD,QAAQ,KAAKn0D,EAAEsB,UAAUy1E,oBAAoBnjB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU01E,iBAAiBpjB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU21E,wBAAwBrjB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU41E,QAAQ,KAAKl3E,EAAEsB,UAAU61E,eAAevjB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU4wE,WAAW,KAAKlyE,EAAEsB,UAAU81E,uBAAuB,KAAKp3E,EAAEsB,UAAUktE,cAAc5a,EAAM8C,WAAW12D,EAAEsB,UAAU41D,OAAOtD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqG,QAAQ1F,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEqG,QAAQ,MAAMrG,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE82E,cAAcn2E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAM8jB,gBAAgBxzC,OAAO7jC,EAAE82E,aAAa12E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm0D,SAASxzD,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMgB,QAAQ1wB,OAAO7jC,EAAEm0D,QAAQ/zD,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+2E,qBAAqBp2E,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+2E,qBAAqB,MAAM/2E,EAAEg3E,kBAAkBr2E,OAAOY,eAAehB,KAAKP,EAAE,qBAAqBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEg3E,kBAAkB,MAAMh3E,EAAEi3E,yBAAyBt2E,OAAOY,eAAehB,KAAKP,EAAE,4BAA4BI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEi3E,yBAAyB,MAAMj3E,EAAEk3E,SAASv2E,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAEk3E,QAAQ92E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm3E,gBAAgBx2E,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEm3E,gBAAgB,MAAMn3E,EAAEkyE,YAAYvxE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM4K,WAAWt6B,OAAO7jC,EAAEkyE,WAAW9xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEo3E,wBAAwBz2E,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAEo3E,uBAAuBh3E,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEwuE,eAAexuE,EAAEwuE,cAAc3sE,OAAO,CAACzB,EAAEo0D,OAAO,KAAKC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEwuE,cAAc3sE,SAAS9B,EAAEK,EAAE67D,MAAMj8D,EAAEwuE,cAAczuE,IAAIK,EAAEs0D,QAAQ,CAAC,OAAO,MAAM10D,EAAEk3D,QAAQv2D,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,KAAKI,OAAO50D,EAAEk3D,QAAQ92D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAoEK,EAAhEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMrW,mBAAqBl9C,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2F,OAAOrG,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEo2E,aAAajjB,EAAMN,MAAM8jB,gBAAgB3yC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyzD,QAAQN,EAAMN,MAAMgB,QAAQ7vB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq2E,oBAAoB/2E,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEs2E,iBAAiBh3E,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEu2E,wBAAwBj3E,EAAE40D,SAAS,MAAM,KAAK,GAAIl0D,EAAEw2E,QAAQrjB,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEy2E,eAAen3E,EAAE40D,SAAS,MAAM,KAAK,GAAIl0D,EAAEwxE,WAAWre,EAAMN,MAAM4K,WAAWz5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE02E,uBAAuBvjB,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI,GAAG9zD,EAAE8tE,eAAe9tE,EAAE8tE,cAAc3sE,SAASnB,EAAE8tE,cAAc,IAAI,IAAI,EAAEnuE,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,cAAcv7D,EAAE8tE,cAAcliE,KAAKtM,EAAEi8D,SAAS,MAAM,KAAK,GAAIv7D,EAAEw2D,OAAOl3D,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,2BAA2B,EAAEA,CAAC,CAA9/H,GAAkgIs3E,aAAa,WAAW,SAASt3E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUi2E,UAAU,EAAEv3E,EAAEsB,UAAUk2E,UAAU,EAAEx3E,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEu3E,WAAW52E,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEu3E,WAAW,MAAMv3E,EAAEw3E,WAAW72E,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEw3E,WAAW,MAAMx3E,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAM8N,iBAAiBx9B,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+jB,aAAet3E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE62E,UAAUv3E,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE82E,UAAUx3E,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE+qE,eAAe5X,EAAMN,MAAM8N,iBAAiB38B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAAhkC,GAAokCq3E,gBAAgB,WAAW,SAASr3E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm2E,YAAY,KAAKz3E,EAAEsB,UAAUo2E,SAAS,KAAK13E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy3E,aAAa92E,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAM+jB,aAAazzC,OAAO7jC,EAAEy3E,YAAYr3E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE03E,UAAU/2E,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAM+jB,aAAazzC,OAAO7jC,EAAE03E,SAASt3E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8jB,gBAAkBr3E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE+2E,YAAY5jB,EAAMN,MAAM+jB,aAAa5yC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEg3E,SAAS7jB,EAAMN,MAAM+jB,aAAa5yC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAAl+B,GAAs+Bg6D,6BAA6B,WAAW,SAASh6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAgF,IAAIK,EAAE,OAArFJ,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUm6D,WAAW,KAAkB96D,OAAOC,eAAeZ,EAAEsB,UAAU,gBAAgB,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,YAAY,eAAe0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy7D,YAAY96D,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEy7D,WAAWr7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8EK,EAA1EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMyG,6BAA+Bh6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+6D,WAAW5H,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qCAAqC,EAAEA,CAAC,CAAp1C,GAAw1C23E,gCAAgC,WAAW,SAAS33E,EAAEA,GAAG,GAAG6E,KAAKy+D,cAAc,GAAGtjE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUyhE,QAAQnP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUgiE,cAAc1P,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+iE,SAASpiE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+iE,SAAS,MAAM/iE,EAAEsjE,eAAetjE,EAAEsjE,cAAczhE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEsjE,cAAczhE,SAAS9B,EAAE8zD,EAAMN,MAAM6P,aAAav/B,OAAO7jC,EAAEsjE,cAAcvjE,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiFK,EAA7EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMokB,gCAAkC33E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqiE,QAAQ/iE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE4iE,eAAe5iE,EAAE4iE,cAAczhE,SAASnB,EAAE4iE,cAAc,IAAI5iE,EAAE4iE,cAAch3D,KAAKunD,EAAMN,MAAM6P,aAAa1+B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wCAAwC,EAAEA,CAAC,CAAjiD,GAAqiDi6D,6BAA6B,WAAW,SAASj6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8EK,EAA1EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0G,6BAA+Bj6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qCAAqC,EAAEA,CAAC,CAAh+B,GAAo+B43E,gCAAgC,WAAW,SAAS53E,EAAEA,GAAG,GAAG6E,KAAK8wE,QAAQ,GAAG31E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUq0E,QAAQ/hB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE21E,SAAS31E,EAAE21E,QAAQ9zE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE21E,QAAQ9zE,SAAS9B,EAAE8zD,EAAMN,MAAMqiB,kBAAkB/xC,OAAO7jC,EAAE21E,QAAQ51E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiFK,EAA7EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqkB,gCAAkC53E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEi1E,SAASj1E,EAAEi1E,QAAQ9zE,SAASnB,EAAEi1E,QAAQ,IAAIj1E,EAAEi1E,QAAQrpE,KAAKunD,EAAMN,MAAMqiB,kBAAkBlxC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wCAAwC,EAAEA,CAAC,CAAtzC,GAA0zCk6D,mBAAmB,WAAW,SAASl6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAoEK,EAAhEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2G,mBAAqBl6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,2BAA2B,EAAEA,CAAC,CAA58B,GAAg9B63E,sBAAsB,WAAW,SAAS73E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUw2E,YAAY,KAAK93E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE83E,aAAan3E,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMskB,sBAAsBE,YAAYl0C,OAAO7jC,EAAE83E,YAAY13E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMskB,sBAAwB73E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEo3E,YAAYjkB,EAAMN,MAAMskB,sBAAsBE,YAAYrzC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,EAAE+3E,YAAY,WAAW,SAAS/3E,EAAEA,GAAG,GAAG6E,KAAKmzE,WAAW,GAAGnzE,KAAKqwE,mBAAmB,GAAGl1E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAU6zE,kBAAkB,GAAGn1E,EAAEsB,UAAU+zE,SAAQ,EAAGr1E,EAAEsB,UAAUgrE,eAAe,KAAKtsE,EAAEsB,UAAU22E,cAAcrkB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUyrC,IAAI,KAAK/sC,EAAEsB,UAAUyhE,QAAQnP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU42E,4BAA4BtkB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU62E,+BAA+BvkB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU8rE,qBAAoB,EAAGptE,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAU02E,WAAWpkB,EAAM8C,WAAW12D,EAAEsB,UAAU4zE,mBAAmBthB,EAAM8C,WAAW12D,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAU82E,UAAUxkB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUsrE,8BAA8B,EAAE5sE,EAAEsB,UAAU6yC,MAAMyf,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU+2E,cAAczkB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUi0E,YAAY,KAAKv1E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm1E,mBAAmBx0E,OAAOY,eAAehB,KAAKP,EAAE,sBAAsBI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEm1E,mBAAmB,MAAMn1E,EAAEq1E,SAAS10E,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEq1E,SAAS,MAAMr1E,EAAEssE,gBAAgB3rE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEssE,eAAelsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi4E,eAAet3E,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEi4E,eAAe,MAAMj4E,EAAE+sC,KAAKpsC,OAAOY,eAAehB,KAAKP,EAAE,QAAQ6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE+sC,IAAI3sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+iE,SAASpiE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+iE,SAAS,MAAM/iE,EAAEk4E,6BAA6Bv3E,OAAOY,eAAehB,KAAKP,EAAE,gCAAgCI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEk4E,6BAA6B,MAAMl4E,EAAEm4E,gCAAgCx3E,OAAOY,eAAehB,KAAKP,EAAE,mCAAmCI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEm4E,gCAAgC,MAAMn4E,EAAEotE,qBAAqBzsE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEotE,qBAAqB,MAAMptE,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEg4E,YAAYh4E,EAAEg4E,WAAWn2E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEg4E,WAAWn2E,SAAS9B,EAAE8zD,EAAMN,MAAMmI,SAAS73B,OAAO7jC,EAAEg4E,WAAWj4E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,GAAG,MAAM10D,EAAEk1E,oBAAoBl1E,EAAEk1E,mBAAmBrzE,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEk1E,mBAAmBrzE,SAAS9B,EAAE8zD,EAAMN,MAAMsP,kBAAkBh/B,OAAO7jC,EAAEk1E,mBAAmBn1E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,OAAO,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,KAAKnrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAEo4E,WAAWz3E,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAEo4E,WAAW,MAAMp4E,EAAE4sE,+BAA+BjsE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkCI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE4sE,+BAA+B,MAAM5sE,EAAEm0C,OAAOxzC,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEm0C,OAAO,MAAMn0C,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEs1E,UAAU,MAAMt1E,EAAEq4E,eAAe13E,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAEq4E,eAAe,MAAMr4E,EAAEu1E,aAAa50E,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMiQ,YAAY3/B,OAAO7jC,EAAEu1E,YAAYn1E,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmFK,EAA/EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMskB,sBAAsBE,YAAc/3E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEy0E,kBAAkBn1E,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAE20E,QAAQr1E,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAE4rE,eAAezY,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu3E,cAAcj4E,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEqsC,IAAI8mB,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqiE,QAAQ/iE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAEw3E,4BAA4Bl4E,EAAE40D,SAAS,MAAM,KAAK,GAAIl0D,EAAEy3E,+BAA+Bn4E,EAAE40D,SAAS,MAAM,KAAK,GAAIl0D,EAAE0sE,oBAAoBptE,EAAEg9D,OAAO,MAAM,KAAK,GAAIt8D,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEs3E,YAAYt3E,EAAEs3E,WAAWn2E,SAASnB,EAAEs3E,WAAW,IAAIt3E,EAAEs3E,WAAW1rE,KAAKunD,EAAMN,MAAMmI,SAASh3B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEw0E,oBAAoBx0E,EAAEw0E,mBAAmBrzE,SAASnB,EAAEw0E,mBAAmB,IAAIx0E,EAAEw0E,mBAAmB5oE,KAAKunD,EAAMN,MAAMsP,kBAAkBn+B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAE03E,UAAUp4E,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEksE,8BAA8B5sE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEyzC,MAAMn0C,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE23E,cAAcr4E,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE60E,YAAY1hB,EAAMN,MAAMiQ,YAAY9+B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0CAA0C,EAAEA,CAAC,CAA7yK,GAAizKA,CAAC,CAAj1M,GAAq1Mm6D,uBAAuB,WAAW,SAASn6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUgP,KAAKsjD,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEsQ,MAAM3P,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEsQ,MAAMlQ,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwEK,EAApEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4G,uBAAyBn6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE4P,KAAKtQ,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,+BAA+B,EAAEA,CAAC,CAAvmC,GAA2mCs4E,0BAA0B,WAAW,SAASt4E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUi6D,SAAS,KAAKv7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu7D,UAAU56D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMmI,SAAS73B,OAAO7jC,EAAEu7D,SAASn7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+kB,0BAA4Bt4E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE66D,SAAS1H,EAAMN,MAAMmI,SAASh3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAz9B,GAA69Bo6D,sBAAsB,WAAW,SAASp6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6G,sBAAwBp6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAAl9B,GAAs9Bu4E,YAAY,WAAW,SAASv4E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+0C,QAAQ30C,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMglB,YAAcv4E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAAt5B,GAA05Bw4E,gBAAgB,WAAW,SAASx4E,EAAEA,GAAG,GAAG6E,KAAK4zE,YAAY,GAAGz4E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUm3E,YAAY7kB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy4E,aAAaz4E,EAAEy4E,YAAY52E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEy4E,YAAY52E,SAAS9B,EAAE8zD,EAAMN,MAAMglB,YAAY10C,OAAO7jC,EAAEy4E,YAAY14E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMilB,gBAAkBx4E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+3E,aAAa/3E,EAAE+3E,YAAY52E,SAASnB,EAAE+3E,YAAY,IAAI/3E,EAAE+3E,YAAYnsE,KAAKunD,EAAMN,MAAMglB,YAAY7zC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAAllC,GAAslC04E,yBAAyB,WAAW,SAAS14E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUq3E,QAAQ,KAAK34E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE24E,SAASh4E,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMilB,gBAAgB30C,OAAO7jC,EAAE24E,QAAQv4E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0EK,EAAtEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmlB,yBAA2B14E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEi4E,QAAQ9kB,EAAMN,MAAMilB,gBAAgB9zC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iCAAiC,EAAEA,CAAC,CAAh+B,GAAo+Bq6D,qBAAqB,WAAW,SAASr6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8G,qBAAuBr6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAA37B,GAA+7B44E,wBAAwB,WAAW,SAAS54E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUu3E,aAAa,KAAK74E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE64E,cAAcl4E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMqlB,wBAAwBE,aAAaj1C,OAAO7jC,EAAE64E,aAAaz4E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqlB,wBAA0B54E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm4E,aAAahlB,EAAMN,MAAMqlB,wBAAwBE,aAAap0C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,EAAE84E,aAAa,WAAW,SAAS94E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUytE,SAASnb,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+uE,UAAUpuE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE+uE,UAAU3uE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsFK,EAAlFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqlB,wBAAwBE,aAAe94E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEquE,SAAS/uE,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6CAA6C,EAAEA,CAAC,CAAx6B,GAA46BA,CAAC,CAA59D,GAAg+Ds6D,iBAAiB,WAAW,SAASt6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+G,iBAAmBt6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAAn7B,GAAu7B+4E,oBAAoB,WAAW,SAAS/4E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU03E,SAAS,KAAKh5E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEg5E,UAAUr4E,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMwlB,oBAAoBE,SAASp1C,OAAO7jC,EAAEg5E,SAAS54E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwlB,oBAAsB/4E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEs4E,SAASnlB,EAAMN,MAAMwlB,oBAAoBE,SAASv0C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,EAAEi5E,SAAS,WAAW,SAASj5E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk6D,OAAO,KAAKx7D,EAAEsB,UAAUuqB,KAAK+nC,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAU+zE,SAAQ,EAAGr1E,EAAEsB,UAAUwrC,KAAK,KAAK9sC,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw7D,QAAQ76D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMsC,OAAOhyB,OAAO7jC,EAAEw7D,OAAOp7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6rB,MAAMlrB,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE6rB,MAAM,MAAM7rB,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq1E,SAAS10E,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEq1E,SAAS,MAAMr1E,EAAE8sC,MAAMnsC,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAM6L,QAAQv7B,OAAO7jC,EAAE8sC,KAAK1sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEs1E,UAAUl1E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8EK,EAA1EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwlB,oBAAoBE,SAAWj5E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE86D,OAAO3H,EAAMN,MAAMsC,OAAOnxB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmrB,KAAK7rB,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE20E,QAAQr1E,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAEosC,KAAK+mB,EAAMN,MAAM6L,QAAQ16B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qCAAqC,EAAEA,CAAC,CAAzxD,GAA6xDA,CAAC,CAA7xF,GAAiyFu6D,2BAA2B,WAAW,SAASv6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUujE,cAAc,KAAK7kE,EAAEsB,UAAU43E,mBAAkB,EAAGl5E,EAAEsB,UAAU63E,sBAAqB,EAAGn5E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6kE,eAAelkE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAE6kE,cAAczkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk5E,mBAAmBv4E,OAAOY,eAAehB,KAAKP,EAAE,sBAAsBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEk5E,mBAAmB,MAAMl5E,EAAEm5E,sBAAsBx4E,OAAOY,eAAehB,KAAKP,EAAE,yBAAyBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEm5E,sBAAsB/4E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMgH,2BAA6Bv6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmkE,cAAchR,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw4E,kBAAkBl5E,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAEy4E,qBAAqBn5E,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAAz4C,GAA64Co5E,8BAA8B,WAAW,SAASp5E,EAAEA,GAAG,GAAG6E,KAAKw0E,6BAA6B,GAAGx0E,KAAKy0E,yBAAyB,GAAGt5E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU40E,QAAQ,KAAKl2E,EAAEsB,UAAU+3E,6BAA6BzlB,EAAM8C,WAAW12D,EAAEsB,UAAUg4E,yBAAyB1lB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk2E,SAASv1E,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMrW,mBAAmBrZ,OAAO7jC,EAAEk2E,QAAQ91E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq5E,8BAA8Br5E,EAAEq5E,6BAA6Bx3E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEq5E,6BAA6Bx3E,SAAS9B,EAAE8zD,EAAMN,MAAMrW,mBAAmBrZ,OAAO7jC,EAAEq5E,6BAA6Bt5E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAEs5E,0BAA0Bt5E,EAAEs5E,yBAAyBz3E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEs5E,yBAAyBz3E,SAAS9B,EAAE8zD,EAAMN,MAAMrW,mBAAmBrZ,OAAO7jC,EAAEs5E,yBAAyBv5E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6lB,8BAAgCp5E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw1E,QAAQriB,EAAMN,MAAMrW,mBAAmBxY,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE24E,8BAA8B34E,EAAE24E,6BAA6Bx3E,SAASnB,EAAE24E,6BAA6B,IAAI34E,EAAE24E,6BAA6B/sE,KAAKunD,EAAMN,MAAMrW,mBAAmBxY,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAE44E,0BAA0B54E,EAAE44E,yBAAyBz3E,SAASnB,EAAE44E,yBAAyB,IAAI54E,EAAE44E,yBAAyBhtE,KAAKunD,EAAMN,MAAMrW,mBAAmBxY,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAApgE,GAAwgEw6D,0BAA0B,WAAW,SAASx6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUujE,cAAc,KAAK7kE,EAAEsB,UAAU43E,mBAAkB,EAAGl5E,EAAEsB,UAAUi4E,qBAAoB,EAAGv5E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6kE,eAAelkE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAE6kE,cAAczkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk5E,mBAAmBv4E,OAAOY,eAAehB,KAAKP,EAAE,sBAAsBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEk5E,mBAAmB,MAAMl5E,EAAEu5E,qBAAqB54E,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEu5E,qBAAqBn5E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMiH,0BAA4Bx6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmkE,cAAchR,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw4E,kBAAkBl5E,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAE64E,oBAAoBv5E,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,CAAC,CAAl4C,GAAs4Cw5E,6BAA6B,WAAW,SAASx5E,EAAEA,GAAG,GAAG6E,KAAK40E,4BAA4B,GAAG50E,KAAK60E,wBAAwB,GAAG15E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUq4E,kBAAkB,KAAK35E,EAAEsB,UAAUm4E,4BAA4B7lB,EAAM8C,WAAW12D,EAAEsB,UAAUo4E,wBAAwB9lB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE25E,mBAAmBh5E,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMqiB,kBAAkB/xC,OAAO7jC,EAAE25E,kBAAkBv5E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy5E,6BAA6Bz5E,EAAEy5E,4BAA4B53E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEy5E,4BAA4B53E,SAAS9B,EAAE8zD,EAAMN,MAAMqiB,kBAAkB/xC,OAAO7jC,EAAEy5E,4BAA4B15E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAE05E,yBAAyB15E,EAAE05E,wBAAwB73E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAE05E,wBAAwB73E,SAAS9B,EAAE8zD,EAAMN,MAAMqiB,kBAAkB/xC,OAAO7jC,EAAE05E,wBAAwB35E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8EK,EAA1EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMimB,6BAA+Bx5E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEi5E,kBAAkB9lB,EAAMN,MAAMqiB,kBAAkBlxC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+4E,6BAA6B/4E,EAAE+4E,4BAA4B53E,SAASnB,EAAE+4E,4BAA4B,IAAI/4E,EAAE+4E,4BAA4BntE,KAAKunD,EAAMN,MAAMqiB,kBAAkBlxC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEg5E,yBAAyBh5E,EAAEg5E,wBAAwB73E,SAASnB,EAAEg5E,wBAAwB,IAAIh5E,EAAEg5E,wBAAwBptE,KAAKunD,EAAMN,MAAMqiB,kBAAkBlxC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qCAAqC,EAAEA,CAAC,CAA1hE,GAA8hEy6D,8BAA8B,WAAW,SAASz6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUujE,cAAc,KAAK7kE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6kE,eAAelkE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAE6kE,cAAczkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkH,8BAAgCz6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmkE,cAAchR,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAA9/B,GAAkgC45E,iCAAiC,WAAW,SAAS55E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUq4E,kBAAkB,KAAK35E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE25E,mBAAmBh5E,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMqiB,kBAAkB/xC,OAAO7jC,EAAE25E,kBAAkBv5E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkFK,EAA9EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqmB,iCAAmC55E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEi5E,kBAAkB9lB,EAAMN,MAAMqiB,kBAAkBlxC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yCAAyC,EAAEA,CAAC,CAAtiC,GAA0iC06D,2BAA2B,WAAW,SAAS16D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU6yD,QAAQ,KAAKn0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm0D,SAASxzD,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMgB,QAAQ1wB,OAAO7jC,EAAEm0D,QAAQ/zD,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmH,2BAA6B16D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyzD,QAAQN,EAAMN,MAAMgB,QAAQ7vB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAA98B,GAAk9B65E,8BAA8B,WAAW,SAAS75E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU6yD,QAAQ,KAAKn0D,EAAEsB,UAAUw4E,UAAU,KAAK95E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm0D,SAASxzD,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMgB,QAAQ1wB,OAAO7jC,EAAEm0D,QAAQ/zD,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE85E,WAAWn5E,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMwmB,mBAAmBl2C,OAAO7jC,EAAE85E,UAAU15E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsmB,8BAAgC75E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyzD,QAAQN,EAAMN,MAAMgB,QAAQ7vB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEo5E,UAAUjmB,EAAMN,MAAMwmB,mBAAmBr1C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAAjtC,GAAqtC+5E,mBAAmB,WAAW,SAAS/5E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAU4zD,YAAYtB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU6zD,eAAevB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAU4tE,UAAU,KAAKlvE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAU6tE,iBAAiB,KAAKnvE,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAEk1D,aAAav0D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEk1D,aAAa,MAAMl1D,EAAEm1D,gBAAgBx0D,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEm1D,gBAAgB,MAAMn1D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkvE,WAAWvuE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEkvE,UAAU9uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmvE,kBAAkBxuE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmvE,iBAAiB/uE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEs1E,UAAUl1E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAoEK,EAAhEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwmB,mBAAqB/5E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEw0D,YAAYl1D,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEy0D,eAAen1D,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwuE,UAAUrb,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyuE,iBAAiBtb,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,2BAA2B,EAAEA,CAAC,CAA93E,GAAk4E26D,2BAA2B,WAAW,SAAS36D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4EK,EAAxEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoH,2BAA6B36D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mCAAmC,EAAEA,CAAC,CAAvvB,GAA2vBg6E,8BAA8B,WAAW,SAASh6E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU24E,iBAAiB,KAAKj6E,EAAEsB,UAAU44E,sBAAsB,KAAKl6E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi6E,kBAAkBt5E,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAM6O,gBAAgBv+B,OAAO7jC,EAAEi6E,iBAAiB75E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk6E,uBAAuBv5E,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAM6O,gBAAgBv+B,OAAO7jC,EAAEk6E,sBAAsB95E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+EK,EAA3EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMymB,8BAAgCh6E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu5E,iBAAiBpmB,EAAMN,MAAM6O,gBAAgB19B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw5E,sBAAsBrmB,EAAMN,MAAM6O,gBAAgB19B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sCAAsC,EAAEA,CAAC,CAAp0C,GAAw0Ci7D,6BAA6B,WAAW,SAASj7D,EAAEA,GAAG,GAAG6E,KAAKs1E,eAAe,GAAGn6E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU64E,eAAevmB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm6E,gBAAgBn6E,EAAEm6E,eAAet4E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEm6E,eAAet4E,SAAS9B,EAAE8zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAEm6E,eAAep6E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8EK,EAA1EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM0H,6BAA+Bj7D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEy5E,gBAAgBz5E,EAAEy5E,eAAet4E,SAASnB,EAAEy5E,eAAe,IAAIz5E,EAAEy5E,eAAe7tE,KAAKunD,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qCAAqC,EAAEA,CAAC,CAAnoC,GAAuoCo6E,gCAAgC,WAAW,SAASp6E,EAAEA,GAAG,GAAG6E,KAAKw1E,eAAe,GAAGr6E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU+4E,eAAezmB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq6E,gBAAgBr6E,EAAEq6E,eAAex4E,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEq6E,eAAex4E,SAAS9B,EAAEK,EAAEw0D,OAAO50D,EAAEq6E,eAAet6E,IAAIK,EAAEs0D,QAAQ,CAAC,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiFK,EAA7EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6mB,gCAAkCp6E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG,GAAG9zD,EAAE25E,gBAAgB35E,EAAE25E,eAAex4E,SAASnB,EAAE25E,eAAe,IAAI,IAAI,EAAEh6E,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE25E,eAAe/tE,KAAKtM,EAAE40D,eAAel0D,EAAE25E,eAAe/tE,KAAKtM,EAAE40D,UAAU,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wCAAwC,EAAEA,CAAC,CAA7qC,GAAirC46D,kBAAkB,WAAW,SAAS56D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUuQ,MAAM,KAAK7R,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6R,OAAOlR,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE6R,MAAMzR,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmEK,EAA/DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqH,kBAAoB56D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmR,MAAMgiD,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0BAA0B,EAAEA,CAAC,CAAl7B,GAAs7Bs6E,UAAU,WAAW,SAASt6E,EAAEA,GAAG,GAAG6E,KAAKyqE,WAAW,GAAGtvE,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUqP,KAAK,GAAG3Q,EAAEsB,UAAUszC,OAAO,GAAG50C,EAAEsB,UAAU4hE,SAAS,EAAEljE,EAAEsB,UAAUi5E,YAAY3mB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUkuE,SAAS,KAAKxvE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAUmuE,OAAO,KAAKzvE,EAAEsB,UAAUouE,UAAU,KAAK1vE,EAAEsB,UAAUquE,QAAQ,KAAK3vE,EAAEsB,UAAUsuE,UAAU,KAAK5vE,EAAEsB,UAAUk5E,oBAAoB,EAAEx6E,EAAEsB,UAAUm5E,iBAAiB,EAAEz6E,EAAEsB,UAAU+zE,SAAQ,EAAGr1E,EAAEsB,UAAU6tE,iBAAiB,KAAKnvE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAUwuE,OAAO,KAAK9vE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUyuE,UAAU,EAAE/vE,EAAEsB,UAAU0uE,WAAW,EAAEhwE,EAAEsB,UAAU2uE,UAAUrc,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU4uE,eAAe,KAAKlwE,EAAEsB,UAAUguE,WAAW1b,EAAM8C,WAAW12D,EAAEsB,UAAU6uE,SAAS,KAAKnwE,EAAEsB,UAAUo5E,YAAY,EAAE16E,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUoK,SAASkoD,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU8uE,YAAY,KAAKpwE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2Q,MAAMhQ,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE2Q,MAAM,MAAM3Q,EAAE40C,QAAQj0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE40C,QAAQ,MAAM50C,EAAEkjE,UAAUviE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIA,OAAOx0D,EAAEkjE,UAAU,MAAMljE,EAAEu6E,aAAa55E,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEu6E,aAAa,MAAMv6E,EAAEwvE,UAAU7uE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEwvE,SAASpvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyvE,QAAQ9uE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEyvE,OAAOrvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0vE,WAAW/uE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE0vE,UAAUtvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2vE,SAAShvE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE2vE,QAAQvvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4vE,WAAWjvE,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE4vE,UAAUxvE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw6E,qBAAqB75E,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEw6E,qBAAqB,MAAMx6E,EAAEy6E,kBAAkB95E,OAAOY,eAAehB,KAAKP,EAAE,qBAAqBI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAEy6E,kBAAkB,MAAMz6E,EAAEq1E,SAAS10E,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,KAAKwI,KAAKh9D,EAAEq1E,SAAS,MAAMr1E,EAAEmvE,kBAAkBxuE,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmvE,iBAAiB/uE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE8vE,QAAQnvE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAE8vE,OAAO1vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,KAAKnrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE+vE,WAAWpvE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE+vE,WAAW,MAAM/vE,EAAEgwE,YAAYrvE,OAAOY,eAAehB,KAAKP,EAAE,eAAeI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAEgwE,YAAY,MAAMhwE,EAAEiwE,WAAWtvE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAEiwE,WAAW,MAAMjwE,EAAEkwE,gBAAgBvvE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEkwE,eAAe9vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAEsvE,YAAYtvE,EAAEsvE,WAAWztE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEsvE,WAAWztE,SAAS9B,EAAE8zD,EAAMN,MAAM8c,UAAUxsC,OAAO7jC,EAAEsvE,WAAWvvE,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,OAAO,MAAM10D,EAAEmwE,UAAUxvE,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEmwE,SAAS/vE,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE06E,aAAa/5E,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE06E,aAAa,MAAM16E,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEs1E,UAAU,MAAMt1E,EAAE0L,UAAU/K,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAE0L,UAAU,MAAM1L,EAAEowE,aAAazvE,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAEowE,YAAYhwE,EAAEo0D,OAAO,KAAKC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2DK,EAAvDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+mB,UAAYt6E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEiQ,KAAK3Q,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEk0C,OAAO50C,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEwiE,SAASljE,EAAEw0D,SAAS,MAAM,KAAK,EAAG9zD,EAAE65E,YAAYv6E,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE8uE,SAAS3b,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+uE,OAAO5b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgvE,UAAU7b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEivE,QAAQ9b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEkvE,UAAU/b,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE85E,oBAAoBx6E,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAE+5E,iBAAiBz6E,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAE20E,QAAQr1E,EAAEg9D,OAAO,MAAM,KAAK,GAAIt8D,EAAEyuE,iBAAiBtb,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEovE,OAAOjc,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAEqvE,UAAU/vE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEsvE,WAAWhwE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEuvE,UAAUjwE,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEwvE,eAAerc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE4uE,YAAY5uE,EAAE4uE,WAAWztE,SAASnB,EAAE4uE,WAAW,IAAI5uE,EAAE4uE,WAAWhjE,KAAKunD,EAAMN,MAAM8c,UAAU3rC,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEyvE,SAAStc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEg6E,YAAY16E,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEgL,SAAS1L,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE0vE,YAAYvc,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kBAAkB,EAAEA,CAAC,CAAl9L,GAAs9L26E,qBAAqB,WAAW,SAAS36E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUs5E,UAAU,KAAK56E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE46E,WAAWj6E,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAM+mB,UAAUz2C,OAAO7jC,EAAE46E,UAAUx6E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMonB,qBAAuB36E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEk6E,UAAU/mB,EAAMN,MAAM+mB,UAAU51C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAt9B,GAA09B66D,qBAAqB,WAAW,SAAS76D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU4wE,WAAW,KAAKlyE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkyE,YAAYvxE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM4K,WAAWt6B,OAAO7jC,EAAEkyE,WAAW9xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsH,qBAAuB76D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwxE,WAAWre,EAAMN,MAAM4K,WAAWz5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAv9B,GAA29B66E,aAAa,WAAW,SAAS76E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA2Z,IAAIK,EAAE,OAAhaJ,EAAEsB,UAAU4wE,WAAW,KAAKlyE,EAAEsB,UAAUw5E,aAAa,KAAK96E,EAAEsB,UAAUy5E,cAAc,KAAK/6E,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUwwE,yBAAyB,KAAK9xE,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAUu1D,SAAS,KAAK72D,EAAEsB,UAAU05E,QAAQ,KAAKh7E,EAAEsB,UAAU25E,iBAAiB,KAAKj7E,EAAEsB,UAAUywE,eAAe,KAAK/xE,EAAEsB,UAAU81E,uBAAuB,KAAKp3E,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU0wE,eAAc,EAAgBrxE,OAAOC,eAAeZ,EAAEsB,UAAU,OAAO,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,eAAe,kBAAkB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEkyE,YAAYvxE,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM4K,WAAWt6B,OAAO7jC,EAAEkyE,WAAW9xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE86E,cAAcn6E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAE86E,aAAa16E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+6E,eAAep6E,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAE+6E,cAAc36E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8xE,0BAA0BnxE,OAAOY,eAAehB,KAAKP,EAAE,6BAA6B6zD,EAAMN,MAAM0e,2BAA2BpuC,OAAO7jC,EAAE8xE,yBAAyB1xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAE62D,UAAUl2D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE62D,SAASz2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEg7E,SAASr6E,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAM6L,QAAQv7B,OAAO7jC,EAAEg7E,QAAQ56E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi7E,kBAAkBt6E,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEi7E,iBAAiB76E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+xE,gBAAgBpxE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAE+xE,eAAe3xE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEo3E,wBAAwBz2E,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAMqJ,cAAc/4B,OAAO7jC,EAAEo3E,uBAAuBh3E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEs1E,UAAU,MAAMt1E,EAAEgyE,eAAerxE,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,KAAKwI,KAAKh9D,EAAEgyE,eAAe5xE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsnB,aAAe76E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEwxE,WAAWre,EAAMN,MAAM4K,WAAWz5B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEo6E,aAAajnB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq6E,cAAclnB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEoxE,yBAAyBje,EAAMN,MAAM0e,2BAA2BvtC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAEm2D,SAAShD,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEs6E,QAAQnnB,EAAMN,MAAM6L,QAAQ16B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu6E,iBAAiBpnB,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEqxE,eAAele,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE02E,uBAAuBvjB,EAAMN,MAAMqJ,cAAcl4B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEsxE,cAAchyE,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAA3mH,GAA+mHk7E,wBAAwB,WAAW,SAASl7E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU65E,aAAa,KAAKn7E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEm7E,cAAcx6E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMsnB,aAAah3C,OAAO7jC,EAAEm7E,aAAa/6E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2nB,wBAA0Bl7E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEy6E,aAAatnB,EAAMN,MAAMsnB,aAAan2C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,CAAC,CAAj/B,GAAq/B86D,6BAA6B,WAAW,SAAS96D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUooB,MAAMkqC,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUqoB,IAAIiqC,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0pB,OAAO/oB,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE0pB,OAAO,MAAM1pB,EAAE2pB,KAAKhpB,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE2pB,KAAKvpB,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8EK,EAA1EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMuH,6BAA+B96D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgpB,MAAM1pB,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEipB,IAAI3pB,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qCAAqC,EAAEA,CAAC,CAAhzC,GAAozCo7E,gCAAgC,WAAW,SAASp7E,EAAEA,GAAG,GAAG6E,KAAKw2E,KAAK,GAAGr7E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU+5E,KAAKznB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq7E,MAAMr7E,EAAEq7E,KAAKx5E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEq7E,KAAKx5E,SAAS9B,EAAE8zD,EAAMN,MAAM+nB,aAAaz3C,OAAO7jC,EAAEq7E,KAAKt7E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiFK,EAA7EJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6nB,gCAAkCp7E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE26E,MAAM36E,EAAE26E,KAAKx5E,SAASnB,EAAE26E,KAAK,IAAI36E,EAAE26E,KAAK/uE,KAAKunD,EAAMN,MAAM+nB,aAAa52C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wCAAwC,EAAEA,CAAC,CAAziC,GAA6iC+6D,qBAAqB,WAAW,SAAS/6D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUi6E,MAAM,KAAKv7E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu7E,OAAO56E,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAM8I,MAAMx4B,OAAO7jC,EAAEu7E,MAAMn7E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwH,qBAAuB/6D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE66E,MAAM1nB,EAAMN,MAAM8I,MAAM33B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAp7B,GAAw7Bs7E,aAAa,WAAW,SAASt7E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUi6E,MAAM,KAAKv7E,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUk6E,aAAa,KAAKx7E,EAAEsB,UAAUoK,SAASkoD,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUm6E,UAAU,KAAKz7E,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEu7E,OAAO56E,OAAOY,eAAehB,KAAKP,EAAE,UAAU6zD,EAAMN,MAAM8I,MAAMx4B,OAAO7jC,EAAEu7E,MAAMn7E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw7E,cAAc76E,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEw7E,aAAap7E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0L,UAAU/K,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE0L,UAAU,MAAM1L,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEs1E,UAAU,MAAMt1E,EAAEy7E,WAAW96E,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEy7E,UAAUr7E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA8DK,EAA1DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+nB,aAAet7E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE66E,MAAM1nB,EAAMN,MAAM8I,MAAM33B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE86E,aAAa3nB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgL,SAAS1L,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE+6E,UAAU5nB,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,qBAAqB,EAAEA,CAAC,CAAttD,GAA0tD07E,wBAAwB,WAAW,SAAS17E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUswE,IAAI,KAAK5xE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE4xE,KAAKjxE,OAAOY,eAAehB,KAAKP,EAAE,QAAQ6zD,EAAMN,MAAM+nB,aAAaz3C,OAAO7jC,EAAE4xE,IAAIxxE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAyEK,EAArEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMmoB,wBAA0B17E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEkxE,IAAI/d,EAAMN,MAAM+nB,aAAa52C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,gCAAgC,EAAEA,CAAC,CAAp8B,GAAw8Bg7D,sBAAsB,WAAW,SAASh7D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU41E,QAAQ,KAAKl3E,EAAEsB,UAAUooB,MAAMkqC,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUqoB,IAAIiqC,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk3E,SAASv2E,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAEk3E,QAAQ92E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0pB,OAAO/oB,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE0pB,OAAO,MAAM1pB,EAAE2pB,KAAKhpB,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE2pB,KAAKvpB,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMyH,sBAAwBh7D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw2E,QAAQrjB,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEgpB,MAAM1pB,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEipB,IAAI3pB,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAApxC,GAAwxC27E,yBAAyB,WAAW,SAAS37E,EAAEA,GAAG,GAAG6E,KAAKw2E,KAAK,GAAGr7E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAU41E,QAAQ,KAAKl3E,EAAEsB,UAAU+5E,KAAKznB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk3E,SAASv2E,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAEk3E,QAAQ92E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq7E,MAAMr7E,EAAEq7E,KAAKx5E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEq7E,KAAKx5E,SAAS9B,EAAE8zD,EAAMN,MAAM+nB,aAAaz3C,OAAO7jC,EAAEq7E,KAAKt7E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0EK,EAAtEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMooB,yBAA2B37E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw2E,QAAQrjB,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE26E,MAAM36E,EAAE26E,KAAKx5E,SAASnB,EAAE26E,KAAK,IAAI36E,EAAE26E,KAAK/uE,KAAKunD,EAAMN,MAAM+nB,aAAa52C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iCAAiC,EAAEA,CAAC,CAAlvC,GAAsvCk7D,uBAAuB,WAAW,SAASl7D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUk1D,UAAU,KAAKx2D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAM6H,YAAYv3B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw2D,WAAW71D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEw2D,UAAUp2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwEK,EAApEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2H,uBAAyBl7D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAM6H,YAAY12B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE81D,UAAU3C,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,+BAA+B,EAAEA,CAAC,CAAp9B,GAAw9B47E,0BAA0B,WAAW,SAAS57E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU65D,OAAO,KAAKn7D,EAAEsB,UAAUi4D,eAAe,KAAKv5D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEm7D,QAAQx6D,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMuI,eAAej4B,OAAO7jC,EAAEm7D,OAAO/6D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu5D,gBAAgB54D,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMqoB,0BAA0BC,eAAeh4C,OAAO7jC,EAAEu5D,eAAen5D,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA2EK,EAAvEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqoB,0BAA4B57E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEy6D,OAAOtH,EAAMN,MAAMuI,eAAep3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE64D,eAAe1F,EAAMN,MAAMqoB,0BAA0BC,eAAen3C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,kCAAkC,EAAEA,EAAE67E,eAAe,WAAW,SAAS77E,EAAEA,GAAG,GAAG6E,KAAKqwE,mBAAmB,GAAGrwE,KAAKi3E,wBAAwB,GAAGj3E,KAAKk3E,qBAAqB,GAAGl3E,KAAKm3E,uBAAuB,GAAGh8E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUk1D,UAAU,KAAKx2D,EAAEsB,UAAU26E,kBAAkB,GAAGj8E,EAAEsB,UAAU+zE,SAAQ,EAAGr1E,EAAEsB,UAAU46E,eAAe,KAAKl8E,EAAEsB,UAAU22E,cAAcrkB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUyrC,IAAI,KAAK/sC,EAAEsB,UAAUyhE,QAAQnP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAU8rE,qBAAoB,EAAGptE,EAAEsB,UAAUmqE,eAAe,KAAKzrE,EAAEsB,UAAUirE,gBAAgB,KAAKvsE,EAAEsB,UAAU4zE,mBAAmBthB,EAAM8C,WAAW12D,EAAEsB,UAAUugE,KAAK,GAAG7hE,EAAEsB,UAAU82E,UAAUxkB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUsrE,8BAA8B,EAAE5sE,EAAEsB,UAAU6yC,MAAMyf,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUg0E,SAAS1hB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUw6E,wBAAwBloB,EAAM8C,WAAW12D,EAAEsB,UAAUy6E,qBAAqBnoB,EAAM8C,WAAW12D,EAAEsB,UAAU06E,uBAAuBpoB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEw2D,WAAW71D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEw2D,UAAUp2D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi8E,mBAAmBt7E,OAAOY,eAAehB,KAAKP,EAAE,sBAAsBI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEi8E,mBAAmB,MAAMj8E,EAAEq1E,SAAS10E,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEq1E,SAAS,MAAMr1E,EAAEk8E,gBAAgBv7E,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEk8E,eAAe97E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi4E,eAAet3E,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEi4E,eAAe,MAAMj4E,EAAE+sC,KAAKpsC,OAAOY,eAAehB,KAAKP,EAAE,QAAQ6zD,EAAMN,MAAMyD,IAAInzB,OAAO7jC,EAAE+sC,IAAI3sC,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+iE,SAASpiE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+iE,SAAS,MAAM/iE,EAAEotE,qBAAqBzsE,OAAOY,eAAehB,KAAKP,EAAE,wBAAwBI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEotE,qBAAqB,MAAMptE,EAAEyrE,gBAAgB9qE,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEyrE,eAAerrE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEusE,iBAAiB5rE,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM+U,SAASzkC,OAAO7jC,EAAEusE,gBAAgBnsE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk1E,oBAAoBl1E,EAAEk1E,mBAAmBrzE,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEk1E,mBAAmBrzE,SAAS9B,EAAE8zD,EAAMN,MAAMsP,kBAAkBh/B,OAAO7jC,EAAEk1E,mBAAmBn1E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAE6hE,MAAMlhE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE6hE,MAAM,MAAM7hE,EAAEo4E,WAAWz3E,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKyH,MAAMj8D,EAAEo4E,WAAW,MAAMp4E,EAAE4sE,+BAA+BjsE,OAAOY,eAAehB,KAAKP,EAAE,kCAAkCI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAE4sE,+BAA+B,MAAM5sE,EAAEm0C,OAAOxzC,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEm0C,OAAO,MAAMn0C,EAAEs1E,UAAU30E,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEs1E,UAAU,MAAMt1E,EAAE87E,yBAAyB97E,EAAE87E,wBAAwBj6E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAE87E,wBAAwBj6E,SAAS9B,EAAE8zD,EAAMN,MAAM4oB,uBAAuBt4C,OAAO7jC,EAAE87E,wBAAwB/7E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,GAAG,MAAM10D,EAAE+7E,sBAAsB/7E,EAAE+7E,qBAAqBl6E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAE+7E,qBAAqBl6E,SAAS9B,EAAE8zD,EAAMN,MAAM6oB,oBAAoBv4C,OAAO7jC,EAAE+7E,qBAAqBh8E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,GAAG,MAAM10D,EAAEg8E,wBAAwBh8E,EAAEg8E,uBAAuBn6E,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEg8E,uBAAuBn6E,SAAS9B,EAAE8zD,EAAMN,MAAM8oB,sBAAsBx4C,OAAO7jC,EAAEg8E,uBAAuBj8E,GAAGK,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0FK,EAAtFJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqoB,0BAA0BC,eAAiB77E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE81D,UAAU3C,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu7E,kBAAkBj8E,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAE20E,QAAQr1E,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAEw7E,eAAeroB,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu3E,cAAcj4E,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEqsC,IAAI8mB,EAAMN,MAAMyD,IAAItyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqiE,QAAQ/iE,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE0sE,oBAAoBptE,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAE+qE,eAAe5X,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE6rE,gBAAgB1Y,EAAMN,MAAM+U,SAAS5jC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEw0E,oBAAoBx0E,EAAEw0E,mBAAmBrzE,SAASnB,EAAEw0E,mBAAmB,IAAIx0E,EAAEw0E,mBAAmB5oE,KAAKunD,EAAMN,MAAMsP,kBAAkBn+B,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEmhE,KAAK7hE,EAAEqpB,SAAS,MAAM,KAAK,GAAI3oB,EAAE03E,UAAUp4E,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEksE,8BAA8B5sE,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAEyzC,MAAMn0C,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE40E,SAASt1E,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAEo7E,yBAAyBp7E,EAAEo7E,wBAAwBj6E,SAASnB,EAAEo7E,wBAAwB,IAAIp7E,EAAEo7E,wBAAwBxvE,KAAKunD,EAAMN,MAAM4oB,uBAAuBz3C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEq7E,sBAAsBr7E,EAAEq7E,qBAAqBl6E,SAASnB,EAAEq7E,qBAAqB,IAAIr7E,EAAEq7E,qBAAqBzvE,KAAKunD,EAAMN,MAAM6oB,oBAAoB13C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,GAAI9zD,EAAEs7E,wBAAwBt7E,EAAEs7E,uBAAuBn6E,SAASnB,EAAEs7E,uBAAuB,IAAIt7E,EAAEs7E,uBAAuB1vE,KAAKunD,EAAMN,MAAM8oB,sBAAsB33C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iDAAiD,EAAEA,CAAC,CAA13K,GAA83KA,CAAC,CAAt8M,GAA08Mm8E,uBAAuB,WAAW,SAASn8E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUitE,QAAQ,KAAKvuE,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEuuE,SAAS5tE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEuuE,QAAQnuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+0C,QAAQ30C,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAwEK,EAApEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4oB,uBAAyBn8E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE6tE,QAAQ1a,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,+BAA+B,EAAEA,CAAC,CAAl6B,GAAs6Bo8E,oBAAoB,WAAW,SAASp8E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUitE,QAAQ,KAAKvuE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEuuE,SAAS5tE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEuuE,QAAQnuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6oB,oBAAsBp8E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6tE,QAAQ1a,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,CAAC,CAAj8B,GAAq8Bq8E,sBAAsB,WAAW,SAASr8E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUitE,QAAQ,KAAKvuE,EAAEsB,UAAUyzC,OAAO6e,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEuuE,SAAS5tE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEuuE,QAAQnuE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+0C,QAAQp0C,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE+0C,QAAQ30C,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8oB,sBAAwBr8E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6tE,QAAQ1a,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEq0C,OAAO/0C,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAAvnC,GAA2nCs8E,SAAS,WAAW,SAASt8E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA24B,IAAIK,EAAE,OAAh5BJ,EAAEsB,UAAUy2D,SAAS,KAAK/3D,EAAEsB,UAAU02D,gBAAgB,KAAKh4D,EAAEsB,UAAU22D,kBAAkB,KAAKj4D,EAAEsB,UAAUi7E,4BAA4B,KAAKv8E,EAAEsB,UAAU42D,gBAAgB,KAAKl4D,EAAEsB,UAAUk7E,2BAA2B,KAAKx8E,EAAEsB,UAAU+2D,wBAAwB,KAAKr4D,EAAEsB,UAAUg3D,wBAAwB,KAAKt4D,EAAEsB,UAAUi3D,cAAc,KAAKv4D,EAAEsB,UAAUk3D,kBAAkB,KAAKx4D,EAAEsB,UAAUm3D,sBAAsB,KAAKz4D,EAAEsB,UAAUo3D,gBAAgB,KAAK14D,EAAEsB,UAAUq3D,YAAY,KAAK34D,EAAEsB,UAAUs3D,sBAAsB,KAAK54D,EAAEsB,UAAUu3D,qBAAqB,KAAK74D,EAAEsB,UAAUw3D,yBAAyB,KAAK94D,EAAEsB,UAAUy3D,sBAAsB,KAAK/4D,EAAEsB,UAAU03D,sBAAsB,KAAKh5D,EAAEsB,UAAU23D,aAAa,KAAKj5D,EAAEsB,UAAU43D,gBAAgB,KAAKl5D,EAAEsB,UAAU63D,wBAAwB,KAAKn5D,EAAEsB,UAAU83D,gBAAgB,KAAKp5D,EAAEsB,UAAU+3D,iBAAiB,KAAKr5D,EAAEsB,UAAUg4D,wBAAwB,KAAKt5D,EAAEsB,UAAUi4D,eAAe,KAAkB54D,OAAOC,eAAeZ,EAAEsB,UAAU,WAAW,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,WAAW,kBAAkB,oBAAoB,8BAA8B,kBAAkB,6BAA6B,0BAA0B,0BAA0B,gBAAgB,oBAAoB,wBAAwB,kBAAkB,cAAc,wBAAwB,uBAAuB,2BAA2B,wBAAwB,wBAAwB,eAAe,kBAAkB,0BAA0B,kBAAkB,mBAAmB,0BAA0B,mBAAmB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE+3D,UAAUp3D,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMqI,iBAAiB/3B,OAAO7jC,EAAE+3D,SAAS33D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEg4D,iBAAiBr3D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMsgB,wBAAwBhwC,OAAO7jC,EAAEg4D,gBAAgB53D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEi4D,mBAAmBt3D,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMqhB,0BAA0B/wC,OAAO7jC,EAAEi4D,kBAAkB73D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEk4D,iBAAiBv3D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMwhB,wBAAwBlxC,OAAO7jC,EAAEk4D,gBAAgB93D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu8E,6BAA6B57E,OAAOY,eAAehB,KAAKP,EAAE,gCAAgC6zD,EAAMN,MAAMiiB,4BAA4B3xC,OAAO7jC,EAAEu8E,4BAA4Bn8E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw8E,4BAA4B77E,OAAOY,eAAehB,KAAKP,EAAE,+BAA+B6zD,EAAMN,MAAMmiB,2BAA2B7xC,OAAO7jC,EAAEw8E,2BAA2Bp8E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEq4D,yBAAyB13D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAMokB,gCAAgC9zC,OAAO7jC,EAAEq4D,wBAAwBj4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEs4D,yBAAyB33D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAMqkB,gCAAgC/zC,OAAO7jC,EAAEs4D,wBAAwBl4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEu4D,eAAe53D,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMskB,sBAAsBh0C,OAAO7jC,EAAEu4D,cAAcn4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEw4D,mBAAmB73D,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAM+kB,0BAA0Bz0C,OAAO7jC,EAAEw4D,kBAAkBp4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy4D,uBAAuB93D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMmlB,yBAAyB70C,OAAO7jC,EAAEy4D,sBAAsBr4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE04D,iBAAiB/3D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMqlB,wBAAwB/0C,OAAO7jC,EAAE04D,gBAAgBt4D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE24D,aAAah4D,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMwlB,oBAAoBl1C,OAAO7jC,EAAE24D,YAAYv4D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE44D,uBAAuBj4D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAM6lB,8BAA8Bv1C,OAAO7jC,EAAE44D,sBAAsBx4D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE64D,sBAAsBl4D,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAMimB,6BAA6B31C,OAAO7jC,EAAE64D,qBAAqBz4D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE84D,0BAA0Bn4D,OAAOY,eAAehB,KAAKP,EAAE,6BAA6B6zD,EAAMN,MAAMqmB,iCAAiC/1C,OAAO7jC,EAAE84D,yBAAyB14D,EAAEo0D,OAAO,KAAKC,QAAQC,SAAS,MAAM10D,EAAE+4D,uBAAuBp4D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMsmB,8BAA8Bh2C,OAAO7jC,EAAE+4D,sBAAsB34D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEg5D,uBAAuBr4D,OAAOY,eAAehB,KAAKP,EAAE,0BAA0B6zD,EAAMN,MAAMymB,8BAA8Bn2C,OAAO7jC,EAAEg5D,sBAAsB54D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEi5D,cAAct4D,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMonB,qBAAqB92C,OAAO7jC,EAAEi5D,aAAa74D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEk5D,iBAAiBv4D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAM2nB,wBAAwBr3C,OAAO7jC,EAAEk5D,gBAAgB94D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEm5D,yBAAyBx4D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAM6nB,gCAAgCv3C,OAAO7jC,EAAEm5D,wBAAwB/4D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEo5D,iBAAiBz4D,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMmoB,wBAAwB73C,OAAO7jC,EAAEo5D,gBAAgBh5D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEq5D,kBAAkB14D,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMooB,yBAAyB93C,OAAO7jC,EAAEq5D,iBAAiBj5D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEs5D,yBAAyB34D,OAAOY,eAAehB,KAAKP,EAAE,4BAA4B6zD,EAAMN,MAAM6mB,gCAAgCv2C,OAAO7jC,EAAEs5D,wBAAwBl5D,EAAEo0D,OAAO,MAAMC,QAAQC,SAAS,MAAM10D,EAAEu5D,gBAAgB54D,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMqoB,0BAA0B/3C,OAAO7jC,EAAEu5D,eAAen5D,EAAEo0D,OAAO,MAAMC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0DK,EAAtDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+oB,SAAWt8E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEq3D,SAASlE,EAAMN,MAAMqI,iBAAiBl3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEs3D,gBAAgBnE,EAAMN,MAAMsgB,wBAAwBnvC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEu3D,kBAAkBpE,EAAMN,MAAMqhB,0BAA0BlwC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE67E,4BAA4B1oB,EAAMN,MAAMiiB,4BAA4B9wC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEw3D,gBAAgBrE,EAAMN,MAAMwhB,wBAAwBrwC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE87E,2BAA2B3oB,EAAMN,MAAMmiB,2BAA2BhxC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE23D,wBAAwBxE,EAAMN,MAAMokB,gCAAgCjzC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE43D,wBAAwBzE,EAAMN,MAAMqkB,gCAAgClzC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE63D,cAAc1E,EAAMN,MAAMskB,sBAAsBnzC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE83D,kBAAkB3E,EAAMN,MAAM+kB,0BAA0B5zC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAE+3D,sBAAsB5E,EAAMN,MAAMmlB,yBAAyBh0C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEg4D,gBAAgB7E,EAAMN,MAAMqlB,wBAAwBl0C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEi4D,YAAY9E,EAAMN,MAAMwlB,oBAAoBr0C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEk4D,sBAAsB/E,EAAMN,MAAM6lB,8BAA8B10C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEm4D,qBAAqBhF,EAAMN,MAAMimB,6BAA6B90C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,GAAI9zD,EAAEo4D,yBAAyBjF,EAAMN,MAAMqmB,iCAAiCl1C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAEq4D,sBAAsBlF,EAAMN,MAAMsmB,8BAA8Bn1C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAEs4D,sBAAsBnF,EAAMN,MAAMymB,8BAA8Bt1C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAEu4D,aAAapF,EAAMN,MAAMonB,qBAAqBj2C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAEw4D,gBAAgBrF,EAAMN,MAAM2nB,wBAAwBx2C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAEy4D,wBAAwBtF,EAAMN,MAAM6nB,gCAAgC12C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAE04D,gBAAgBvF,EAAMN,MAAMmoB,wBAAwBh3C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAE24D,iBAAiBxF,EAAMN,MAAMooB,yBAAyBj3C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAE44D,wBAAwBzF,EAAMN,MAAM6mB,gCAAgC11C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,IAAK9zD,EAAE64D,eAAe1F,EAAMN,MAAMqoB,0BAA0Bl3C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iBAAiB,EAAEA,CAAC,CAA/rR,GAAmsR23D,oBAAoB,WAAW,SAAS33D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUkyE,4BAA4B,EAAExzE,EAAEsB,UAAUmyE,KAAK7f,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEwzE,6BAA6B7yE,OAAOY,eAAehB,KAAKP,EAAE,gCAAgCI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEwzE,6BAA6B,MAAMxzE,EAAEyzE,MAAM9yE,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEyzE,MAAMrzE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMoE,oBAAsB33D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE8yE,4BAA4BxzE,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE+yE,KAAKzzE,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,CAAC,CAA56B,GAAg7Bu1D,iBAAiB,WAAW,SAASv1D,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUm7E,YAAY,SAAS18E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAUo7E,YAAY,SAAS38E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAUq7E,YAAY,SAAS58E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAUs7E,aAAa,SAAS78E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBN,OAAOC,eAAeZ,EAAEsB,UAAUu7E,cAAc,SAAS98E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,kBAAkBjB,CAAC,CAA5iC,GAAgjC88E,cAAc,WAAW,SAAS98E,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUy7E,cAAc,SAASh9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,kBAAkBN,OAAOC,eAAeZ,EAAEsB,UAAU07E,cAAc,SAASj9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,kBAAkBN,OAAOC,eAAeZ,EAAEsB,UAAUmkE,eAAe,SAAS1lE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAUikE,aAAa,SAASxlE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBN,OAAOC,eAAeZ,EAAEsB,UAAU27E,kBAAkB,SAASl9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,sBAAsBN,OAAOC,eAAeZ,EAAEsB,UAAU47E,iBAAiB,SAASn9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,qBAAqBN,OAAOC,eAAeZ,EAAEsB,UAAU67E,YAAY,SAASp9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAU87E,eAAe,SAASr9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAU+7E,YAAY,SAASt9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAUqhB,kBAAkB,SAAS5iB,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,sBAAsBN,OAAOC,eAAeZ,EAAEsB,UAAUg8E,iBAAiB,SAASv9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,qBAAqBN,OAAOC,eAAeZ,EAAEsB,UAAUohB,eAAe,SAAS3iB,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAUi8E,uBAAuB,SAASx9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,2BAA2BN,OAAOC,eAAeZ,EAAEsB,UAAUk8E,yBAAyB,SAASz9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,6BAA6BN,OAAOC,eAAeZ,EAAEsB,UAAUm8E,kBAAkB,SAAS19E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,sBAAsBN,OAAOC,eAAeZ,EAAEsB,UAAUo8E,sBAAsB,SAAS39E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,0BAA0BjB,CAAC,CAAv9F,GAA29F29E,YAAY,WAAW,SAAS39E,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUs8E,WAAW,SAAS79E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAeN,OAAOC,eAAeZ,EAAEsB,UAAUwqE,WAAW,SAAS/rE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAeN,OAAOC,eAAeZ,EAAEsB,UAAUu8E,WAAW,SAAS99E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAeN,OAAOC,eAAeZ,EAAEsB,UAAUw8E,cAAc,SAAS/9E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,kBAAkBN,OAAOC,eAAeZ,EAAEsB,UAAUy8E,eAAe,SAASh+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAU08E,YAAY,SAASj+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAUykE,aAAa,SAAShmE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBN,OAAOC,eAAeZ,EAAEsB,UAAU0kE,eAAe,SAASjmE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBjB,CAAC,CAAjjD,GAAqjDi+E,cAAc,WAAW,SAASj+E,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUkhD,OAAO,SAASziD,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,WAAWjB,CAAC,CAA7W,GAAiX+1D,eAAe,WAAW,SAAS/1D,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAU48E,eAAe,SAASn+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAU68E,iBAAiB,SAASp+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,qBAAqBN,OAAOC,eAAeZ,EAAEsB,UAAUglE,gBAAgB,SAASvmE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,oBAAoBN,OAAOC,eAAeZ,EAAEsB,UAAU88E,kBAAkB,SAASr+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,sBAAsBjB,CAAC,CAAx3B,GAA43Bq+E,gBAAgB,WAAW,SAASr+E,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUg9E,eAAe,SAASv+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAUi9E,aAAa,SAASx+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBN,OAAOC,eAAeZ,EAAEsB,UAAUk9E,eAAe,SAASz+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAUm9E,gBAAgB,SAAS1+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,oBAAoBjB,CAAC,CAA54B,GAAg5B0+E,qBAAqB,WAAW,SAAS1+E,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUq9E,eAAe,SAAS5+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAUs9E,eAAe,SAAS7+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAUu9E,mBAAmB,SAAS9+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,uBAAuBN,OAAOC,eAAeZ,EAAEsB,UAAUw9E,gBAAgB,SAAS/+E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,oBAAoBN,OAAOC,eAAeZ,EAAEsB,UAAUy9E,wBAAwB,SAASh/E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,4BAA4BN,OAAOC,eAAeZ,EAAEsB,UAAU62D,oBAAoB,SAASp4D,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,wBAAwBN,OAAOC,eAAeZ,EAAEsB,UAAU02D,gBAAgB,SAASj4D,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,oBAAoBN,OAAOC,eAAeZ,EAAEsB,UAAU09E,wBAAwB,SAASj/E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,4BAA4BN,OAAOC,eAAeZ,EAAEsB,UAAU29E,eAAe,SAASl/E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAUykE,aAAa,SAAShmE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBN,OAAOC,eAAeZ,EAAEsB,UAAU0kE,eAAe,SAASjmE,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,mBAAmBN,OAAOC,eAAeZ,EAAEsB,UAAU49E,aAAa,SAASn/E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBjB,CAAC,CAA5yE,GAAgzEm/E,cAAc,WAAW,SAASn/E,EAAEA,GAAG,GAAG6E,KAAK0U,WAAW,GAAGvZ,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUiY,WAAWq6C,EAAM8C,WAAW12D,EAAEsB,UAAU89E,eAAexrB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEuZ,YAAYvZ,EAAEuZ,WAAW1X,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAEuZ,WAAW1X,SAAS9B,EAAEK,EAAE01D,MAAM91D,EAAEuZ,WAAWxZ,IAAIK,EAAEs0D,QAAQ,CAAC,OAAO,MAAM10D,EAAEo/E,gBAAgBz+E,OAAOY,eAAehB,KAAKP,EAAE,mBAAmBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEo/E,gBAAgBh/E,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM4rB,cAAgBn/E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAG,GAAGK,EAAE6Y,YAAY7Y,EAAE6Y,WAAW1X,SAASnB,EAAE6Y,WAAW,IAAI,IAAI,EAAElZ,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAE6Y,WAAWjN,KAAKtM,EAAE81D,cAAcp1D,EAAE6Y,WAAWjN,KAAKtM,EAAE81D,SAAS,MAAM,KAAK,EAAGp1D,EAAE0+E,eAAep/E,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAAtlC,GAA0lCq/E,eAAe,WAAW,SAASr/E,EAAEA,GAAG,GAAG6E,KAAKy6E,eAAe,GAAGt/E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUqP,KAAK,GAAG3Q,EAAEsB,UAAUi+E,cAAc3rB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUg+E,eAAe1rB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE2Q,MAAMhQ,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAE2Q,MAAM,MAAM3Q,EAAEu/E,eAAe5+E,OAAOY,eAAehB,KAAKP,EAAE,kBAAkBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEu/E,eAAe,MAAMv/E,EAAEs/E,gBAAgBt/E,EAAEs/E,eAAez9E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEs/E,eAAez9E,SAAS9B,EAAE8zD,EAAMN,MAAM4rB,cAAct7C,OAAO7jC,EAAEs/E,eAAev/E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgEK,EAA5DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8rB,eAAiBr/E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEiQ,KAAK3Q,EAAEqpB,SAAS,MAAM,KAAK,EAAG3oB,EAAE6+E,cAAcv/E,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE4+E,gBAAgB5+E,EAAE4+E,eAAez9E,SAASnB,EAAE4+E,eAAe,IAAI5+E,EAAE4+E,eAAehzE,KAAKunD,EAAMN,MAAM4rB,cAAcz6C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uBAAuB,EAAEA,CAAC,CAAxuC,GAA4uCw/E,oBAAoB,WAAW,SAASx/E,EAAEA,GAAG,GAAG6E,KAAK46E,gBAAgB,GAAGz/E,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUm+E,gBAAgB7rB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEy/E,iBAAiBz/E,EAAEy/E,gBAAgB59E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEy/E,gBAAgB59E,SAAS9B,EAAE8zD,EAAMN,MAAM8rB,eAAex7C,OAAO7jC,EAAEy/E,gBAAgB1/E,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMisB,oBAAsBx/E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE++E,iBAAiB/+E,EAAE++E,gBAAgB59E,SAASnB,EAAE++E,gBAAgB,IAAI/+E,EAAE++E,gBAAgBnzE,KAAKunD,EAAMN,MAAM8rB,eAAe36C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,CAAC,CAAn6B,GAAu6B0/E,aAAa,WAAW,SAAS1/E,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAUq+E,YAAY,SAAS5/E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAUs+E,YAAY,SAAS7/E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAUu+E,UAAU,SAAS9/E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,cAAcN,OAAOC,eAAeZ,EAAEsB,UAAUw+E,UAAU,SAAS//E,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,cAAcN,OAAOC,eAAeZ,EAAEsB,UAAUy+E,YAAY,SAAShgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAU0+E,iBAAiB,SAASjgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,qBAAqBN,OAAOC,eAAeZ,EAAEsB,UAAU2+E,mBAAmB,SAASlgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,uBAAuBN,OAAOC,eAAeZ,EAAEsB,UAAU4+E,qBAAqB,SAASngF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,yBAAyBN,OAAOC,eAAeZ,EAAEsB,UAAU6+E,uBAAuB,SAASpgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,2BAA2BN,OAAOC,eAAeZ,EAAEsB,UAAU8+E,0BAA0B,SAASrgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,8BAA8BN,OAAOC,eAAeZ,EAAEsB,UAAU++E,gBAAgB,SAAStgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,oBAAoBN,OAAOC,eAAeZ,EAAEsB,UAAUg/E,iBAAiB,SAASvgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,qBAAqBN,OAAOC,eAAeZ,EAAEsB,UAAUi/E,uBAAuB,SAASxgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,2BAA2BN,OAAOC,eAAeZ,EAAEsB,UAAUk/E,aAAa,SAASzgF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBN,OAAOC,eAAeZ,EAAEsB,UAAUm/E,mBAAmB,SAAS1gF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,uBAAuBN,OAAOC,eAAeZ,EAAEsB,UAAUo/E,gBAAgB,SAAS3gF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,oBAAoBN,OAAOC,eAAeZ,EAAEsB,UAAUq/E,iBAAiB,SAAS5gF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMuE,MAAMjE,EAAMN,MAAM+oB,SAASt8E,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,qBAAqBN,OAAOC,eAAeZ,EAAEsB,UAAUs/E,WAAW,SAAS7gF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAeN,OAAOC,eAAeZ,EAAEsB,UAAUu/E,aAAa,SAAS9gF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBN,OAAOC,eAAeZ,EAAEsB,UAAUw/E,WAAW,SAAS/gF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,eAAeN,OAAOC,eAAeZ,EAAEsB,UAAUy/E,YAAY,SAAShhF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,gBAAgBN,OAAOC,eAAeZ,EAAEsB,UAAU0/E,cAAc,SAASjhF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,kBAAkBN,OAAOC,eAAeZ,EAAEsB,UAAU2/E,cAAc,SAASlhF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,kBAAkBN,OAAOC,eAAeZ,EAAEsB,UAAU4/E,aAAa,SAASnhF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,iBAAiBjB,CAAC,CAAz6I,GAA66Iu8C,kBAAkB,WAAW,SAASv8C,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUojE,UAAU9Q,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUmjE,OAAO,KAAKzkE,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE0kE,WAAW/jE,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE0kE,WAAW,MAAM1kE,EAAEykE,QAAQ9jE,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMqM,aAAa/7B,OAAO7jC,EAAEykE,OAAOrkE,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAmEK,EAA/DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMhX,kBAAoBv8C,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEgkE,UAAU1kE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAE+jE,OAAO5Q,EAAMN,MAAMqM,aAAal7B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,0BAA0B,EAAEA,CAAC,CAAn5B,GAAu5BmhF,YAAY,WAAW,SAASnhF,EAAEA,EAAEI,EAAEL,GAAG2yD,EAAU5rC,IAAI0uC,QAAQj1D,KAAKsE,KAAK7E,EAAEI,EAAEL,EAAE,CAAC,OAAOC,EAAEsB,UAAUX,OAAOQ,OAAOuxD,EAAU5rC,IAAI0uC,QAAQl0D,YAAY8J,YAAYpL,EAAEA,EAAEmB,OAAO,SAASnB,EAAEI,EAAEL,GAAG,OAAO,IAAI8E,KAAK7E,EAAEI,EAAEL,EAAE,EAAEY,OAAOC,eAAeZ,EAAEsB,UAAU8/E,KAAK,SAASrhF,EAAEC,EAAEI,GAAG,OAAOyE,KAAK6wD,QAAQ31D,EAAE8zD,EAAMN,MAAMzX,YAAY+X,EAAMN,MAAMoE,oBAAoB33D,EAAEI,EAAE,EAAE,OAAO,CAACa,MAAM,SAASjB,CAAC,CAAzW,GAA6WqhF,iBAAiB,WAAW,SAASrhF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwhE,QAAQ,KAAK9iE,EAAEsB,UAAUyhE,QAAQnP,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE8iE,SAASniE,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMiJ,QAAQ34B,OAAO7jC,EAAE8iE,QAAQ1iE,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE+iE,SAASpiE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAE+iE,SAAS3iE,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8tB,iBAAmBrhF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEoiE,QAAQjP,EAAMN,MAAMiJ,QAAQ93B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEqiE,QAAQ/iE,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAAz5B,GAA65BshF,sBAAsB,WAAW,SAASthF,EAAEA,GAAG,GAAG6E,KAAK08E,kBAAkB,GAAGvhF,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUg6D,UAAU,KAAKt7D,EAAEsB,UAAUkgF,YAAY5tB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUigF,kBAAkB3tB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEs7D,WAAW36D,OAAOY,eAAehB,KAAKP,EAAE,cAAc6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEs7D,UAAUl7D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEwhF,aAAa7gF,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAII,OAAO50D,EAAEwhF,aAAa,MAAMxhF,EAAEuhF,mBAAmBvhF,EAAEuhF,kBAAkB1/E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEuhF,kBAAkB1/E,SAAS9B,EAAE8zD,EAAMN,MAAM8tB,iBAAiBx9C,OAAO7jC,EAAEuhF,kBAAkBxhF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+tB,sBAAwBthF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE46D,UAAUzH,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE8gF,YAAYxhF,EAAE40D,SAAS,MAAM,KAAK,EAAGl0D,EAAE6gF,mBAAmB7gF,EAAE6gF,kBAAkB1/E,SAASnB,EAAE6gF,kBAAkB,IAAI7gF,EAAE6gF,kBAAkBj1E,KAAKunD,EAAMN,MAAM8tB,iBAAiB38C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAAj3C,GAAq3CyhF,mBAAmB,WAAW,SAASzhF,EAAEA,GAAG,GAAG6E,KAAK68E,YAAY,GAAG1hF,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU0zD,mBAAmB,KAAKh1D,EAAEsB,UAAUogF,YAAY9tB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg1D,oBAAoBr0D,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEg1D,mBAAmB50D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE0hF,aAAa1hF,EAAE0hF,YAAY7/E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE0hF,YAAY7/E,SAAS9B,EAAE8zD,EAAMN,MAAM+tB,sBAAsBz9C,OAAO7jC,EAAE0hF,YAAY3hF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAoEK,EAAhEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkuB,mBAAqBzhF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs0D,mBAAmBnB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEghF,aAAahhF,EAAEghF,YAAY7/E,SAASnB,EAAEghF,YAAY,IAAIhhF,EAAEghF,YAAYp1E,KAAKunD,EAAMN,MAAM+tB,sBAAsB58C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,2BAA2B,EAAEA,CAAC,CAAzpC,GAA6pC2hF,gBAAgB,WAAW,SAAS3hF,EAAEA,GAAG,GAAG6E,KAAK+8E,gBAAgB,GAAG5hF,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUsgF,gBAAgBhuB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE4hF,iBAAiB5hF,EAAE4hF,gBAAgB//E,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE4hF,gBAAgB//E,SAAS9B,EAAE8zD,EAAMN,MAAMsuB,eAAeh+C,OAAO7jC,EAAE4hF,gBAAgB7hF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMouB,gBAAkB3hF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEkhF,iBAAiBlhF,EAAEkhF,gBAAgB//E,SAASnB,EAAEkhF,gBAAgB,IAAIlhF,EAAEkhF,gBAAgBt1E,KAAKunD,EAAMN,MAAMsuB,eAAen9C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAA35B,GAA+5B8hF,mBAAmB,WAAW,MAAM9hF,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,aAAa,EAAEI,EAAEJ,EAAE,GAAG,QAAQ,EAAEI,EAAEJ,EAAE,GAAG,UAAU,EAAEI,EAAEJ,EAAE,GAAG,cAAc,EAAEI,EAAEJ,EAAE,GAAG,UAAU,EAAEI,CAAC,CAArJ,GAAyJ2hF,kBAAkB,WAAW,MAAM/hF,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,cAAc,EAAEI,EAAEJ,EAAE,GAAG,WAAW,EAAEI,EAAEJ,EAAE,GAAG,eAAe,EAAEI,EAAEJ,EAAE,GAAG,mBAAmB,EAAEI,EAAEJ,EAAE,GAAG,iBAAiB,EAAEI,EAAEJ,EAAE,GAAG,aAAa,EAAEI,EAAEJ,EAAE,GAAG,cAAc,EAAEI,CAAC,CAAvN,GAA2NyhF,eAAe,WAAW,SAAS7hF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA2hB,IAAIK,EAAE,OAAhiBJ,EAAEsB,UAAU0gF,SAAS,EAAEhiF,EAAEsB,UAAU2gF,eAAe,KAAKjiF,EAAEsB,UAAU4gF,gBAAgB,KAAKliF,EAAEsB,UAAU++D,IAAIzM,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUoX,MAAMk7C,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU6gF,iBAAiB,KAAKniF,EAAEsB,UAAU8gF,kBAAkB,KAAKpiF,EAAEsB,UAAU+gF,gBAAgB,KAAKriF,EAAEsB,UAAUL,MAAM2yD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUizE,QAAQ3gB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUy+B,OAAO,KAAK//B,EAAEsB,UAAUghF,aAAa,KAAKtiF,EAAEsB,UAAUiL,MAAM,KAAKvM,EAAEsB,UAAUihF,UAAU,EAAEviF,EAAEsB,UAAUkhF,kBAAkB,EAAe7hF,OAAOC,eAAeZ,EAAEsB,UAAU,SAAS,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,iBAAiB,oBAAoB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,YAAY,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,mBAAmB,oBAAoB,oBAAoB0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKO,OAAOC,eAAeZ,EAAEsB,UAAU,aAAa,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,SAAS,eAAe,UAAU0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEgiF,UAAUrhF,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEgiF,UAAU,MAAMhiF,EAAEiiF,gBAAgBthF,OAAOY,eAAehB,KAAKP,EAAE,mBAAmB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEiiF,eAAe7hF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkiF,iBAAiBvhF,OAAOY,eAAehB,KAAKP,EAAE,oBAAoB6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEkiF,gBAAgB9hF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqgE,KAAK1/D,OAAOY,eAAehB,KAAKP,EAAE,QAAQI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEqgE,KAAK,MAAMrgE,EAAE0Y,OAAO/X,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE0Y,OAAO,MAAM1Y,EAAEmiF,kBAAkBxhF,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAMuD,UAAUjzB,OAAO7jC,EAAEmiF,iBAAiB/hF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEoiF,mBAAmBzhF,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAEoiF,kBAAkBhiF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEqiF,iBAAiB1hF,OAAOY,eAAehB,KAAKP,EAAE,oBAAoBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEqiF,iBAAiB,MAAMriF,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEiB,OAAO,MAAMjB,EAAEu0E,SAAS5zE,OAAOY,eAAehB,KAAKP,EAAE,YAAYI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAEu0E,SAAS,MAAMv0E,EAAE+/B,QAAQp/B,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE+/B,QAAQ,MAAM//B,EAAEsiF,cAAc3hF,OAAOY,eAAehB,KAAKP,EAAE,iBAAiBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEsiF,cAAc,MAAMtiF,EAAEuM,OAAO5L,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,KAAKvmB,MAAMjuC,EAAEuM,OAAO,MAAMvM,EAAEuiF,WAAW5hF,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAEuiF,WAAW,MAAMviF,EAAEwiF,mBAAmB7hF,OAAOY,eAAehB,KAAKP,EAAE,sBAAsBI,EAAEo0D,OAAO,KAAKsB,MAAM91D,EAAEwiF,mBAAmBpiF,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAgEK,EAA5DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsuB,eAAiB7hF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEshF,SAAShiF,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEuhF,eAAepuB,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwhF,gBAAgBruB,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2/D,IAAIrgE,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAEgY,MAAM1Y,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEyhF,iBAAiBtuB,EAAMN,MAAMuD,UAAUpyB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE0hF,kBAAkBvuB,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE2hF,gBAAgBriF,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEO,MAAMjB,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAE6zE,QAAQv0E,EAAEi8D,QAAQ,MAAM,KAAK,GAAIv7D,EAAEq/B,OAAO//B,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE4hF,aAAatiF,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE6L,MAAMvM,EAAEiuC,QAAQ,MAAM,KAAK,GAAIvtC,EAAE6hF,UAAUviF,EAAE81D,QAAQ,MAAM,KAAK,GAAIp1D,EAAE8hF,kBAAkBxiF,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,uBAAuB,EAAEA,CAAC,CAApuH,GAAwuHyiF,iBAAiB,WAAW,SAASziF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwzE,WAAW,KAAK90E,EAAEsB,UAAU8qE,SAASxY,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUohF,gBAAgB9uB,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE80E,YAAYn0E,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAE80E,WAAW10E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEosE,UAAUzrE,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEosE,UAAU,MAAMpsE,EAAE0iF,iBAAiB/hF,OAAOY,eAAehB,KAAKP,EAAE,oBAAoBI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAE0iF,iBAAiBtiF,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMkvB,iBAAmBziF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEo0E,WAAWjhB,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE0rE,SAASpsE,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEgiF,gBAAgB1iF,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAAtmC,GAA0mC2iF,qBAAqB,WAAW,SAAS3iF,EAAEA,GAAG,GAAG6E,KAAK+9E,qBAAqB,GAAG5iF,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUshF,qBAAqBhvB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE4iF,sBAAsB5iF,EAAE4iF,qBAAqB/gF,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE4iF,qBAAqB/gF,SAAS9B,EAAE8zD,EAAMN,MAAMsvB,oBAAoBh/C,OAAO7jC,EAAE4iF,qBAAqB7iF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMovB,qBAAuB3iF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEkiF,sBAAsBliF,EAAEkiF,qBAAqB/gF,SAASnB,EAAEkiF,qBAAqB,IAAIliF,EAAEkiF,qBAAqBt2E,KAAKunD,EAAMN,MAAMsvB,oBAAoBn+C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAj+B,GAAq+B6iF,oBAAoB,WAAW,SAAS7iF,EAAEA,GAAG,GAAG6E,KAAKi+E,eAAe,GAAG9iF,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUwzE,WAAW,KAAK90E,EAAEsB,UAAUwhF,eAAelvB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE80E,YAAYn0E,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAMoI,WAAW93B,OAAO7jC,EAAE80E,WAAW10E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8iF,gBAAgB9iF,EAAE8iF,eAAejhF,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAE8iF,eAAejhF,SAAS9B,EAAE8zD,EAAMN,MAAMwvB,cAAcl/C,OAAO7jC,EAAE8iF,eAAe/iF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMsvB,oBAAsB7iF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEo0E,WAAWjhB,EAAMN,MAAMoI,WAAWj3B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEoiF,gBAAgBpiF,EAAEoiF,eAAejhF,SAASnB,EAAEoiF,eAAe,IAAIpiF,EAAEoiF,eAAex2E,KAAKunD,EAAMN,MAAMwvB,cAAcr+C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,CAAC,CAAnoC,GAAuoC+iF,cAAc,WAAW,SAAS/iF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU0hF,KAAKpvB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU2hF,UAAUrvB,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAU4hF,aAAa,KAAKljF,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEgjF,MAAMriF,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEgjF,MAAM,MAAMhjF,EAAEijF,WAAWtiF,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEijF,WAAW,MAAMjjF,EAAEkjF,cAAcviF,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMJ,OAAO0D,SAASE,WAAWxzB,OAAO7jC,EAAEkjF,aAAa9iF,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMwvB,cAAgB/iF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEsiF,KAAKhjF,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEuiF,UAAUjjF,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEwiF,aAAarvB,EAAMJ,OAAO0D,SAASE,WAAW3yB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAA5kC,GAAglCmjF,cAAc,WAAW,MAAMnjF,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,0BAA0B,EAAEI,EAAEJ,EAAE,GAAG,WAAW,EAAEI,CAAC,CAAxG,GAA4GgjF,WAAW,WAAW,SAASpjF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU+hF,UAAU,EAAErjF,EAAEsB,UAAUO,OAAO,EAAE7B,EAAEsB,UAAUgP,KAAKsjD,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEqjF,WAAW1iF,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEqjF,WAAW,MAAMrjF,EAAE6B,QAAQlB,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE6B,QAAQ,MAAM7B,EAAEsQ,MAAM3P,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEsQ,MAAMlQ,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA4DK,EAAxDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM6vB,WAAapjF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE2iF,UAAUrjF,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEmB,OAAO7B,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE4P,KAAKtQ,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,mBAAmB,EAAEA,CAAC,CAAp7B,GAAw7BsjF,iBAAiB,WAAW,SAAStjF,EAAEA,GAAG,GAAG6E,KAAK0+E,kBAAkB,GAAG1+E,KAAK2+E,SAAS,GAAGxjF,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU24E,iBAAiB,KAAKj6E,EAAEsB,UAAUmiF,uBAAuB,KAAKzjF,EAAEsB,UAAUiiF,kBAAkB3vB,EAAM8C,WAAW12D,EAAEsB,UAAUoiF,qBAAqB,KAAK1jF,EAAEsB,UAAUqiF,YAAY/vB,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEsB,UAAUkiF,SAAS5vB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEi6E,kBAAkBt5E,OAAOY,eAAehB,KAAKP,EAAE,qBAAqB6zD,EAAMN,MAAM6O,gBAAgBv+B,OAAO7jC,EAAEi6E,iBAAiB75E,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEyjF,wBAAwB9iF,OAAOY,eAAehB,KAAKP,EAAE,2BAA2B6zD,EAAMN,MAAM6vB,WAAWv/C,OAAO7jC,EAAEyjF,uBAAuBrjF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEujF,mBAAmBvjF,EAAEujF,kBAAkB1hF,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEujF,kBAAkB1hF,SAAS9B,EAAE8zD,EAAMN,MAAMqwB,iBAAiB//C,OAAO7jC,EAAEujF,kBAAkBxjF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,GAAG,MAAM10D,EAAE0jF,sBAAsB/iF,OAAOY,eAAehB,KAAKP,EAAE,yBAAyB6zD,EAAMN,MAAM6vB,WAAWv/C,OAAO7jC,EAAE0jF,qBAAqBtjF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE2jF,aAAahjF,OAAOY,eAAehB,KAAKP,EAAE,gBAAgBI,EAAEo0D,OAAO,IAAIyH,MAAMj8D,EAAE2jF,aAAa,MAAM3jF,EAAEwjF,UAAUxjF,EAAEwjF,SAAS3hF,OAAO,IAAQ9B,EAAE,EAAEA,EAAEC,EAAEwjF,SAAS3hF,SAAS9B,EAAE8zD,EAAMN,MAAMswB,gBAAgBhgD,OAAO7jC,EAAEwjF,SAASzjF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM+vB,iBAAmBtjF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEu5E,iBAAiBpmB,EAAMN,MAAM6O,gBAAgB19B,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+iF,uBAAuB5vB,EAAMN,MAAM6vB,WAAW1+C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6iF,mBAAmB7iF,EAAE6iF,kBAAkB1hF,SAASnB,EAAE6iF,kBAAkB,IAAI7iF,EAAE6iF,kBAAkBj3E,KAAKunD,EAAMN,MAAMqwB,iBAAiBl/C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,KAAK,EAAG9zD,EAAEgjF,qBAAqB7vB,EAAMN,MAAM6vB,WAAW1+C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEijF,YAAY3jF,EAAEi8D,QAAQ,MAAM,KAAK,EAAGv7D,EAAE8iF,UAAU9iF,EAAE8iF,SAAS3hF,SAASnB,EAAE8iF,SAAS,IAAI9iF,EAAE8iF,SAASl3E,KAAKunD,EAAMN,MAAMswB,gBAAgBn/C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAA1yE,GAA8yE4jF,iBAAiB,WAAW,SAAS5jF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU8gB,YAAY,KAAKpiB,EAAEsB,UAAUwiF,OAAO,KAAK9jF,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEoiB,aAAazhB,OAAOY,eAAehB,KAAKP,EAAE,gBAAgB6zD,EAAMN,MAAMzX,YAAYjY,OAAO7jC,EAAEoiB,YAAYhiB,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE8jF,QAAQnjF,OAAOY,eAAehB,KAAKP,EAAE,WAAW6zD,EAAMN,MAAMqiB,kBAAkB/xC,OAAO7jC,EAAE8jF,OAAO1jF,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAkEK,EAA9DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMqwB,iBAAmB5jF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE0hB,YAAYyxC,EAAMN,MAAMzX,YAAYpX,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEojF,OAAOjwB,EAAMN,MAAMqiB,kBAAkBlxC,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,yBAAyB,EAAEA,CAAC,CAAl+B,GAAs+B6jF,gBAAgB,WAAW,SAAS7jF,EAAEA,GAAG,GAAG6E,KAAKimC,MAAM,GAAG9qC,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUgP,KAAK,KAAKtQ,EAAEsB,UAAU4b,GAAG,EAAEld,EAAEsB,UAAUwpC,MAAM8oB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEsQ,MAAM3P,OAAOY,eAAehB,KAAKP,EAAE,SAAS6zD,EAAMN,MAAM6vB,WAAWv/C,OAAO7jC,EAAEsQ,KAAKlQ,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEkd,IAAIvc,OAAOY,eAAehB,KAAKP,EAAE,OAAOI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEkd,IAAI,MAAMld,EAAE8qC,OAAO9qC,EAAE8qC,MAAMjpC,OAAO,CAACzB,EAAEo0D,OAAO,IAAIC,OAAO,IAAI,IAAI10D,EAAE,EAAEA,EAAEC,EAAE8qC,MAAMjpC,SAAS9B,EAAEK,EAAE01D,MAAM91D,EAAE8qC,MAAM/qC,IAAIK,EAAEs0D,QAAQ,CAAC,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMswB,gBAAkB7jF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE4P,KAAKujD,EAAMN,MAAM6vB,WAAW1+C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEwc,GAAGld,EAAE81D,QAAQ,MAAM,KAAK,EAAG,GAAGp1D,EAAEoqC,OAAOpqC,EAAEoqC,MAAMjpC,SAASnB,EAAEoqC,MAAM,IAAI,IAAI,EAAEzqC,GAAG,IAAI,IAAIuB,EAAE5B,EAAEw0D,SAASx0D,EAAEuvC,IAAIvvC,EAAEuvC,IAAI3tC,GAAGlB,EAAEoqC,MAAMx+B,KAAKtM,EAAE81D,cAAcp1D,EAAEoqC,MAAMx+B,KAAKtM,EAAE81D,SAAS,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAA5oC,GAAgpC+jF,YAAY,WAAW,MAAM/jF,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,wBAAwB,EAAEI,EAAEJ,EAAE,GAAG,yBAAyB,EAAEI,EAAEJ,EAAE,GAAG,mBAAmB,EAAEI,EAAEJ,EAAE,GAAG,qBAAqB,EAAEI,CAAC,CAA9K,GAAkL4jF,YAAY,WAAW,SAAShkF,EAAEA,GAAG,GAAG6E,KAAKo/E,eAAe,GAAGjkF,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAU2iF,eAAerwB,EAAM8C,WAAW12D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,GAAGA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEikF,gBAAgBjkF,EAAEikF,eAAepiF,OAAO,IAAI,IAAI9B,EAAE,EAAEA,EAAEC,EAAEikF,eAAepiF,SAAS9B,EAAE8zD,EAAMN,MAAM2wB,yBAAyBrgD,OAAO7jC,EAAEikF,eAAelkF,GAAGK,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,OAAOt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA6DK,EAAzDJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMywB,YAAchkF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEujF,gBAAgBvjF,EAAEujF,eAAepiF,SAASnB,EAAEujF,eAAe,IAAIvjF,EAAEujF,eAAe33E,KAAKunD,EAAMN,MAAM2wB,yBAAyBx/C,OAAO1kC,EAAEA,EAAEw0D,WAAW,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,oBAAoB,EAAEA,CAAC,CAA75B,GAAi6BkkF,yBAAyB,WAAW,SAASlkF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAA+I,IAAIK,EAAE,OAApJJ,EAAEsB,UAAU0zD,mBAAmB,KAAKh1D,EAAEsB,UAAU6iF,WAAU,EAAGnkF,EAAEsB,UAAU8iF,aAAa,KAAKpkF,EAAEsB,UAAUuc,QAAQ,KAAK7d,EAAEsB,UAAUm0E,SAAS,KAAkB90E,OAAOC,eAAeZ,EAAEsB,UAAU,iBAAiB,CAACR,IAAI8yD,EAAM4F,YAAYp5D,EAAE,CAAC,eAAe,UAAU,aAAa0kC,IAAI8uB,EAAM6F,YAAYr5D,KAAKJ,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEg1D,oBAAoBr0D,OAAOY,eAAehB,KAAKP,EAAE,uBAAuB6zD,EAAMN,MAAMoB,UAAU9wB,OAAO7jC,EAAEg1D,mBAAmB50D,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEmkF,WAAWxjF,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIwI,KAAKh9D,EAAEmkF,WAAW,MAAMnkF,EAAEokF,cAAczjF,OAAOY,eAAehB,KAAKP,EAAE,iBAAiB6zD,EAAMN,MAAMovB,qBAAqB9+C,OAAO7jC,EAAEokF,aAAahkF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAE6d,SAASld,OAAOY,eAAehB,KAAKP,EAAE,YAAY6zD,EAAMN,MAAMouB,gBAAgB99C,OAAO7jC,EAAE6d,QAAQzd,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEy1E,UAAU90E,OAAOY,eAAehB,KAAKP,EAAE,aAAa6zD,EAAMN,MAAMkvB,iBAAiB5+C,OAAO7jC,EAAEy1E,SAASr1E,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA0EK,EAAtEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM2wB,yBAA2BlkF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEs0D,mBAAmBnB,EAAMN,MAAMoB,UAAUjwB,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEyjF,UAAUnkF,EAAEg9D,OAAO,MAAM,KAAK,EAAGt8D,EAAE0jF,aAAavwB,EAAMN,MAAMovB,qBAAqBj+C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAEmd,QAAQg2C,EAAMN,MAAMouB,gBAAgBj9C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE+0E,SAAS5hB,EAAMN,MAAMkvB,iBAAiB/9C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,iCAAiC,EAAEA,CAAC,CAAvzD,GAA2zDqkF,cAAc,WAAW,SAASrkF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUgjF,cAAc,KAAKtkF,EAAEsB,UAAUijF,kBAAkB,KAAKvkF,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEskF,eAAe3jF,OAAOY,eAAehB,KAAKP,EAAE,kBAAkB6zD,EAAMN,MAAMixB,gBAAgB3gD,OAAO7jC,EAAEskF,cAAclkF,EAAEo0D,OAAO,IAAIC,QAAQC,SAAS,MAAM10D,EAAEukF,mBAAmB5jF,OAAOY,eAAehB,KAAKP,EAAE,sBAAsB6zD,EAAMN,MAAMixB,gBAAgB3gD,OAAO7jC,EAAEukF,kBAAkBnkF,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAA+DK,EAA3DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAM8wB,cAAgBrkF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAE4jF,cAAczwB,EAAMN,MAAMixB,gBAAgB9/C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,KAAK,EAAG9zD,EAAE6jF,kBAAkB1wB,EAAMN,MAAMixB,gBAAgB9/C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,sBAAsB,EAAEA,CAAC,CAAjiC,GAAqiCwkF,gBAAgB,WAAW,SAASxkF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUuI,KAAK,EAAE7J,EAAEsB,UAAUO,OAAO,EAAE7B,EAAEsB,UAAUmjF,SAAS,EAAEzkF,EAAEsB,UAAU+2C,UAAUub,EAAMqB,UAAU,IAAIj1D,EAAEsB,UAAUojF,WAAW,KAAK1kF,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAE6J,MAAMlJ,OAAOY,eAAehB,KAAKP,EAAE,SAASI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAE6J,MAAM,MAAM7J,EAAE6B,QAAQlB,OAAOY,eAAehB,KAAKP,EAAE,WAAWI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAE6B,QAAQ,MAAM7B,EAAEykF,UAAU9jF,OAAOY,eAAehB,KAAKP,EAAE,aAAaI,EAAEo0D,OAAO,IAAIsB,MAAM91D,EAAEykF,UAAU,MAAMzkF,EAAEq4C,WAAW13C,OAAOY,eAAehB,KAAKP,EAAE,cAAcI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEq4C,WAAW,MAAMr4C,EAAE0kF,YAAY/jF,OAAOY,eAAehB,KAAKP,EAAE,eAAe6zD,EAAMN,MAAM6vB,WAAWv/C,OAAO7jC,EAAE0kF,WAAWtkF,EAAEo0D,OAAO,IAAIC,QAAQC,SAASt0D,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAiEK,EAA7DJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMN,MAAMixB,gBAAkBxkF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEmJ,KAAK7J,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAEmB,OAAO7B,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE+jF,SAASzkF,EAAE81D,QAAQ,MAAM,KAAK,EAAGp1D,EAAE23C,UAAUr4C,EAAEiuC,QAAQ,MAAM,KAAK,EAAGvtC,EAAEgkF,WAAW7wB,EAAMN,MAAM6vB,WAAW1+C,OAAO1kC,EAAEA,EAAEw0D,UAAU,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,wBAAwB,EAAEA,CAAC,CAA/zC,GAAm0C2kF,cAAc,WAAW,MAAM3kF,EAAE,CAAC,EAAEI,EAAEO,OAAOQ,OAAOnB,GAAG,OAAOI,EAAEJ,EAAE,GAAG,0BAA0B,EAAEI,EAAEJ,EAAE,GAAG,oBAAoB,EAAEI,CAAC,CAAjH,IAAsH,OAAOJ,CAAE,EAAzlgY,GAA6lgYG,EAAQozD,MAAMA,EAAM,MAAME,EAAOI,EAAMJ,OAAO,MAAM,MAAMzzD,EAAE,CAACm3D,SAAS,WAAW,MAAMn3D,EAAE,CAAC4kF,YAAY,WAAW,SAAS5kF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM,EAAEjB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGqwB,OAAO7kF,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAASytB,YAAc5kF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAE6kF,SAAS,MAAM,QAAQ7kF,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAA1pB,GAA8pB8kF,WAAW,WAAW,SAAS9kF,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM,EAAEjB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAI1e,MAAM91C,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAAS2tB,WAAa9kF,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAE81C,QAAQ,MAAM,QAAQ91C,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAvpB,GAA2pB00E,WAAW,WAAW,SAAS10E,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM2yD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGyH,MAAMj8D,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAASud,WAAa10E,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAEi8D,QAAQ,MAAM,QAAQj8D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAA7rB,GAAisB+tE,YAAY,WAAW,SAAS/tE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM2yD,EAAMV,KAAKU,EAAMV,KAAKoB,SAAS,EAAE,GAAE,GAAI,EAAEt0D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGI,OAAO50D,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAAS4W,YAAc/tE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAE40D,SAAS,MAAM,QAAQ50D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAAjsB,GAAqsB+sE,WAAW,WAAW,SAAS/sE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM,EAAEjB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGsB,MAAM91D,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAAS4V,WAAa/sE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAE81D,QAAQ,MAAM,QAAQ91D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAtpB,GAA0pB69D,YAAY,WAAW,SAAS79D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM,EAAEjB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGA,OAAOx0D,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAAS0G,YAAc79D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAEw0D,SAAS,MAAM,QAAQx0D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAA1pB,GAA8pBgtE,UAAU,WAAW,SAAShtE,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,OAAM,EAAGjB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,GAAGwI,KAAKh9D,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAqEK,EAAjEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAAS6V,UAAYhtE,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAEg9D,OAAO,MAAM,QAAQh9D,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,4BAA4B,EAAEA,CAAC,CAAnpB,GAAupBo3D,YAAY,WAAW,SAASp3D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM,GAAGjB,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAInrC,OAAOrpB,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAuEK,EAAnEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAASC,YAAcp3D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAEqpB,SAAS,MAAM,QAAQrpB,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,8BAA8B,EAAEA,CAAC,CAA5pB,GAAgqBq3D,WAAW,WAAW,SAASr3D,EAAEA,GAAG,GAAGA,EAAE,IAAI,IAAII,EAAEO,OAAOmsC,KAAK9sC,GAAGD,EAAE,EAAEA,EAAEK,EAAEyB,SAAS9B,EAAE,MAAMC,EAAEI,EAAEL,MAAM8E,KAAKzE,EAAEL,IAAIC,EAAEI,EAAEL,IAAI,CAAC,OAAOC,EAAEsB,UAAUL,MAAM2yD,EAAMqB,UAAU,IAAIj1D,EAAEmB,OAAO,SAASf,GAAG,OAAO,IAAIJ,EAAEI,EAAE,EAAEJ,EAAE6jC,OAAO,SAAS7jC,EAAEI,GAAG,OAAOA,IAAIA,EAAEuzD,EAAQxyD,UAAU,MAAMnB,EAAEiB,OAAON,OAAOY,eAAehB,KAAKP,EAAE,UAAUI,EAAEo0D,OAAO,IAAIvmB,MAAMjuC,EAAEiB,OAAOb,CAAC,EAAEJ,EAAE0kC,OAAO,SAAS1kC,EAAEI,GAAGJ,aAAa0zD,IAAU1zD,EAAE0zD,EAAQvyD,OAAOnB,IAAI,IAAI,IAAsEK,EAAlEJ,OAAE,IAASG,EAAEJ,EAAE6pB,IAAI7pB,EAAEuvC,IAAInvC,EAAEM,EAAE,IAAImzD,EAAMJ,OAAO0D,SAASE,WAAar3D,EAAEuvC,IAAItvC,GAAG,OAAOI,EAAEL,EAAEw0D,SAASn0D,IAAI,GAAG,KAAK,EAAGK,EAAEO,MAAMjB,EAAEiuC,QAAQ,MAAM,QAAQjuC,EAAE60D,SAAS,EAAEx0D,GAAG,OAAOK,CAAC,EAAEV,EAAE80D,WAAW,SAAS90D,GAAG,YAAO,IAASA,IAAIA,EAAE,uBAAuBA,EAAE,6BAA6B,EAAEA,CAAC,CAAzqB,IAA8qB,OAAOA,CAAC,CAA9lM,IAAmmM,OAAOA,CAAE,EAApoM,GAAwoMG,EAAQszD,OAAOA,C,oBCAx1lZzrC,EAAO7nB,QAAU+yD,EAKjB,IAAI6xB,EAAO,KAEX,IACEA,EAAO,IAAIC,YAAYC,SAAS,IAAID,YAAYE,OAAO,IAAIxiD,WAAW,CACpE,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,MAC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CA,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,sEAINL,IAAK,CACHhiN,IAAK,EACLqiN,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,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEA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AAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAC1F,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAC1F,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAC1F,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAC1F,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAC1F,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAC1F,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAC1F,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAC1F,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,EAAM,GAAM,GAAM,GAAM,GAAM,IAAM,GAC1F,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAC1F,IAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAC1F,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAC1F,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,KAGxFpsT,EAAI,CAA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CA,QACA,QACA,SACA,QACA,SACA,SACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,SACA,SACA,QACA,SACA,QACA,MACA,QACA,QACA,SACA,QACA,MACA,OACA,MACA,MACA,SACA,OACA,OACA,QACA,SACA,SACA,QACA,MACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,SACA,MACA,QACA,SACA,QACA,QACA,OACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,OACA,QACA,QACA,SACA,QACA,SACA,QACA,SACA,OACA,QACA,OACA,SACA,QACA,QACA,SACA,QACA,QACA,SACA,MACA,SACA,OACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,SACA,SACA,SACA,MACA,SACA,SACA,QACA,SACA,OACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,SACA,MACA,OACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,SACA,QACA,SACA,SACA,QACA,QACA,MACA,SACA,SACA,SACA,SACA,MACA,QACA,SACA,QACA,MACA,SACA,SACA,QACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,MACA,SACA,QACA,OACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,SACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,SACA,QACA,OACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,SACA,MACA,OACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,SACA,QACA,MACA,QACA,QACA,MACA,QACA,OACA,OACA,OACA,QACA,SACA,OACA,OACA,SACA,SACA,SACA,SACA,SACA,MACA,QACA,SACA,OACA,OACA,OACA,MACA,SACA,OACA,SACA,QACA,OACA,SACA,OACA,QACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,QACA,SACA,OACA,MACA,QACA,OACA,QACA,SACA,MACA,QACA,SACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,SACA,SACA,MACA,QACA,OACA,QACA,OACA,OACA,OACA,SACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,SACA,OACA,QACA,SACA,QACA,OACA,QACA,OACA,SACA,OACA,SACA,QACA,QACA,QACA,SACA,OACA,SACA,MACA,OACA,SACA,SACA,SACA,SACA,OACA,SACA,SACA,MACA,MACA,SACA,OACA,OACA,OACA,MACA,SACA,OACA,SACA,QACA,OACA,SACA,QACA,SACA,MACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,OACA,QACA,QACA,OACA,QACA,OACA,QACA,QACA,OACA,MACA,SACA,OACA,QACA,OACA,OACA,OACA,OACA,SACA,OACA,OACA,OACA,SACA,QACA,OACA,OACA,OACA,QACA,OACA,QACA,QACA,SACA,OACA,SACA,QACA,OACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,MACA,QACA,OACA,MACA,MACA,SACA,QACA,QACA,SACA,QACA,OACA,SACA,QACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,SACA,SACA,QACA,QACA,OACA,QACA,OACA,QACA,OACA,SACA,QACA,OACA,QACA,QACA,SACA,OACA,QACA,SACA,SACA,SACA,SACA,QACA,OACA,QACA,SACA,QACA,OACA,MACA,OACA,OACA,SACA,OACA,MACA,SACA,OACA,SACA,SACA,MACA,QACA,OACA,MACA,OACA,MACA,QACA,QACA,QACA,SACA,SACA,OACA,QACA,QACA,SACA,OACA,OACA,OACA,SACA,OACA,SACA,OACA,QACA,SACA,OACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,OACA,SACA,QACA,SACA,SACA,SACA,MACA,OACA,MACA,SACA,OACA,OACA,SACA,SACA,QACA,OACA,SACA,QACA,OACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,OACA,OACA,SACA,SACA,MACA,QACA,QACA,SACA,SACA,SACA,QACA,OACA,QACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,OACA,SACA,QACA,QACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,OACA,SACA,SACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,QACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,OACA,QACA,OACA,SACA,QACA,SACA,OACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,SACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,OACA,QACA,SACA,OACA,OACA,QACA,QACA,QACA,SACA,OACA,OACA,QACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,SACA,QACA,QACA,OACA,OACA,SACA,QACA,SACA,QACA,OACA,SACA,QACA,OACA,OACA,SACA,QACA,OACA,OACA,QACA,OACA,SACA,SACA,SACA,OACA,OACA,OACA,OACA,SACA,QACA,SACA,OACA,SACA,OACA,SACA,OACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,OACA,SACA,QACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,OACA,OACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,QACA,SACA,OACA,SACA,SACA,SACA,QACA,SACA,OACA,QACA,SACA,MACA,SACA,SACA,OACA,OACA,QACA,SACA,QACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,QACA,QACA,OACA,QACA,QACA,SACA,QACA,SACA,QACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,MACA,QACA,OACA,OACA,QACA,SACA,OACA,OACA,MACA,OACA,OACA,SACA,OACA,QACA,QACA,SACA,QACA,OACA,SACA,MACA,OACA,QACA,SACA,QACA,QACA,MACA,QACA,SACA,QACA,QACA,QACA,OACA,MACA,SACA,OACA,SACA,QACA,SACA,SACA,OACA,OACA,SACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,MACA,OACA,SACA,OACA,OACA,SACA,OACA,OACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,OACA,SACA,OACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,QACA,QACA,SACA,QACA,QACA,SACA,SACA,OACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,QACA,QACA,OACA,SACA,MACA,MACA,SACA,OACA,SACA,MACA,SACA,QACA,OACA,SACA,SACA,QACA,MACA,OACA,SACA,OACA,QACA,OACA,QACA,OACA,OACA,SACA,SACA,QACA,OACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,MACA,QACA,OACA,OACA,SACA,QACA,SACA,OACA,SACA,SACA,OACA,SACA,QACA,OACA,OACA,SACA,OACA,MACA,SACA,QACA,QACA,OACA,OACA,OACA,QACA,QACA,OACA,SACA,QACA,QACA,QACA,OACA,SACA,QACA,QACA,SACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,OACA,OACA,QACA,MACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,SACA,SACA,OACA,OACA,QACA,QACA,OACA,QACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,MACA,OACA,QACA,OACA,QACA,OACA,QACA,SACA,OACA,SACA,OACA,MACA,QACA,QACA,OACA,OACA,OACA,OACA,SACA,QACA,OACA,SACA,MACA,QACA,SACA,SACA,SACA,MACA,MACA,QACA,SACA,SACA,SACA,QACA,QACA,SACA,QACA,SACA,SACA,QACA,OACA,QACA,QACA,SACA,SACA,SACA,SACA,OACA,SACA,SACA,QACA,SACA,SACA,MACA,SACA,QACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,QACA,QACA,OACA,SACA,OACA,QACA,QACA,SACA,QACA,SACA,MACA,QACA,OACA,QACA,SACA,SACA,QACA,SACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,SACA,QACA,MACA,OACA,QACA,OACA,QACA,QACA,OACA,QACA,SACA,QACA,OACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,MACA,OACA,SACA,OACA,SACA,OACA,SACA,OACA,OACA,QACA,OACA,SACA,QACA,QACA,OACA,SACA,OACA,QACA,SACA,OACA,SACA,SACA,SACA,MACA,QACA,MACA,QACA,OACA,OACA,SACA,OACA,SACA,SACA,MACA,QACA,OACA,SACA,QACA,QACA,SACA,QACA,OACA,QACA,OACA,MACA,MACA,SACA,OACA,OACA,OACA,OACA,SACA,OACA,SACA,QACA,OACA,QACA,QACA,QACA,SACA,QACA,MACA,QACA,SACA,SACA,QACA,QACA,SACA,QACA,QACA,QACA,MACA,QACA,SACA,OACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,SACA,SACA,OACA,OACA,SACA,QACA,SACA,OACA,SACA,OACA,MACA,SACA,OACA,MACA,OACA,QACA,OACA,QACA,QACA,OACA,QACA,QACA,QACA,OACA,SACA,OACA,OACA,OACA,SACA,QACA,QACA,SACA,OACA,QACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,OACA,SACA,SACA,SACA,QACA,QACA,SACA,QACA,QACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,MACA,OACA,OACA,OACA,SACA,QACA,OACA,SACA,OACA,OACA,OACA,OACA,MACA,SACA,QACA,OACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,SACA,OACA,QACA,OACA,SACA,MACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,OACA,OACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,QACA,OACA,OACA,QACA,QACA,SACA,QACA,SACA,SACA,QACA,MACA,QACA,OACA,OACA,QACA,QACA,MACA,OACA,QACA,MACA,QACA,OACA,OACA,SACA,OACA,QACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,OACA,OACA,SACA,SACA,SACA,SACA,OACA,QACA,SACA,OACA,MACA,SACA,SACA,SACA,MACA,OACA,OACA,SACA,QACA,QACA,OACA,OACA,OACA,QACA,MACA,SACA,SACA,OACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,QACA,SACA,OACA,MACA,SACA,QACA,QACA,OACA,SACA,OACA,OACA,SACA,OACA,OACA,QACA,OACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,QACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,SACA,QACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,SACA,OACA,OACA,OACA,MACA,OACA,QACA,OACA,QACA,OACA,OACA,SACA,SACA,MACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,QACA,SACA,QACA,QACA,QACA,OACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,OACA,OACA,SACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,OACA,QACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,OACA,QACA,MACA,SACA,OACA,MACA,MACA,QACA,QACA,OACA,MACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,SACA,SACA,OACA,SACA,QACA,OACA,SACA,QACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,OACA,QACA,OACA,OACA,QACA,QACA,MACA,OACA,SACA,QACA,SACA,QACA,MACA,QACA,OACA,OACA,QACA,SACA,OACA,QACA,QACA,SACA,OACA,MACA,SACA,OACA,QACA,OACA,OACA,OACA,SACA,OACA,OACA,QACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,SACA,OACA,SACA,QACA,OACA,QACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,OACA,SACA,OACA,OACA,QACA,QACA,MACA,SACA,OACA,OACA,OACA,SACA,SACA,SACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,OACA,OACA,SACA,SACA,OACA,MACA,OACA,SACA,OACA,SACA,OACA,MACA,OACA,MACA,OACA,QACA,SACA,QACA,SACA,OACA,SACA,OACA,SACA,QACA,OACA,OACA,SACA,QACA,OACA,OACA,OACA,OACA,SACA,SACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,QACA,MACA,OACA,OACA,QACA,SACA,SACA,QACA,OACA,SACA,SACA,OACA,SACA,OACA,QACA,OACA,OACA,MACA,SACA,OACA,SACA,MACA,QACA,OACA,QACA,OACA,QACA,QACA,QACA,OACA,OACA,OACA,SACA,SACA,MACA,QACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,OACA,SACA,QACA,SACA,QACA,QACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,MACA,SACA,SACA,QACA,SACA,MACA,SACA,QACA,QACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,QACA,OACA,SACA,QACA,QACA,SACA,SACA,OACA,SACA,QACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,QACA,OACA,SACA,OACA,QACA,OACA,QACA,SACA,OACA,MACA,OACA,OACA,QACA,QACA,OACA,MACA,QACA,SACA,MACA,MACA,OACA,SACA,MACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,SACA,MACA,SACA,SACA,QACA,OACA,QACA,QACA,OACA,SACA,QACA,OACA,OACA,SACA,SACA,OACA,QACA,OACA,OACA,SACA,SACA,OACA,OACA,OACA,OACA,SACA,QACA,OACA,SACA,SACA,MACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,MACA,OACA,SACA,OACA,OACA,OACA,SACA,QACA,OACA,QACA,OACA,QACA,SACA,OACA,OACA,QACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,OACA,OACA,MACA,SACA,QACA,OACA,SACA,QACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,MACA,QACA,QACA,SACA,QACA,OACA,QACA,OACA,SACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,OACA,SACA,MACA,SACA,OACA,SACA,MACA,QACA,SACA,OACA,OACA,SACA,OACA,QACA,SACA,OACA,QACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,MACA,QACA,OACA,MACA,SACA,QACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,MACA,QACA,SACA,OACA,SACA,SACA,SACA,OACA,MACA,SACA,SACA,QACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,OACA,OACA,MACA,MACA,OACA,OACA,OACA,OACA,QACA,OACA,SACA,OACA,OACA,QACA,OACA,OACA,SACA,QACA,SACA,OACA,OACA,OACA,MACA,SACA,SACA,OACA,SACA,MACA,OACA,SACA,QACA,MACA,SACA,OACA,OACA,OACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,OACA,QACA,MACA,QACA,OACA,SACA,OACA,SACA,OACA,SACA,OACA,OACA,QACA,SACA,OACA,OACA,QACA,OACA,OACA,OACA,MACA,SACA,QACA,OACA,SACA,SACA,QACA,OACA,SACA,QACA,MACA,QACA,SACA,QACA,QACA,OACA,QACA,OACA,OACA,OACA,QACA,SACA,QACA,QACA,OACA,OACA,QACA,OACA,OACA,OACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,MACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,OACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,OACA,SACA,OACA,OACA,SACA,SACA,OACA,QACA,QACA,SACA,QACA,SACA,SACA,SACA,OACA,MACA,QACA,SACA,QACA,OACA,SACA,QACA,SACA,OACA,SACA,QACA,OACA,QACA,SACA,SACA,OACA,OACA,QACA,OACA,OACA,SACA,MACA,QACA,OACA,SACA,SACA,SACA,QACA,MACA,QACA,QACA,OACA,OACA,SACA,OACA,OACA,QACA,OACA,QACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,OACA,SACA,OACA,SACA,SACA,OACA,SACA,SACA,OACA,QACA,OACA,SACA,QACA,SACA,QACA,QACA,OACA,OACA,QACA,MACA,QACA,QACA,SACA,SACA,SACA,QACA,SACA,QACA,SACA,MACA,SACA,SACA,QACA,SACA,QACA,SACA,OACA,SACA,OACA,OACA,QACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,SACA,OACA,SACA,QACA,SACA,OACA,OACA,QACA,OACA,MACA,OACA,OACA,MACA,SACA,OACA,OACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,OACA,OACA,SACA,SACA,SACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,OACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,MACA,OACA,OACA,QACA,MACA,SACA,QACA,OACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,QACA,OACA,QACA,OACA,SACA,OACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,OACA,OACA,OACA,SACA,SACA,OACA,SACA,OACA,OACA,SACA,QACA,SACA,OACA,QACA,SACA,QACA,OACA,MACA,SACA,QACA,QACA,OACA,OACA,SACA,QACA,SACA,QACA,QACA,OACA,SACA,OACA,SACA,QACA,QACA,QACA,SACA,OACA,QACA,QACA,OACA,OACA,MACA,OACA,SACA,QACA,SACA,OACA,OACA,MACA,OACA,SACA,SACA,SACA,OACA,QACA,SACA,MACA,SACA,OACA,OACA,SACA,QACA,MACA,QACA,QACA,MACA,MACA,QACA,OACA,QACA,OACA,SACA,SACA,OACA,SACA,SACA,SACA,SACA,QACA,QACA,SACA,MACA,MACA,SACA,QACA,SACA,SACA,QACA,OACA,MACA,OACA,OACA,MACA,QACA,SACA,QACA,QACA,OACA,OACA,OACA,MACA,QACA,OACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,QACA,QACA,SACA,QACA,SACA,SACA,OACA,SACA,QACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,MACA,MACA,QACA,SACA,SACA,OACA,OACA,OACA,QACA,MACA,QACA,MACA,MACA,QACA,SACA,QACA,SACA,SACA,QACA,OACA,OACA,SACA,OACA,MACA,SACA,QACA,QACA,OACA,OACA,OACA,QACA,OACA,SACA,OACA,OACA,MACA,SACA,QACA,QACA,OACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,OACA,OACA,QACA,SACA,SACA,SACA,MACA,QACA,SACA,OACA,QACA,SACA,SACA,OACA,QACA,OACA,MACA,OACA,MACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,SACA,SACA,SACA,MACA,QACA,QACA,SACA,QACA,SACA,SACA,MACA,QACA,QACA,SACA,SACA,SACA,SACA,OACA,OACA,MACA,QACA,SACA,SACA,QACA,QACA,SACA,QACA,QACA,SACA,QACA,OACA,SACA,SACA,MACA,QACA,OACA,SACA,QACA,MACA,SACA,QACA,OACA,OACA,OACA,SACA,SACA,QACA,MACA,QACA,OACA,OACA,OACA,QACA,OACA,SACA,OACA,SACA,SACA,MACA,QACA,OACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,SACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,QACA,SACA,SACA,SACA,SACA,OACA,SACA,OACA,OACA,OACA,QACA,SACA,SACA,OACA,QACA,SACA,OACA,OACA,SACA,SACA,QACA,SACA,SACA,QACA,OACA,SACA,SACA,SACA,SACA,OACA,SACA,OACA,OACA,SACA,OACA,OACA,OACA,SACA,MACA,QACA,OACA,OACA,OACA,SACA,OACA,OACA,OACA,SACA,MACA,SACA,SACA,QACA,QACA,OACA,SACA,QACA,SACA,OACA,SACA,SACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,QACA,QACA,MACA,QACA,SACA,SACA,MACA,SACA,OACA,OACA,OACA,SACA,SACA,QACA,OACA,QACA,SACA,OACA,QACA,SACA,QACA,OACA,SACA,QACA,SACA,SACA,QACA,SACA,OACA,QACA,MACA,OACA,SACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,SACA,OACA,SACA,SACA,OACA,SACA,QACA,QACA,SACA,SACA,SACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,OACA,QACA,OACA,SACA,QACA,OACA,SACA,OACA,QACA,OACA,SACA,SACA,OACA,MACA,OACA,SACA,SACA,QACA,SACA,OACA,QACA,MACA,MACA,QACA,QACA,QACA,OACA,SACA,QACA,OACA,SACA,QACA,OACA,OACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,MACA,SACA,OACA,SACA,OACA,OACA,OACA,QACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,QACA,QACA,QACA,SACA,SACA,OACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,QACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,MACA,QACA,QACA,QACA,SACA,SACA,OACA,OACA,OACA,MACA,OACA,QACA,QACA,OACA,QACA,OACA,QACA,QACA,OACA,MACA,OACA,QACA,OACA,OACA,QACA,SACA,OACA,OACA,QACA,OACA,SACA,OACA,QACA,QACA,OACA,OACA,QACA,MACA,OACA,SACA,QACA,QACA,SACA,OACA,SACA,QACA,MACA,OACA,SACA,QACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,MACA,QACA,MACA,SACA,SACA,OACA,SACA,OACA,MACA,QACA,OACA,OACA,QACA,SACA,OACA,MACA,OACA,OACA,SACA,QACA,OACA,SACA,OACA,SACA,QACA,OACA,SACA,MACA,SACA,SACA,QACA,SACA,OACA,SACA,QACA,SACA,OACA,OACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,SACA,OACA,SACA,SACA,SACA,SACA,OACA,QACA,SACA,MACA,OACA,SACA,OACA,QACA,OACA,OACA,QACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,MACA,MACA,QACA,QACA,OACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,SACA,SACA,SACA,QACA,SACA,SACA,QACA,OACA,MACA,OACA,OACA,SACA,SACA,SACA,OACA,SACA,SACA,OACA,SACA,SACA,MACA,OACA,SACA,OACA,OACA,QACA,SACA,SACA,OACA,OACA,SACA,OACA,SACA,OACA,SACA,SACA,QACA,SACA,OACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,SACA,MACA,SACA,QACA,SACA,MACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,MACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,SACA,QACA,OACA,QACA,QACA,OACA,QACA,QACA,OACA,SACA,QACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,OACA,MACA,QACA,OACA,OACA,QACA,OACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,OACA,QACA,OACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,SACA,OACA,MACA,OACA,QACA,SACA,MACA,OACA,SACA,MACA,QACA,QACA,OACA,SACA,QACA,OACA,SACA,OACA,QACA,QACA,MACA,OACA,QACA,QACA,OACA,QACA,OACA,OACA,QACA,QACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,OACA,OACA,SACA,QACA,SACA,OACA,OACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,OACA,QACA,QACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,OACA,OACA,QACA,SACA,SACA,OACA,SACA,QACA,OACA,SACA,SACA,OACA,OACA,SACA,SACA,QACA,OACA,QACA,OACA,OACA,SACA,SACA,QACA,OACA,QACA,OACA,MACA,QACA,SACA,OACA,QACA,OACA,OACA,SACA,OACA,SACA,SACA,OACA,SACA,QACA,OACA,OACA,QACA,OACA,OACA,SACA,SACA,MACA,QACA,QACA,QACA,OACA,QACA,QACA,SACA,QACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,SACA,QACA,QACA,SACA,QACA,QACA,OACA,SACA,QACA,SACA,SACA,OACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,QACA,OACA,SACA,QACA,SACA,QACA,SACA,SACA,OACA,QACA,SACA,SACA,QACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,OACA,SACA,QACA,QACA,QACA,SACA,QACA,SACA,SACA,SACA,OACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,SACA,OACA,SACA,QACA,OACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,QACA,OACA,SACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,SACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,OACA,SACA,QACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,OACA,SACA,MACA,OACA,SACA,QACA,OACA,QACA,SACA,SACA,SACA,MACA,SACA,SACA,SACA,MACA,SACA,QACA,SACA,QACA,SACA,SACA,SACA,SACA,OACA,SACA,OACA,QACA,SACA,SACA,QACA,OACA,OACA,QACA,OACA,QACA,QACA,SACA,SACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,SACA,OACA,SACA,SACA,OACA,OACA,SACA,OACA,OACA,QACA,OACA,QACA,MACA,SACA,SACA,OACA,MACA,OACA,SACA,SACA,OACA,OACA,SACA,OACA,QACA,QACA,SACA,SACA,OACA,SACA,MACA,OACA,MACA,QACA,OACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,SACA,QACA,QACA,MACA,SACA,OACA,SACA,SACA,SACA,QACA,QACA,OACA,QACA,SACA,SACA,OACA,SACA,QACA,OACA,QACA,OACA,QACA,OACA,OACA,QACA,SACA,SACA,QACA,QACA,SACA,OACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,OACA,SACA,QACA,QACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,OACA,OACA,QACA,OACA,QACA,QACA,OACA,SACA,QACA,OACA,OACA,MACA,OACA,QACA,QACA,OACA,OACA,OACA,SACA,OACA,QACA,MACA,OACA,MACA,OACA,SACA,QACA,OACA,QACA,QACA,MACA,SACA,QACA,QACA,OACA,OACA,MACA,SACA,OACA,QACA,OACA,SACA,QACA,MACA,OACA,OACA,QACA,MACA,QACA,QACA,QACA,SACA,QACA,OACA,OACA,QACA,QACA,QACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,MACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,QACA,OACA,SACA,OACA,SACA,SACA,OACA,QACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,QACA,SACA,QACA,SACA,QACA,QACA,SACA,QACA,SACA,OACA,OACA,OACA,SACA,QACA,SACA,OACA,SACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,MACA,OACA,SACA,OACA,SACA,OACA,QACA,SACA,SACA,OACA,OACA,SACA,OACA,SACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,MACA,SACA,QACA,OACA,SACA,OACA,QACA,QACA,SACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,SACA,OACA,QACA,QACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,OACA,QACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,OACA,SACA,SACA,QACA,SACA,QACA,MACA,SACA,OACA,QACA,SACA,QACA,SACA,SACA,QACA,OACA,QACA,QACA,SACA,QACA,QACA,MACA,SACA,SACA,OACA,OACA,OACA,MACA,QACA,SACA,OACA,OACA,SACA,SACA,SACA,SACA,QACA,OACA,QACA,QACA,OACA,SACA,QACA,SACA,SACA,QACA,SACA,OACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,OACA,SACA,SACA,QACA,SACA,OACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,SACA,SACA,QACA,QACA,SACA,QACA,OACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,OACA,QACA,OACA,SACA,OACA,OACA,SACA,OACA,SACA,SACA,SACA,OACA,MACA,SACA,OACA,SACA,OACA,OACA,SACA,OACA,MACA,OACA,OACA,QACA,QACA,QACA,SACA,OACA,MACA,MACA,OACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,MACA,OACA,OACA,SACA,OACA,QACA,SACA,QACA,OACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,OACA,OACA,SACA,QACA,MACA,QACA,SACA,OACA,QACA,MACA,SACA,OACA,SACA,QACA,QACA,QACA,QACA,OACA,MACA,OACA,SACA,OACA,SACA,OACA,MACA,OACA,SACA,QACA,OACA,OACA,OACA,SACA,SACA,OACA,OACA,SACA,OACA,OACA,MACA,QACA,OACA,SACA,QACA,SACA,OACA,OACA,SACA,QACA,OACA,MACA,SACA,OACA,SACA,QACA,QACA,OACA,OACA,OACA,SACA,QACA,OACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,OACA,QACA,SACA,QACA,QACA,QACA,OACA,QACA,SACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,SACA,MACA,QACA,SACA,OACA,MACA,QACA,OACA,QACA,QACA,OACA,QACA,SACA,OACA,OACA,SACA,OACA,SACA,QChgIJ,IACI,UACA,UACA,OACA,QACA,QACA,SACA,SACA,WACA,SACA,QACA,SACA,WACA,UACA,SACA,UACA,OACA,WACA,UACA,SACA,MACA,SACA,QACA,UACA,SACA,QACA,MACA,SACA,UACA,SACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,SACA,QACA,MACA,QACA,QACA,QACA,MACA,MACA,UACA,QACA,QACA,QACA,UACA,QACA,QACA,MACA,QACA,QACA,SACA,QACA,QACA,UACA,OACA,QACA,SACA,UACA,UACA,QACA,SACA,SACA,UACA,SACA,UACA,QACA,QACA,QACA,SACA,QACA,WACA,SACA,UACA,SACA,UACA,UACA,UACA,MACA,QACA,UACA,SACA,QACA,UACA,QACA,OACA,SACA,OACA,QACA,QACA,MACA,QACA,QACA,OACA,SACA,UACA,SACA,SACA,QACA,MACA,WACA,SACA,UACA,MACA,SACA,UACA,QACA,SACA,SACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,QACA,SACA,OACA,SACA,OACA,SACA,UACA,UACA,QACA,QACA,QACA,OACA,UACA,QACA,UACA,OACA,OACA,WACA,QACA,QACA,MACA,UACA,UACA,OACA,SACA,SACA,SACA,MACA,SACA,UACA,SACA,OACA,QACA,SACA,SACA,QACA,OACA,SACA,UACA,SACA,OACA,SACA,QACA,SACA,SACA,UACA,QACA,OACA,QACA,UACA,OACA,SACA,SACA,UACA,SACA,UACA,MACA,OACA,OACA,UACA,OACA,QACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,SACA,SACA,SACA,OACA,SACA,SACA,MACA,MACA,UACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,QACA,WACA,SACA,SACA,QACA,UACA,QACA,QACA,SACA,QACA,SACA,UACA,QACA,OACA,OACA,SACA,SACA,SACA,SACA,SACA,QACA,MACA,WACA,OACA,SACA,QACA,OACA,UACA,QACA,QACA,SACA,OACA,OACA,OACA,OACA,SACA,OACA,MACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,UACA,UACA,UACA,MACA,SACA,OACA,QACA,SACA,QACA,OACA,OACA,OACA,SACA,SACA,SACA,MACA,UACA,QACA,WACA,SACA,SACA,QACA,UACA,OACA,UACA,SACA,SACA,SACA,UACA,SACA,UACA,QACA,QACA,WACA,SACA,QACA,UACA,SACA,QACA,OACA,QACA,QACA,SACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,SACA,SACA,UACA,UACA,QACA,QACA,QACA,WACA,SACA,UACA,OACA,QACA,QACA,OACA,UACA,OACA,OACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,UACA,SACA,QACA,QACA,UACA,OACA,SACA,OACA,OACA,UACA,QACA,SACA,UACA,OACA,UACA,QACA,SACA,UACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,OACA,SACA,QACA,UACA,SACA,SACA,SACA,QACA,SACA,QACA,SACA,QACA,OACA,QACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,UACA,QACA,QACA,SACA,OACA,QACA,SACA,QACA,UACA,QACA,SACA,UACA,SACA,QACA,MACA,UACA,OACA,UACA,MACA,WACA,UACA,UACA,UACA,QACA,UACA,SACA,OACA,QACA,MACA,SACA,OACA,QACA,SACA,SACA,OACA,WACA,OACA,MACA,OACA,SACA,SACA,SACA,WACA,SACA,UACA,WACA,WACA,OACA,UACA,SACA,OACA,SACA,QACA,UACA,SACA,SACA,SACA,UACA,OACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,SACA,SACA,OACA,UACA,UACA,SACA,SACA,UACA,SACA,SACA,UACA,OACA,UACA,QACA,OACA,SACA,OACA,SACA,UACA,UACA,UACA,SACA,WACA,SACA,OACA,WACA,WACA,UACA,OACA,UACA,WACA,UACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,MACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,OACA,SACA,OACA,QACA,SACA,QACA,UACA,OACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,SACA,OACA,QACA,OACA,QACA,UACA,QACA,QACA,QACA,OACA,QACA,SACA,OACA,OACA,OACA,UACA,UACA,OACA,OACA,UACA,SACA,MACA,QACA,SACA,QACA,QACA,WACA,UACA,UACA,WACA,WACA,QACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,QACA,SACA,QACA,MACA,UACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,QACA,WACA,UACA,QACA,QACA,MACA,QACA,QACA,UACA,QACA,QACA,SACA,QACA,UACA,SACA,UACA,SACA,WACA,OACA,QACA,SACA,QACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,QACA,MACA,UACA,SACA,OACA,UACA,OACA,QACA,QACA,OACA,QACA,OACA,SACA,SACA,MACA,QACA,UACA,OACA,UACA,MACA,QACA,SACA,UACA,QACA,WACA,UACA,WACA,UACA,MACA,OACA,OACA,SACA,QACA,WACA,QACA,QACA,MACA,QACA,UACA,QACA,SACA,OACA,OACA,SACA,QACA,OACA,OACA,SACA,SACA,OACA,OACA,QACA,SACA,OACA,MACA,UACA,MACA,OACA,QACA,QACA,OACA,SACA,OACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,QACA,MACA,OACA,QACA,MACA,OACA,OACA,SACA,OACA,OACA,QACA,SACA,SACA,OACA,UACA,QACA,UACA,SACA,SACA,QACA,MACA,UACA,QACA,WACA,QACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,OACA,MACA,QACA,UACA,OACA,SACA,SACA,OACA,SACA,UACA,OACA,MACA,SACA,UACA,SACA,SACA,UACA,MACA,OACA,OACA,SACA,QACA,OACA,UACA,SACA,QACA,SACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,UACA,OACA,OACA,OACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,UACA,OACA,OACA,QACA,UACA,SACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,OACA,QACA,OACA,UACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,MACA,MACA,QACA,OACA,OACA,SACA,UACA,OACA,QACA,SACA,OACA,QACA,UACA,MACA,OACA,OACA,SACA,OACA,SACA,QACA,QACA,WACA,SACA,QACA,SACA,OACA,MACA,OACA,SACA,OACA,OACA,OACA,MACA,OACA,UACA,QACA,SACA,OACA,OACA,UACA,SACA,OACA,QACA,OACA,OACA,OACA,SACA,QACA,WACA,OACA,QACA,OACA,QACA,MACA,OACA,QACA,SACA,QACA,UACA,SACA,OACA,SACA,QACA,OACA,UACA,SACA,MACA,OACA,OACA,WACA,OACA,SACA,MACA,UACA,UACA,QACA,UACA,UACA,SACA,SACA,SACA,UACA,UACA,OACA,UACA,SACA,WACA,QACA,WACA,SACA,WACA,SACA,UACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,QACA,WACA,QACA,UACA,SACA,SACA,SACA,UACA,UACA,SACA,WACA,OACA,SACA,SACA,UACA,OACA,SACA,UACA,QACA,OACA,QACA,SACA,SACA,MACA,OACA,UACA,QACA,QACA,QACA,MACA,OACA,OACA,UACA,MACA,QACA,QACA,OACA,SACA,SACA,OACA,OACA,WACA,OACA,OACA,UACA,MACA,OACA,MACA,SACA,OACA,UACA,OACA,MACA,UACA,OACA,SACA,OACA,OACA,QACA,QACA,OACA,MACA,QACA,QACA,SACA,OACA,OACA,OACA,WACA,SACA,QACA,QACA,QACA,QACA,UACA,OACA,MACA,OACA,UACA,QACA,OACA,SACA,OACA,QACA,QACA,UACA,OACA,MACA,QACA,SACA,UACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,UACA,UACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,OACA,SACA,OACA,SACA,OACA,SACA,OACA,OACA,UACA,QACA,OACA,QACA,SACA,OACA,OACA,UACA,OACA,SACA,OACA,QACA,QACA,UACA,SACA,QACA,QACA,SACA,SACA,UACA,MACA,QACA,SACA,OACA,OACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,QACA,UACA,SACA,QACA,SACA,QACA,SACA,SACA,SACA,WACA,OACA,OACA,SACA,QACA,WACA,OACA,SACA,SACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,QACA,QACA,SACA,OACA,SACA,SACA,UACA,OACA,QACA,QACA,QACA,QACA,OACA,UACA,QACA,SACA,SACA,WACA,OACA,UACA,QACA,OACA,UACA,QACA,SACA,UACA,SACA,SACA,OACA,UACA,MACA,QACA,UACA,SACA,QACA,SACA,MACA,SACA,UACA,SACA,UACA,QACA,OACA,QACA,OACA,UACA,WACA,SACA,SACA,QACA,WACA,QACA,OACA,QACA,OACA,SACA,OACA,WACA,SACA,SACA,WACA,QACA,OACA,SACA,SACA,UACA,OACA,QACA,OACA,SACA,SACA,QACA,SACA,SACA,OACA,OACA,OACA,WACA,UACA,UACA,SACA,QACA,OACA,MACA,UACA,UACA,QACA,OACA,OACA,OACA,QACA,QACA,QACA,UACA,SACA,SACA,QACA,OACA,UACA,OACA,UACA,SACA,QACA,MACA,UACA,SACA,QACA,MACA,MACA,OACA,SACA,SACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,OACA,MACA,QACA,SACA,QACA,MACA,OACA,MACA,QACA,UACA,OACA,OACA,MACA,QACA,SACA,OACA,OACA,QACA,UACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,QACA,SACA,WACA,SACA,UACA,QACA,UACA,QACA,SACA,UACA,OACA,OACA,OACA,MACA,QACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,SACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,SACA,OACA,SACA,QACA,OACA,QACA,OACA,UACA,SACA,UACA,QACA,OACA,UACA,QACA,SACA,OACA,UACA,UACA,MACA,UACA,SACA,SACA,SACA,UACA,SACA,SACA,MACA,QACA,QACA,SACA,WACA,QACA,SACA,UACA,QACA,MACA,SACA,OACA,QACA,OACA,UACA,OACA,SACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,QACA,QACA,OACA,SACA,OACA,OACA,OACA,UACA,UACA,WACA,WACA,OACA,SACA,UACA,UACA,SACA,QACA,WACA,SACA,UACA,SACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,UACA,UACA,UACA,SACA,UACA,UACA,UACA,QACA,WACA,UACA,UACA,QACA,UACA,SACA,UACA,OACA,OACA,QACA,UACA,QACA,QACA,QACA,WACA,SACA,UACA,QACA,OACA,MACA,SACA,UACA,UACA,UACA,UACA,WACA,QACA,OACA,OACA,QACA,SACA,UACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,QACA,SACA,QACA,QACA,OACA,OACA,SACA,QACA,MACA,QACA,QACA,OACA,SACA,QACA,UACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,OACA,SACA,WACA,SACA,SACA,SACA,QACA,OACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,WACA,SACA,WACA,WACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,MACA,SACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,OACA,OACA,SACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,SACA,SACA,UACA,OACA,SACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,MACA,SACA,UACA,OACA,OACA,QACA,SACA,QACA,OACA,SACA,OACA,SACA,OACA,UACA,UACA,QACA,UACA,OACA,MACA,QACA,OACA,QACA,UACA,QACA,SACA,SACA,UACA,WACA,WACA,QACA,QACA,SACA,SACA,QACA,MACA,SACA,SACA,OACA,SACA,SACA,UACA,WACA,OACA,OACA,UACA,SACA,OACA,UACA,SACA,QACA,WACA,SACA,UACA,UACA,SACA,QACA,QACA,SACA,QACA,UACA,QACA,OACA,QACA,UACA,SACA,QACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,QACA,WACA,QACA,SACA,QACA,UACA,MACA,UACA,OACA,OACA,QACA,QACA,OACA,SACA,OACA,QACA,SACA,UACA,SACA,QACA,OACA,QACA,SACA,UACA,MACA,OACA,QACA,SACA,MACA,QACA,OACA,QACA,QACA,OACA,OACA,QACA,UACA,QACA,QACA,SACA,OACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,OACA,QACA,OACA,OACA,SACA,SACA,OACA,OACA,OACA,QACA,UACA,QACA,WACA,QACA,UACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,UACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,OACA,SACA,QACA,QACA,UACA,QACA,QACA,OACA,QACA,SACA,SACA,MACA,SACA,UACA,WACA,SACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,WACA,SACA,SACA,SACA,WACA,UACA,QACA,UACA,QACA,UACA,SACA,SACA,UACA,OACA,SACA,SACA,QACA,UACA,OACA,SACA,MACA,QACA,SACA,QACA,SACA,UACA,OACA,UACA,QACA,WACA,WACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,QACA,SACA,UACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,OACA,OACA,OACA,SACA,OACA,QACA,SACA,OACA,QACA,OACA,OACA,MACA,SACA,SACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,UACA,QACA,SACA,QACA,QACA,UACA,SACA,OACA,QACA,OACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,QACA,UACA,QACA,UACA,MACA,WACA,SACA,QACA,SACA,WACA,OACA,SACA,UACA,OACA,QACA,MACA,QACA,SACA,QACA,UACA,WACA,OACA,QACA,UACA,SACA,QACA,OACA,MACA,QACA,QACA,UACA,SACA,QACA,WACA,OACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,UACA,OACA,OACA,SACA,UACA,QACA,OACA,QACA,UACA,QACA,QACA,MACA,OACA,UACA,SACA,OACA,SACA,SACA,OACA,SACA,SACA,SACA,QACA,OACA,QACA,MACA,OACA,UACA,OACA,WACA,SACA,UACA,QACA,UACA,QACA,OACA,SACA,SACA,UACA,UACA,SACA,OACA,WACA,UACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,OACA,QACA,QACA,QACA,OACA,QACA,MACA,OACA,SACA,UACA,QACA,UACA,SACA,SACA,QACA,QACA,SACA,QACA,MACA,SACA,QACA,UACA,OACA,QACA,UACA,SACA,SACA,UACA,QACA,OACA,SACA,UACA,OACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,UACA,UACA,SACA,UACA,QACA,OACA,QACA,SACA,QACA,QACA,QACA,QACA,OACA,UACA,SACA,OACA,SACA,OACA,QACA,OACA,OACA,OACA,SACA,OACA,UACA,OACA,UACA,OACA,OACA,QACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,UACA,MACA,UACA,UACA,QACA,UACA,OACA,MACA,QACA,OACA,QACA,QACA,OACA,QACA,OACA,UACA,OACA,QACA,OACA,OACA,OACA,MACA,SACA,OACA,OACA,OACA,SACA,SACA,OACA,SACA,OACA,OACA,UACA,OACA,QACA,SACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,QACA,UACA,QACA,QACA,QACA,OACA,OACA,SACA,MACA,QACA,QACA,QACA,OACA,OACA,OC5/DGlgb,eAAeglB,GAAO3gC,GAEzB,OAAO,IAAIu9B,iBAAiBs4K,OAAO21G,OAAO7qR,OAAO,UAAW3gC,GAChE,CCCO2b,eAAeogb,GAAOn4a,EAAO4sS,GAChC,MAAMj9S,EAAQqQ,EAAMnZ,KAAK,KACnBsuN,EAAO,WAAWy3F,IAAa7wE,UAAU,QAE/C,OAAO,GAAiB,GAAmB4nG,OAAQh0U,EAAOwlN,EAAM,KAAM,GAC1E,CCLO,SAASijO,GAAQp4a,EAAOq4a,GAC3B,MAAMC,EAAWt4a,EAAMjW,KAAKuY,GAAS+1a,EAAS76b,QAAQ8kB,EAAKjkB,iBAErDjC,EAAOm8b,GAAaD,EAAUD,EAASv/b,OAAQ,IAAK,IACpD4iF,EAAWt/E,EAAKA,EAAKtD,OAAS,GAC9BgJ,EAAS,IAAI63B,WAAWv9B,EAAKtD,OAAS,GAE5C,IAAK,IAAIxB,EAAI,EAAGA,EAAI8E,EAAKtD,OAAS,EAAGxB,GAAK,EACtCwK,EAAOxK,GAAK8E,EAAK9E,GAAKokF,EAG1B,MAAO,CAAC55E,EAAQ45E,EACpB,CAOO3jE,eAAeygb,GAAQx4a,EAAOq4a,GACjC,MAAMI,EAA+B,GAAfz4a,EAAMlnB,OAEtB4/b,EAAa,GACnBA,EAAWv8Z,MAAK,EAAO,EAAGs8Z,GA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","sources":["webpack://giftnft/./node_modules/@arkane-network/arkane-connect/connect.js","webpack://giftnft/./node_modules/@bladelabs/blade-web3.js/lib/src/models/wallet-errors.js","webpack://giftnft/./node_modules/@bladelabs/blade-web3.js/lib/src/models/errors.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/config.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/Observable.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isPromise.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isIterable.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/observable/defer.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/observable/empty.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/lift.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/Scheduler.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/scheduler/async.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/isDate.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/observable/timer.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/repeat.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/filter.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/take.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","webpack://giftnft/./node_modules/rxjs/dist/esm5/internal/operators/first.js","webpack://giftnft/./node_modules/@bladelabs/blade-web3.js/lib/src/models/blade.js","webpack://giftnft/./node_modules/@bladelabs/blade-web3.js/lib/src/signer.js","webpack://giftnft/./node_modules/@eosdacio/ual-wax/dist/UALWaxError.js","webpack://giftnft/./node_modules/@eosdacio/ual-wax/dist/Wax.js","webpack://giftnft/./node_modules/@eosdacio/ual-wax/dist/WaxIcon.js","webpack://giftnft/./node_modules/@eosdacio/ual-wax/dist/WaxUser.js","webpack://giftnft/./node_modules/@eosdacio/ual-wax/dist/index.js","webpack://giftnft/./node_modules/@ethersproject/bignumber/node_modules/bn.js/lib/bn.js","webpack://giftnft/./node_modules/@greymass/buoy/node_modules/eventemitter3/index.js","webpack://giftnft/./node_modules/@greymass/eosio/lib/eosio-core.m.js","webpack://giftnft/./node_modules/@greymass/eosio/node_modules/bn.js/lib/bn.js","webpack://giftnft/./node_modules/@greymass/miniaes/lib/miniaes.m.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/node_modules/bn.js/lib/bn.js","webpack://giftnft/./node_modules/@hashgraph/proto/lib/index.js","webpack://giftnft/./node_modules/@hashgraph/proto/lib/proto.js","webpack://giftnft/./node_modules/@hashgraph/proto/node_modules/long/src/long.js","webpack://giftnft/./node_modules/@hashgraph/sdk/node_modules/long/src/long.js","webpack://giftnft/./node_modules/@metamask/detect-provider/dist/index.js","webpack://giftnft/./node_modules/@protobufjs/aspromise/index.js","webpack://giftnft/./node_modules/@protobufjs/base64/index.js","webpack://giftnft/./node_modules/@protobufjs/eventemitter/index.js","webpack://giftnft/./node_modules/@protobufjs/float/index.js","webpack://giftnft/./node_modules/@protobufjs/inquire/index.js","webpack://giftnft/./node_modules/@protobufjs/pool/index.js","webpack://giftnft/./node_modules/@protobufjs/utf8/index.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/api/Api.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/connect/Flows.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/connect/Security.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/connect/connect.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/index.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/ConfirmationRequestType.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/SecretType.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/SignatureRequestType.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/TransactionRequestType.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/WindowMode.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/profile/Profile.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/TransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/TransactionResult.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/bitcoin/request/BitcoinTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildContractExecutionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildEip712SignRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildGasTransferRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildMessageSignRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildNftTransferRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildSignRequestBase.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildSignatureRequestType.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildSimpleTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildTokenTransferRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildTransactionRequestType.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/BuildTransferRequestBase.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/build/ContractCallInput.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/ethereum/request/EthereumContractCallExecutionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/ethereum/request/EthereumErc20TransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/ethereum/request/EthereumErcTokenTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/ethereum/request/EthereumTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/gochain/request/GochainErc20TransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/gochain/request/GochainTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/litecoin/request/LitecoinTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/tron/request/TronContractCallExecutionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/tron/request/TronTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/vechain/request/VechainContractCallExecutionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/vechain/request/VechainExecutableContractCall.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/vechain/request/VechainTransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/transaction/vechain/request/VechainVip180TransactionRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/wallet/ImportWalletRequest.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/wallet/TokenBalance.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/wallet/Wallet.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/models/wallet/WalletBalance.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/popup/GeneralPopup.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/popup/Popup.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/popup/PopupActions.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/popup/PopupWindow.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/popup/PopupWindowAsync.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/signer/PopupSigner.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/signer/RedirectSigner.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/signer/Signer.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/types/EventTypes.js","webpack://giftnft/./node_modules/@venly/connect/dist/src/utils/Utils.js","webpack://giftnft/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://giftnft/./node_modules/@waxio/waxjs/dist/WaxEventSource.js","webpack://giftnft/./node_modules/@waxio/waxjs/dist/WaxSigningApi.js","webpack://giftnft/./node_modules/@waxio/waxjs/dist/helpers.js","webpack://giftnft/./node_modules/@waxio/waxjs/dist/index.js","webpack://giftnft/./node_modules/@waxio/waxjs/dist/version.js","webpack://giftnft/./node_modules/@wharfkit/antelope/node_modules/pako/dist/pako.esm.mjs","webpack://giftnft/./node_modules/@wharfkit/antelope/lib/antelope.m.js","webpack://giftnft/./node_modules/@wharfkit/antelope/node_modules/bn.js/lib/bn.js","webpack://giftnft/./node_modules/@wharfkit/common/lib/common.m.js","webpack://giftnft/./node_modules/@wharfkit/resources/node_modules/bn.js/lib/bn.js","webpack://giftnft/./node_modules/@wharfkit/session/node_modules/pako/dist/pako.esm.mjs","webpack://giftnft/./node_modules/js-big-decimal/dist/esm/big-decimal.js","webpack://giftnft/./node_modules/@wharfkit/resources/lib/wharfkit-resources.m.js","webpack://giftnft/./node_modules/@wharfkit/abicache/lib/abicache.m.js","webpack://giftnft/./node_modules/@wharfkit/contract/lib/contract.m.js","webpack://giftnft/./node_modules/@wharfkit/token/lib/wharfkit-token.m.js","webpack://giftnft/./node_modules/@wharfkit/account/lib/account.m.js","webpack://giftnft/./node_modules/@wharfkit/session/lib/session.m.js","webpack://giftnft/./node_modules/@wharfkit/signing-request/lib/signing-request.m.js","webpack://giftnft/./node_modules/@greymass/buoy/lib/buoy-client.m.js","webpack://giftnft/./node_modules/@wharfkit/protocol-esr/lib/protocol-esr.m.js","webpack://giftnft/./node_modules/@wharfkit/wallet-plugin-anchor/lib/wallet-plugin-anchor.m.js","webpack://giftnft/./node_modules/@wharfkit/wallet-plugin-cloudwallet/lib/wallet-plugin-cloudwallet.m.js","webpack://giftnft/./node_modules/@wharfkit/wallet-plugin-wombat/lib/esm/index.js","webpack://giftnft/./node_modules/@wharfkit/web-renderer/lib/web-renderer.m.js","webpack://giftnft/./node_modules/anchor-link-browser-transport/lib/anchor-link-browser-transport.m.js","webpack://giftnft/./node_modules/pako/dist/pako.esm.mjs","webpack://giftnft/./node_modules/anchor-link/lib/anchor-link.m.js","webpack://giftnft/./node_modules/anchor-link/node_modules/isomorphic-ws/browser.js","webpack://giftnft/./node_modules/assert/build/assert.js","webpack://giftnft/./node_modules/assert/build/internal/assert/assertion_error.js","webpack://giftnft/./node_modules/assert/build/internal/errors.js","webpack://giftnft/./node_modules/assert/build/internal/util/comparisons.js","webpack://giftnft/./node_modules/base-x/src/index.js","webpack://giftnft/./node_modules/base64-js/index.js","webpack://giftnft/./node_modules/bigi/lib/bigi.js","webpack://giftnft/./node_modules/bigi/lib/convert.js","webpack://giftnft/./node_modules/bigi/lib/index.js","webpack://giftnft/./node_modules/bn.js/lib/bn.js","webpack://giftnft/./node_modules/brorand/index.js","webpack://giftnft/./node_modules/browserify-aes/aes.js","webpack://giftnft/./node_modules/browserify-aes/authCipher.js","webpack://giftnft/./node_modules/browserify-aes/browser.js","webpack://giftnft/./node_modules/browserify-aes/decrypter.js","webpack://giftnft/./node_modules/browserify-aes/encrypter.js","webpack://giftnft/./node_modules/browserify-aes/ghash.js","webpack://giftnft/./node_modules/browserify-aes/modes.js","webpack://giftnft/./node_modules/browserify-aes/modes/cbc.js","webpack://giftnft/./node_modules/browserify-aes/modes/cfb.js","webpack://giftnft/./node_modules/browserify-aes/modes/cfb1.js","webpack://giftnft/./node_modules/browserify-aes/modes/cfb8.js","webpack://giftnft/./node_modules/browserify-aes/modes/ctr.js","webpack://giftnft/./node_modules/browserify-aes/modes/ecb.js","webpack://giftnft/./node_modules/browserify-aes/modes/ofb.js","webpack://giftnft/./node_modules/browserify-aes/streamCipher.js","webpack://giftnft/./node_modules/bs58/index.js","webpack://giftnft/./node_modules/buffer-xor/index.js","webpack://giftnft/./node_modules/buffer/index.js","webpack://giftnft/./node_modules/bulma-toast/dist/bulma-toast.min.js","webpack://giftnft/./node_modules/bytebuffer/dist/bytebuffer.js","webpack://giftnft/./node_modules/call-bind/callBound.js","webpack://giftnft/./node_modules/call-bind/index.js","webpack://giftnft/./node_modules/cipher-base/index.js","webpack://giftnft/./node_modules/create-hash/browser.js","webpack://giftnft/./node_modules/create-hash/make-hash.js","webpack://giftnft/./node_modules/create-hash/md5.js","webpack://giftnft/./node_modules/create-hmac/browser.js","webpack://giftnft/./node_modules/create-hmac/legacy.js","webpack://giftnft/./node_modules/crypto-js/aes.js","webpack://giftnft/./node_modules/crypto-js/cipher-core.js","webpack://giftnft/./node_modules/crypto-js/core.js","webpack://giftnft/./node_modules/crypto-js/enc-base64.js","webpack://giftnft/./node_modules/crypto-js/enc-base64url.js","webpack://giftnft/./node_modules/crypto-js/enc-utf16.js","webpack://giftnft/./node_modules/crypto-js/evpkdf.js","webpack://giftnft/./node_modules/crypto-js/format-hex.js","webpack://giftnft/./node_modules/crypto-js/hmac.js","webpack://giftnft/./node_modules/crypto-js/index.js","webpack://giftnft/./node_modules/crypto-js/lib-typedarrays.js","webpack://giftnft/./node_modules/crypto-js/md5.js","webpack://giftnft/./node_modules/crypto-js/mode-cfb.js","webpack://giftnft/./node_modules/crypto-js/mode-ctr-gladman.js","webpack://giftnft/./node_modules/crypto-js/mode-ctr.js","webpack://giftnft/./node_modules/crypto-js/mode-ecb.js","webpack://giftnft/./node_modules/crypto-js/mode-ofb.js","webpack://giftnft/./node_modules/crypto-js/pad-ansix923.js","webpack://giftnft/./node_modules/crypto-js/pad-iso10126.js","webpack://giftnft/./node_modules/crypto-js/pad-iso97971.js","webpack://giftnft/./node_modules/crypto-js/pad-nopadding.js","webpack://giftnft/./node_modules/crypto-js/pad-zeropadding.js","webpack://giftnft/./node_modules/crypto-js/pbkdf2.js","webpack://giftnft/./node_modules/crypto-js/rabbit-legacy.js","webpack://giftnft/./node_modules/crypto-js/rabbit.js","webpack://giftnft/./node_modules/crypto-js/rc4.js","webpack://giftnft/./node_modules/crypto-js/ripemd160.js","webpack://giftnft/./node_modules/crypto-js/sha1.js","webpack://giftnft/./node_modules/crypto-js/sha224.js","webpack://giftnft/./node_modules/crypto-js/sha256.js","webpack://giftnft/./node_modules/crypto-js/sha3.js","webpack://giftnft/./node_modules/crypto-js/sha384.js","webpack://giftnft/./node_modules/crypto-js/sha512.js","webpack://giftnft/./node_modules/crypto-js/tripledes.js","webpack://giftnft/./node_modules/crypto-js/x64-core.js","webpack://giftnft/./node_modules/define-data-property/index.js","webpack://giftnft/./node_modules/define-properties/index.js","webpack://giftnft/./node_modules/device-detector-js/dist/index.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/bot/index.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/client/browser.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/client/feed-readers.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/client/index.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/client/libraries.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/client/media-players.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/client/mobile-apps.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/client/personal-information-managers.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/cameras.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/cars.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/consoles.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/index.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/mobiles.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/notebooks.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/portable-media-players.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/device/televisions.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/operating-system/index.js","webpack://giftnft/./node_modules/device-detector-js/dist/parsers/vendor-fragment/index.js","webpack://giftnft/./node_modules/device-detector-js/dist/utils/memory-cache.js","webpack://giftnft/./node_modules/device-detector-js/dist/utils/model.js","webpack://giftnft/./node_modules/device-detector-js/dist/utils/trim.js","webpack://giftnft/./node_modules/device-detector-js/dist/utils/user-agent.js","webpack://giftnft/./node_modules/device-detector-js/dist/utils/variable-replacement.js","webpack://giftnft/./node_modules/device-detector-js/dist/utils/version-compare.js","webpack://giftnft/./node_modules/device-detector-js/dist/utils/version.js","webpack://giftnft/./node_modules/ecurve/lib/curve.js","webpack://giftnft/./node_modules/ecurve/lib/index.js","webpack://giftnft/./node_modules/ecurve/lib/names.js","webpack://giftnft/./node_modules/ecurve/lib/point.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/curves.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://giftnft/./node_modules/elliptic/lib/elliptic/utils.js","webpack://giftnft/./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/aes.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/api_common.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/api_object.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/ecdsa.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/ecsignature.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/enforce_types.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/hash.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/index.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/key_private.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/key_public.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/key_utils.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/promise-async.js","webpack://giftnft/./node_modules/eosjs-ecc/lib/signature.js","webpack://giftnft/./node_modules/eosjs/dist/PrivateKey.js","webpack://giftnft/./node_modules/eosjs/dist/PublicKey.js","webpack://giftnft/./node_modules/eosjs/dist/Signature.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-api-interfaces.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-api.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-ecc-migration.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-jsonrpc.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-jssig.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-key-conversions.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-numeric.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-rpc-interfaces.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-rpcerror.js","webpack://giftnft/./node_modules/eosjs/dist/eosjs-serialize.js","webpack://giftnft/./node_modules/eosjs/dist/index.js","webpack://giftnft/./node_modules/eosjs/dist/ripemd.js","webpack://giftnft/./node_modules/es-define-property/index.js","webpack://giftnft/./node_modules/es-errors/eval.js","webpack://giftnft/./node_modules/es-errors/index.js","webpack://giftnft/./node_modules/es-errors/range.js","webpack://giftnft/./node_modules/es-errors/ref.js","webpack://giftnft/./node_modules/es-errors/syntax.js","webpack://giftnft/./node_modules/es-errors/type.js","webpack://giftnft/./node_modules/es-errors/uri.js","webpack://giftnft/./node_modules/eventemitter3/index.js","webpack://giftnft/./node_modules/events/events.js","webpack://giftnft/./node_modules/evp_bytestokey/index.js","webpack://giftnft/./node_modules/fetch-ponyfill/build/fetch-browser.js","webpack://giftnft/./node_modules/for-each/index.js","webpack://giftnft/./node_modules/function-bind/implementation.js","webpack://giftnft/./node_modules/function-bind/index.js","webpack://giftnft/./node_modules/get-intrinsic/index.js","webpack://giftnft/./node_modules/gopd/index.js","webpack://giftnft/./node_modules/has-property-descriptors/index.js","webpack://giftnft/./node_modules/has-proto/index.js","webpack://giftnft/./node_modules/has-symbols/index.js","webpack://giftnft/./node_modules/has-symbols/shams.js","webpack://giftnft/./node_modules/has-tostringtag/shams.js","webpack://giftnft/./node_modules/hash-base/index.js","webpack://giftnft/./node_modules/hash.js/lib/hash.js","webpack://giftnft/./node_modules/hash.js/lib/hash/common.js","webpack://giftnft/./node_modules/hash.js/lib/hash/hmac.js","webpack://giftnft/./node_modules/hash.js/lib/hash/ripemd.js","webpack://giftnft/./node_modules/hash.js/lib/hash/sha.js","webpack://giftnft/./node_modules/hash.js/lib/hash/sha/1.js","webpack://giftnft/./node_modules/hash.js/lib/hash/sha/224.js","webpack://giftnft/./node_modules/hash.js/lib/hash/sha/256.js","webpack://giftnft/./node_modules/hash.js/lib/hash/sha/384.js","webpack://giftnft/./node_modules/hash.js/lib/hash/sha/512.js","webpack://giftnft/./node_modules/hash.js/lib/hash/sha/common.js","webpack://giftnft/./node_modules/hash.js/lib/hash/utils.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/types/hashconnect.js","webpack://giftnft/./node_modules/isomorphic-ws/browser.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/types/relay.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/message/relayMessage.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/message/message-utils.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/message/message-handler.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/provider/provider.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/provider/signer.js","webpack://giftnft/./node_modules/hashconnect/dist/esm/hashconnect.js","webpack://giftnft/./node_modules/hashconnect/dist/types/hashconnect.js","webpack://giftnft/./node_modules/hasown/index.js","webpack://giftnft/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://giftnft/./node_modules/ieee754/index.js","webpack://giftnft/./node_modules/inherits/inherits_browser.js","webpack://giftnft/./node_modules/is-arguments/index.js","webpack://giftnft/./node_modules/is-callable/index.js","webpack://giftnft/./node_modules/is-generator-function/index.js","webpack://giftnft/./node_modules/is-nan/implementation.js","webpack://giftnft/./node_modules/is-nan/index.js","webpack://giftnft/./node_modules/is-nan/polyfill.js","webpack://giftnft/./node_modules/is-nan/shim.js","webpack://giftnft/./node_modules/is-typed-array/index.js","webpack://giftnft/./node_modules/js-sha256/src/sha256.js","webpack://giftnft/./node_modules/js-sha3/src/sha3.js","webpack://giftnft/./node_modules/keycloak-js/dist/keycloak.js","webpack://giftnft/./node_modules/keycloak-js/node_modules/base64-js/index.js","webpack://giftnft/./node_modules/long/dist/long.js","webpack://giftnft/./node_modules/md5.js/index.js","webpack://giftnft/./node_modules/minimalistic-assert/index.js","webpack://giftnft/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://giftnft/./node_modules/node-forge/lib/aes.js","webpack://giftnft/./node_modules/node-forge/lib/aesCipherSuites.js","webpack://giftnft/./node_modules/node-forge/lib/asn1-validator.js","webpack://giftnft/./node_modules/node-forge/lib/asn1.js","webpack://giftnft/./node_modules/node-forge/lib/baseN.js","webpack://giftnft/./node_modules/node-forge/lib/cipher.js","webpack://giftnft/./node_modules/node-forge/lib/cipherModes.js","webpack://giftnft/./node_modules/node-forge/lib/des.js","webpack://giftnft/./node_modules/node-forge/lib/ed25519.js","webpack://giftnft/./node_modules/node-forge/lib/forge.js","webpack://giftnft/./node_modules/node-forge/lib/hmac.js","webpack://giftnft/./node_modules/node-forge/lib/index.js","webpack://giftnft/./node_modules/node-forge/lib/jsbn.js","webpack://giftnft/./node_modules/node-forge/lib/kem.js","webpack://giftnft/./node_modules/node-forge/lib/log.js","webpack://giftnft/./node_modules/node-forge/lib/md.all.js","webpack://giftnft/./node_modules/node-forge/lib/md.js","webpack://giftnft/./node_modules/node-forge/lib/md5.js","webpack://giftnft/./node_modules/node-forge/lib/mgf.js","webpack://giftnft/./node_modules/node-forge/lib/mgf1.js","webpack://giftnft/./node_modules/node-forge/lib/oids.js","webpack://giftnft/./node_modules/node-forge/lib/pbe.js","webpack://giftnft/./node_modules/node-forge/lib/pbkdf2.js","webpack://giftnft/./node_modules/node-forge/lib/pem.js","webpack://giftnft/./node_modules/node-forge/lib/pkcs1.js","webpack://giftnft/./node_modules/node-forge/lib/pkcs12.js","webpack://giftnft/./node_modules/node-forge/lib/pkcs7.js","webpack://giftnft/./node_modules/node-forge/lib/pkcs7asn1.js","webpack://giftnft/./node_modules/node-forge/lib/pki.js","webpack://giftnft/./node_modules/node-forge/lib/prime.js","webpack://giftnft/./node_modules/node-forge/lib/prng.js","webpack://giftnft/./node_modules/node-forge/lib/pss.js","webpack://giftnft/./node_modules/node-forge/lib/random.js","webpack://giftnft/./node_modules/node-forge/lib/rc2.js","webpack://giftnft/./node_modules/node-forge/lib/rsa.js","webpack://giftnft/./node_modules/node-forge/lib/sha1.js","webpack://giftnft/./node_modules/node-forge/lib/sha256.js","webpack://giftnft/./node_modules/node-forge/lib/sha512.js","webpack://giftnft/./node_modules/node-forge/lib/ssh.js","webpack://giftnft/./node_modules/node-forge/lib/tls.js","webpack://giftnft/./node_modules/node-forge/lib/util.js","webpack://giftnft/./node_modules/node-forge/lib/x509.js","webpack://giftnft/./node_modules/object-is/implementation.js","webpack://giftnft/./node_modules/object-is/index.js","webpack://giftnft/./node_modules/object-is/polyfill.js","webpack://giftnft/./node_modules/object-is/shim.js","webpack://giftnft/./node_modules/object-keys/implementation.js","webpack://giftnft/./node_modules/object-keys/index.js","webpack://giftnft/./node_modules/object-keys/isArguments.js","webpack://giftnft/./node_modules/object.assign/implementation.js","webpack://giftnft/./node_modules/object.assign/polyfill.js","webpack://giftnft/./node_modules/pako/index.js","webpack://giftnft/./node_modules/pako/lib/deflate.js","webpack://giftnft/./node_modules/pako/lib/inflate.js","webpack://giftnft/./node_modules/pako/lib/utils/common.js","webpack://giftnft/./node_modules/pako/lib/utils/strings.js","webpack://giftnft/./node_modules/pako/lib/zlib/adler32.js","webpack://giftnft/./node_modules/pako/lib/zlib/constants.js","webpack://giftnft/./node_modules/pako/lib/zlib/crc32.js","webpack://giftnft/./node_modules/pako/lib/zlib/deflate.js","webpack://giftnft/./node_modules/pako/lib/zlib/gzheader.js","webpack://giftnft/./node_modules/pako/lib/zlib/inffast.js","webpack://giftnft/./node_modules/pako/lib/zlib/inflate.js","webpack://giftnft/./node_modules/pako/lib/zlib/inftrees.js","webpack://giftnft/./node_modules/pako/lib/zlib/messages.js","webpack://giftnft/./node_modules/pako/lib/zlib/trees.js","webpack://giftnft/./node_modules/pako/lib/zlib/zstream.js","webpack://giftnft/./node_modules/possible-typed-array-names/index.js","webpack://giftnft/./node_modules/protobufjs/minimal.js","webpack://giftnft/./node_modules/protobufjs/src/index-minimal.js","webpack://giftnft/./node_modules/protobufjs/src/reader.js","webpack://giftnft/./node_modules/protobufjs/src/reader_buffer.js","webpack://giftnft/./node_modules/protobufjs/src/roots.js","webpack://giftnft/./node_modules/protobufjs/src/rpc.js","webpack://giftnft/./node_modules/protobufjs/src/rpc/service.js","webpack://giftnft/./node_modules/protobufjs/src/util/longbits.js","webpack://giftnft/./node_modules/protobufjs/src/util/minimal.js","webpack://giftnft/./node_modules/protobufjs/src/writer.js","webpack://giftnft/./node_modules/protobufjs/src/writer_buffer.js","webpack://giftnft/./node_modules/pvtsutils/build/index.js","webpack://giftnft/./node_modules/querystring/decode.js","webpack://giftnft/./node_modules/querystring/encode.js","webpack://giftnft/./node_modules/querystring/index.js","webpack://giftnft/./node_modules/quick-format-unescaped/index.js","webpack://giftnft/./node_modules/randombytes/browser.js","webpack://giftnft/./node_modules/readable-stream/errors-browser.js","webpack://giftnft/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://giftnft/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://giftnft/./node_modules/readable-stream/lib/_stream_readable.js","webpack://giftnft/./node_modules/readable-stream/lib/_stream_transform.js","webpack://giftnft/./node_modules/readable-stream/lib/_stream_writable.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://giftnft/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://giftnft/./node_modules/readable-stream/readable-browser.js","webpack://giftnft/./node_modules/ripemd160/index.js","webpack://giftnft/./node_modules/safe-buffer/index.js","webpack://giftnft/./node_modules/set-function-length/index.js","webpack://giftnft/./node_modules/sha.js/hash.js","webpack://giftnft/./node_modules/sha.js/index.js","webpack://giftnft/./node_modules/sha.js/sha.js","webpack://giftnft/./node_modules/sha.js/sha1.js","webpack://giftnft/./node_modules/sha.js/sha224.js","webpack://giftnft/./node_modules/sha.js/sha256.js","webpack://giftnft/./node_modules/sha.js/sha384.js","webpack://giftnft/./node_modules/sha.js/sha512.js","webpack://giftnft/./node_modules/simple-crypto-js/lib/SimpleCrypto.js","webpack://giftnft/./node_modules/spark-md5/spark-md5.js","webpack://giftnft/./node_modules/stream-browserify/index.js","webpack://giftnft/./node_modules/string_decoder/lib/string_decoder.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://giftnft/./node_modules/eosjs-ecc/node_modules/@babel/runtime/helpers/typeof.js","webpack://giftnft/./node_modules/ts-typed-events/dist/index.js","webpack://giftnft/./node_modules/tweetnacl/nacl-fast.js","webpack://giftnft/./node_modules/ual-anchor/dist/Anchor.js","webpack://giftnft/./node_modules/ual-anchor/dist/AnchorLogo.js","webpack://giftnft/./node_modules/ual-anchor/dist/AnchorUser.js","webpack://giftnft/./node_modules/ual-anchor/dist/UALAnchorError.js","webpack://giftnft/./node_modules/ual-anchor/dist/index.js","webpack://giftnft/./node_modules/ual-anchor/dist/interfaces.js","webpack://giftnft/./node_modules/universal-authenticator-library/dist/Authenticator.js","webpack://giftnft/./node_modules/universal-authenticator-library/dist/UAL.js","webpack://giftnft/./node_modules/universal-authenticator-library/dist/UALError.js","webpack://giftnft/./node_modules/universal-authenticator-library/dist/User.js","webpack://giftnft/./node_modules/universal-authenticator-library/dist/index.js","webpack://giftnft/./node_modules/universal-authenticator-library/dist/interfaces.js","webpack://giftnft/./node_modules/util-deprecate/browser.js","webpack://giftnft/./node_modules/util/support/isBufferBrowser.js","webpack://giftnft/./node_modules/util/support/types.js","webpack://giftnft/./node_modules/util/util.js","webpack://giftnft/./node_modules/uuid/dist/esm-browser/rng.js","webpack://giftnft/./node_modules/uuid/dist/esm-browser/regex.js","webpack://giftnft/./node_modules/uuid/dist/esm-browser/validate.js","webpack://giftnft/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://giftnft/./node_modules/uuid/dist/esm-browser/v4.js","webpack://giftnft/./node_modules/vee-validate/dist/rules.js","webpack://giftnft/./node_modules/vee-validate/dist/vee-validate.esm.js","webpack://giftnft/./node_modules/vue-clickaway/dist/vue-clickaway.common.js","webpack://giftnft/./node_modules/vue-horizontal-list/dist/vue-horizontal-list.esm.js","webpack://giftnft/./node_modules/vue-moment/dist/vue-moment.js","webpack://giftnft/./node_modules/vue-router/dist/vue-router.esm.js","webpack://giftnft/./node_modules/vue-the-mask/dist/vue-the-mask.js","webpack://giftnft/./node_modules/vue/dist/vue.runtime.esm.js","webpack://giftnft/./node_modules/which-typed-array/index.js","webpack://giftnft/./node_modules/available-typed-arrays/index.js","webpack://giftnft/./node_modules/core-js/internals/a-callable.js","webpack://giftnft/./node_modules/core-js/internals/an-object.js","webpack://giftnft/./node_modules/core-js/internals/array-includes.js","webpack://giftnft/./node_modules/core-js/internals/array-set-length.js","webpack://giftnft/./node_modules/core-js/internals/classof-raw.js","webpack://giftnft/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://giftnft/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://giftnft/./node_modules/core-js/internals/create-property-descriptor.js","webpack://giftnft/./node_modules/core-js/internals/define-built-in.js","webpack://giftnft/./node_modules/core-js/internals/define-global-property.js","webpack://giftnft/./node_modules/core-js/internals/descriptors.js","webpack://giftnft/./node_modules/core-js/internals/document-create-element.js","webpack://giftnft/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://giftnft/./node_modules/core-js/internals/enum-bug-keys.js","webpack://giftnft/./node_modules/core-js/internals/environment-user-agent.js","webpack://giftnft/./node_modules/core-js/internals/environment-v8-version.js","webpack://giftnft/./node_modules/core-js/internals/export.js","webpack://giftnft/./node_modules/core-js/internals/fails.js","webpack://giftnft/./node_modules/core-js/internals/function-bind-native.js","webpack://giftnft/./node_modules/core-js/internals/function-call.js","webpack://giftnft/./node_modules/core-js/internals/function-name.js","webpack://giftnft/./node_modules/core-js/internals/function-uncurry-this.js","webpack://giftnft/./node_modules/core-js/internals/get-built-in.js","webpack://giftnft/./node_modules/core-js/internals/get-method.js","webpack://giftnft/./node_modules/core-js/internals/global-this.js","webpack://giftnft/./node_modules/core-js/internals/has-own-property.js","webpack://giftnft/./node_modules/core-js/internals/hidden-keys.js","webpack://giftnft/./node_modules/core-js/internals/ie8-dom-define.js","webpack://giftnft/./node_modules/core-js/internals/indexed-object.js","webpack://giftnft/./node_modules/core-js/internals/inspect-source.js","webpack://giftnft/./node_modules/core-js/internals/internal-state.js","webpack://giftnft/./node_modules/core-js/internals/is-array.js","webpack://giftnft/./node_modules/core-js/internals/is-callable.js","webpack://giftnft/./node_modules/core-js/internals/is-forced.js","webpack://giftnft/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://giftnft/./node_modules/core-js/internals/is-object.js","webpack://giftnft/./node_modules/core-js/internals/is-pure.js","webpack://giftnft/./node_modules/core-js/internals/is-symbol.js","webpack://giftnft/./node_modules/core-js/internals/length-of-array-like.js","webpack://giftnft/./node_modules/core-js/internals/make-built-in.js","webpack://giftnft/./node_modules/core-js/internals/math-trunc.js","webpack://giftnft/./node_modules/core-js/internals/object-define-property.js","webpack://giftnft/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://giftnft/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://giftnft/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://giftnft/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://giftnft/./node_modules/core-js/internals/object-keys-internal.js","webpack://giftnft/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://giftnft/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://giftnft/./node_modules/core-js/internals/own-keys.js","webpack://giftnft/./node_modules/core-js/internals/require-object-coercible.js","webpack://giftnft/./node_modules/core-js/internals/shared-key.js","webpack://giftnft/./node_modules/core-js/internals/shared-store.js","webpack://giftnft/./node_modules/core-js/internals/shared.js","webpack://giftnft/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://giftnft/./node_modules/core-js/internals/to-absolute-index.js","webpack://giftnft/./node_modules/core-js/internals/to-indexed-object.js","webpack://giftnft/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://giftnft/./node_modules/core-js/internals/to-length.js","webpack://giftnft/./node_modules/core-js/internals/to-object.js","webpack://giftnft/./node_modules/core-js/internals/to-primitive.js","webpack://giftnft/./node_modules/core-js/internals/to-property-key.js","webpack://giftnft/./node_modules/core-js/internals/try-to-string.js","webpack://giftnft/./node_modules/core-js/internals/uid.js","webpack://giftnft/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://giftnft/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://giftnft/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://giftnft/./node_modules/core-js/internals/well-known-symbol.js","webpack://giftnft/./node_modules/core-js/modules/es.array.push.js","webpack://giftnft/./node_modules/pino/browser.js","webpack://giftnft/./node_modules/@gaviti/vue-turnstile/dist/vue-turnstile.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/encoding/hex.browser.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/BadEntityIdError.js","webpack://giftnft/./node_modules/bignumber.js/bignumber.mjs","webpack://giftnft/./node_modules/@hashgraph/sdk/src/util.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/base32.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/Key.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/KeyList.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/BadKeyError.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/util/array.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/encoding/hex.browser.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/Ed25519PublicKey.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/random.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/encoding/utf8.browser.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/hmac.browser.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/bip32.browser.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/slip10.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/Ed25519PrivateKey.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/keccak.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/ecdsa.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/EcdsaPublicKey.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/EcdsaPrivateKey.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/PublicKey.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/aes.browser.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/pbkdf2.browser.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/keystore.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/encoding/der.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/pkcs.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/encoding/base64.browser.js","webpack://giftnft/./node_modules/pvutils/build/utils.es.js","webpack://giftnft/./node_modules/asn1js/build/index.es.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/encoding/pem.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/util/derive.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/Cache.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/PrivateKey.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/BadMnemonicReason.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/BadMnemonicError.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/words/legacy.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/words/bip39.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/sha256.browser.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/primitive/bip39.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/util/entropy.js","webpack://giftnft/./node_modules/@hashgraph/cryptography/src/Mnemonic.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/array.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Cache.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Key.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/PublicKey.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/EntityIdHelper.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Mnemonic.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/PrivateKey.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/KeyList.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/long.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/HbarUnit.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Hbar.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/StatusError.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/ReceiptStatusError.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Status.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/EvmAddress.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/grpc/GrpcStatus.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/grpc/GrpcServiceError.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/List.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/http/HttpError.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Executable.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Timestamp.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/TransactionId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/PrecheckStatusError.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/MaxQueryPaymentExceeded.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/query/Query.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/topic/TopicId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/schedule/ScheduleId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/ExchangeRate.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/TransactionReceipt.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/TransactionReceiptQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Transfer.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractLogInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/encoding/utf8.browser.js","webpack://giftnft/./node_modules/@ethersproject/logger/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/logger/lib.esm/index.js","webpack://giftnft/./node_modules/@ethersproject/bytes/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/bytes/lib.esm/index.js","webpack://giftnft/./node_modules/@ethersproject/properties/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/properties/lib.esm/index.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/bignumber/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js","webpack://giftnft/./node_modules/@ethersproject/keccak256/lib.esm/index.js","webpack://giftnft/./node_modules/@ethersproject/address/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/address/lib.esm/index.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/address.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/array.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/boolean.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/bytes.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/null.js","webpack://giftnft/./node_modules/@ethersproject/constants/lib.esm/bignumbers.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/number.js","webpack://giftnft/./node_modules/@ethersproject/strings/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/strings/lib.esm/utf8.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/string.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/coders/tuple.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/fragments.js","webpack://giftnft/./node_modules/@ethersproject/abi/lib.esm/abi-coder.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractNonceInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractFunctionResult.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/ObjectMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenTransferAccountMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenTransferMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenNftTransferMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/AssessedCustomFee.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenAssociation.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenTransfer.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/NftId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/PendingAirdropId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/PendingAirdropRecord.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/TransactionRecord.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/RecordStatusError.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/TransactionRecordQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/TransactionResponse.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/cryptography/sha384.browser.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/TransactionHashMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/NodeAccountIdSignatureMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/SignatureMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/transaction/Transaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenNftTransfer.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/NullableTokenDecimalMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/AbstractTokenTransferTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenAirdropTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/AirdropPendingTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenClaimAirdropTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenCancelAirdropTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/HbarAllowance.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenAllowance.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenNftAllowance.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountAllowanceApproveTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountAllowanceDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenBalanceMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenDecimalMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountBalance.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountBalanceQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Duration.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountCreateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/StakingInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/LiveHash.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenRelationship.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TokenRelationshipMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/LedgerId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountRecordsQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/ProxyStaker.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountStakersQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/AccountUpdateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/address_book/IPv4AddressPart.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/address_book/IPv4Address.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/address_book/Endpoint.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/address_book/NodeAddress.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/address_book/NodeAddressBook.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/network/AddressBookQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractByteCodeQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/cryptography/keccak.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractFunctionSelector.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractFunctionParameters.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractCallQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileCreateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileAppendTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractCreateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractExecuteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/ContractUpdateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/CustomFee.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/CustomFixedFee.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/FeeAssessmentMethod.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/CustomFractionalFee.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/CustomRoyaltyFee.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/contract/DelegateContractId.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/EthereumTransaction.js","webpack://giftnft/./node_modules/@ethersproject/rlp/lib.esm/_version.js","webpack://giftnft/./node_modules/@ethersproject/rlp/lib.esm/index.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/EthereumTransactionData.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/EthereumTransactionDataLegacy.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/EthereumTransactionDataEip1559.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/EthereumTransactionDataEip2930.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/ExchangeRates.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/FeeDataType.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/RequestType.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileContentsQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/file/FileUpdateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/FreezeType.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/system/FreezeTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/LiveHashAddTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/LiveHashDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/LiveHashQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/network/SemanticVersion.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/network/NetworkVersionInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/network/NetworkVersionInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/PrngTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/schedule/ScheduleCreateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/schedule/ScheduleDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/schedule/ScheduleInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/schedule/ScheduleInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/schedule/ScheduleSignTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/system/SystemDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/system/SystemUndeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenAssociateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenBurnTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenReference.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenRejectTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenDissociateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenType.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenSupplyType.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenCreateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenFeeScheduleUpdateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenFreezeTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenGrantKycTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenMintTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenNftInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenNftInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenPauseTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenRevokeKycTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenUnfreezeTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenUnpauseTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenKeyValidation.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenUpdateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenWipeTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/topic/TopicCreateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/topic/TopicDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/topic/TopicInfo.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/topic/TopicInfoQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/topic/TopicMessageSubmitTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/topic/TopicUpdateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/HbarTransferMap.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/account/TransferTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/logger/LogLevel.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/token/TokenUpdateNftsTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/node/ServiceEndpoint.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/node/NodeCreateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/node/NodeDeleteTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/node/NodeUpdateTransaction.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/query/CostQuery.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/exports.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/ManagedNodeAddress.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/ManagedNode.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/NodeCerts.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/Node.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/address_book/AddressBooks.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/client/ManagedNetwork.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/client/Network.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/MirrorNode.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/client/MirrorNetwork.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/client/Client.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/http/HttpStatus.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/channel/Channel.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/channel/WebChannel.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/constants/ClientConstants.js","webpack://giftnft/./node_modules/@hashgraph/sdk/src/client/WebClient.js","webpack://giftnft/./node_modules/axios/lib/helpers/bind.js","webpack://giftnft/./node_modules/axios/lib/utils.js","webpack://giftnft/./node_modules/axios/lib/core/AxiosError.js","webpack://giftnft/./node_modules/axios/lib/helpers/null.js","webpack://giftnft/./node_modules/axios/lib/helpers/toFormData.js","webpack://giftnft/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://giftnft/./node_modules/axios/lib/helpers/buildURL.js","webpack://giftnft/./node_modules/axios/lib/core/InterceptorManager.js","webpack://giftnft/./node_modules/axios/lib/defaults/transitional.js","webpack://giftnft/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://giftnft/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://giftnft/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://giftnft/./node_modules/axios/lib/platform/browser/index.js","webpack://giftnft/./node_modules/axios/lib/platform/common/utils.js","webpack://giftnft/./node_modules/axios/lib/platform/index.js","webpack://giftnft/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://giftnft/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://giftnft/./node_modules/axios/lib/defaults/index.js","webpack://giftnft/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://giftnft/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://giftnft/./node_modules/axios/lib/core/transformData.js","webpack://giftnft/./node_modules/axios/lib/cancel/isCancel.js","webpack://giftnft/./node_modules/axios/lib/cancel/CanceledError.js","webpack://giftnft/./node_modules/axios/lib/core/settle.js","webpack://giftnft/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://giftnft/./node_modules/axios/lib/helpers/speedometer.js","webpack://giftnft/./node_modules/axios/lib/helpers/throttle.js","webpack://giftnft/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://giftnft/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://giftnft/./node_modules/axios/lib/helpers/cookies.js","webpack://giftnft/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://giftnft/./node_modules/axios/lib/helpers/combineURLs.js","webpack://giftnft/./node_modules/axios/lib/core/buildFullPath.js","webpack://giftnft/./node_modules/axios/lib/core/mergeConfig.js","webpack://giftnft/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://giftnft/./node_modules/axios/lib/adapters/xhr.js","webpack://giftnft/./node_modules/axios/lib/helpers/composeSignals.js","webpack://giftnft/./node_modules/axios/lib/helpers/trackStream.js","webpack://giftnft/./node_modules/axios/lib/adapters/fetch.js","webpack://giftnft/./node_modules/axios/lib/adapters/adapters.js","webpack://giftnft/./node_modules/axios/lib/core/dispatchRequest.js","webpack://giftnft/./node_modules/axios/lib/env/data.js","webpack://giftnft/./node_modules/axios/lib/helpers/validator.js","webpack://giftnft/./node_modules/axios/lib/core/Axios.js","webpack://giftnft/./node_modules/axios/lib/cancel/CancelToken.js","webpack://giftnft/./node_modules/axios/lib/helpers/spread.js","webpack://giftnft/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://giftnft/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://giftnft/./node_modules/axios/lib/axios.js","webpack://giftnft/./node_modules/tslib/tslib.es6.mjs","webpack://giftnft/./node_modules/@noble/hashes/esm/_assert.js","webpack://giftnft/./node_modules/@noble/hashes/esm/_u64.js","webpack://giftnft/./node_modules/@noble/hashes/esm/crypto.js","webpack://giftnft/./node_modules/@noble/hashes/esm/utils.js","webpack://giftnft/./node_modules/@noble/hashes/esm/sha3.js","webpack://giftnft/./node_modules/ethereum-cryptography/esm/utils.js","webpack://giftnft/./node_modules/ethereum-cryptography/esm/keccak.js","webpack://giftnft/./node_modules/web3-errors/lib/esm/error_codes.js","webpack://giftnft/./node_modules/web3-errors/lib/esm/web3_error_base.js","webpack://giftnft/./node_modules/web3-errors/lib/esm/errors/utils_errors.js","webpack://giftnft/./node_modules/web3-errors/lib/esm/errors/rpc_error_messages.js","webpack://giftnft/./node_modules/web3-errors/lib/esm/errors/rpc_errors.js","webpack://giftnft/./node_modules/web3-errors/lib/esm/errors/schema_errors.js","webpack://giftnft/./node_modules/zod/lib/index.mjs","webpack://giftnft/./node_modules/web3-validator/lib/esm/errors.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/constants.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/abi.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/string.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/utils.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/bytes.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/address.js","webpack://giftnft/./node_modules/web3-types/lib/esm/data_format_types.js","webpack://giftnft/./node_modules/web3-types/lib/esm/eth_types.js","webpack://giftnft/./node_modules/web3-types/lib/esm/primitives_types.js","webpack://giftnft/./node_modules/web3-types/lib/esm/web3_base_provider.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/numbers.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/block.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/bloom.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/boolean.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/object.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/topic.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validation/filter.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/formats.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/validator.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/web3_validator.js","webpack://giftnft/./node_modules/web3-validator/lib/esm/default_validator.js","webpack://giftnft/./node_modules/web3-utils/lib/esm/converters.js","webpack://giftnft/./node_modules/web3-utils/lib/esm/validation.js","webpack://giftnft/./node_modules/web3-utils/lib/esm/formatter.js","webpack://giftnft/./node_modules/web3-utils/lib/esm/web3_deferred_promise.js","webpack://giftnft/./node_modules/web3-eth-abi/lib/esm/coders/base/numbersLimits.js","webpack://giftnft/./node_modules/web3-eth-abi/lib/esm/coders/base/number.js"],"sourcesContent":["!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=7)}([function(t,e,n){\"use strict\";var r=n(2),o=n(15),i=Object.prototype.toString;function u(t){return\"[object Array]\"===i.call(t)}function a(t){return null!==t&&\"object\"==typeof t}function c(t){return\"[object Function]\"===i.call(t)}function s(t,e){if(null!==t&&void 0!==t)if(\"object\"!=typeof t&&(t=[t]),u(t))for(var n=0,r=t.length;n=200&&t<300},headers:{common:{Accept:\"application/json, text/plain, */*\"}}};r.forEach([\"delete\",\"get\",\"head\"],function(t){a.headers[t]={}}),r.forEach([\"post\",\"put\",\"patch\"],function(t){a.headers[t]=r.merge(i)}),t.exports=a}).call(this,n(17))},function(t,e,n){\"use strict\";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r=0;a--)(o=t[a])&&(u=(i<3?o(u):i>3?o(e,n,u):o(e,n))||u);return i>3&&u&&Object.defineProperty(e,n,u),u}function c(t,e){return function(n,r){e(n,r,t)}}function s(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function f(t,e,n,r){return new(n||(n=Promise))(function(o,i){function u(t){try{c(r.next(t))}catch(t){i(t)}}function a(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(u,a)}c((r=r.apply(t,e||[])).next())})}function l(t,e){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;u;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}}function h(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)u.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return u}function y(){for(var t=[],e=0;e1||a(t,e)})})}function a(t,e){try{!function(t){t.value instanceof v?Promise.resolve(t.value.v).then(c,s):f(i[0][2],t)}(o[t](e))}catch(t){f(i[0][3],t)}}function c(t){a(\"next\",t)}function s(t){a(\"throw\",t)}function f(t,e){t(e),i.shift(),i.length&&a(i[0][0],i[0][1])}}function w(t){var e,n;return e={},r(\"next\"),r(\"throw\",function(t){throw t}),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:v(t[r](e)),done:\"return\"===r}:o?o(e):e}:o}}function _(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=d(t),e={},r(\"next\"),r(\"throw\"),r(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise(function(r,o){(function(t,e,n,r){Promise.resolve(r).then(function(e){t({value:e,done:n})},e)})(r,o,(e=t[n](e)).done,e.value)})}}}function b(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t}function g(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function S(t){return t&&t.__esModule?t:{default:t}}},function(t,e,n){var r;void 0===(r=function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),function(t){t[t.TRANSACTION_SIGNED=0]=\"TRANSACTION_SIGNED\",t[t.SEND_PARAMS=1]=\"SEND_PARAMS\",t[t.POPUP_CLOSED=2]=\"POPUP_CLOSED\"}(e.EVENT_TYPES||(e.EVENT_TYPES={}))}.apply(e,[n,e]))||(t.exports=r)},function(t,e,n){var r;void 0===(r=function(t,e){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),function(t){t[t.ETHEREUM=0]=\"ETHEREUM\",t[t.VECHAIN=1]=\"VECHAIN\"}(e.CHAIN_TYPES||(e.CHAIN_TYPES={}))}.apply(e,[n,e]))||(t.exports=r)},function(t,e,n){var r,o;r=[n,e,n(12),n(13)],void 0===(o=function(t,e,n,r){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),r=n.__importDefault(r);var o=function(){function t(t,e){var n=t.endsWith(\"/\")?t.substring(0,t.length-1):t;this.http=r.default.create({baseURL:e?n+\"/\"+e:n}),this.http.interceptors.response.use(void 0,this.errorHandler)}return t.prototype.errorHandler=function(t){return Promise.resolve(void 0)},t}();e.default=o}.apply(e,r))||(t.exports=o)},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"__extends\",function(){return o}),n.d(e,\"__assign\",function(){return i}),n.d(e,\"__rest\",function(){return u}),n.d(e,\"__decorate\",function(){return a}),n.d(e,\"__param\",function(){return c}),n.d(e,\"__metadata\",function(){return s}),n.d(e,\"__awaiter\",function(){return f}),n.d(e,\"__generator\",function(){return l}),n.d(e,\"__exportStar\",function(){return p}),n.d(e,\"__values\",function(){return d}),n.d(e,\"__read\",function(){return h}),n.d(e,\"__spread\",function(){return y}),n.d(e,\"__await\",function(){return v}),n.d(e,\"__asyncGenerator\",function(){return m}),n.d(e,\"__asyncDelegator\",function(){return w}),n.d(e,\"__asyncValues\",function(){return _}),n.d(e,\"__makeTemplateObject\",function(){return b}),n.d(e,\"__importStar\",function(){return g}),n.d(e,\"__importDefault\",function(){return S});\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function o(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=0;a--)(o=t[a])&&(u=(i<3?o(u):i>3?o(e,n,u):o(e,n))||u);return i>3&&u&&Object.defineProperty(e,n,u),u}function c(t,e){return function(n,r){e(n,r,t)}}function s(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function f(t,e,n,r){return new(n||(n=Promise))(function(o,i){function u(t){try{c(r.next(t))}catch(t){i(t)}}function a(t){try{c(r.throw(t))}catch(t){i(t)}}function c(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(u,a)}c((r=r.apply(t,e||[])).next())})}function l(t,e){var n,r,o,i,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;u;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,r=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}}function h(t,e){var n=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)u.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return u}function y(){for(var t=[],e=0;e1||a(t,e)})})}function a(t,e){try{!function(t){t.value instanceof v?Promise.resolve(t.value.v).then(c,s):f(i[0][2],t)}(o[t](e))}catch(t){f(i[0][3],t)}}function c(t){a(\"next\",t)}function s(t){a(\"throw\",t)}function f(t,e){t(e),i.shift(),i.length&&a(i[0][0],i[0][1])}}function w(t){var e,n;return e={},r(\"next\"),r(\"throw\",function(t){throw t}),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:v(t[r](e)),done:\"return\"===r}:o?o(e):e}:o}}function _(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=d(t),e={},r(\"next\"),r(\"throw\"),r(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise(function(r,o){(function(t,e,n,r){Promise.resolve(r).then(function(e){t({value:e,done:n})},e)})(r,o,(e=t[n](e)).done,e.value)})}}}function b(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t}function g(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function S(t){return t&&t.__esModule?t:{default:t}}},function(t,e,n){t.exports=n(14)},function(t,e,n){\"use strict\";var r=n(0),o=n(2),i=n(16),u=n(1);function a(t){var e=new i(t),n=o(i.prototype.request,e);return r.extend(n,i.prototype,e),r.extend(n,e),n}var c=a(u);c.Axios=i,c.create=function(t){return a(r.merge(u,t))},c.Cancel=n(6),c.CancelToken=n(31),c.isCancel=n(5),c.all=function(t){return Promise.all(t)},c.spread=n(32),t.exports=c,t.exports.default=c},function(t,e){function n(t){return!!t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nt.exports=function(t){return null!=t&&(n(t)||function(t){return\"function\"==typeof t.readFloatLE&&\"function\"==typeof t.slice&&n(t.slice(0,0))}(t)||!!t._isBuffer)}},function(t,e,n){\"use strict\";var r=n(1),o=n(0),i=n(26),u=n(27);function a(t){this.defaults=t,this.interceptors={request:new i,response:new i}}a.prototype.request=function(t){\"string\"==typeof t&&(t=o.merge({url:arguments[0]},arguments[1])),(t=o.merge(r,{method:\"get\"},this.defaults,t)).method=t.method.toLowerCase();var e=[u,void 0],n=Promise.resolve(t);for(this.interceptors.request.forEach(function(t){e.unshift(t.fulfilled,t.rejected)}),this.interceptors.response.forEach(function(t){e.push(t.fulfilled,t.rejected)});e.length;)n=n.then(e.shift(),e.shift());return n},o.forEach([\"delete\",\"get\",\"head\",\"options\"],function(t){a.prototype[t]=function(e,n){return this.request(o.merge(n||{},{method:t,url:e}))}}),o.forEach([\"post\",\"put\",\"patch\"],function(t){a.prototype[t]=function(e,n,r){return this.request(o.merge(r||{},{method:t,url:e,data:n}))}}),t.exports=a},function(t,e){var n,r,o=t.exports={};function i(){throw new Error(\"setTimeout has not been defined\")}function u(){throw new Error(\"clearTimeout has not been defined\")}function a(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n=\"function\"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r=\"function\"==typeof clearTimeout?clearTimeout:u}catch(t){r=u}}();var c,s=[],f=!1,l=-1;function p(){f&&c&&(f=!1,c.length?s=c.concat(s):l=-1,s.length&&d())}function d(){if(!f){var t=a(p);f=!0;for(var e=s.length;e;){for(c=s,s=[];++l1)for(var n=1;n=0)return;u[e]=\"set-cookie\"===e?(u[e]?u[e]:[]).concat([n]):u[e]?u[e]+\", \"+n:n}}),u):u}},function(t,e,n){\"use strict\";var r=n(0);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement(\"a\");function o(t){var r=t;return e&&(n.setAttribute(\"href\",r),r=n.href),n.setAttribute(\"href\",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,\"\"):\"\",host:n.host,search:n.search?n.search.replace(/^\\?/,\"\"):\"\",hash:n.hash?n.hash.replace(/^#/,\"\"):\"\",hostname:n.hostname,port:n.port,pathname:\"/\"===n.pathname.charAt(0)?n.pathname:\"/\"+n.pathname}}return t=o(window.location.href),function(e){var n=r.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){\"use strict\";var r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";function o(){this.message=\"String contains an invalid character\"}o.prototype=new Error,o.prototype.code=5,o.prototype.name=\"InvalidCharacterError\",t.exports=function(t){for(var e,n,i=String(t),u=\"\",a=0,c=r;i.charAt(0|a)||(c=\"=\",a%1);u+=c.charAt(63&e>>8-a%1*8)){if((n=i.charCodeAt(a+=.75))>255)throw new o;e=e<<8|n}return u}},function(t,e,n){\"use strict\";var r=n(0);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,o,i,u){var a=[];a.push(t+\"=\"+encodeURIComponent(e)),r.isNumber(n)&&a.push(\"expires=\"+new Date(n).toGMTString()),r.isString(o)&&a.push(\"path=\"+o),r.isString(i)&&a.push(\"domain=\"+i),!0===u&&a.push(\"secure\"),document.cookie=a.join(\"; \")},read:function(t){var e=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+t+\")=([^;]*)\"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,\"\",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){\"use strict\";var r=n(0);function o(){this.handlers=[]}o.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){r.forEach(this.handlers,function(e){null!==e&&t(e)})},t.exports=o},function(t,e,n){\"use strict\";var r=n(0),o=n(28),i=n(5),u=n(1),a=n(29),c=n(30);function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return s(t),t.baseURL&&!a(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),r.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],function(e){delete t.headers[e]}),(t.adapter||u.adapter)(t).then(function(e){return s(t),e.data=o(e.data,e.headers,t.transformResponse),e},function(e){return i(e)||(s(t),e&&e.response&&(e.response.data=o(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)})}},function(t,e,n){\"use strict\";var r=n(0);t.exports=function(t,e,n){return r.forEach(n,function(n){t=n(t,e)}),t}},function(t,e,n){\"use strict\";t.exports=function(t){return/^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(t)}},function(t,e,n){\"use strict\";t.exports=function(t,e){return e?t.replace(/\\/+$/,\"\")+\"/\"+e.replace(/^\\/+/,\"\"):t}},function(t,e,n){\"use strict\";var r=n(6);function o(t){if(\"function\"!=typeof t)throw new TypeError(\"executor must be a function.\");var e;this.promise=new Promise(function(t){e=t});var n=this;t(function(t){n.reason||(n.reason=new r(t),e(n.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var t;return{token:new o(function(e){t=e}),cancel:t}},t.exports=o},function(t,e,n){\"use strict\";t.exports=function(t){return function(e){return t.apply(null,e)}}}]);","export var ErrorTypes;\n(function (ErrorTypes) {\n ErrorTypes[\"MALICIOUS\"] = \"malicious\";\n ErrorTypes[\"LOCKED\"] = \"locked\";\n ErrorTypes[\"PROMPT_CLOSED\"] = \"prompt_closed\";\n ErrorTypes[\"UPGRADE_REQUIRED\"] = \"upgrade_required\";\n ErrorTypes[\"NO_ACCOUNT\"] = \"no_account\";\n ErrorTypes[\"LOGIN_REJECTED\"] = \"login_rejected\";\n ErrorTypes[\"INVALID_METADATA\"] = \"invalid_metadata\";\n ErrorTypes[\"INVALID_NETWORK\"] = \"invalid_network\";\n ErrorTypes[\"BAD_PRIVATE_KEY\"] = \"bad_private_key\";\n ErrorTypes[\"INVALID_ID\"] = \"invalid_id\";\n ErrorTypes[\"INVALID_ACCOUNT\"] = \"invalid_account\";\n ErrorTypes[\"ID_EXISTS\"] = \"id_exists\";\n ErrorTypes[\"ERROR_SAVING\"] = \"error_saving\";\n ErrorTypes[\"ACCOUNT_REJECTED\"] = \"account_rejected\";\n ErrorTypes[\"SIGNATURE_REJECTED\"] = \"signature_rejected\";\n})(ErrorTypes || (ErrorTypes = {}));\nexport var ErrorCodes;\n(function (ErrorCodes) {\n ErrorCodes[ErrorCodes[\"NO_SIGNATURE\"] = 402] = \"NO_SIGNATURE\";\n ErrorCodes[ErrorCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n ErrorCodes[ErrorCodes[\"TIMED_OUT\"] = 408] = \"TIMED_OUT\";\n ErrorCodes[ErrorCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n ErrorCodes[ErrorCodes[\"UPGRADE_REQUIRED\"] = 426] = \"UPGRADE_REQUIRED\";\n ErrorCodes[ErrorCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n})(ErrorCodes || (ErrorCodes = {}));\n","/**\n * Errors related to connecting to the Blade Wallet Extension.\n */\nexport var BladeWalletError;\n(function (BladeWalletError) {\n /**\n * Blade Wallet Extension was not found in Chrome browser.\n */\n BladeWalletError[\"ExtensionNotFound\"] = \"ExtensionNotFound\";\n /**\n * Signer could not be used because there is no active session with the Blade Wallet Extension.\n */\n BladeWalletError[\"NoSession\"] = \"NoActiveSession\";\n})(BladeWalletError || (BladeWalletError = {}));\nexport function noExtensionError() {\n const err = new Error(`Blade Extension not found. Please install Blade Wallet Extension.`);\n err.name = BladeWalletError.ExtensionNotFound;\n return err;\n}\nexport function noSessionError() {\n const err = new Error(`User does not have an active Blade session.`);\n err.name = BladeWalletError.NoSession;\n return err;\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { timer } from '../observable/timer';\nexport function repeat(countOrConfig) {\n var _a;\n var count = Infinity;\n var delay;\n if (countOrConfig != null) {\n if (typeof countOrConfig === 'object') {\n (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay);\n }\n else {\n count = countOrConfig;\n }\n }\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var soFar = 0;\n var sourceSub;\n var resubscribe = function () {\n sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();\n sourceSub = null;\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(soFar));\n var notifierSubscriber_1 = createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n subscribeToSource();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n subscribeToSource();\n }\n };\n var subscribeToSource = function () {\n var syncUnsub = false;\n sourceSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (sourceSub) {\n resubscribe();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n resubscribe();\n }\n };\n subscribeToSource();\n });\n}\n//# sourceMappingURL=repeat.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=first.js.map","export const WalletLoadedEvent = 'hederaWalletLoaded';\nexport const WalletUpdatedEvent = 'hederaWalletUpdated';\nexport const WalletLockedEvent = 'hederaWalletLocked';\nexport var HederaNetwork;\n(function (HederaNetwork) {\n HederaNetwork[\"Mainnet\"] = \"Mainnet\";\n HederaNetwork[\"Testnet\"] = \"Testnet\";\n})(HederaNetwork || (HederaNetwork = {}));\n","import { defer, first, repeat, takeWhile } from \"rxjs\";\nimport { WalletLoadedEvent, WalletLockedEvent, WalletUpdatedEvent } from \"./models/blade\";\nimport { noExtensionError, noSessionError } from \"./models/errors\";\n/**\n * Implements Hedera Signer interface.\n * https://hips.hedera.com/hip/hip-338\n *\n * Proxies Extension wallet functions to decouple dApp code from\n * Blade's implementation of the wallet.\n */\nexport class BladeSigner {\n constructor() {\n /** @hidden */\n this._activeWallet = null;\n document.addEventListener(WalletLoadedEvent, async () => {\n this._activeWallet = (await this._getBladeExtension()).getActiveWallet();\n });\n document.addEventListener(WalletUpdatedEvent, async () => {\n var _a;\n (_a = this._onAccountChanged) === null || _a === void 0 ? void 0 : _a.call(this);\n });\n document.addEventListener(WalletLockedEvent, async () => {\n var _a;\n (_a = this._onWalletLocked) === null || _a === void 0 ? void 0 : _a.call(this);\n });\n }\n /** @hidden */\n _pollInterface() {\n return defer(() => new Promise((resolve) => resolve(window.bladeConnect))).pipe(repeat({ count: 50, delay: 200 }), takeWhile(value => !value, true), first(value => !!value, undefined));\n }\n /** @hidden */\n async _getBladeExtension() {\n const extensionInterface = window.bladeConnect;\n if (extensionInterface) {\n return extensionInterface;\n }\n return new Promise((resolve, reject) => {\n this._pollInterface().subscribe(extInterface => {\n if (!extInterface) {\n // use of method on BladeSigner before using createSession\n reject(noExtensionError());\n return;\n }\n resolve(extInterface);\n });\n });\n }\n /**\n * @param callback synchronous function to run at every account change\n */\n onAccountChanged(callback) {\n this._onAccountChanged = callback;\n }\n /**\n * @param callback synchronous function to run every time wallet is locked\n */\n onWalletLocked(callback) {\n this._onWalletLocked = callback;\n }\n /**\n * @returns Network map currently in use by Blade Wallet.\n */\n getNetwork() {\n var _a;\n return ((_a = this._activeWallet) === null || _a === void 0 ? void 0 : _a.getNetwork()) || {};\n }\n /**\n * @returns Array of Hedera mirror network nodes.\n */\n getMirrorNetwork() {\n var _a;\n return ((_a = this._activeWallet) === null || _a === void 0 ? void 0 : _a.getMirrorNetwork()) || [];\n }\n /**\n * Create a new session with the Blade Wallet Extension.\n *\n * All calls will fail until the promise resolves.\n *\n * @returns Promise that resolves when a new session to the Blade Wallet\n * has succeeded.\n */\n async createSession(params) {\n // store the blade extension here\n // the logic is that some methods on the Signer interface are sync\n this._activeWallet = await (await this._getBladeExtension()).createSession(params === null || params === void 0 ? void 0 : params.network, params === null || params === void 0 ? void 0 : params.dAppCode);\n }\n /**\n * Kills a session with the Blade Wallet Extension.\n */\n async killSession() {\n return (await this._getBladeExtension()).killSession();\n }\n /**\n * @hidden\n */\n async _getActiveWallet() {\n const wallet = (await this._getBladeExtension()).getActiveWallet();\n this._activeWallet = wallet;\n if (wallet == null) {\n throw noSessionError();\n }\n return this._activeWallet;\n }\n /**\n * @param messages Array of messages to sign.\n * @returns Promise that resolves to array of Signed messages.\n */\n async sign(messages) {\n return (await this._getActiveWallet()).sign(messages);\n }\n /**\n * Sign a hedera transaction with Blade Wallet.\n * @param transaction A Hedera transaction.\n * @returns A promise that resolves to the transaction with the signature appended.\n */\n async signTransaction(transaction) {\n return (await this._getActiveWallet()).signTransaction(transaction);\n }\n async call(request) {\n return (await this._getActiveWallet()).call(request);\n }\n /**\n * Determines if all the properties required are set and sets the transaction ID.\n *\n * If the transaction ID was already set it checks if the account ID of it is\n * the same as the users.\n *\n * @param transaction\n * @returns Promise that resolves to Transaction with correct transaction ID.\n */\n async checkTransaction(transaction) {\n return (await this._getActiveWallet()).checkTransaction(transaction);\n }\n /**\n * Sets the transaction ID of the transaction to the current account ID of the signer.\n * @param transaction\n */\n async populateTransaction(transaction) {\n return (await this._getActiveWallet()).populateTransaction(transaction);\n }\n /**\n * @returns LedgerId of network currently being used by Blade Wallet.\n */\n getLedgerId() {\n var _a;\n return ((_a = this._activeWallet) === null || _a === void 0 ? void 0 : _a.getLedgerId()) || null;\n }\n /**\n * @returns AccountId of wallet of active account.\n */\n getAccountId() {\n if (!this._activeWallet) {\n throw noSessionError();\n }\n return this._activeWallet.getAccountId();\n }\n /**\n * @returns Promise that resolves to account balance of active account.\n */\n async getAccountBalance() {\n return (await this._getActiveWallet()).getAccountBalance();\n }\n /**\n * @returns Promise that resolves to AccountInfo of the account currently active.\n */\n async getAccountInfo() {\n return (await this._getActiveWallet()).getAccountInfo();\n }\n /**\n * @returns Promise that resolves to array of records of recent account transactions.\n */\n async getAccountRecords() {\n return (await this._getActiveWallet()).getAccountRecords();\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UALWaxError = void 0;\nconst universal_authenticator_library_1 = require(\"universal-authenticator-library\");\nclass UALWaxError extends universal_authenticator_library_1.UALError {\n constructor(message, type, cause) {\n super(message, type, cause, \"Wax\");\n }\n}\nexports.UALWaxError = UALWaxError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wax = void 0;\nconst universal_authenticator_library_1 = require(\"universal-authenticator-library\");\nconst dist_1 = require(\"universal-authenticator-library/dist\");\nconst dist_2 = require(\"@waxio/waxjs/dist\");\nconst WaxUser_1 = require(\"./WaxUser\");\nconst WaxIcon_1 = require(\"./WaxIcon\");\nconst UALWaxError_1 = require(\"./UALWaxError\");\nclass Wax extends universal_authenticator_library_1.Authenticator {\n constructor(chains, options) {\n super(chains, options);\n this.users = [];\n this.initiated = false;\n this.apiSigner = options && options.apiSigner;\n this.returnTempAccounts = options && options.returnTempAccounts;\n this.waxSigningURL = options && options.waxSigningURL;\n this.waxAutoSigningURL = options && options.waxAutoSigningURL;\n }\n /**\n * Called after `shouldRender` and should be used to handle any async actions required to initialize the authenticator\n */\n async init() {\n this.initWaxJS();\n try {\n if (this.wax) {\n if (await this.wax.isAutoLoginAvailable()) {\n this.receiveLogin();\n }\n else {\n const data = JSON.parse(localStorage.getItem('ual-wax:autologin') || 'null');\n if (data && data.expire >= Date.now()) {\n this.receiveLogin(data.userAccount, data.pubKeys, (data === null || data === void 0 ? void 0 : data.isTemp) || false);\n }\n }\n }\n }\n catch (e) {\n console.log('UAL-WAX: autologin error', e);\n }\n this.initiated = true;\n console.log(`UAL-WAX: init`);\n }\n /**\n * Resets the authenticator to its initial, default state then calls `init` method\n */\n reset() {\n this.wax = undefined;\n this.users = [];\n this.initiated = false;\n this.session = undefined;\n }\n /**\n * Returns true if the authenticator has errored while initializing.\n */\n isErrored() {\n return false;\n }\n /**\n * Returns a URL where the user can download and install the underlying authenticator\n * if it is not found by the UAL Authenticator.\n */\n getOnboardingLink() {\n return 'https://all-access.wax.io/';\n }\n /**\n * Returns error (if available) if the authenticator has errored while initializing.\n */\n getError() {\n return null;\n }\n /**\n * Returns true if the authenticator is loading while initializing its internal state.\n */\n isLoading() {\n return !this.initiated;\n }\n /**\n * Returns the style of the Button that will be rendered.\n */\n getStyle() {\n return {\n icon: WaxIcon_1.WaxIcon,\n text: 'WAX Cloud Wallet',\n textColor: 'white',\n background: '#111111'\n };\n }\n /**\n * Returns whether or not the button should render based on the operating environment and other factors.\n * ie. If your Authenticator App does not support mobile, it returns false when running in a mobile browser.\n */\n shouldRender() {\n return true;\n }\n /**\n * Returns whether or not the dapp should attempt to auto login with the Authenticator app.\n * Auto login will only occur when there is only one Authenticator that returns shouldRender() true and\n * shouldAutoLogin() true.\n */\n shouldAutoLogin() {\n return false;\n }\n /**\n * Returns whether or not the button should show an account name input field.\n * This is for Authenticators that do not have a concept of account names.\n */\n async shouldRequestAccountName() {\n return false;\n }\n /**\n * Returns the amount of seconds after the authentication will be invalid for logging in on new\n * browser sessions. Setting this value to zero will cause users to re-attempt authentication on\n * every new browser session. Please note that the invalidate time will be saved client-side and\n * should not be relied on for security.\n */\n shouldInvalidateAfter() {\n return 86400;\n }\n /**\n * Login using the Authenticator App. This can return one or more users depending on multiple chain support.\n */\n async login() {\n console.log(`UAL-WAX: login requested`);\n // Commented for now to support multiple wax chains such as testnets/staging in the future\n // Mainnet check: this.chains[0].chainId !== '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4'\n if (this.chains.length > 1) {\n throw new UALWaxError_1.UALWaxError('WAX Could Wallet only supports one WAX chain', dist_1.UALErrorType.Unsupported, null);\n }\n if (!this.wax) {\n throw new UALWaxError_1.UALWaxError('WAX Cloud Wallet not initialized yet', dist_1.UALErrorType.Initialization, null);\n }\n try {\n if (!this.session) {\n await this.wax.login();\n this.receiveLogin();\n }\n if (!this.session) {\n throw new Error('Could not receive login information');\n }\n this.users = [new WaxUser_1.WaxUser(this.chains[0], this.session.userAccount, this.session.pubKeys, this.session.isTemp, this.wax)];\n console.log(`UAL-WAX: login`, this.users);\n return this.users;\n }\n catch (e) {\n throw new UALWaxError_1.UALWaxError(e.message ? e.message : 'Could not login to the WAX Cloud Wallet', dist_1.UALErrorType.Login, e);\n }\n }\n /**\n * Logs the user out of the dapp. This will be strongly dependent on each Authenticator app's patterns.\n */\n async logout() {\n this.initWaxJS();\n this.users = [];\n this.session = undefined;\n localStorage.setItem('ual-wax:autologin', 'null');\n console.log(`UAL-WAX: logout`);\n }\n /**\n * Returns true if user confirmation is required for `getKeys`\n */\n requiresGetKeyConfirmation() {\n return false;\n }\n /**\n * Returns name of authenticator for persistence in local storage\n */\n getName() {\n return 'wax';\n }\n receiveLogin(userAccount, pubKeys, isTemp) {\n if (!this.wax) {\n return;\n }\n const login = {\n // @ts-ignore\n userAccount: userAccount || this.wax.userAccount,\n // @ts-ignore\n pubKeys: pubKeys || this.wax.pubKeys,\n // @ts-ignore\n isTemp: isTemp || this.wax.isTemp || false,\n expire: Date.now() + this.shouldInvalidateAfter() * 1000\n };\n if (!login.userAccount || !login.pubKeys) {\n return;\n }\n localStorage.setItem('ual-wax:autologin', JSON.stringify(login));\n this.session = login;\n }\n initWaxJS() {\n this.wax = new dist_2.WaxJS({\n rpcEndpoint: this.getEndpoint(),\n tryAutoLogin: false,\n apiSigner: this.apiSigner,\n returnTempAccounts: this.returnTempAccounts || false,\n waxSigningURL: this.waxSigningURL,\n waxAutoSigningURL: this.waxAutoSigningURL\n });\n }\n getEndpoint() {\n return `${this.chains[0].rpcEndpoints[0].protocol}://${this.chains[0].rpcEndpoints[0].host}:${this.chains[0].rpcEndpoints[0].port}`;\n }\n}\nexports.Wax = Wax;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WaxIcon = void 0;\nexports.WaxIcon = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAEt2lUWHRYTU\nw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpy\nZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az\n0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8x\nOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIg\nogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0\naWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaH\nR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25z\nLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3\nhhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9z\nVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjMwIgogICBleGlmOl\nBpeGVsWURpbWVuc2lvbj0iMzAiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdp\nZHRoPSIzMCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMzAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9Ij\nIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLjAiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLjAiCiAg\nIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQz\nYxOTY2LTIuMSIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjAtMDYtMTlUMDI6MDE6NDgrMDI6MDAiCiAg\nIHhtcDpNZXRhZGF0YURhdGU9IjIwMjAtMDYtMTlUMDI6MDE6NDgrMDI6MDAiPgogICA8eG1wTU06SG\nlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9k\ndWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgUGhvdG8gKE1hciAzMSAyMD\nIwKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAyMC0wNi0xOVQwMjowMTo0OCswMjowMCIvPgogICAgPC9y\nZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSRE\nY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+b+esCwAAAYJpQ0NQc1JHQiBJRUM2MTk2\nNi0yLjEAACiRdZHPK0RRFMc/ZjCTH42QLCwmYTUjRk1slJmEkjRGGWxm3vxS8+P13kiyVbZTlNj4te\nAvYKuslSJSsrKwJjZMz3kzUyOZczv3fO733nO691ywBFNKWq8dgHQmpwUmfM6F0KLT9kI9rXTgwR5W\ndHVsdnaaqvZ5T40Zb91mrern/rXGaExXoMYuPKqoWk54Unh6LaeavCPcriTDUeEzYZcmFxS+M/VIiV\n9NTpT422QtGPCDpUXYmfjFkV+sJLW0sLycnnRqVSnfx3xJUywzPyexW7wLnQAT+HAyxTh+vAwyIrMX\nt/SnX1ZUyR8o5s+QlVxFZpV1NFZIkCSHS9RVqR6TGBc9JiPFutn/v33V40OeUvUmH9Q9G8Z7L9i2oZ\nA3jK8jwygcg/UJLjOV/OwhDH+Inq9oPQfg2ITzq4oW2YWLLeh8VMNauChZxS3xOLydQnMI2m6gYanU\ns/I+Jw8Q3JCvuoa9feiT847lH1hwZ9/TwxVHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8klEQVRIie\n2Uz0tUcRTFzx0nLTBKCHQ14cIJ+rEpxMBFuugPSHAhEdQm2kQtQ4kpaqU5u4pw1cLViBG4SKEfCFFE\nSNFQEbWQmrI2UeGMhtOnxbvDPN883QvvbO4753vv+d73ffd9pQQJEiTYajBJAlKSMDMAq+kx2jpuZv\n+AJknHJXVI+iZpznNSwbpMBfcbFGaioQtvYFNtg5wu4DMBHgG7JIlisbkhN3csXSu6ADwBOp33AHPA\nLHAkZDwPXA5tdgv4ALwGDrg25Zsvsrp6UJJ+Tw7tWc5nxiv5zPPyaPudlYXJLqBXwBlPHvHiu9Qx4d\no15+edjzr/4rECdPja9VB93/IlnaWQpZLfu7gyltkvSaXSyx0CdgNrwCugBfgJfAWWgB+uvQPW3PiU\nm753PuT8DbDdtQGgCsDf8nB5RIPfc2oNjlr1TwXc8+IbHoeBKxHtNnDYn38B/UABeBZ6wxn3O8l6jM\nfOCHAikrgPOBTRLvoJABwFssAYkAPOAQ997aPHP/7mjwGoVovU5yhV27gVeEpwvPdDDT0APgEvgJIb\nno5OashjGlgAZoCs683ATeAtwfzsjCtuitHavAjgqmtpIOUxDWzboJnG3wnSUv0CMTMjkmB+EXRK6p\na0ZGbzm+W7H4q5bGo8rsEECRIk2Br4D20NhhljafHuAAAAAElFTkSuQmCC`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WaxUser = void 0;\nconst universal_authenticator_library_1 = require(\"universal-authenticator-library\");\nconst UALWaxError_1 = require(\"./UALWaxError\");\nclass WaxUser extends universal_authenticator_library_1.User {\n constructor(chain, userAccount, pubKeys, isTemp, wax) {\n super();\n this.accountName = userAccount;\n this.requestPermission = 'active';\n this.pubKeys = pubKeys;\n this.isTemp = isTemp;\n this.chain = chain;\n this.wax = wax;\n // compatible features\n this.api = wax.api;\n this.rpc = wax.api && wax.api.rpc;\n }\n /**\n * @param transaction The transaction to be signed (a object that matches the RpcAPI structure).\n * @param options Options for tapos fields\n */\n async signTransaction(transaction, options) {\n try {\n const account = await this.wax.login();\n if (account !== this.accountName) {\n throw new Error('Account does not match the requested permission');\n }\n else {\n this.api = this.wax.api;\n this.rpc = this.wax.api.rpc;\n }\n const completedTransaction = await this.wax.api.transact(transaction, options);\n return this.returnEosjsTransaction(options.broadcast !== false, completedTransaction);\n }\n catch (e) {\n throw new UALWaxError_1.UALWaxError(e.message ? e.message : 'Unable to sign transaction', universal_authenticator_library_1.UALErrorType.Signing, e);\n }\n }\n async signArbitrary() {\n throw new UALWaxError_1.UALWaxError('WAX Cloud Wallet does not currently support signArbitrary', universal_authenticator_library_1.UALErrorType.Unsupported, null);\n }\n async verifyKeyOwnership() {\n throw new UALWaxError_1.UALWaxError('WAX Cloud Wallet does not currently support verifyKeyOwnership', universal_authenticator_library_1.UALErrorType.Unsupported, null);\n }\n async getAccountName() {\n return this.accountName;\n }\n async getChainId() {\n return this.chain.chainId;\n }\n async getKeys() {\n return this.pubKeys;\n }\n async getIsTemp() {\n return this.isTemp;\n }\n}\nexports.WaxUser = WaxUser;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Wax\"), exports);\n__exportStar(require(\"./WaxUser\"), exports);\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\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * EOSIO Core v0.6.11\n * https://github.com/greymass/eosio-core\n *\n * @license\n * Copyright (c) 2020 FFF00 Agents AB & Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport rand from 'brorand';\nimport { sha256, sha512, ripemd160 } from 'hash.js';\nimport BN from 'bn.js';\nimport { ec } from 'elliptic';\nimport { __decorate } from 'tslib';\n\nfunction arrayEquals(a, b) {\n const len = a.length;\n if (len !== b.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nfunction arrayEquatableEquals(a, b) {\n const len = a.length;\n if (len !== b.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (!a[i].equals(b[i])) {\n return false;\n }\n }\n return true;\n}\nconst hexLookup = {};\nfunction buildHexLookup() {\n hexLookup.enc = new Array(0xff);\n hexLookup.dec = {};\n for (let i = 0; i <= 0xff; ++i) {\n const b = i.toString(16).padStart(2, '0');\n hexLookup.enc[i] = b;\n hexLookup.dec[b] = i;\n }\n}\nfunction arrayToHex(array) {\n if (!hexLookup.enc) {\n buildHexLookup();\n }\n const len = array.length;\n const rv = new Array(len);\n for (let i = 0; i < len; ++i) {\n rv[i] = hexLookup.enc[array[i]];\n }\n return rv.join('');\n}\nfunction hexToArray(hex) {\n if (!hexLookup.dec) {\n buildHexLookup();\n }\n if (typeof hex !== 'string') {\n throw new Error('Expected string containing hex digits');\n }\n if (hex.length % 2) {\n throw new Error('Odd number of hex digits');\n }\n hex = hex.toLowerCase();\n const len = hex.length / 2;\n const result = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n const b = hexLookup.dec[hex[i * 2] + hex[i * 2 + 1]];\n if (b === undefined) {\n throw new Error('Expected hex string');\n }\n result[i] = b;\n }\n return result;\n}\n/** Generate N random bytes, throws if a secure random source isn't available. */\nfunction secureRandom(length) {\n return rand(length);\n}\n/** Used in isInstanceOf checks so we don't spam with warnings. */\nlet didWarn = false;\n/** Check if object in instance of class. */\nfunction isInstanceOf(object, someClass) {\n if (object instanceof someClass) {\n return true;\n }\n if (object == null || typeof object !== 'object') {\n return false;\n }\n // not an actual instance but since bundlers can fail to dedupe stuff or\n // multiple versions can be included we check for compatibility if possible\n const className = someClass['__className'] || someClass['abiName'];\n if (!className) {\n return false;\n }\n let instanceClass = object.constructor;\n let isAlienInstance = false;\n while (instanceClass && !isAlienInstance) {\n const instanceClassName = instanceClass['__className'] || instanceClass['abiName'];\n if (!instanceClassName) {\n break;\n }\n isAlienInstance = className == instanceClassName;\n instanceClass = Object.getPrototypeOf(instanceClass);\n }\n if (isAlienInstance && !didWarn) {\n // eslint-disable-next-line no-console\n console.warn(`Detected alien instance of ${className}, this usually means more than one version of @greymass/eosio has been included in your bundle.`);\n didWarn = true;\n }\n return isAlienInstance;\n}\n\nclass Bytes {\n /**\n * Create a new Bytes instance.\n * @note Make sure to take a [[copy]] before mutating the bytes as the underlying source is not copied here.\n */\n static from(value, encoding) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string') {\n return this.fromString(value, encoding);\n }\n if (ArrayBuffer.isView(value)) {\n return new this(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\n }\n if (isInstanceOf(value['array'], Uint8Array)) {\n return new this(value['array']);\n }\n return new this(new Uint8Array(value));\n }\n static fromString(value, encoding = 'hex') {\n if (encoding === 'hex') {\n const array = hexToArray(value);\n return new this(array);\n }\n else if (encoding == 'utf8') {\n const encoder = new TextEncoder();\n return new this(encoder.encode(value));\n }\n else {\n throw new Error(`Unknown encoding: ${encoding}`);\n }\n }\n static fromABI(decoder) {\n const len = decoder.readVaruint32();\n return new this(decoder.readArray(len));\n }\n static abiDefault() {\n return new Bytes();\n }\n static equal(a, b) {\n return this.from(a).equals(this.from(b));\n }\n static random(length) {\n return new this(secureRandom(length));\n }\n /** Return true if given value is a valid `BytesType`. */\n static isBytes(value) {\n if (isInstanceOf(value, Bytes) || isInstanceOf(value, Uint8Array)) {\n return true;\n }\n if (Array.isArray(value) && value.every((v) => typeof v === 'number')) {\n return true;\n }\n if (typeof value === 'string' && (/[\\da-f]/i.test(value) || value === '')) {\n return true;\n }\n return false;\n }\n constructor(array = new Uint8Array()) {\n this.array = array;\n }\n /** Number of bytes in this instance. */\n get length() {\n return this.array.byteLength;\n }\n /** Hex string representation of this instance. */\n get hexString() {\n return arrayToHex(this.array);\n }\n /** UTF-8 string representation of this instance. */\n get utf8String() {\n return new TextDecoder().decode(this.array);\n }\n /** Mutating. Append bytes to this instance. */\n append(other) {\n other = Bytes.from(other);\n const newSize = this.array.byteLength + other.array.byteLength;\n const buffer = new ArrayBuffer(newSize);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n array.set(other.array, this.array.byteLength);\n this.array = array;\n }\n /** Non-mutating, returns a copy of this instance with appended bytes. */\n appending(other) {\n const rv = new Bytes(this.array);\n rv.append(other);\n return rv;\n }\n /** Mutating. Pad this instance to length. */\n zeropad(n, truncate = false) {\n const newSize = truncate ? n : Math.max(n, this.array.byteLength);\n const buffer = new ArrayBuffer(newSize);\n const array = new Uint8Array(buffer);\n array.fill(0);\n if (truncate && this.array.byteLength > newSize) {\n array.set(this.array.slice(0, newSize), 0);\n }\n else {\n array.set(this.array, newSize - this.array.byteLength);\n }\n this.array = array;\n }\n /** Non-mutating, returns a copy of this instance with zeros padded. */\n zeropadded(n, truncate = false) {\n const rv = new Bytes(this.array);\n rv.zeropad(n, truncate);\n return rv;\n }\n /** Mutating. Drop bytes from the start of this instance. */\n dropFirst(n = 1) {\n this.array = this.array.subarray(n);\n }\n /** Non-mutating, returns a copy of this instance with dropped bytes from the start. */\n droppingFirst(n = 1) {\n return new Bytes(this.array.subarray(n));\n }\n copy() {\n const buffer = new ArrayBuffer(this.array.byteLength);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n return new Bytes(array);\n }\n equals(other) {\n return arrayEquals(this.array, Bytes.from(other).array);\n }\n toString(encoding = 'hex') {\n if (encoding === 'hex') {\n return this.hexString;\n }\n else if (encoding === 'utf8') {\n return this.utf8String;\n }\n else {\n throw new Error(`Unknown encoding: ${encoding}`);\n }\n }\n toABI(encoder) {\n encoder.writeVaruint32(this.array.byteLength);\n encoder.writeArray(this.array);\n }\n toJSON() {\n return this.hexString;\n }\n}\nBytes.abiName = 'bytes';\n\nclass Checksum {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (isInstanceOf(value, Checksum)) {\n return new this(value.array);\n }\n return new this(Bytes.from(value).array);\n }\n static fromABI(decoder) {\n return new this(decoder.readArray(this.byteSize));\n }\n static abiDefault() {\n return new this(new Uint8Array(this.byteSize));\n }\n constructor(array) {\n const byteSize = this.constructor.byteSize;\n if (array.byteLength !== byteSize) {\n throw new Error(`Checksum size mismatch, expected ${byteSize} bytes got ${array.byteLength}`);\n }\n this.array = array;\n }\n equals(other) {\n const self = this.constructor;\n try {\n return arrayEquals(this.array, self.from(other).array);\n }\n catch {\n return false;\n }\n }\n get hexString() {\n return arrayToHex(this.array);\n }\n toABI(encoder) {\n encoder.writeArray(this.array);\n }\n toString() {\n return this.hexString;\n }\n toJSON() {\n return this.toString();\n }\n}\nChecksum.abiName = '__checksum';\nclass Checksum256 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(sha256().update(Bytes.from(data).array).digest());\n return new Checksum256(digest);\n }\n}\nChecksum256.abiName = 'checksum256';\nChecksum256.byteSize = 32;\nclass Checksum512 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(sha512().update(Bytes.from(data).array).digest());\n return new Checksum512(digest);\n }\n}\nChecksum512.abiName = 'checksum512';\nChecksum512.byteSize = 64;\nclass Checksum160 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(ripemd160().update(Bytes.from(data).array).digest());\n return new Checksum160(digest);\n }\n}\nChecksum160.abiName = 'checksum160';\nChecksum160.byteSize = 20;\n\n/** Supported EOSIO curve types. */\nvar KeyType;\n(function (KeyType) {\n KeyType[\"K1\"] = \"K1\";\n KeyType[\"R1\"] = \"R1\";\n KeyType[\"WA\"] = \"WA\";\n})(KeyType || (KeyType = {}));\n(function (KeyType) {\n function indexFor(value) {\n switch (value) {\n case KeyType.K1:\n return 0;\n case KeyType.R1:\n return 1;\n case KeyType.WA:\n return 2;\n default:\n throw new Error(`Unknown curve type: ${value}`);\n }\n }\n KeyType.indexFor = indexFor;\n function from(value) {\n let index;\n if (typeof value !== 'number') {\n index = KeyType.indexFor(value);\n }\n else {\n index = value;\n }\n switch (index) {\n case 0:\n return KeyType.K1;\n case 1:\n return KeyType.R1;\n case 2:\n return KeyType.WA;\n default:\n throw new Error('Unknown curve type');\n }\n }\n KeyType.from = from;\n})(KeyType || (KeyType = {}));\n\n/**\n * Binary integer with the underlying value represented by a BN.js instance.\n * Follows C++11 standard for arithmetic operators and conversions.\n * @note This type is optimized for correctness not speed, if you plan to manipulate\n * integers in a tight loop you're advised to use the underlying BN.js value or\n * convert to a JavaScript number first.\n */\nclass Int {\n /** Largest value that can be represented by this integer type. */\n static get max() {\n return new BN(2).pow(new BN(this.byteWidth * 8 - (this.isSigned ? 1 : 0))).isubn(1);\n }\n /** Smallest value that can be represented by this integer type. */\n static get min() {\n return this.isSigned ? this.max.ineg().isubn(1) : new BN(0);\n }\n /** Add `lhs` to `rhs` and return the resulting value. */\n static add(lhs, rhs, overflow = 'truncate') {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.add(b));\n }\n /** Add `lhs` to `rhs` and return the resulting value. */\n static sub(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.sub(b));\n }\n /** Multiply `lhs` by `rhs` and return the resulting value. */\n static mul(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.mul(b));\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient, dropping the remainder.\n * @throws When dividing by zero.\n */\n static div(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n return a.div(b);\n });\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient + remainder rounded to the closest integer.\n * @throws When dividing by zero.\n */\n static divRound(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n return a.divRound(b);\n });\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient + remainder rounded up to the closest integer.\n * @throws When dividing by zero.\n */\n static divCeil(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n const dm = a.divmod(b);\n if (dm.mod.isZero())\n return dm.div;\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n });\n }\n /**\n * Can be used to implement custom operator.\n * @internal\n */\n static operator(lhs, rhs, overflow = 'truncate', fn) {\n const { a, b } = convert(lhs, rhs);\n const type = a.constructor;\n const result = fn(a.value, b.value);\n return type.from(result, overflow);\n }\n static from(value, overflow) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n let fromType = this;\n let bn;\n if (isInstanceOf(value, Int)) {\n fromType = value.constructor;\n bn = value.value.clone();\n }\n else if (value instanceof Uint8Array) {\n bn = new BN(value, undefined, 'le');\n if (fromType.isSigned) {\n bn = bn.fromTwos(fromType.byteWidth * 8);\n }\n }\n else {\n if ((typeof value === 'string' && !/[0-9]+/.test(value)) ||\n (typeof value === 'number' && !Number.isFinite(value))) {\n throw new Error('Invalid number');\n }\n bn = BN.isBN(value) ? value.clone() : new BN(value, 10);\n if (bn.isNeg() && !fromType.isSigned) {\n fromType = { byteWidth: fromType.byteWidth, isSigned: true };\n }\n }\n switch (overflow) {\n case 'clamp':\n bn = clamp(bn, this.min, this.max);\n break;\n case 'truncate':\n bn = truncate(bn, fromType, this);\n break;\n }\n return new this(bn);\n }\n static fromABI(decoder) {\n return this.from(decoder.readArray(this.byteWidth));\n }\n static abiDefault() {\n return this.from(0);\n }\n static random() {\n return this.from(secureRandom(this.byteWidth));\n }\n /**\n * Create a new instance, don't use this directly. Use the `.from` factory method instead.\n * @throws If the value over- or under-flows the integer type.\n */\n constructor(value) {\n const self = this.constructor;\n if (self.isSigned === undefined || self.byteWidth === undefined) {\n throw new Error('Cannot instantiate abstract class Int');\n }\n if (value.gt(self.max)) {\n throw new Error(`Number ${value} overflows ${self.abiName}`);\n }\n if (value.lt(self.min)) {\n throw new Error(`Number ${value} underflows ${self.abiName}`);\n }\n this.value = value;\n }\n cast(type, overflow = 'truncate') {\n if (this.constructor === type) {\n return this;\n }\n return type.from(this, overflow);\n }\n /** Number as bytes in little endian (matches memory layout in C++ contract). */\n get byteArray() {\n const self = this.constructor;\n const value = self.isSigned ? this.value.toTwos(self.byteWidth * 8) : this.value;\n return value.toArrayLike(Uint8Array, 'le', self.byteWidth);\n }\n /**\n * Compare two integers, if strict is set to true the test will only consider integers\n * of the exact same type. I.e. Int64.from(1).equals(UInt64.from(1)) will return false.\n */\n equals(other, strict = false) {\n const self = this.constructor;\n if (strict === true && isInstanceOf(other, Int)) {\n const otherType = other.constructor;\n if (self.byteWidth !== otherType.byteWidth || self.isSigned !== otherType.isSigned) {\n return false;\n }\n }\n try {\n return this.value.eq(self.from(other).value);\n }\n catch {\n return false;\n }\n }\n /** Mutating add. */\n add(num) {\n this.value = this.operator(num, Int.add).value;\n }\n /** Non-mutating add. */\n adding(num) {\n return this.operator(num, Int.add);\n }\n /** Mutating subtract. */\n subtract(num) {\n this.value = this.operator(num, Int.sub).value;\n }\n /** Non-mutating subtract. */\n subtracting(num) {\n return this.operator(num, Int.sub);\n }\n /** Mutating multiply. */\n multiply(by) {\n this.value = this.operator(by, Int.mul).value;\n }\n /** Non-mutating multiply. */\n multiplying(by) {\n return this.operator(by, Int.mul);\n }\n /**\n * Mutating divide.\n * @param behavior How to handle the remainder, default is to floor (round down).\n * @throws When dividing by zero.\n */\n divide(by, behavior) {\n this.value = this.dividing(by, behavior).value;\n }\n /**\n * Non-mutating divide.\n * @param behavior How to handle the remainder, default is to floor (round down).\n * @throws When dividing by zero.\n */\n dividing(by, behavior) {\n let op = Int.div;\n switch (behavior) {\n case 'ceil':\n op = Int.divCeil;\n break;\n case 'round':\n op = Int.divRound;\n break;\n }\n return this.operator(by, op);\n }\n /**\n * Run operator with C++11 implicit conversion.\n * @internal\n */\n operator(other, fn) {\n let rhs;\n if (isInstanceOf(other, Int)) {\n rhs = other;\n }\n else {\n rhs = Int64.from(other, 'truncate');\n }\n return fn(this, rhs).cast(this.constructor);\n }\n /**\n * Convert to a JavaScript number.\n * @throws If the number cannot be represented by 53-bits.\n **/\n toNumber() {\n return this.value.toNumber();\n }\n toString() {\n return this.value.toString();\n }\n [Symbol.toPrimitive](type) {\n if (type === 'number') {\n return this.toNumber();\n }\n else {\n return this.toString();\n }\n }\n toABI(encoder) {\n encoder.writeArray(this.byteArray);\n }\n toJSON() {\n // match FCs behavior and return strings for anything above 32-bit\n if (this.value.bitLength() > 32) {\n return this.value.toString();\n }\n else {\n return this.value.toNumber();\n }\n }\n}\nInt.abiName = '__int';\nclass Int8 extends Int {\n}\nInt8.abiName = 'int8';\nInt8.byteWidth = 1;\nInt8.isSigned = true;\nclass Int16 extends Int {\n}\nInt16.abiName = 'int16';\nInt16.byteWidth = 2;\nInt16.isSigned = true;\nclass Int32 extends Int {\n}\nInt32.abiName = 'int32';\nInt32.byteWidth = 4;\nInt32.isSigned = true;\nclass Int64 extends Int {\n}\nInt64.abiName = 'int64';\nInt64.byteWidth = 8;\nInt64.isSigned = true;\nclass Int128 extends Int {\n}\nInt128.abiName = 'int128';\nInt128.byteWidth = 16;\nInt128.isSigned = true;\nclass UInt8 extends Int {\n}\nUInt8.abiName = 'uint8';\nUInt8.byteWidth = 1;\nUInt8.isSigned = false;\nclass UInt16 extends Int {\n}\nUInt16.abiName = 'uint16';\nUInt16.byteWidth = 2;\nUInt16.isSigned = false;\nclass UInt32 extends Int {\n}\nUInt32.abiName = 'uint32';\nUInt32.byteWidth = 4;\nUInt32.isSigned = false;\nclass UInt64 extends Int {\n}\nUInt64.abiName = 'uint64';\nUInt64.byteWidth = 8;\nUInt64.isSigned = false;\nclass UInt128 extends Int {\n}\nUInt128.abiName = 'uint128';\nUInt128.byteWidth = 16;\nUInt128.isSigned = false;\nclass VarInt extends Int {\n static fromABI(decoder) {\n return new this(new BN(decoder.readVarint32()));\n }\n toABI(encoder) {\n encoder.writeVarint32(Number(this));\n }\n}\nVarInt.abiName = 'varint32';\nVarInt.byteWidth = 32;\nVarInt.isSigned = true;\nclass VarUInt extends Int {\n static fromABI(decoder) {\n return new this(new BN(decoder.readVaruint32()));\n }\n toABI(encoder) {\n encoder.writeVaruint32(Number(this));\n }\n}\nVarUInt.abiName = 'varuint32';\nVarUInt.byteWidth = 32;\nVarUInt.isSigned = false;\n/** Clamp number between min and max. */\nfunction clamp(num, min, max) {\n return BN.min(BN.max(num, min), max);\n}\n/**\n * Create new BN with the same bit pattern as the passed value,\n * extending or truncating the value’s representation as necessary.\n */\nfunction truncate(value, from, to) {\n const fill = value.isNeg() ? 255 : 0;\n const fromValue = from.isSigned ? value.toTwos(from.byteWidth * 8) : value;\n const fromBytes = fromValue.toArrayLike(Uint8Array, 'le');\n const toBytes = new Uint8Array(to.byteWidth);\n toBytes.fill(fill);\n toBytes.set(fromBytes.slice(0, to.byteWidth));\n const toValue = new BN(toBytes, undefined, 'le');\n return to.isSigned ? toValue.fromTwos(to.byteWidth * 8) : toValue;\n}\n/** C++11 implicit integer conversions. */\nfunction convert(a, b) {\n // The integral promotions (4.5) shall be performed on both operands.\n a = promote(a);\n b = promote(b);\n const aType = a.constructor;\n const bType = b.constructor;\n // If both operands have the same type, no further conversion is needed\n if (aType !== bType) {\n // Otherwise, if both operands have signed integer types or both have unsigned integer types,\n // the operand with the type of lesser integer conversion rank shall be converted to the type\n // of the operand with greater rank.\n if (aType.isSigned === bType.isSigned) {\n if (aType.byteWidth > bType.byteWidth) {\n b = b.cast(aType);\n }\n else if (bType.byteWidth > aType.byteWidth) {\n a = a.cast(bType);\n }\n }\n else {\n // Otherwise, if the operand that has unsigned integer type has rank greater than or equal\n // to the rank of the type of the other operand, the operand with signed integer type\n // shall be converted to the type of the operand with unsigned integer type.\n if (aType.isSigned === false && aType.byteWidth >= bType.byteWidth) {\n b = b.cast(aType);\n }\n else if (bType.isSigned === false && bType.byteWidth >= aType.byteWidth) {\n a = a.cast(bType);\n }\n else {\n // Otherwise, if the type of the operand with signed integer type can represent all of the\n // values of the type of the operand with unsigned integer type, the operand with unsigned\n // integer type shall be converted to the type of the operand with signed integer type.\n if (aType.isSigned === true &&\n aType.max.gte(bType.max) &&\n aType.min.lte(bType.min)) {\n b = b.cast(aType);\n }\n else if (bType.isSigned === true &&\n bType.max.gte(aType.max) &&\n bType.min.lte(aType.min)) {\n a = a.cast(bType);\n }\n else ;\n }\n }\n }\n return { a, b };\n}\n/** C++11 integral promotion. */\nfunction promote(n) {\n // An rvalue of type char, signed char, unsigned char, short int, or\n // unsigned short int can be converted to an rvalue of type int if int\n // can represent all the values of the source type; otherwise, the source\n // rvalue can be converted to an rvalue of type unsigned int.\n let rv = n;\n const type = n.constructor;\n if (type.byteWidth < 4) {\n rv = n.cast(Int32);\n }\n return rv;\n}\n\n/** Return a ABI definition for given ABISerializableType. */\nfunction synthesizeABI(type) {\n const structs = [];\n const variants = [];\n const aliases = [];\n const seen = new Set();\n const resolveAbiType = (t) => {\n let typeName;\n if (typeof t.type !== 'string') {\n typeName = resolve(t.type);\n }\n else {\n typeName = t.type;\n }\n if (t.array === true) {\n typeName += '[]';\n }\n if (t.optional === true) {\n typeName += '?';\n }\n if (t.extension === true) {\n typeName += '$';\n }\n return typeName;\n };\n const resolve = (t) => {\n if (!t.abiName) {\n throw new Error('Encountered non-conforming type');\n }\n else if (t.abiName === '__struct') {\n throw new Error('Misconfigured Struct subclass, did you forget @Struct.type?');\n }\n if (seen.has(t)) {\n return t.abiName;\n }\n seen.add(t);\n if (t.abiAlias) {\n aliases.push({\n new_type_name: t.abiName,\n type: resolveAbiType(t.abiAlias),\n });\n }\n else if (t.abiFields) {\n const fields = t.abiFields.map((field) => {\n return {\n name: field.name,\n type: resolveAbiType(field),\n };\n });\n const struct = {\n base: t.abiBase ? resolve(t.abiBase) : '',\n name: t.abiName,\n fields,\n };\n structs.push(struct);\n }\n else if (t.abiVariant) {\n const variant = {\n name: t.abiName,\n types: t.abiVariant.map(resolveAbiType),\n };\n variants.push(variant);\n }\n return t.abiName;\n };\n const root = resolve(type);\n return { abi: ABI.from({ structs, variants, types: aliases }), types: Array.from(seen), root };\n}\nfunction abiTypeString(type) {\n let typeName = typeof type.type === 'string' ? type.type : type.type.abiName;\n if (type.array === true) {\n typeName += '[]';\n }\n if (type.optional === true) {\n typeName += '?';\n }\n if (type.extension === true) {\n typeName += '$';\n }\n return typeName;\n}\nfunction isTypeDescriptor(type) {\n return (typeof type !== 'string' &&\n type.abiName === undefined &&\n type.type !== undefined);\n}\nfunction toTypeDescriptor(type) {\n if (typeof type === 'string') {\n return { type };\n }\n if (typeof type.abiName !== 'undefined') {\n return { type: type };\n }\n return type;\n}\n\nconst StringType = {\n abiName: 'string',\n abiDefault: () => '',\n fromABI: (decoder) => {\n return decoder.readString();\n },\n from: (string) => string,\n toABI: (string, encoder) => {\n encoder.writeString(string);\n },\n};\nconst BoolType = {\n abiName: 'bool',\n abiDefault: () => false,\n fromABI: (decoder) => {\n return decoder.readByte() === 1;\n },\n from: (value) => value,\n toABI: (value, encoder) => {\n encoder.writeByte(value === true ? 1 : 0);\n },\n};\nfunction getBuiltins() {\n return [\n // types represented by JavaScript builtins\n BoolType,\n StringType,\n // types represented by Classes\n Asset,\n Asset.Symbol,\n Asset.SymbolCode,\n BlockTimestamp,\n Bytes,\n Checksum160,\n Checksum256,\n Checksum512,\n ExtendedAsset,\n Float128,\n Float32,\n Float64,\n Int128,\n Int16,\n Int32,\n Int64,\n Int8,\n Name,\n PublicKey,\n Signature,\n TimePoint,\n TimePointSec,\n UInt128,\n UInt16,\n UInt32,\n UInt64,\n UInt8,\n VarInt,\n VarUInt,\n ];\n}\nfunction buildTypeLookup(additional = []) {\n const rv = {};\n const builtins = getBuiltins();\n for (const type of builtins) {\n rv[type.abiName] = type;\n }\n for (const type of additional) {\n if (!type.abiName) {\n throw new Error('Invalid type');\n }\n rv[type.abiName] = type;\n }\n return rv;\n}\nfunction getTypeName(object) {\n if (object.constructor && object.constructor.abiName !== undefined) {\n return object.constructor.abiName;\n }\n if (Array.isArray(object)) {\n const types = object.map(getTypeName);\n const type = types[0];\n if (!type || !types.every((t) => t === type)) {\n return;\n }\n return type + '[]';\n }\n switch (typeof object) {\n case 'boolean':\n return 'bool';\n case 'string':\n return 'string';\n }\n}\nfunction getType(object, name = 'jsobj') {\n var _a;\n if (object.constructor && object.constructor.abiName !== undefined) {\n return object.constructor;\n }\n if (Array.isArray(object)) {\n // check for array of all ABISerializableType with same type name\n const types = object.map((v) => {\n return getType(v, name);\n });\n const type = types[0];\n if (!type) {\n return; // some type not known\n }\n if (!types.every((t) => t && t.abiName === type.abiName)) {\n return; // not all types are the same\n }\n return type;\n }\n const objectType = typeof object;\n if (objectType === 'object' && object !== null) {\n const fields = Object.keys(object).map((key) => {\n return { name: key, type: getType(object[key], name + '_nested') };\n });\n if (fields.find((field) => !field.type)) {\n return; // encountered unknown type\n }\n return _a = class extends Struct {\n },\n _a.abiName = name,\n _a.abiFields = fields,\n _a;\n }\n switch (objectType) {\n case 'boolean':\n return BoolType;\n case 'string':\n return StringType;\n }\n}\n\n/**\n * EOSIO ABI Decoder\n */\nclass DecodingError extends Error {\n constructor(ctx, underlyingError) {\n const path = ctx.codingPath\n .map(({ field, type }) => {\n if (typeof field === 'number') {\n return field;\n }\n else {\n return `${field}<${type.typeName}>`;\n }\n })\n .join('.');\n super(`Decoding error at ${path}: ${underlyingError.message}`);\n this.stack = underlyingError.stack;\n this.ctx = ctx;\n this.underlyingError = underlyingError;\n }\n}\nDecodingError.__className = 'DecodingError';\nfunction abiDecode(args) {\n const descriptor = toTypeDescriptor(args.type);\n const typeName = abiTypeString(descriptor);\n const customTypes = args.customTypes || [];\n let abi;\n if (args.abi) {\n abi = ABI.from(args.abi);\n }\n else {\n try {\n let type;\n if (typeof descriptor.type === 'string') {\n const lookup = buildTypeLookup(customTypes);\n const rName = new ABI.ResolvedType(descriptor.type).name; // type name w/o suffixes\n type = lookup[rName];\n if (!type) {\n throw new Error(`Unknown type: ${descriptor.type}`);\n }\n }\n else {\n type = descriptor.type;\n }\n const synthesized = synthesizeABI(type);\n abi = synthesized.abi;\n customTypes.push(...synthesized.types);\n }\n catch (error) {\n throw Error(`Unable to synthesize ABI for: ${typeName} (${error.message}). ` +\n 'To decode non-class types you need to pass the ABI definition manually.');\n }\n }\n const resolved = abi.resolveType(typeName);\n if (typeof descriptor.type !== 'string') {\n customTypes.unshift(descriptor.type);\n }\n const ctx = {\n types: buildTypeLookup(customTypes),\n strictExtensions: args.strictExtensions || false,\n codingPath: [{ field: 'root', type: resolved }],\n };\n try {\n if (args.data || args.data === '') {\n let decoder;\n if (isInstanceOf(args.data, ABIDecoder)) {\n decoder = args.data;\n }\n else {\n const bytes = Bytes.from(args.data);\n const fatal = args.ignoreInvalidUTF8 === undefined ? true : !args.ignoreInvalidUTF8;\n decoder = new ABIDecoder(bytes.array, new TextDecoder('utf-8', { fatal }));\n }\n if (args.metadata) {\n decoder.metadata = args.metadata;\n }\n return decodeBinary(resolved, decoder, ctx);\n }\n else if (args.object !== undefined) {\n return decodeObject(args.object, resolved, ctx);\n }\n else if (args.json) {\n return decodeObject(JSON.parse(args.json), resolved, ctx);\n }\n else {\n throw new Error('Nothing to decode, you must set one of data, json, object');\n }\n }\n catch (error) {\n throw new DecodingError(ctx, error);\n }\n}\n/** Marker for objects when they have been resolved, i.e. their types `from` factory method will not need to resolve children. */\nconst Resolved = Symbol('Resolved');\nfunction decodeBinary(type, decoder, ctx) {\n if (ctx.codingPath.length > 32) {\n throw new Error('Maximum decoding depth exceeded');\n }\n if (type.isExtension) {\n if (!decoder.canRead()) {\n if (ctx.strictExtensions) {\n return defaultValue(type, ctx);\n }\n else {\n return null;\n }\n }\n }\n if (type.isOptional) {\n if (decoder.readByte() === 0) {\n return null;\n }\n }\n if (type.isArray) {\n const len = decoder.readVaruint32();\n const rv = [];\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n rv.push(decodeInner());\n ctx.codingPath.pop();\n }\n return rv;\n }\n else {\n return decodeInner();\n }\n function decodeInner() {\n const abiType = ctx.types[type.name];\n if (abiType && abiType.fromABI) {\n return abiType.fromABI(decoder);\n }\n else {\n if (type.ref) {\n // follow type alias\n ctx.codingPath.push({ field: '', type: type.ref });\n const rv = decodeBinary(type.ref, decoder, ctx);\n ctx.codingPath.pop();\n return rv;\n }\n else if (type.fields) {\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n const rv = {};\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n rv[field.name] = decodeBinary(field.type, decoder, ctx);\n ctx.codingPath.pop();\n }\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else if (type.variant) {\n const vIdx = decoder.readByte();\n const vType = type.variant[vIdx];\n if (!vType) {\n throw new Error(`Unknown variant idx: ${vIdx}`);\n }\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n const rv = [vType.typeName, decodeBinary(vType, decoder, ctx)];\n ctx.codingPath.pop();\n if (abiType) {\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else if (abiType) {\n throw new Error('Invalid type');\n }\n else {\n throw new Error(type.name === 'any' ? \"Unable to decode 'any' type from binary\" : 'Unknown type');\n }\n }\n }\n}\nfunction decodeObject(value, type, ctx) {\n if (value === null || value === undefined) {\n if (type.isOptional) {\n return null;\n }\n if (type.isExtension) {\n if (ctx.strictExtensions) {\n return defaultValue(type, ctx);\n }\n else {\n return null;\n }\n }\n throw new Error(`Unexpectedly encountered ${value} for non-optional`);\n }\n else if (type.isArray) {\n if (!Array.isArray(value)) {\n throw new Error('Expected array');\n }\n const rv = [];\n const len = value.length;\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n rv.push(decodeInner(value[i]));\n ctx.codingPath.pop();\n }\n return rv;\n }\n else {\n return decodeInner(value);\n }\n function decodeInner(value) {\n const abiType = ctx.types[type.name];\n if (type.ref && !abiType) {\n // follow type alias\n return decodeObject(value, type.ref, ctx);\n }\n else if (type.fields) {\n if (typeof value !== 'object') {\n throw new Error('Expected object');\n }\n if (typeof abiType === 'function' && isInstanceOf(value, abiType)) {\n return value;\n }\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n const struct = {};\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n struct[field.name] = decodeObject(value[field.name], field.type, ctx);\n ctx.codingPath.pop();\n }\n if (abiType) {\n struct[Resolved] = true;\n return abiType.from(struct);\n }\n else {\n return struct;\n }\n }\n else if (type.variant) {\n let vName;\n if (Array.isArray(value) && value.length === 2 && typeof value[0] === 'string') {\n vName = value[0];\n value = value[1];\n }\n else if (isInstanceOf(value, Variant)) {\n vName = value.variantName;\n value = value.value;\n }\n else {\n vName = getTypeName(value);\n }\n const vIdx = type.variant.findIndex((t) => t.typeName === vName);\n if (vIdx === -1) {\n throw new Error(`Unknown variant type: ${vName}`);\n }\n const vType = type.variant[vIdx];\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n const rv = [vType.typeName, decodeObject(value, vType, ctx)];\n ctx.codingPath.pop();\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else {\n if (!abiType) {\n // special case for `any` when decoding from object\n if (type.name === 'any') {\n return value;\n }\n throw new Error('Unknown type');\n }\n return abiType.from(value);\n }\n }\n}\n/** Return default value (aka initialized value, matching C++ where possible) for given type */\nfunction defaultValue(type, ctx, seen = new Set()) {\n if (type.isArray) {\n return [];\n }\n if (type.isOptional) {\n return null;\n }\n const abiType = ctx.types[type.name];\n if (abiType && abiType.abiDefault) {\n return abiType.abiDefault();\n }\n if (seen.has(type.name)) {\n throw new Error('Circular type reference');\n }\n seen.add(type.name);\n if (type.allFields) {\n const rv = {};\n for (const field of type.allFields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n rv[field.name] = defaultValue(field.type, ctx, seen);\n ctx.codingPath.pop();\n }\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n return rv;\n }\n if (type.variant && type.variant.length > 0) {\n const rv = [type.variant[0].typeName, defaultValue(type.variant[0], ctx)];\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n return rv;\n }\n if (type.ref) {\n ctx.codingPath.push({ field: '', type: type.ref });\n const rv = defaultValue(type.ref, ctx, seen);\n ctx.codingPath.pop();\n return rv;\n }\n throw new Error('Unable to determine default value');\n}\nclass ABIDecoder {\n constructor(array, textDecoder) {\n this.array = array;\n this.pos = 0;\n /** User declared metadata, can be used to pass info to instances when decoding. */\n this.metadata = {};\n this.textDecoder = textDecoder || new TextDecoder('utf-8', { fatal: true });\n this.data = new DataView(array.buffer, array.byteOffset, array.byteLength);\n }\n canRead(bytes = 1) {\n return !(this.pos + bytes > this.array.byteLength);\n }\n ensure(bytes) {\n if (!this.canRead(bytes)) {\n throw new Error('Read past end of buffer');\n }\n }\n setPosition(pos) {\n if (pos < 0 || pos > this.array.byteLength) {\n throw new Error('Invalid position');\n }\n this.pos = pos;\n }\n getPosition() {\n return this.pos;\n }\n advance(bytes) {\n this.ensure(bytes);\n this.pos += bytes;\n }\n /** Read one byte. */\n readByte() {\n this.ensure(1);\n return this.array[this.pos++];\n }\n /** Read floating point as JavaScript number, 32 or 64 bits. */\n readFloat(byteWidth) {\n this.ensure(byteWidth);\n let rv;\n switch (byteWidth) {\n case 4:\n rv = this.data.getFloat32(this.pos, true);\n break;\n case 8:\n rv = this.data.getFloat64(this.pos, true);\n break;\n default:\n throw new Error('Invalid float size');\n }\n this.pos += byteWidth;\n return rv;\n }\n readVaruint32() {\n let v = 0;\n let bit = 0;\n for (;;) {\n const b = this.readByte();\n v |= (b & 0x7f) << bit;\n bit += 7;\n if (!(b & 0x80)) {\n break;\n }\n }\n return v >>> 0;\n }\n readVarint32() {\n const v = this.readVaruint32();\n if (v & 1) {\n return (~v >> 1) | 2147483648;\n }\n else {\n return v >>> 1;\n }\n }\n readArray(length) {\n this.ensure(length);\n const rv = this.array.subarray(this.pos, this.pos + length);\n this.pos += length;\n return rv;\n }\n readString() {\n const length = this.readVaruint32();\n return this.textDecoder.decode(this.readArray(length));\n }\n}\nABIDecoder.__className = 'ABIDecoder';\n\n/**\n * EOSIO ABI Encoder\n */\nclass EncodingError extends Error {\n constructor(ctx, underlyingError) {\n const path = ctx.codingPath\n .map(({ field, type }) => {\n if (typeof field === 'number') {\n return field;\n }\n else {\n return `${field}<${type.typeName}>`;\n }\n })\n .join('.');\n super(`Encoding error at ${path}: ${underlyingError.message}`);\n this.stack = underlyingError.stack;\n this.ctx = ctx;\n this.underlyingError = underlyingError;\n }\n}\nEncodingError.__className = 'EncodingError';\nfunction abiEncode(args) {\n let type;\n let typeName;\n if (typeof args.type === 'string') {\n typeName = args.type;\n }\n else if (args.type && isTypeDescriptor(args.type)) {\n if (typeof args.type.type !== 'string') {\n type = args.type.type;\n }\n typeName = abiTypeString(args.type);\n }\n else if (args.type && args.type.abiName !== undefined) {\n type = args.type;\n typeName = args.type.abiName;\n }\n else {\n type = getType(args.object);\n if (type) {\n typeName = type.abiName;\n if (Array.isArray(args.object)) {\n typeName += '[]';\n }\n }\n }\n const customTypes = args.customTypes ? args.customTypes.slice() : [];\n if (type) {\n customTypes.unshift(type);\n }\n else if (typeName) {\n const rootName = new ABI.ResolvedType(typeName).name;\n type = customTypes.find((t) => t.abiName === rootName);\n }\n let rootType;\n if (args.abi && typeName) {\n rootType = ABI.from(args.abi).resolveType(typeName);\n }\n else if (type) {\n const synthesized = synthesizeABI(type);\n rootType = synthesized.abi.resolveType(typeName || type.abiName);\n customTypes.push(...synthesized.types);\n }\n else if (typeName) {\n rootType = new ABI.ResolvedType(typeName);\n }\n else {\n throw new Error('Unable to determine the type of the object to be encoded. ' +\n 'To encode custom ABI types you must pass the type argument.');\n }\n const types = buildTypeLookup(customTypes);\n const encoder = args.encoder || new ABIEncoder();\n if (args.metadata) {\n encoder.metadata = args.metadata;\n }\n const ctx = {\n types,\n encoder,\n codingPath: [{ field: 'root', type: rootType }],\n };\n try {\n encodeAny(args.object, rootType, ctx);\n }\n catch (error) {\n throw new EncodingError(ctx, error);\n }\n return Bytes.from(encoder.getData());\n}\nfunction encodeAny(value, type, ctx) {\n const valueExists = value !== undefined && value !== null;\n if (type.isOptional) {\n ctx.encoder.writeByte(valueExists ? 1 : 0);\n if (!valueExists) {\n return;\n }\n }\n if (type.isArray) {\n if (!Array.isArray(value)) {\n throw new Error(`Expected array for: ${type.typeName}`);\n }\n const len = value.length;\n ctx.encoder.writeVaruint32(len);\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n encodeInner(value[i]);\n ctx.codingPath.pop();\n }\n }\n else {\n encodeInner(value);\n }\n function encodeInner(value) {\n const abiType = ctx.types[type.name];\n if (type.ref && !abiType) {\n // type is alias, follow it\n encodeAny(value, type.ref, ctx);\n return;\n }\n if (!valueExists) {\n if (type.isExtension) {\n return;\n }\n throw new Error(`Found ${value} for non-optional type: ${type.typeName}`);\n }\n if (abiType && abiType.toABI) {\n // type explicitly handles encoding\n abiType.toABI(value, ctx.encoder);\n }\n else if (typeof value.toABI === 'function' && value.constructor.abiName === type.name) {\n // instance handles encoding\n value.toABI(ctx.encoder);\n }\n else {\n // encode according to abi def if possible\n if (type.fields) {\n if (typeof value !== 'object') {\n throw new Error(`Expected object for: ${type.name}`);\n }\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n encodeAny(value[field.name], field.type, ctx);\n ctx.codingPath.pop();\n }\n }\n else if (type.variant) {\n let vName;\n if (Array.isArray(value) && value.length === 2 && typeof value[0] === 'string') {\n vName = value[0];\n value = value[1];\n }\n else if (isInstanceOf(value, Variant)) {\n vName = value.variantName;\n value = value.value;\n }\n else {\n vName = getTypeName(value);\n }\n const vIdx = type.variant.findIndex((t) => t.typeName === vName);\n if (vIdx === -1) {\n const types = type.variant.map((t) => `'${t.typeName}'`).join(', ');\n throw new Error(`Unknown variant type '${vName}', expected one of ${types}`);\n }\n const vType = type.variant[vIdx];\n ctx.encoder.writeVaruint32(vIdx);\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n encodeAny(value, vType, ctx);\n ctx.codingPath.pop();\n }\n else {\n if (!abiType) {\n throw new Error(type.name === 'any' ? 'Unable to encode any type to binary' : 'Unknown type');\n }\n const instance = abiType.from(value);\n if (!instance.toABI) {\n throw new Error(`Invalid type ${type.name}, no encoding methods implemented`);\n }\n instance.toABI(ctx.encoder);\n }\n }\n }\n}\nclass ABIEncoder {\n constructor(pageSize = 1024) {\n this.pageSize = pageSize;\n this.pos = 0;\n this.textEncoder = new TextEncoder();\n /** User declared metadata, can be used to pass info to instances when encoding. */\n this.metadata = {};\n const buffer = new ArrayBuffer(pageSize);\n this.data = new DataView(buffer);\n this.array = new Uint8Array(buffer);\n }\n ensure(bytes) {\n if (this.data.byteLength >= this.pos + bytes) {\n return;\n }\n const pages = Math.ceil(bytes / this.pageSize);\n const newSize = this.data.byteLength + this.pageSize * pages;\n const buffer = new ArrayBuffer(newSize);\n const data = new DataView(buffer);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n this.data = data;\n this.array = array;\n }\n /** Write a single byte. */\n writeByte(byte) {\n this.ensure(1);\n this.array[this.pos++] = byte;\n }\n /** Write an array of bytes. */\n writeArray(bytes) {\n const size = bytes.length;\n this.ensure(size);\n this.array.set(bytes, this.pos);\n this.pos += size;\n }\n writeFloat(value, byteWidth) {\n this.ensure(byteWidth);\n switch (byteWidth) {\n case 4:\n this.data.setFloat32(this.pos, value, true);\n break;\n case 8:\n this.data.setFloat64(this.pos, value, true);\n break;\n default:\n throw new Error('Invalid float size');\n }\n this.pos += byteWidth;\n }\n writeVaruint32(v) {\n this.ensure(4);\n for (;;) {\n if (v >>> 7) {\n this.array[this.pos++] = 0x80 | (v & 0x7f);\n v = v >>> 7;\n }\n else {\n this.array[this.pos++] = v;\n break;\n }\n }\n }\n writeVarint32(v) {\n this.writeVaruint32((v << 1) ^ (v >> 31));\n }\n writeString(v) {\n const data = this.textEncoder.encode(v);\n this.writeVaruint32(data.byteLength);\n this.writeArray(data);\n }\n getData() {\n return new Uint8Array(this.array.buffer, this.array.byteOffset, this.pos);\n }\n getBytes() {\n return new Bytes(this.getData());\n }\n}\nABIEncoder.__className = 'ABIEncoder';\n\nclass Struct {\n static from(value) {\n if (value[Resolved] === true) {\n // objects already resolved\n return new this(value);\n }\n if (isInstanceOf(value, this)) {\n return value;\n }\n return abiDecode({ object: value, type: this });\n }\n static get structFields() {\n const rv = [];\n const walk = (t) => {\n if (t.abiBase) {\n walk(t.abiBase);\n }\n for (const field of t.abiFields || []) {\n rv.push(field);\n }\n };\n walk(this);\n return rv;\n }\n /** @internal */\n constructor(object) {\n const self = this.constructor;\n for (const field of self.structFields) {\n this[field.name] = object[field.name];\n }\n }\n /**\n * Return true if this struct equals the other.\n *\n * Note: This compares the ABI encoded bytes of both structs, subclasses\n * should implement their own fast equality check when possible.\n */\n equals(other) {\n const self = this.constructor;\n if (other.constructor &&\n typeof other.constructor.abiName === 'string' &&\n other.constructor.abiName !== self.abiName) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: self.from(other) }));\n }\n /** @internal */\n toJSON() {\n const self = this.constructor;\n const rv = {};\n for (const field of self.structFields) {\n rv[field.name] = this[field.name];\n }\n return rv;\n }\n}\nStruct.abiName = '__struct';\n(function (Struct) {\n const FieldsOwner = Symbol('FieldsOwner');\n function type(name) {\n return function (struct) {\n struct.abiName = name;\n return struct;\n };\n }\n Struct.type = type;\n function field(type, options = {}) {\n return (target, name) => {\n const ctor = target.constructor;\n if (!ctor.abiFields) {\n ctor.abiFields = [];\n ctor.abiFields[FieldsOwner] = ctor;\n }\n else if (ctor.abiFields[FieldsOwner] !== ctor) {\n // if the target class isn't the owner we set the base and start new fields\n ctor.abiBase = ctor.abiFields[FieldsOwner];\n ctor.abiFields = [];\n ctor.abiFields[FieldsOwner] = ctor;\n }\n ctor.abiFields.push({ ...options, name, type });\n };\n }\n Struct.field = field;\n})(Struct || (Struct = {}));\n\nfunction TypeAlias(name) {\n return function (typeAlias) {\n typeAlias.abiAlias = { type: Object.getPrototypeOf(typeAlias.prototype).constructor };\n typeAlias.abiName = name;\n return typeAlias;\n };\n}\n\nclass Variant {\n static from(object) {\n if (object[Resolved]) {\n return new this(object);\n }\n if (isInstanceOf(object, this)) {\n return object;\n }\n return abiDecode({ object, type: this });\n }\n /** @internal */\n constructor(variant) {\n const abiVariant = this.constructor.abiVariant;\n this.value = variant[1];\n const variantIdx = abiVariant.map(abiTypeString).findIndex((t) => t === variant[0]);\n if (0 > variantIdx || abiVariant.length <= variantIdx) {\n throw new Error(`Unknown variant ${variant[0]}`);\n }\n this.variantIdx = variantIdx;\n }\n /**\n * Return true if this variant equals the other.\n *\n * Note: This compares the ABI encoded bytes of both variants, subclasses\n * should implement their own fast equality check when possible.\n */\n equals(other) {\n const self = this.constructor;\n const otherVariant = self.from(other);\n if (this.variantIdx !== otherVariant.variantIdx) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: otherVariant }));\n }\n get variantName() {\n const variant = this.constructor.abiVariant[this.variantIdx];\n return abiTypeString(variant);\n }\n /** @internal */\n toJSON() {\n return [this.variantName, this.value];\n }\n}\nVariant.abiName = '__variant';\nVariant.abiVariant = [];\n(function (Variant) {\n function type(name, types) {\n return function (variant) {\n variant.abiName = name;\n variant.abiVariant = types.map(toTypeDescriptor);\n return variant;\n };\n }\n Variant.type = type;\n})(Variant || (Variant = {}));\n\nclass Float {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string') {\n value = Number.parseFloat(value);\n }\n else if (isInstanceOf(value, Float)) {\n value = value.value;\n }\n return new this(value);\n }\n static fromABI(decoder) {\n return new this(decoder.readFloat(this.byteWidth));\n }\n static abiDefault() {\n return this.from(0);\n }\n static random() {\n const bytes = secureRandom(this.byteWidth);\n const decoder = new ABIDecoder(bytes);\n return this.fromABI(decoder);\n }\n constructor(value) {\n if (!Number.isFinite(value)) {\n throw new Error('Invalid number');\n }\n this.value = value;\n }\n equals(other) {\n const self = this.constructor;\n return this.value === self.from(other).value;\n }\n toABI(encoder) {\n const self = this.constructor;\n encoder.writeFloat(this.value, self.byteWidth);\n }\n toString() {\n return this.value.toString();\n }\n toJSON() {\n return this.toString();\n }\n}\nFloat.abiName = '__float';\nclass Float32 extends Float {\n toString() {\n return this.value.toFixed(7);\n }\n}\nFloat32.abiName = 'float32';\nFloat32.byteWidth = 4;\nclass Float64 extends Float {\n}\nFloat64.abiName = 'float64';\nFloat64.byteWidth = 8;\nclass Float128 {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string' && value.startsWith('0x')) {\n value = value.slice(2);\n }\n return new this(Bytes.from(value));\n }\n static fromABI(decoder) {\n return new this(new Bytes(decoder.readArray(this.byteWidth)));\n }\n static random() {\n const bytes = secureRandom(16);\n const decoder = new ABIDecoder(bytes);\n return this.fromABI(decoder);\n }\n constructor(data) {\n if (data.array.length !== 16) {\n throw new Error('Invalid float128');\n }\n this.data = data;\n }\n equals(other) {\n const self = this.constructor;\n return this.data.equals(self.from(other).data);\n }\n toABI(encoder) {\n encoder.writeArray(this.data.array);\n }\n toString() {\n // float128 uses 0x prefixed hex strings as opposed to everywhere else in where there is no prefix ¯\\_(ツ)_/¯\n return '0x' + this.data.hexString;\n }\n toJSON() {\n return this.toString();\n }\n}\nFloat128.abiName = 'float128';\nFloat128.byteWidth = 16;\n\n/** EOSIO Name */\nclass Name {\n /**\n * The raw representation of the name.\n * @deprecated Use value instead.\n */\n get rawValue() {\n return this.value;\n }\n /** Create a new Name instance from any of its representing types. */\n static from(value) {\n if (isInstanceOf(value, Name)) {\n return value;\n }\n else if (typeof value === 'string') {\n return new Name(stringToName(value));\n }\n else if (isInstanceOf(value, UInt64)) {\n return new Name(value);\n }\n else {\n throw new Error('Invalid name');\n }\n }\n static fromABI(decoder) {\n return new Name(UInt64.fromABI(decoder));\n }\n static abiDefault() {\n return new this(UInt64.from(0));\n }\n constructor(value) {\n this.value = value;\n }\n /** Return true if this name is equal to passed name. */\n equals(other) {\n return this.value.equals(Name.from(other).value);\n }\n /** Return string representation of this name. */\n toString() {\n return nameToString(this.value);\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nName.abiName = 'name';\n/** Regex pattern matching a EOSIO name, case-sensitive. */\nName.pattern = /^[a-z1-5.]{0,13}$/;\nfunction stringToName(s) {\n function charToSymbol(c) {\n if (c >= 'a'.charCodeAt(0) && c <= 'z'.charCodeAt(0)) {\n return c - 'a'.charCodeAt(0) + 6;\n }\n if (c >= '1'.charCodeAt(0) && c <= '5'.charCodeAt(0)) {\n return c - '1'.charCodeAt(0) + 1;\n }\n return 0;\n }\n const a = new Uint8Array(8);\n let bit = 63;\n for (let i = 0; i < s.length; ++i) {\n let c = charToSymbol(s.charCodeAt(i));\n if (bit < 5) {\n c = c << 1;\n }\n for (let j = 4; j >= 0; --j) {\n if (bit >= 0) {\n a[Math.floor(bit / 8)] |= ((c >> j) & 1) << bit % 8;\n --bit;\n }\n }\n }\n return UInt64.from(a);\n}\nfunction nameToString(n) {\n const a = n.value.toArray('le', 8);\n let result = '';\n for (let bit = 63; bit >= 0;) {\n let c = 0;\n for (let i = 0; i < 5; ++i) {\n if (bit >= 0) {\n c = (c << 1) | ((a[Math.floor(bit / 8)] >> bit % 8) & 1);\n --bit;\n }\n }\n if (c >= 6) {\n result += String.fromCharCode(c + 'a'.charCodeAt(0) - 6);\n }\n else if (c >= 1) {\n result += String.fromCharCode(c + '1'.charCodeAt(0) - 1);\n }\n else {\n result += '.';\n }\n }\n while (result.endsWith('.')) {\n result = result.substr(0, result.length - 1);\n }\n return result;\n}\n\nclass TimePointBase {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (isInstanceOf(value, TimePointBase)) {\n // converting between types\n return this.fromMilliseconds(value.toMilliseconds());\n }\n if (isInstanceOf(value, Date)) {\n return this.fromDate(value);\n }\n if (typeof value === 'string') {\n return this.fromString(value);\n }\n return this.fromInteger(value);\n }\n static fromString(string) {\n const value = Date.parse(string + 'Z');\n if (!Number.isFinite(value)) {\n throw new Error('Invalid date string');\n }\n return this.fromMilliseconds(value);\n }\n static fromDate(date) {\n return this.fromMilliseconds(date.getTime());\n }\n static abiDefault() {\n return this.from(0);\n }\n toABI(encoder) {\n const self = this;\n self.value.toABI(encoder);\n }\n equals(other) {\n const self = this.constructor;\n return this.toMilliseconds() === self.from(other).toMilliseconds();\n }\n toMilliseconds() {\n throw new Error('Not implemented');\n }\n toDate() {\n return new Date(this.toMilliseconds());\n }\n toJSON() {\n return this.toString();\n }\n}\nTimePointBase.abiName = '__time_point_base';\n/** Timestamp with microsecond accuracy. */\nclass TimePoint extends TimePointBase {\n static fromMilliseconds(ms) {\n return new this(Int64.from(Math.round(ms * 1000)));\n }\n static fromInteger(value) {\n return new this(Int64.from(value));\n }\n static fromABI(decoder) {\n return new this(Int64.fromABI(decoder));\n }\n constructor(value) {\n super();\n this.value = value;\n }\n toString() {\n return this.toDate().toISOString().slice(0, -1);\n }\n toMilliseconds() {\n return Number(this.value.dividing(1000, 'round'));\n }\n}\nTimePoint.abiName = 'time_point';\n/** Timestamp with second accuracy. */\nclass TimePointSec extends TimePointBase {\n static fromMilliseconds(ms) {\n return new this(UInt32.from(Math.round(ms / 1000)));\n }\n static fromInteger(value) {\n return new this(UInt32.from(value));\n }\n static fromABI(decoder) {\n return new this(UInt32.fromABI(decoder));\n }\n constructor(value) {\n super();\n this.value = value;\n }\n toString() {\n return this.toDate().toISOString().slice(0, -5);\n }\n toMilliseconds() {\n return Number(this.value.cast(UInt64).multiplying(1000));\n }\n}\nTimePointSec.abiName = 'time_point_sec';\nclass BlockTimestamp extends TimePointBase {\n static fromMilliseconds(ms) {\n return new this(UInt32.from(Math.round((ms - 946684800000) / 500)));\n }\n static fromInteger(value) {\n return new this(UInt32.from(value));\n }\n static fromABI(decoder) {\n return new this(UInt32.fromABI(decoder));\n }\n constructor(value) {\n super();\n this.value = value;\n }\n toString() {\n return this.toDate().toISOString().slice(0, -1);\n }\n toMilliseconds() {\n return Number(this.value.cast(UInt64).multiplying(500).adding(946684800000));\n }\n}\nBlockTimestamp.abiName = 'block_timestamp_type';\n\nclass ABI {\n constructor(args) {\n this.version = args.version || ABI.version;\n this.types = args.types || [];\n this.variants = args.variants || [];\n this.structs = args.structs || [];\n this.actions = args.actions || [];\n this.tables = args.tables || [];\n this.ricardian_clauses = args.ricardian_clauses || [];\n }\n static from(value) {\n if (isInstanceOf(value, ABI)) {\n return value;\n }\n if (typeof value === 'string') {\n return new ABI(JSON.parse(value));\n }\n return new ABI(value);\n }\n static fromABI(decoder) {\n const version = decoder.readString();\n const types = [];\n const numTypes = decoder.readVaruint32();\n for (let i = 0; i < numTypes; i++) {\n types.push({ new_type_name: decoder.readString(), type: decoder.readString() });\n }\n const structs = [];\n const numStructs = decoder.readVaruint32();\n for (let i = 0; i < numStructs; i++) {\n const name = decoder.readString();\n const base = decoder.readString();\n const numFields = decoder.readVaruint32();\n const fields = [];\n for (let j = 0; j < numFields; j++) {\n fields.push({ name: decoder.readString(), type: decoder.readString() });\n }\n structs.push({ base, name, fields });\n }\n const actions = [];\n const numActions = decoder.readVaruint32();\n for (let i = 0; i < numActions; i++) {\n const name = Name.fromABI(decoder);\n const type = decoder.readString();\n const ricardian_contract = decoder.readString();\n actions.push({ name, type, ricardian_contract });\n }\n const tables = [];\n const numTables = decoder.readVaruint32();\n for (let i = 0; i < numTables; i++) {\n const name = Name.fromABI(decoder);\n const index_type = decoder.readString();\n const key_names = [];\n const numKeyNames = decoder.readVaruint32();\n for (let j = 0; j < numKeyNames; j++) {\n key_names.push(decoder.readString());\n }\n const key_types = [];\n const numKeyTypes = decoder.readVaruint32();\n for (let j = 0; j < numKeyTypes; j++) {\n key_types.push(decoder.readString());\n }\n const type = decoder.readString();\n tables.push({ name, index_type, key_names, key_types, type });\n }\n const ricardian_clauses = [];\n const numClauses = decoder.readVaruint32();\n for (let i = 0; i < numClauses; i++) {\n const id = decoder.readString();\n const body = decoder.readString();\n ricardian_clauses.push({ id, body });\n }\n // error_messages, never used?\n const numErrors = decoder.readVaruint32();\n for (let i = 0; i < numErrors; i++) {\n decoder.advance(8); // uint64 error_code\n decoder.advance(decoder.readVaruint32()); // string error_msgr\n }\n // extensions, not used\n const numExtensions = decoder.readVaruint32();\n for (let i = 0; i < numExtensions; i++) {\n decoder.advance(2); // uint16 type\n decoder.advance(decoder.readVaruint32()); // bytes data\n }\n // variants is a binary extension for some reason even though extensions are defined on the type\n const variants = [];\n if (decoder.canRead()) {\n const numVariants = decoder.readVaruint32();\n for (let i = 0; i < numVariants; i++) {\n const name = decoder.readString();\n const types = [];\n const numTypes = decoder.readVaruint32();\n for (let j = 0; j < numTypes; j++) {\n types.push(decoder.readString());\n }\n variants.push({ name, types });\n }\n }\n return new ABI({\n version,\n types,\n structs,\n actions,\n tables,\n ricardian_clauses,\n variants,\n });\n }\n toABI(encoder) {\n encoder.writeString(this.version);\n encoder.writeVaruint32(this.types.length);\n for (const type of this.types) {\n encoder.writeString(type.new_type_name);\n encoder.writeString(type.type);\n }\n encoder.writeVaruint32(this.structs.length);\n for (const struct of this.structs) {\n encoder.writeString(struct.name);\n encoder.writeString(struct.base);\n encoder.writeVaruint32(struct.fields.length);\n for (const field of struct.fields) {\n encoder.writeString(field.name);\n encoder.writeString(field.type);\n }\n }\n encoder.writeVaruint32(this.actions.length);\n for (const action of this.actions) {\n Name.from(action.name).toABI(encoder);\n encoder.writeString(action.type);\n encoder.writeString(action.ricardian_contract);\n }\n encoder.writeVaruint32(this.tables.length);\n for (const table of this.tables) {\n Name.from(table.name).toABI(encoder);\n encoder.writeString(table.index_type);\n encoder.writeVaruint32(table.key_names.length);\n for (const key of table.key_names) {\n encoder.writeString(key);\n }\n encoder.writeVaruint32(table.key_types.length);\n for (const key of table.key_types) {\n encoder.writeString(key);\n }\n encoder.writeString(table.type);\n }\n encoder.writeVaruint32(this.ricardian_clauses.length);\n for (const clause of this.ricardian_clauses) {\n encoder.writeString(clause.id);\n encoder.writeString(clause.body);\n }\n encoder.writeVaruint32(0); // error_messages\n encoder.writeVaruint32(0); // extensions\n encoder.writeVaruint32(this.variants.length);\n for (const variant of this.variants) {\n encoder.writeString(variant.name);\n encoder.writeVaruint32(variant.types.length);\n for (const type of variant.types) {\n encoder.writeString(type);\n }\n }\n }\n resolveType(name) {\n const types = {};\n return this.resolve({ name, types }, { id: 0 });\n }\n resolveAll() {\n const types = {};\n const ctx = { id: 0 };\n return {\n types: this.types.map((t) => this.resolve({ name: t.new_type_name, types }, ctx)),\n variants: this.variants.map((t) => this.resolve({ name: t.name, types }, ctx)),\n structs: this.structs.map((t) => this.resolve({ name: t.name, types }, ctx)),\n };\n }\n resolve({ name, types }, ctx) {\n const existing = types[name];\n if (existing) {\n return existing;\n }\n const type = new ABI.ResolvedType(name, ++ctx.id);\n types[type.typeName] = type;\n const alias = this.types.find((typeDef) => typeDef.new_type_name == type.name);\n if (alias) {\n type.ref = this.resolve({ name: alias.type, types }, ctx);\n return type;\n }\n const struct = this.getStruct(type.name);\n if (struct) {\n if (struct.base) {\n type.base = this.resolve({ name: struct.base, types }, ctx);\n }\n type.fields = struct.fields.map((field) => {\n return {\n name: field.name,\n type: this.resolve({ name: field.type, types }, ctx),\n };\n });\n return type;\n }\n const variant = this.getVariant(type.name);\n if (variant) {\n type.variant = variant.types.map((name) => this.resolve({ name, types }, ctx));\n return type;\n }\n // builtin or unknown type\n return type;\n }\n getStruct(name) {\n return this.structs.find((struct) => struct.name == name);\n }\n getVariant(name) {\n return this.variants.find((variant) => variant.name == name);\n }\n /** Return arguments type of an action in this ABI. */\n getActionType(actionName) {\n const name = Name.from(actionName).toString();\n const action = this.actions.find((a) => a.name.toString() === name);\n if (action) {\n return action.type;\n }\n }\n equals(other) {\n const o = ABI.from(other);\n if (this.version != o.version ||\n this.types.length != o.types.length ||\n this.structs.length != o.structs.length ||\n this.actions.length != o.actions.length ||\n this.tables.length != o.tables.length ||\n this.ricardian_clauses.length != o.ricardian_clauses.length ||\n this.variants.length != o.variants.length) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: o }));\n }\n toJSON() {\n return {\n version: this.version,\n types: this.types,\n structs: this.structs,\n actions: this.actions,\n tables: this.tables,\n ricardian_clauses: this.ricardian_clauses,\n error_messages: [],\n abi_extensions: [],\n variants: this.variants,\n };\n }\n}\nABI.abiName = 'abi';\nABI.version = 'eosio::abi/1.1';\n(function (ABI) {\n class ResolvedType {\n constructor(fullName, id = 0) {\n let name = fullName;\n if (name.endsWith('$')) {\n name = name.slice(0, -1);\n this.isExtension = true;\n }\n else {\n this.isExtension = false;\n }\n if (name.endsWith('?')) {\n name = name.slice(0, -1);\n this.isOptional = true;\n }\n else {\n this.isOptional = false;\n }\n if (name.endsWith('[]')) {\n name = name.slice(0, -2);\n this.isArray = true;\n }\n else {\n this.isArray = false;\n }\n this.id = id;\n this.name = name;\n }\n /**\n * Type name including suffixes: [] array, ? optional, $ binary ext\n */\n get typeName() {\n let rv = this.name;\n if (this.isArray) {\n rv += '[]';\n }\n if (this.isOptional) {\n rv += '?';\n }\n if (this.isExtension) {\n rv += '$';\n }\n return rv;\n }\n /** All fields including base struct(s), undefined if not a struct type. */\n get allFields() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n const rv = [];\n const seen = new Set();\n do {\n if (!current.fields) {\n return; // invalid struct\n }\n if (seen.has(current.name)) {\n return; // circular ref\n }\n for (let i = current.fields.length - 1; i >= 0; i--) {\n rv.unshift(current.fields[i]);\n }\n seen.add(current.name);\n current = current.base;\n } while (current !== undefined);\n return rv;\n }\n }\n ABI.ResolvedType = ResolvedType;\n})(ABI || (ABI = {}));\n\nclass Asset {\n static from(value, symbol) {\n if (isInstanceOf(value, Asset)) {\n return value;\n }\n switch (typeof value) {\n case 'number':\n if (!symbol) {\n throw new Error('Symbol is required when creating Asset from number');\n }\n return this.fromFloat(value, symbol);\n case 'string':\n return this.fromString(value);\n default:\n throw new Error('Invalid asset');\n }\n }\n static fromString(value) {\n const parts = (typeof value === 'string' ? value : '').split(' ');\n if (parts.length !== 2) {\n throw new Error('Invalid asset string');\n }\n const amount = parts[0].replace('.', '');\n const precision = (parts[0].split('.')[1] || '').length;\n const symbol = Asset.Symbol.fromParts(parts[1], precision);\n return new Asset(Int64.from(amount), symbol);\n }\n static fromFloat(value, symbol) {\n const s = Asset.Symbol.from(symbol);\n return new Asset(s.convertFloat(value), s);\n }\n static fromUnits(value, symbol) {\n return new Asset(Int64.from(value), Asset.Symbol.from(symbol));\n }\n static fromABI(decoder) {\n const units = Int64.fromABI(decoder);\n const symbol = Asset.Symbol.fromABI(decoder);\n return new Asset(units, symbol);\n }\n static abiDefault() {\n return new this(Int64.from(0), Asset.Symbol.abiDefault());\n }\n constructor(units, symbol) {\n this.units = units;\n this.symbol = symbol;\n }\n equals(other) {\n const { symbol, units } = Asset.from(other);\n return this.symbol.value.equals(symbol.value) && this.units.equals(units);\n }\n get value() {\n return this.symbol.convertUnits(this.units);\n }\n set value(newValue) {\n this.units = this.symbol.convertFloat(newValue);\n }\n toABI(encoder) {\n this.units.toABI(encoder);\n this.symbol.toABI(encoder);\n }\n toString() {\n const digits = this.units.toString().split('');\n let negative = false;\n if (digits[0] === '-') {\n negative = true;\n digits.shift();\n }\n const p = this.symbol.precision;\n while (digits.length <= p) {\n digits.unshift('0');\n }\n if (p > 0) {\n digits.splice(digits.length - p, 0, '.');\n }\n let rv = digits.join('');\n if (negative) {\n rv = '-' + rv;\n }\n return rv + ' ' + this.symbol.name;\n }\n toJSON() {\n return this.toString();\n }\n}\nAsset.abiName = 'asset';\n(function (Asset) {\n class Symbol {\n static from(value) {\n if (isInstanceOf(value, Symbol)) {\n return value;\n }\n if (isInstanceOf(value, UInt64)) {\n return new Symbol(value);\n }\n const parts = value.split(',');\n if (parts.length !== 2) {\n throw new Error('Invalid symbol string');\n }\n const precision = Number.parseInt(parts[0]);\n return Symbol.fromParts(parts[1], precision);\n }\n static fromParts(name, precision) {\n return new Symbol(toRawSymbol(name, precision));\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n static fromABI(decoder) {\n return new Symbol(UInt64.fromABI(decoder));\n }\n static abiDefault() {\n return this.from('4,SYS'); // CORE_SYMBOL = 4,CORE_SYMBOL_NAME\n }\n constructor(value) {\n if (toSymbolPrecision(value) > Symbol.maxPrecision) {\n throw new Error('Invalid asset symbol, precision too large');\n }\n if (!Symbol.symbolNamePattern.test(toSymbolName(value))) {\n throw new Error('Invalid asset symbol, name must be uppercase A-Z');\n }\n this.value = value;\n }\n equals(other) {\n return this.value.equals(Symbol.from(other).value);\n }\n get name() {\n return toSymbolName(this.value);\n }\n get precision() {\n return toSymbolPrecision(this.value);\n }\n get code() {\n return new SymbolCode(UInt64.from(this.value.value.clone().iushrn(8)));\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n /**\n * Convert units to floating point number according to symbol precision.\n * @throws If the given units can't be represented in 53 bits.\n **/\n convertUnits(units) {\n return units.value.toNumber() / Math.pow(10, this.precision);\n }\n /**\n * Convert floating point to units according to symbol precision.\n * Note that the value will be rounded to closest precision.\n **/\n convertFloat(float) {\n return Int64.from(float.toFixed(this.precision).replace('.', ''));\n }\n toString() {\n return `${this.precision},${this.name}`;\n }\n toJSON() {\n return this.toString();\n }\n }\n Symbol.abiName = 'symbol';\n Symbol.symbolNamePattern = /^[A-Z]{0,7}$/;\n Symbol.maxPrecision = 18;\n Asset.Symbol = Symbol;\n class SymbolCode {\n static from(value) {\n if (isInstanceOf(value, SymbolCode)) {\n return value;\n }\n if (typeof value === 'string') {\n value = UInt64.from(toRawSymbolCode(value));\n }\n return new this(UInt64.from(value));\n }\n static fromABI(decoder) {\n return new SymbolCode(UInt64.fromABI(decoder));\n }\n static abiDefault() {\n return this.from('SYS'); // CORE_SYMBOL_NAME\n }\n constructor(value) {\n this.value = value;\n }\n equals(other) {\n return this.value.equals(SymbolCode.from(other).value);\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n toString() {\n return charsToSymbolName(this.value.value.toArray('be'));\n }\n toJSON() {\n return this.toString();\n }\n }\n SymbolCode.abiName = 'symbol_code';\n Asset.SymbolCode = SymbolCode;\n})(Asset || (Asset = {}));\nclass ExtendedAsset {\n static from(value) {\n if (isInstanceOf(value, ExtendedAsset)) {\n return value;\n }\n return new this(Asset.from(value.quantity), Name.from(value.contract));\n }\n static fromABI(decoder) {\n return new ExtendedAsset(Asset.fromABI(decoder), Name.fromABI(decoder));\n }\n constructor(quantity, contract) {\n this.quantity = quantity;\n this.contract = contract;\n }\n equals(other) {\n return this.quantity.equals(other.quantity) && this.contract.equals(other.contract);\n }\n toABI(encoder) {\n this.quantity.toABI(encoder);\n this.contract.toABI(encoder);\n }\n toJSON() {\n return {\n quantity: this.quantity,\n contract: this.contract,\n };\n }\n}\nExtendedAsset.abiName = 'extended_asset';\nfunction toSymbolPrecision(rawSymbol) {\n return rawSymbol.value.and(UInt64.from(0xff).value).toNumber();\n}\nfunction toSymbolName(rawSymbol) {\n const chars = rawSymbol.value.toArray('be').slice(0, -1);\n return charsToSymbolName(chars);\n}\nfunction charsToSymbolName(chars) {\n return chars\n .map((char) => String.fromCharCode(char))\n .reverse()\n .join('');\n}\nfunction toRawSymbol(name, precision) {\n const code = toRawSymbolCode(name);\n const bytes = new Uint8Array(code.length + 1);\n bytes[0] = precision;\n bytes.set(code, 1);\n return UInt64.from(bytes);\n}\nfunction toRawSymbolCode(name) {\n const length = Math.min(name.length, 7);\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = name.charCodeAt(i);\n }\n return bytes;\n}\n\nvar Base58;\n(function (Base58) {\n let ErrorCode;\n (function (ErrorCode) {\n ErrorCode[\"E_CHECKSUM\"] = \"E_CHECKSUM\";\n ErrorCode[\"E_INVALID\"] = \"E_INVALID\";\n })(ErrorCode = Base58.ErrorCode || (Base58.ErrorCode = {}));\n class DecodingError extends Error {\n constructor(message, code, info = {}) {\n super(message);\n this.code = code;\n this.info = info;\n }\n }\n DecodingError.__className = 'DecodingError';\n Base58.DecodingError = DecodingError;\n const chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n const charMap = new Int16Array(0xff).fill(-1);\n for (let i = 0; i < 58; ++i) {\n charMap[chars.charCodeAt(i)] = i;\n }\n /** Decode a Base58 encoded string. */\n function decode(s, size) {\n if (size == null) {\n return decodeVar(s);\n }\n const result = new Uint8Array(size);\n for (let i = 0; i < s.length; ++i) {\n let carry = charMap[s.charCodeAt(i)];\n if (carry < 0) {\n throw new DecodingError('Invalid Base58 character encountered', ErrorCode.E_INVALID, { char: s[i] });\n }\n for (let j = 0; j < size; ++j) {\n const x = result[j] * 58 + carry;\n result[j] = x;\n carry = x >> 8;\n }\n if (carry) {\n throw new DecodingError('Base58 value is out of range', ErrorCode.E_INVALID);\n }\n }\n result.reverse();\n return new Bytes(result);\n }\n Base58.decode = decode;\n /** Decode a Base58Check encoded string. */\n function decodeCheck(encoded, size) {\n const decoded = decode(encoded, size != null ? size + 4 : size);\n const data = decoded.array.subarray(0, -4);\n const expected = decoded.array.subarray(-4);\n const actual = dsha256Checksum(data);\n if (!arrayEquals(expected, actual)) {\n throw new DecodingError('Checksum mismatch', ErrorCode.E_CHECKSUM, {\n actual,\n expected,\n data,\n hash: 'double_sha256',\n });\n }\n return new Bytes(data);\n }\n Base58.decodeCheck = decodeCheck;\n /** Decode a Base58Check encoded string that uses ripemd160 instead of double sha256 for the digest. */\n function decodeRipemd160Check(encoded, size, suffix) {\n const decoded = decode(encoded, size != null ? size + 4 : size);\n const data = decoded.array.subarray(0, -4);\n const expected = decoded.array.subarray(-4);\n const actual = ripemd160Checksum(data, suffix);\n if (!arrayEquals(expected, actual)) {\n throw new DecodingError('Checksum mismatch', ErrorCode.E_CHECKSUM, {\n actual,\n expected,\n data,\n hash: 'ripemd160',\n });\n }\n return new Bytes(data);\n }\n Base58.decodeRipemd160Check = decodeRipemd160Check;\n /** Encode bytes to a Base58 string. */\n function encode(data) {\n data = Bytes.from(data);\n const result = [];\n for (const byte of data.array) {\n let carry = byte;\n for (let j = 0; j < result.length; ++j) {\n const x = (charMap[result[j]] << 8) + carry;\n result[j] = chars.charCodeAt(x % 58);\n carry = (x / 58) | 0;\n }\n while (carry) {\n result.push(chars.charCodeAt(carry % 58));\n carry = (carry / 58) | 0;\n }\n }\n for (const byte of data.array) {\n if (byte) {\n break;\n }\n else {\n result.push('1'.charCodeAt(0));\n }\n }\n result.reverse();\n return String.fromCharCode(...result);\n }\n Base58.encode = encode;\n function encodeCheck(data) {\n data = Bytes.from(data);\n data = data.appending(dsha256Checksum(data.array));\n return encode(data);\n }\n Base58.encodeCheck = encodeCheck;\n function encodeRipemd160Check(data, suffix) {\n data = Bytes.from(data);\n data = data.appending(ripemd160Checksum(data.array, suffix));\n return encode(data);\n }\n Base58.encodeRipemd160Check = encodeRipemd160Check;\n /** @internal */\n function decodeVar(s) {\n const result = [];\n for (let i = 0; i < s.length; ++i) {\n let carry = charMap[s.charCodeAt(i)];\n if (carry < 0) {\n throw new DecodingError('Invalid Base58 character encountered', ErrorCode.E_INVALID, { char: s[i] });\n }\n for (let j = 0; j < result.length; ++j) {\n const x = result[j] * 58 + carry;\n result[j] = x & 0xff;\n carry = x >> 8;\n }\n if (carry) {\n result.push(carry);\n }\n }\n for (const ch of s) {\n if (ch === '1') {\n result.push(0);\n }\n else {\n break;\n }\n }\n result.reverse();\n return Bytes.from(result);\n }\n /** @internal */\n function ripemd160Checksum(data, suffix) {\n const hash = ripemd160().update(data);\n if (suffix) {\n hash.update(suffix);\n }\n return new Uint8Array(hash.digest().slice(0, 4));\n }\n /** @internal */\n function dsha256Checksum(data) {\n const round1 = sha256().update(data).digest();\n const round2 = sha256().update(round1).digest();\n return new Uint8Array(round2.slice(0, 4));\n }\n})(Base58 || (Base58 = {}));\n\nclass PublicKey {\n /** Create PublicKey object from representing types. */\n static from(value) {\n if (isInstanceOf(value, PublicKey)) {\n return value;\n }\n if (typeof value === 'object' && value.type && value.compressed) {\n return new PublicKey(KeyType.from(value.type), new Bytes(value.compressed));\n }\n if (typeof value !== 'string') {\n throw new Error('Invalid public key');\n }\n if (value.startsWith('PUB_')) {\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid public key string');\n }\n const type = KeyType.from(parts[1]);\n const size = type === KeyType.K1 || type === KeyType.R1 ? 33 : undefined;\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return new PublicKey(type, data);\n }\n else if (value.length >= 50) {\n // Legacy EOS key\n const data = Base58.decodeRipemd160Check(value.slice(-50));\n return new PublicKey(KeyType.K1, data);\n }\n else {\n throw new Error('Invalid public key string');\n }\n }\n /** @internal */\n static fromABI(decoder) {\n const type = KeyType.from(decoder.readByte());\n if (type == KeyType.WA) {\n const startPos = decoder.getPosition();\n decoder.advance(33); // key_data\n decoder.advance(1); // user presence\n decoder.advance(decoder.readVaruint32()); // rpid\n const len = decoder.getPosition() - startPos;\n decoder.setPosition(startPos);\n const data = Bytes.from(decoder.readArray(len));\n return new PublicKey(KeyType.WA, data);\n }\n return new PublicKey(type, new Bytes(decoder.readArray(33)));\n }\n /** @internal */\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n equals(other) {\n const otherKey = PublicKey.from(other);\n return this.type === otherKey.type && this.data.equals(otherKey.data);\n }\n /**\n * Return EOSIO legacy (`EOS`) formatted key.\n * @throws If the key type isn't `K1`\n */\n toLegacyString(prefix = 'EOS') {\n if (this.type !== KeyType.K1) {\n throw new Error('Unable to create legacy formatted string for non-K1 key');\n }\n return `${prefix}${Base58.encodeRipemd160Check(this.data)}`;\n }\n /** Return key in modern EOSIO format (`PUB__`) */\n toString() {\n return `PUB_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n /** @internal */\n toABI(encoder) {\n encoder.writeByte(KeyType.indexFor(this.type));\n encoder.writeArray(this.data.array);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nPublicKey.abiName = 'public_key';\n\nconst curves = {};\n/**\n * Get curve for key type.\n * @internal\n */\nfunction getCurve(type) {\n let rv = curves[type];\n if (!rv) {\n if (type === 'K1') {\n rv = curves[type] = new ec('secp256k1');\n }\n else if (type === 'R1') {\n rv = curves[type] = new ec('p256');\n }\n else {\n throw new Error(`Unknown curve type: ${type}`);\n }\n }\n return rv;\n}\n\n/**\n * Recover public key from signature and recovery id.\n * @internal\n */\nfunction recover(signature, message, type) {\n const curve = getCurve(type);\n const recid = signature[0] - 31;\n const r = signature.subarray(1, 33);\n const s = signature.subarray(33);\n const point = curve.recoverPubKey(message, { r, s }, recid);\n return new Uint8Array(point.encodeCompressed());\n}\n\n/**\n * Verify signature using message and public key.\n * @internal\n */\nfunction verify(signature, message, pubkey, type) {\n const curve = getCurve(type);\n const r = signature.subarray(1, 33);\n const s = signature.subarray(33);\n return curve.verify(message, { r, s }, pubkey);\n}\n\nclass Signature {\n /** Create Signature object from representing types. */\n static from(value) {\n if (isInstanceOf(value, Signature)) {\n return value;\n }\n if (typeof value === 'object' && value.r && value.s) {\n const data = new Uint8Array(1 + 32 + 32);\n let recid = value.recid;\n const type = KeyType.from(value.type);\n if (value.type === KeyType.K1 || value.type === KeyType.R1) {\n recid += 31;\n }\n data[0] = recid;\n data.set(value.r, 1);\n data.set(value.s, 33);\n return new Signature(type, new Bytes(data));\n }\n if (typeof value !== 'string') {\n throw new Error('Invalid signature');\n }\n if (value.startsWith('SIG_')) {\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid signature string');\n }\n const type = KeyType.from(parts[1]);\n const size = type === KeyType.K1 || type === KeyType.R1 ? 65 : undefined;\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return new Signature(type, data);\n }\n else {\n throw new Error('Invalid signature string');\n }\n }\n /** @internal */\n static fromABI(decoder) {\n const type = KeyType.from(decoder.readByte());\n if (type === KeyType.WA) {\n const startPos = decoder.getPosition();\n decoder.advance(65); // compact_signature\n decoder.advance(decoder.readVaruint32()); // auth_data\n decoder.advance(decoder.readVaruint32()); // client_json\n const len = decoder.getPosition() - startPos;\n decoder.setPosition(startPos);\n const data = Bytes.from(decoder.readArray(len));\n return new Signature(KeyType.WA, data);\n }\n return new Signature(type, new Bytes(decoder.readArray(65)));\n }\n /** @internal */\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n equals(other) {\n const otherSig = Signature.from(other);\n return this.type === otherSig.type && this.data.equals(otherSig.data);\n }\n /** Recover public key from given message digest. */\n recoverDigest(digest) {\n digest = Checksum256.from(digest);\n const compressed = recover(this.data.array, digest.array, this.type);\n return PublicKey.from({ compressed, type: this.type });\n }\n /** Recover public key from given message. */\n recoverMessage(message) {\n return this.recoverDigest(Checksum256.hash(message));\n }\n /** Verify this signature with given message digest and public key. */\n verifyDigest(digest, publicKey) {\n digest = Checksum256.from(digest);\n return verify(this.data.array, digest.array, publicKey.data.array, this.type);\n }\n /** Verify this signature with given message and public key. */\n verifyMessage(message, publicKey) {\n return this.verifyDigest(Checksum256.hash(message), publicKey);\n }\n /** Base58check encoded string representation of this signature (`SIG__`). */\n toString() {\n return `SIG_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n /** @internal */\n toABI(encoder) {\n encoder.writeByte(KeyType.indexFor(this.type));\n encoder.writeArray(this.data.array);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nSignature.abiName = 'signature';\n\n/**\n * Get public key corresponding to given private key.\n * @internal\n */\nfunction getPublic(privkey, type) {\n const curve = getCurve(type);\n const key = curve.keyFromPrivate(privkey);\n const point = key.getPublic();\n return new Uint8Array(point.encodeCompressed());\n}\n\n/**\n * Derive shared secret for key pair.\n * @internal\n */\nfunction sharedSecret(privkey, pubkey, type) {\n const curve = getCurve(type);\n const priv = curve.keyFromPrivate(privkey);\n const pub = curve.keyFromPublic(pubkey).getPublic();\n return priv.derive(pub).toArrayLike(Uint8Array, 'be');\n}\n\n/**\n * Sign digest using private key.\n * @internal\n */\nfunction sign(secret, message, type) {\n const curve = getCurve(type);\n const key = curve.keyFromPrivate(secret);\n let sig;\n let r;\n let s;\n if (type === 'K1') {\n let attempt = 1;\n do {\n sig = key.sign(message, { canonical: true, pers: [attempt++] });\n r = sig.r.toArrayLike(Uint8Array, 'be', 32);\n s = sig.s.toArrayLike(Uint8Array, 'be', 32);\n } while (!isCanonical(r, s));\n }\n else {\n sig = key.sign(message, { canonical: true });\n r = sig.r.toArrayLike(Uint8Array, 'be', 32);\n s = sig.s.toArrayLike(Uint8Array, 'be', 32);\n }\n return { type, r, s, recid: sig.recoveryParam || 0 };\n}\n/**\n * Here be dragons\n * - https://github.com/steemit/steem/issues/1944\n * - https://github.com/EOSIO/eos/issues/6699\n * @internal\n */\nfunction isCanonical(r, s) {\n return (!(r[0] & 0x80) &&\n !(r[0] === 0 && !(r[1] & 0x80)) &&\n !(s[0] & 0x80) &&\n !(s[0] === 0 && !(s[1] & 0x80)));\n}\n\n/**\n * Generate a new private key for given type.\n * @internal\n */\nfunction generate(type) {\n const curve = getCurve(type);\n const privkey = curve.genKeyPair().getPrivate();\n return privkey.toArrayLike(Uint8Array, 'be', 32);\n}\n\nclass PrivateKey {\n /** Create PrivateKey object from representing types. */\n static from(value) {\n if (isInstanceOf(value, PrivateKey)) {\n return value;\n }\n else {\n return this.fromString(value);\n }\n }\n /**\n * Create PrivateKey object from a string representation.\n * Accepts WIF (5...) and EOSIO (PVT_...) style private keys.\n */\n static fromString(string, ignoreChecksumError = false) {\n try {\n const { type, data } = decodeKey(string);\n return new this(type, data);\n }\n catch (error) {\n error.message = `Invalid private key (${error.message})`;\n if (ignoreChecksumError &&\n isInstanceOf(error, Base58.DecodingError) &&\n error.code === Base58.ErrorCode.E_CHECKSUM) {\n const type = string.startsWith('PVT_R1') ? KeyType.R1 : KeyType.K1;\n const data = new Bytes(error.info.data);\n if (data.length === 33) {\n data.dropFirst();\n }\n data.zeropad(32, true);\n return new this(type, data);\n }\n throw error;\n }\n }\n /**\n * Generate new PrivateKey.\n * @throws If a secure random source isn't available.\n */\n static generate(type) {\n return new PrivateKey(KeyType.from(type), new Bytes(generate(type)));\n }\n /** @internal */\n constructor(type, data) {\n if ((type === KeyType.K1 || type === KeyType.R1) && data.length !== 32) {\n throw new Error('Invalid private key length');\n }\n this.type = type;\n this.data = data;\n }\n /**\n * Sign message digest using this key.\n * @throws If the key type isn't R1 or K1.\n */\n signDigest(digest) {\n digest = Checksum256.from(digest);\n return Signature.from(sign(this.data.array, digest.array, this.type));\n }\n /**\n * Sign message using this key.\n * @throws If the key type isn't R1 or K1.\n */\n signMessage(message) {\n return this.signDigest(Checksum256.hash(message));\n }\n /**\n * Derive the shared secret between this private key and given public key.\n * @throws If the key type isn't R1 or K1.\n */\n sharedSecret(publicKey) {\n const shared = sharedSecret(this.data.array, publicKey.data.array, this.type);\n return Checksum512.hash(shared);\n }\n /**\n * Get the corresponding public key.\n * @throws If the key type isn't R1 or K1.\n */\n toPublic() {\n const compressed = getPublic(this.data.array, this.type);\n return PublicKey.from({ compressed, type: this.type });\n }\n /**\n * Return WIF representation of this private key\n * @throws If the key type isn't K1.\n */\n toWif() {\n if (this.type !== KeyType.K1) {\n throw new Error('Unable to generate WIF for non-k1 key');\n }\n return Base58.encodeCheck(Bytes.from([0x80]).appending(this.data));\n }\n /**\n * Return the key in EOSIO PVT__ format.\n */\n toString() {\n return `PVT_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n toJSON() {\n return this.toString();\n }\n}\n/** @internal */\nfunction decodeKey(value) {\n const type = typeof value;\n if (type !== 'string') {\n throw new Error(`Expected string, got ${type}`);\n }\n if (value.startsWith('PVT_')) {\n // EOSIO format\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid PVT format');\n }\n const type = KeyType.from(parts[1]);\n let size;\n switch (type) {\n case KeyType.K1:\n case KeyType.R1:\n size = 32;\n break;\n }\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return { type, data };\n }\n else {\n // WIF format\n const type = KeyType.K1;\n const data = Base58.decodeCheck(value);\n if (data.array[0] !== 0x80) {\n throw new Error('Invalid WIF');\n }\n return { type, data: data.droppingFirst() };\n }\n}\n\nvar PermissionLevel_1;\n/** EOSIO Permission Level, a.k.a \"auth\". */\nlet PermissionLevel = PermissionLevel_1 = class PermissionLevel extends Struct {\n /** Create new permission level from representing types. Can be expressed as a string in the format `@`. */\n static from(value) {\n if (typeof value === 'string') {\n const parts = value.split('@');\n if (parts.length !== 2 && parts[0].length > 0 && parts[1].length > 0) {\n throw new Error('Invalid permission level string, should be in the format @');\n }\n value = { actor: parts[0], permission: parts[1] };\n }\n return super.from(value);\n }\n /** Return true if this permission level equals other. */\n equals(other) {\n const otherPerm = PermissionLevel_1.from(other);\n return this.actor.equals(otherPerm.actor) && this.permission.equals(otherPerm.permission);\n }\n toString() {\n return `${this.actor}@${this.permission}`;\n }\n};\n__decorate([\n Struct.field('name')\n], PermissionLevel.prototype, \"actor\", void 0);\n__decorate([\n Struct.field('name')\n], PermissionLevel.prototype, \"permission\", void 0);\nPermissionLevel = PermissionLevel_1 = __decorate([\n Struct.type('permission_level')\n], PermissionLevel);\n\nvar Action_1;\nlet Action = Action_1 = class Action extends Struct {\n static from(object, abi) {\n const data = object.data;\n if (!Bytes.isBytes(data)) {\n let type;\n if (abi) {\n type = ABI.from(abi).getActionType(object.name);\n }\n else if (!data.constructor || data.constructor.abiName === undefined) {\n throw new Error('Missing ABI definition when creating action with untyped action data');\n }\n object = {\n ...object,\n data: abiEncode({ object: data, type, abi }),\n };\n }\n return super.from(object);\n }\n /** Return true if this Action is equal to given action. */\n equals(other) {\n const otherAction = Action_1.from(other);\n return (this.account.equals(otherAction.account) &&\n this.name.equals(otherAction.name) &&\n arrayEquatableEquals(this.authorization, otherAction.authorization) &&\n this.data.equals(otherAction.data));\n }\n decodeData(typeOrAbi) {\n if (typeof typeOrAbi === 'string' || typeOrAbi.abiName) {\n return abiDecode({\n data: this.data,\n type: typeOrAbi,\n });\n }\n else {\n const abi = ABI.from(typeOrAbi);\n const type = abi.getActionType(this.name);\n if (!type) {\n throw new Error(`Action ${this.name} does not exist in provided ABI`);\n }\n return abiDecode({ data: this.data, type, abi });\n }\n }\n};\n__decorate([\n Struct.field('name')\n], Action.prototype, \"account\", void 0);\n__decorate([\n Struct.field('name')\n], Action.prototype, \"name\", void 0);\n__decorate([\n Struct.field(PermissionLevel, { array: true })\n], Action.prototype, \"authorization\", void 0);\n__decorate([\n Struct.field('bytes')\n], Action.prototype, \"data\", void 0);\nAction = Action_1 = __decorate([\n Struct.type('action')\n], Action);\n\nvar Transaction_1;\nlet TransactionExtension = class TransactionExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], TransactionExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], TransactionExtension.prototype, \"data\", void 0);\nTransactionExtension = __decorate([\n Struct.type('transaction_extension')\n], TransactionExtension);\nlet TransactionHeader = class TransactionHeader extends Struct {\n static from(object) {\n return super.from({\n max_net_usage_words: 0,\n max_cpu_usage_ms: 0,\n delay_sec: 0,\n ...object,\n });\n }\n};\n__decorate([\n Struct.field('time_point_sec')\n], TransactionHeader.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field('uint16')\n], TransactionHeader.prototype, \"ref_block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionHeader.prototype, \"ref_block_prefix\", void 0);\n__decorate([\n Struct.field('varuint32')\n], TransactionHeader.prototype, \"max_net_usage_words\", void 0);\n__decorate([\n Struct.field('uint8')\n], TransactionHeader.prototype, \"max_cpu_usage_ms\", void 0);\n__decorate([\n Struct.field('varuint32')\n], TransactionHeader.prototype, \"delay_sec\", void 0);\nTransactionHeader = __decorate([\n Struct.type('transaction_header')\n], TransactionHeader);\nlet Transaction = Transaction_1 = class Transaction extends TransactionHeader {\n static from(object, abis) {\n const abiFor = (contract) => {\n if (!abis) {\n return;\n }\n else if (Array.isArray(abis)) {\n return abis\n .filter((abi) => Name.from(abi.contract).equals(contract))\n .map(({ abi }) => abi)[0];\n }\n else {\n return abis;\n }\n };\n const resolveAction = (action) => Action.from(action, abiFor(action.account));\n const actions = (object.actions || []).map(resolveAction);\n const context_free_actions = (object.context_free_actions || []).map(resolveAction);\n const transaction = {\n transaction_extensions: [],\n ...object,\n context_free_actions,\n actions,\n };\n return super.from(transaction);\n }\n /** Return true if this transaction is equal to given transaction. */\n equals(other) {\n const tx = Transaction_1.from(other);\n return this.id.equals(tx.id);\n }\n get id() {\n return Checksum256.hash(abiEncode({ object: this }));\n }\n signingDigest(chainId) {\n const data = this.signingData(chainId);\n return Checksum256.hash(data);\n }\n signingData(chainId) {\n let data = Bytes.from(Checksum256.from(chainId).array);\n data = data.appending(abiEncode({ object: this }));\n data = data.appending(new Uint8Array(32));\n return data;\n }\n};\n__decorate([\n Struct.field(Action, { array: true })\n], Transaction.prototype, \"context_free_actions\", void 0);\n__decorate([\n Struct.field(Action, { array: true })\n], Transaction.prototype, \"actions\", void 0);\n__decorate([\n Struct.field(TransactionExtension, { array: true })\n], Transaction.prototype, \"transaction_extensions\", void 0);\nTransaction = Transaction_1 = __decorate([\n Struct.type('transaction')\n], Transaction);\nlet SignedTransaction = class SignedTransaction extends Transaction {\n /** The transaction without the signatures. */\n get transaction() {\n return Transaction.from({\n ...this,\n signatures: undefined,\n context_free_data: undefined,\n });\n }\n get id() {\n return this.transaction.id;\n }\n static from(object) {\n return super.from({\n signatures: [],\n context_free_data: [],\n ...object,\n });\n }\n};\n__decorate([\n Struct.field('signature[]')\n], SignedTransaction.prototype, \"signatures\", void 0);\n__decorate([\n Struct.field('bytes[]')\n], SignedTransaction.prototype, \"context_free_data\", void 0);\nSignedTransaction = __decorate([\n Struct.type('signed_transaction')\n], SignedTransaction);\nlet PackedTransaction = class PackedTransaction extends Struct {\n static from(object) {\n return super.from({\n signatures: [],\n packed_context_free_data: '',\n compression: 0,\n ...object,\n });\n }\n static fromSigned(signed) {\n const tx = Transaction.from(signed);\n return this.from({\n signatures: signed.signatures,\n packed_context_free_data: abiEncode({\n object: signed.context_free_data,\n type: 'bytes[]',\n }),\n packed_trx: abiEncode({ object: tx }),\n });\n }\n getTransaction() {\n if (Number(this.compression) !== 0) {\n throw new Error('Transaction compression not supported yet');\n }\n return abiDecode({ data: this.packed_trx, type: Transaction });\n }\n getSignedTransaction() {\n const transaction = this.getTransaction();\n // TODO: decode context free data\n return SignedTransaction.from({\n ...transaction,\n signatures: this.signatures,\n });\n }\n};\n__decorate([\n Struct.field('signature[]')\n], PackedTransaction.prototype, \"signatures\", void 0);\n__decorate([\n Struct.field('uint8')\n], PackedTransaction.prototype, \"compression\", void 0);\n__decorate([\n Struct.field('bytes')\n], PackedTransaction.prototype, \"packed_context_free_data\", void 0);\n__decorate([\n Struct.field('bytes')\n], PackedTransaction.prototype, \"packed_trx\", void 0);\nPackedTransaction = __decorate([\n Struct.type('packed_transaction')\n], PackedTransaction);\nlet TransactionReceipt = class TransactionReceipt extends Struct {\n};\n__decorate([\n Struct.field('string')\n], TransactionReceipt.prototype, \"status\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionReceipt.prototype, \"cpu_usage_us\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionReceipt.prototype, \"net_usage_words\", void 0);\nTransactionReceipt = __decorate([\n Struct.type('transaction_receipt')\n], TransactionReceipt);\n\nvar Authority_1;\nlet Weight = class Weight extends UInt16 {\n};\nWeight = __decorate([\n TypeAlias('weight_type')\n], Weight);\nlet KeyWeight = class KeyWeight extends Struct {\n};\n__decorate([\n Struct.field(PublicKey)\n], KeyWeight.prototype, \"key\", void 0);\n__decorate([\n Struct.field(Weight)\n], KeyWeight.prototype, \"weight\", void 0);\nKeyWeight = __decorate([\n Struct.type('key_weight')\n], KeyWeight);\nlet PermissionLevelWeight = class PermissionLevelWeight extends Struct {\n};\n__decorate([\n Struct.field(PermissionLevel)\n], PermissionLevelWeight.prototype, \"permission\", void 0);\n__decorate([\n Struct.field(Weight)\n], PermissionLevelWeight.prototype, \"weight\", void 0);\nPermissionLevelWeight = __decorate([\n Struct.type('permission_level_weight')\n], PermissionLevelWeight);\nlet WaitWeight = class WaitWeight extends Struct {\n};\n__decorate([\n Struct.field(UInt32)\n], WaitWeight.prototype, \"wait_sec\", void 0);\n__decorate([\n Struct.field(Weight)\n], WaitWeight.prototype, \"weight\", void 0);\nWaitWeight = __decorate([\n Struct.type('wait_weight')\n], WaitWeight);\nlet Authority = Authority_1 = class Authority extends Struct {\n static from(value) {\n if (isInstanceOf(value, Authority_1)) {\n return value;\n }\n const rv = super.from({\n keys: [],\n accounts: [],\n waits: [],\n ...value,\n });\n rv.sort();\n return rv;\n }\n /** Total weight of all waits. */\n get waitThreshold() {\n return this.waits.reduce((val, wait) => val + wait.weight.toNumber(), 0);\n }\n /** Weight a key needs to sign for this authority. */\n get keyThreshold() {\n return this.threshold.toNumber() - this.waitThreshold;\n }\n /** Return the weight for given public key, or zero if it is not included in this authority. */\n keyWeight(publicKey) {\n const weight = this.keys.find(({ key }) => key.equals(publicKey));\n return weight ? weight.weight.toNumber() : 0;\n }\n /**\n * Check if given public key has permission in this authority,\n * @attention Does not take indirect permissions for the key via account weights into account.\n * @param publicKey The key to check.\n * @param includePartial Whether to consider auths where the key is included but can't be reached alone (e.g. multisig).\n */\n hasPermission(publicKey, includePartial = false) {\n const threshold = includePartial ? 1 : this.keyThreshold;\n const weight = this.keyWeight(publicKey);\n return weight >= threshold;\n }\n /**\n * Sorts the authority weights in place, should be called before including the authority in a `updateauth` action or it might be rejected.\n */\n sort() {\n // This hack satisfies the constraints that authority weights, see: https://github.com/greymass/eosio-core/issues/8\n this.keys.sort((a, b) => String(a.key).localeCompare(String(b.key)));\n this.accounts.sort((a, b) => String(a.permission).localeCompare(String(b.permission)));\n this.waits.sort((a, b) => String(a.wait_sec).localeCompare(String(b.wait_sec)));\n }\n};\n__decorate([\n Struct.field(UInt32)\n], Authority.prototype, \"threshold\", void 0);\n__decorate([\n Struct.field(KeyWeight, { array: true })\n], Authority.prototype, \"keys\", void 0);\n__decorate([\n Struct.field(PermissionLevelWeight, { array: true })\n], Authority.prototype, \"accounts\", void 0);\n__decorate([\n Struct.field(WaitWeight, { array: true })\n], Authority.prototype, \"waits\", void 0);\nAuthority = Authority_1 = __decorate([\n Struct.type('authority')\n], Authority);\n\nvar Serializer;\n(function (Serializer) {\n Serializer.encode = abiEncode;\n Serializer.decode = abiDecode;\n /** Create an EOSIO ABI definition for given core type. */\n function synthesize(type) {\n return synthesizeABI(type).abi;\n }\n Serializer.synthesize = synthesize;\n /** Create JSON representation of a core object. */\n function stringify(object) {\n return JSON.stringify(object);\n }\n Serializer.stringify = stringify;\n /** Create a vanilla js representation of a core object. */\n function objectify(object) {\n const walk = (v) => {\n switch (typeof v) {\n case 'boolean':\n case 'number':\n case 'string':\n return v;\n case 'object': {\n if (v === null) {\n return v;\n }\n if (typeof v.toJSON === 'function') {\n return walk(v.toJSON());\n }\n if (Array.isArray(v)) {\n return v.map(walk);\n }\n const rv = {};\n for (const key of Object.keys(v)) {\n rv[key] = walk(v[key]);\n }\n return rv;\n }\n }\n };\n return walk(object);\n }\n Serializer.objectify = objectify;\n})(Serializer || (Serializer = {}));\n\n/** Default provider that uses the Fetch API to call a single node. */\nclass FetchProvider {\n constructor(url, options = {}) {\n url = url.trim();\n if (url.endsWith('/'))\n url = url.slice(0, -1);\n this.url = url;\n if (!options.fetch) {\n if (typeof window !== 'undefined' && window.fetch) {\n this.fetch = window.fetch.bind(window);\n }\n else if (typeof global !== 'undefined' && global.fetch) {\n this.fetch = global.fetch.bind(global);\n }\n else {\n throw new Error('Missing fetch');\n }\n }\n else {\n this.fetch = options.fetch;\n }\n }\n async call(path, params) {\n const url = this.url + path;\n const response = await this.fetch(url, {\n method: 'POST',\n body: params !== undefined ? JSON.stringify(params) : undefined,\n });\n const text = await response.text();\n let json;\n try {\n json = JSON.parse(text);\n }\n catch {\n // ignore json parse errors\n }\n const headers = {};\n for (const [key, value] of response.headers.entries()) {\n headers[key] = value;\n }\n return { headers, status: response.status, json, text };\n }\n}\n\nlet AccountLinkedAction = class AccountLinkedAction extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountLinkedAction.prototype, \"account\", void 0);\n__decorate([\n Struct.field('name')\n], AccountLinkedAction.prototype, \"action\", void 0);\nAccountLinkedAction = __decorate([\n Struct.type('account_linked_action')\n], AccountLinkedAction);\nlet AccountPermission = class AccountPermission extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountPermission.prototype, \"perm_name\", void 0);\n__decorate([\n Struct.field('name')\n], AccountPermission.prototype, \"parent\", void 0);\n__decorate([\n Struct.field(Authority)\n], AccountPermission.prototype, \"required_auth\", void 0);\n__decorate([\n Struct.field(AccountLinkedAction, { optional: true, array: true })\n], AccountPermission.prototype, \"linked_actions\", void 0);\nAccountPermission = __decorate([\n Struct.type('account_permission')\n], AccountPermission);\nlet AccountResourceLimit = class AccountResourceLimit extends Struct {\n};\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"used\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"available\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"max\", void 0);\nAccountResourceLimit = __decorate([\n Struct.type('account_resource_limit')\n], AccountResourceLimit);\nlet AccountTotalResources = class AccountTotalResources extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountTotalResources.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountTotalResources.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountTotalResources.prototype, \"cpu_weight\", void 0);\n__decorate([\n Struct.field('uint64')\n], AccountTotalResources.prototype, \"ram_bytes\", void 0);\nAccountTotalResources = __decorate([\n Struct.type('account_total_resources')\n], AccountTotalResources);\nlet AccountSelfDelegatedBandwidth = class AccountSelfDelegatedBandwidth extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountSelfDelegatedBandwidth.prototype, \"from\", void 0);\n__decorate([\n Struct.field('name')\n], AccountSelfDelegatedBandwidth.prototype, \"to\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountSelfDelegatedBandwidth.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountSelfDelegatedBandwidth.prototype, \"cpu_weight\", void 0);\nAccountSelfDelegatedBandwidth = __decorate([\n Struct.type('account_self_delegated_bandwidth')\n], AccountSelfDelegatedBandwidth);\nlet AccountRefundRequest = class AccountRefundRequest extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountRefundRequest.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountRefundRequest.prototype, \"request_time\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRefundRequest.prototype, \"net_amount\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRefundRequest.prototype, \"cpu_amount\", void 0);\nAccountRefundRequest = __decorate([\n Struct.type('account_refund_request')\n], AccountRefundRequest);\nlet AccountVoterInfo = class AccountVoterInfo extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountVoterInfo.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('name')\n], AccountVoterInfo.prototype, \"proxy\", void 0);\n__decorate([\n Struct.field('name', { array: true })\n], AccountVoterInfo.prototype, \"producers\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountVoterInfo.prototype, \"staked\", void 0);\n__decorate([\n Struct.field('bool')\n], AccountVoterInfo.prototype, \"is_proxy\", void 0);\n__decorate([\n Struct.field('uint32', { optional: true })\n], AccountVoterInfo.prototype, \"flags1\", void 0);\n__decorate([\n Struct.field('uint32')\n], AccountVoterInfo.prototype, \"reserved2\", void 0);\n__decorate([\n Struct.field('string')\n], AccountVoterInfo.prototype, \"reserved3\", void 0);\nAccountVoterInfo = __decorate([\n Struct.type('account_voter_info')\n], AccountVoterInfo);\nlet AccountRexInfoMaturities = class AccountRexInfoMaturities extends Struct {\n};\n__decorate([\n Struct.field('time_point', { optional: true })\n], AccountRexInfoMaturities.prototype, \"key\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountRexInfoMaturities.prototype, \"value\", void 0);\n__decorate([\n Struct.field('time_point', { optional: true })\n], AccountRexInfoMaturities.prototype, \"first\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountRexInfoMaturities.prototype, \"second\", void 0);\nAccountRexInfoMaturities = __decorate([\n Struct.type('account_rex_info_maturities')\n], AccountRexInfoMaturities);\nlet AccountRexInfo = class AccountRexInfo extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], AccountRexInfo.prototype, \"version\", void 0);\n__decorate([\n Struct.field('name')\n], AccountRexInfo.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRexInfo.prototype, \"vote_stake\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRexInfo.prototype, \"rex_balance\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountRexInfo.prototype, \"matured_rex\", void 0);\n__decorate([\n Struct.field(AccountRexInfoMaturities, { array: true })\n], AccountRexInfo.prototype, \"rex_maturities\", void 0);\nAccountRexInfo = __decorate([\n Struct.type('account_rex_info')\n], AccountRexInfo);\nlet AccountObject = class AccountObject extends Struct {\n getPermission(permission) {\n const name = Name.from(permission);\n const match = this.permissions.find((p) => p.perm_name.equals(name));\n if (!match) {\n throw new Error(`Unknown permission ${name} on account ${this.account_name}.`);\n }\n return match;\n }\n};\n__decorate([\n Struct.field('name')\n], AccountObject.prototype, \"account_name\", void 0);\n__decorate([\n Struct.field('uint32')\n], AccountObject.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"head_block_time\", void 0);\n__decorate([\n Struct.field('bool')\n], AccountObject.prototype, \"privileged\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"last_code_update\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"created\", void 0);\n__decorate([\n Struct.field('asset?')\n], AccountObject.prototype, \"core_liquid_balance\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"ram_quota\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"cpu_weight\", void 0);\n__decorate([\n Struct.field(AccountResourceLimit)\n], AccountObject.prototype, \"net_limit\", void 0);\n__decorate([\n Struct.field(AccountResourceLimit)\n], AccountObject.prototype, \"cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], AccountObject.prototype, \"ram_usage\", void 0);\n__decorate([\n Struct.field(AccountPermission, { array: true })\n], AccountObject.prototype, \"permissions\", void 0);\n__decorate([\n Struct.field(AccountTotalResources, { optional: true })\n], AccountObject.prototype, \"total_resources\", void 0);\n__decorate([\n Struct.field(AccountSelfDelegatedBandwidth, { optional: true })\n], AccountObject.prototype, \"self_delegated_bandwidth\", void 0);\n__decorate([\n Struct.field(AccountRefundRequest, { optional: true })\n], AccountObject.prototype, \"refund_request\", void 0);\n__decorate([\n Struct.field(AccountVoterInfo, { optional: true })\n], AccountObject.prototype, \"voter_info\", void 0);\n__decorate([\n Struct.field(AccountRexInfo, { optional: true })\n], AccountObject.prototype, \"rex_info\", void 0);\nAccountObject = __decorate([\n Struct.type('account_object')\n], AccountObject);\nlet AccountByAuthorizersRow = class AccountByAuthorizersRow extends Struct {\n};\n__decorate([\n Struct.field(Name)\n], AccountByAuthorizersRow.prototype, \"account_name\", void 0);\n__decorate([\n Struct.field(Name)\n], AccountByAuthorizersRow.prototype, \"permission_name\", void 0);\n__decorate([\n Struct.field(PublicKey)\n], AccountByAuthorizersRow.prototype, \"authorizing_key\", void 0);\n__decorate([\n Struct.field(Weight)\n], AccountByAuthorizersRow.prototype, \"weight\", void 0);\n__decorate([\n Struct.field(UInt32)\n], AccountByAuthorizersRow.prototype, \"threshold\", void 0);\nAccountByAuthorizersRow = __decorate([\n Struct.type('account_by_authorizers_row')\n], AccountByAuthorizersRow);\nlet AccountsByAuthorizers = class AccountsByAuthorizers extends Struct {\n};\n__decorate([\n Struct.field(AccountByAuthorizersRow, { array: true })\n], AccountsByAuthorizers.prototype, \"accounts\", void 0);\nAccountsByAuthorizers = __decorate([\n Struct.type('account_by_authorizers')\n], AccountsByAuthorizers);\nlet NewProducersEntry$1 = class NewProducersEntry extends Struct {\n};\n__decorate([\n Struct.field('name')\n], NewProducersEntry$1.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], NewProducersEntry$1.prototype, \"block_signing_key\", void 0);\nNewProducersEntry$1 = __decorate([\n Struct.type('new_producers_entry')\n], NewProducersEntry$1);\nlet NewProducers$1 = class NewProducers extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], NewProducers$1.prototype, \"version\", void 0);\n__decorate([\n Struct.field(NewProducersEntry$1, { array: true })\n], NewProducers$1.prototype, \"producers\", void 0);\nNewProducers$1 = __decorate([\n Struct.type('new_producers')\n], NewProducers$1);\nlet BlockExtension$1 = class BlockExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], BlockExtension$1.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], BlockExtension$1.prototype, \"data\", void 0);\nBlockExtension$1 = __decorate([\n Struct.type('block_extension')\n], BlockExtension$1);\nlet HeaderExtension$1 = class HeaderExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], HeaderExtension$1.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], HeaderExtension$1.prototype, \"data\", void 0);\nHeaderExtension$1 = __decorate([\n Struct.type('header_extension')\n], HeaderExtension$1);\n// fc \"mutable variant\" returned by get_block api\nlet TrxVariant$1 = class TrxVariant {\n static from(data) {\n let id;\n let extra;\n if (typeof data === 'string') {\n id = Checksum256.from(data);\n extra = {};\n }\n else {\n id = Checksum256.from(data.id);\n extra = data;\n }\n return new this(id, extra);\n }\n constructor(id, extra) {\n this.id = id;\n this.extra = extra;\n }\n get transaction() {\n if (this.extra.packed_trx) {\n return Serializer.decode({ data: this.extra.packed_trx, type: Transaction });\n }\n }\n get signatures() {\n if (this.extra.signatures) {\n return this.extra.signatures.map(Signature.from);\n }\n }\n equals(other) {\n return this.id.equals(other.id);\n }\n toJSON() {\n return this.id;\n }\n};\nTrxVariant$1.abiName = 'trx_variant';\nlet GetBlockResponseTransactionReceipt = class GetBlockResponseTransactionReceipt extends TransactionReceipt {\n get id() {\n return this.trx.id;\n }\n};\n__decorate([\n Struct.field(TrxVariant$1)\n], GetBlockResponseTransactionReceipt.prototype, \"trx\", void 0);\nGetBlockResponseTransactionReceipt = __decorate([\n Struct.type('get_block_response_receipt')\n], GetBlockResponseTransactionReceipt);\nlet GetBlockResponse = class GetBlockResponse extends Struct {\n};\n__decorate([\n Struct.field('time_point')\n], GetBlockResponse.prototype, \"timestamp\", void 0);\n__decorate([\n Struct.field('name')\n], GetBlockResponse.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], GetBlockResponse.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(NewProducers$1, { optional: true })\n], GetBlockResponse.prototype, \"new_producers\", void 0);\n__decorate([\n Struct.field('header_extension', { optional: true })\n], GetBlockResponse.prototype, \"header_extensions\", void 0);\n__decorate([\n Struct.field('any', { optional: true })\n], GetBlockResponse.prototype, \"new_protocol_features\", void 0);\n__decorate([\n Struct.field('signature')\n], GetBlockResponse.prototype, \"producer_signature\", void 0);\n__decorate([\n Struct.field(GetBlockResponseTransactionReceipt, { array: true })\n], GetBlockResponse.prototype, \"transactions\", void 0);\n__decorate([\n Struct.field('block_extension', { optional: true })\n], GetBlockResponse.prototype, \"block_extensions\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"ref_block_prefix\", void 0);\nGetBlockResponse = __decorate([\n Struct.type('get_block_response')\n], GetBlockResponse);\nlet ActiveScheduleProducerAuthority = class ActiveScheduleProducerAuthority extends Struct {\n};\n__decorate([\n Struct.field('name')\n], ActiveScheduleProducerAuthority.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('any')\n], ActiveScheduleProducerAuthority.prototype, \"authority\", void 0);\nActiveScheduleProducerAuthority = __decorate([\n Struct.type('active_schedule_producer_authority')\n], ActiveScheduleProducerAuthority);\nlet ActiveScheduleProducer = class ActiveScheduleProducer extends Struct {\n};\n__decorate([\n Struct.field('name')\n], ActiveScheduleProducer.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field(ActiveScheduleProducerAuthority)\n], ActiveScheduleProducer.prototype, \"authority\", void 0);\nActiveScheduleProducer = __decorate([\n Struct.type('active_schedule_producer')\n], ActiveScheduleProducer);\nlet ActiveSchedule = class ActiveSchedule extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], ActiveSchedule.prototype, \"version\", void 0);\n__decorate([\n Struct.field(ActiveScheduleProducer, { array: true })\n], ActiveSchedule.prototype, \"producers\", void 0);\nActiveSchedule = __decorate([\n Struct.type('active_schedule')\n], ActiveSchedule);\nlet BlockStateHeader = class BlockStateHeader extends Struct {\n};\n__decorate([\n Struct.field('time_point')\n], BlockStateHeader.prototype, \"timestamp\", void 0);\n__decorate([\n Struct.field('name')\n], BlockStateHeader.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], BlockStateHeader.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], BlockStateHeader.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(HeaderExtension$1, { array: true, optional: true })\n], BlockStateHeader.prototype, \"header_extensions\", void 0);\n__decorate([\n Struct.field('signature')\n], BlockStateHeader.prototype, \"producer_signature\", void 0);\nBlockStateHeader = __decorate([\n Struct.type('block_state_header')\n], BlockStateHeader);\nlet GetBlockHeaderStateResponse = class GetBlockHeaderStateResponse extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"dpos_proposed_irreversible_blocknum\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"dpos_irreversible_blocknum\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockHeaderStateResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field(BlockStateHeader)\n], GetBlockHeaderStateResponse.prototype, \"header\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"active_schedule\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"blockroot_merkle\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"producer_to_last_produced\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"producer_to_last_implied_irb\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"valid_block_signing_authority\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"confirm_count\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"pending_schedule\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"activated_protocol_features\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"additional_signatures\", void 0);\nGetBlockHeaderStateResponse = __decorate([\n Struct.type('get_block_header_state_response')\n], GetBlockHeaderStateResponse);\nlet GetInfoResponse = class GetInfoResponse extends Struct {\n getTransactionHeader(secondsAhead = 120) {\n const expiration = TimePointSec.fromMilliseconds(this.head_block_time.toMilliseconds() + secondsAhead * 1000);\n const id = this.last_irreversible_block_id;\n const prefixArray = id.array.subarray(8, 12);\n const prefix = new Uint32Array(prefixArray.buffer, prefixArray.byteOffset, 1)[0];\n return TransactionHeader.from({\n expiration,\n ref_block_num: Number(this.last_irreversible_block_num) & 0xffff,\n ref_block_prefix: prefix,\n });\n }\n};\n__decorate([\n Struct.field('string')\n], GetInfoResponse.prototype, \"server_version\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetInfoResponse.prototype, \"chain_id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetInfoResponse.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetInfoResponse.prototype, \"last_irreversible_block_num\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetInfoResponse.prototype, \"last_irreversible_block_id\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetInfoResponse.prototype, \"head_block_id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetInfoResponse.prototype, \"head_block_time\", void 0);\n__decorate([\n Struct.field('name')\n], GetInfoResponse.prototype, \"head_block_producer\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"virtual_block_cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"virtual_block_net_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"block_cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"block_net_limit\", void 0);\n__decorate([\n Struct.field('string?')\n], GetInfoResponse.prototype, \"server_version_string\", void 0);\n__decorate([\n Struct.field('uint32?')\n], GetInfoResponse.prototype, \"fork_db_head_block_num\", void 0);\n__decorate([\n Struct.field('checksum256?')\n], GetInfoResponse.prototype, \"fork_db_head_block_id\", void 0);\nGetInfoResponse = __decorate([\n Struct.type('get_info_response')\n], GetInfoResponse);\nlet GetTableByScopeResponseRow = class GetTableByScopeResponseRow extends Struct {\n};\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"code\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"scope\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"table\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"payer\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTableByScopeResponseRow.prototype, \"count\", void 0);\nGetTableByScopeResponseRow = __decorate([\n Struct.type('get_table_by_scope_response_row')\n], GetTableByScopeResponseRow);\nlet GetTableByScopeResponse = class GetTableByScopeResponse extends Struct {\n};\n__decorate([\n Struct.field(GetTableByScopeResponseRow, { array: true })\n], GetTableByScopeResponse.prototype, \"rows\", void 0);\n__decorate([\n Struct.field('string')\n], GetTableByScopeResponse.prototype, \"more\", void 0);\nGetTableByScopeResponse = __decorate([\n Struct.type('get_table_by_scope_response')\n], GetTableByScopeResponse);\nlet OrderedActionsResult = class OrderedActionsResult extends Struct {\n};\n__decorate([\n Struct.field(UInt64)\n], OrderedActionsResult.prototype, \"global_action_seq\", void 0);\n__decorate([\n Struct.field(Int64)\n], OrderedActionsResult.prototype, \"account_action_seq\", void 0);\n__decorate([\n Struct.field(UInt32)\n], OrderedActionsResult.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field(BlockTimestamp)\n], OrderedActionsResult.prototype, \"block_time\", void 0);\n__decorate([\n Struct.field('any')\n], OrderedActionsResult.prototype, \"action_trace\", void 0);\n__decorate([\n Struct.field('boolean?')\n], OrderedActionsResult.prototype, \"irrevirsible\", void 0);\nOrderedActionsResult = __decorate([\n Struct.type('ordered_action_result')\n], OrderedActionsResult);\nlet GetActionsResponse = class GetActionsResponse extends Struct {\n};\n__decorate([\n Struct.field(OrderedActionsResult, { array: true })\n], GetActionsResponse.prototype, \"actions\", void 0);\n__decorate([\n Struct.field(Int32)\n], GetActionsResponse.prototype, \"last_irreversible_block\", void 0);\n__decorate([\n Struct.field(Int32)\n], GetActionsResponse.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('boolean?')\n], GetActionsResponse.prototype, \"time_limit_exceeded_error\", void 0);\nGetActionsResponse = __decorate([\n Struct.type('get_actions_response')\n], GetActionsResponse);\nlet TransactionTrace = class TransactionTrace extends Struct {\n};\nTransactionTrace = __decorate([\n Struct.type('transaction_trace')\n], TransactionTrace);\nlet Trx = class Trx extends Struct {\n};\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"actions\", void 0);\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"context_free_actions\", void 0);\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"context_free_data\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"delay_sec\", void 0);\n__decorate([\n Struct.field('string')\n], Trx.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"max_cpu_usage_ms\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"max_net_usage_words\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"ref_block_num\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"ref_block_prefix\", void 0);\n__decorate([\n Struct.field('string', { array: true })\n], Trx.prototype, \"signatures\", void 0);\nTrx = __decorate([\n Struct.type('trx')\n], Trx);\nlet TransactionInfo = class TransactionInfo extends Struct {\n};\n__decorate([\n Struct.field(TransactionReceipt)\n], TransactionInfo.prototype, \"receipt\", void 0);\n__decorate([\n Struct.field('trx')\n], TransactionInfo.prototype, \"trx\", void 0);\nTransactionInfo = __decorate([\n Struct.type('transaction_info')\n], TransactionInfo);\nlet GetTransactionResponse = class GetTransactionResponse extends Struct {\n};\n__decorate([\n Struct.field(Checksum256)\n], GetTransactionResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field(UInt32)\n], GetTransactionResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field(BlockTimestamp)\n], GetTransactionResponse.prototype, \"block_time\", void 0);\n__decorate([\n Struct.field(UInt32)\n], GetTransactionResponse.prototype, \"last_irreversible_block\", void 0);\n__decorate([\n Struct.field('any?')\n], GetTransactionResponse.prototype, \"traces\", void 0);\n__decorate([\n Struct.field('any')\n], GetTransactionResponse.prototype, \"trx\", void 0);\nGetTransactionResponse = __decorate([\n Struct.type('get_transaction_response')\n], GetTransactionResponse);\nlet GetKeyAccountsResponse = class GetKeyAccountsResponse extends Struct {\n};\n__decorate([\n Struct.field('name', { array: true })\n], GetKeyAccountsResponse.prototype, \"account_names\", void 0);\nGetKeyAccountsResponse = __decorate([\n Struct.type('get_key_accounts_response')\n], GetKeyAccountsResponse);\nlet GetControlledAccountsResponse = class GetControlledAccountsResponse extends Struct {\n};\n__decorate([\n Struct.field('name', { array: true })\n], GetControlledAccountsResponse.prototype, \"controlled_accounts\", void 0);\nGetControlledAccountsResponse = __decorate([\n Struct.type('get_controlled_accounts_response')\n], GetControlledAccountsResponse);\nlet GetTransactionStatusResponse = class GetTransactionStatusResponse extends Struct {\n};\n__decorate([\n Struct.field('string')\n], GetTransactionStatusResponse.prototype, \"state\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTransactionStatusResponse.prototype, \"head_number\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetTransactionStatusResponse.prototype, \"head_id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetTransactionStatusResponse.prototype, \"head_timestamp\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTransactionStatusResponse.prototype, \"irreversible_number\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetTransactionStatusResponse.prototype, \"irreversible_id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetTransactionStatusResponse.prototype, \"irreversible_timestamp\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetTransactionStatusResponse.prototype, \"earliest_tracked_block_id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTransactionStatusResponse.prototype, \"earliest_tracked_block_number\", void 0);\nGetTransactionStatusResponse = __decorate([\n Struct.type('get_transaction_status_response')\n], GetTransactionStatusResponse);\nlet ProducerAuthority = class ProducerAuthority extends Struct {\n};\n__decorate([\n Struct.field(UInt32)\n], ProducerAuthority.prototype, \"threshold\", void 0);\n__decorate([\n Struct.field(KeyWeight, { array: true })\n], ProducerAuthority.prototype, \"keys\", void 0);\nProducerAuthority = __decorate([\n Struct.type('producer_authority')\n], ProducerAuthority);\nlet Producer = class Producer extends Struct {\n static from(data) {\n return super.from({\n ...data,\n authority: [data.authority[0], ProducerAuthority.from(data.authority[1])],\n });\n }\n};\n__decorate([\n Struct.field('name')\n], Producer.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('any', { array: true })\n], Producer.prototype, \"authority\", void 0);\nProducer = __decorate([\n Struct.type('producer')\n], Producer);\nlet ProducerSchedule = class ProducerSchedule extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], ProducerSchedule.prototype, \"version\", void 0);\n__decorate([\n Struct.field(Producer, { array: true })\n], ProducerSchedule.prototype, \"producers\", void 0);\nProducerSchedule = __decorate([\n Struct.type('producer_schedule')\n], ProducerSchedule);\nlet GetProducerScheduleResponse = class GetProducerScheduleResponse extends Struct {\n};\n__decorate([\n Struct.field(ProducerSchedule, { optional: true })\n], GetProducerScheduleResponse.prototype, \"active\", void 0);\n__decorate([\n Struct.field(ProducerSchedule, { optional: true })\n], GetProducerScheduleResponse.prototype, \"pending\", void 0);\n__decorate([\n Struct.field(ProducerSchedule, { optional: true })\n], GetProducerScheduleResponse.prototype, \"proposed\", void 0);\nGetProducerScheduleResponse = __decorate([\n Struct.type('get_producer_schedule_response')\n], GetProducerScheduleResponse);\nlet ProtocolFeature = class ProtocolFeature extends Struct {\n};\n__decorate([\n Struct.field('checksum256')\n], ProtocolFeature.prototype, \"feature_digest\", void 0);\n__decorate([\n Struct.field('uint32')\n], ProtocolFeature.prototype, \"activation_ordinal\", void 0);\n__decorate([\n Struct.field('uint32')\n], ProtocolFeature.prototype, \"activation_block_num\", void 0);\n__decorate([\n Struct.field('checksum256')\n], ProtocolFeature.prototype, \"description_digest\", void 0);\n__decorate([\n Struct.field('string', { array: true })\n], ProtocolFeature.prototype, \"dependencies\", void 0);\n__decorate([\n Struct.field('string')\n], ProtocolFeature.prototype, \"protocol_feature_type\", void 0);\n__decorate([\n Struct.field('any', { array: true })\n], ProtocolFeature.prototype, \"specification\", void 0);\nProtocolFeature = __decorate([\n Struct.type('protocol_feature')\n], ProtocolFeature);\nlet GetProtocolFeaturesResponse = class GetProtocolFeaturesResponse extends Struct {\n};\n__decorate([\n Struct.field(ProtocolFeature, { array: true })\n], GetProtocolFeaturesResponse.prototype, \"activated_protocol_features\", void 0);\n__decorate([\n Struct.field('uint32', { optional: true })\n], GetProtocolFeaturesResponse.prototype, \"more\", void 0);\nGetProtocolFeaturesResponse = __decorate([\n Struct.type('get_protocol_features_response')\n], GetProtocolFeaturesResponse);\n\nvar types$2 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get AccountByAuthorizersRow () { return AccountByAuthorizersRow; },\n get AccountLinkedAction () { return AccountLinkedAction; },\n get AccountObject () { return AccountObject; },\n get AccountPermission () { return AccountPermission; },\n get AccountRefundRequest () { return AccountRefundRequest; },\n get AccountResourceLimit () { return AccountResourceLimit; },\n get AccountRexInfo () { return AccountRexInfo; },\n get AccountRexInfoMaturities () { return AccountRexInfoMaturities; },\n get AccountSelfDelegatedBandwidth () { return AccountSelfDelegatedBandwidth; },\n get AccountTotalResources () { return AccountTotalResources; },\n get AccountVoterInfo () { return AccountVoterInfo; },\n get AccountsByAuthorizers () { return AccountsByAuthorizers; },\n get ActiveSchedule () { return ActiveSchedule; },\n get ActiveScheduleProducer () { return ActiveScheduleProducer; },\n get ActiveScheduleProducerAuthority () { return ActiveScheduleProducerAuthority; },\n get BlockExtension () { return BlockExtension$1; },\n get BlockStateHeader () { return BlockStateHeader; },\n get GetActionsResponse () { return GetActionsResponse; },\n get GetBlockHeaderStateResponse () { return GetBlockHeaderStateResponse; },\n get GetBlockResponse () { return GetBlockResponse; },\n get GetBlockResponseTransactionReceipt () { return GetBlockResponseTransactionReceipt; },\n get GetControlledAccountsResponse () { return GetControlledAccountsResponse; },\n get GetInfoResponse () { return GetInfoResponse; },\n get GetKeyAccountsResponse () { return GetKeyAccountsResponse; },\n get GetProducerScheduleResponse () { return GetProducerScheduleResponse; },\n get GetProtocolFeaturesResponse () { return GetProtocolFeaturesResponse; },\n get GetTableByScopeResponse () { return GetTableByScopeResponse; },\n get GetTableByScopeResponseRow () { return GetTableByScopeResponseRow; },\n get GetTransactionResponse () { return GetTransactionResponse; },\n get GetTransactionStatusResponse () { return GetTransactionStatusResponse; },\n get HeaderExtension () { return HeaderExtension$1; },\n get NewProducers () { return NewProducers$1; },\n get NewProducersEntry () { return NewProducersEntry$1; },\n get OrderedActionsResult () { return OrderedActionsResult; },\n get Producer () { return Producer; },\n get ProducerAuthority () { return ProducerAuthority; },\n get ProducerSchedule () { return ProducerSchedule; },\n get ProtocolFeature () { return ProtocolFeature; },\n get TransactionInfo () { return TransactionInfo; },\n get TransactionTrace () { return TransactionTrace; },\n get Trx () { return Trx; },\n TrxVariant: TrxVariant$1\n});\n\nclass ChainAPI {\n constructor(client) {\n this.client = client;\n }\n async get_abi(accountName) {\n return this.client.call({\n path: '/v1/chain/get_abi',\n params: { account_name: Name.from(accountName) },\n });\n }\n async get_account(accountName) {\n return this.client.call({\n path: '/v1/chain/get_account',\n params: { account_name: Name.from(accountName) },\n responseType: AccountObject,\n });\n }\n async get_accounts_by_authorizers(keys) {\n return this.client.call({\n path: '/v1/chain/get_accounts_by_authorizers',\n params: { keys: keys },\n responseType: AccountsByAuthorizers,\n });\n }\n async get_activated_protocol_features(params) {\n return this.client.call({\n path: '/v1/chain/get_activated_protocol_features',\n params,\n responseType: GetProtocolFeaturesResponse,\n });\n }\n async get_block(block_num_or_id) {\n return this.client.call({\n path: '/v1/chain/get_block',\n params: { block_num_or_id },\n responseType: GetBlockResponse,\n });\n }\n async get_block_header_state(block_num_or_id) {\n return this.client.call({\n path: '/v1/chain/get_block_header_state',\n params: { block_num_or_id },\n responseType: GetBlockHeaderStateResponse,\n });\n }\n async get_currency_balance(contract, accountName, symbol) {\n const params = {\n account: Name.from(accountName),\n code: Name.from(contract),\n };\n if (symbol) {\n params.symbol = symbol;\n }\n return this.client.call({\n path: '/v1/chain/get_currency_balance',\n params,\n responseType: 'asset[]',\n });\n }\n async get_info() {\n return this.client.call({\n path: '/v1/chain/get_info',\n responseType: GetInfoResponse,\n });\n }\n async get_producer_schedule() {\n return this.client.call({\n path: '/v1/chain/get_producer_schedule',\n responseType: GetProducerScheduleResponse,\n });\n }\n async compute_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/compute_transaction',\n params: {\n transaction: tx,\n },\n });\n }\n async push_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/push_transaction',\n params: tx,\n });\n }\n async send_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/send_transaction',\n params: tx,\n });\n }\n async send_transaction2(tx, options) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/send_transaction2',\n params: {\n return_failure_trace: true,\n retry_trx: false,\n retry_trx_num_blocks: 0,\n transaction: tx,\n ...options,\n },\n });\n }\n async get_table_rows(params) {\n const type = params.type;\n let key_type = params.key_type;\n const someBound = params.lower_bound || params.upper_bound;\n if (!key_type && someBound) {\n // determine key type from bounds type\n if (isInstanceOf(someBound, UInt64)) {\n key_type = 'i64';\n }\n else if (isInstanceOf(someBound, UInt128)) {\n key_type = 'i128';\n }\n else if (isInstanceOf(someBound, Checksum256)) {\n key_type = 'sha256';\n }\n else if (isInstanceOf(someBound, Checksum160)) {\n key_type = 'ripemd160';\n }\n }\n if (!key_type) {\n key_type = 'name';\n }\n let json = params.json;\n if (json === undefined) {\n // if we know the row type don't ask the node to perform abi decoding\n json = type === undefined;\n }\n let upper_bound = params.upper_bound;\n if (upper_bound && typeof upper_bound !== 'string') {\n upper_bound = String(upper_bound);\n }\n let lower_bound = params.lower_bound;\n if (lower_bound && typeof lower_bound !== 'string') {\n lower_bound = String(lower_bound);\n }\n let scope = params.scope;\n if (typeof scope === 'undefined') {\n scope = String(Name.from(params.code));\n }\n else if (typeof scope !== 'string') {\n scope = String(scope);\n }\n // eslint-disable-next-line prefer-const\n let { rows, more, next_key } = await this.client.call({\n path: '/v1/chain/get_table_rows',\n params: {\n ...params,\n code: Name.from(params.code),\n table: Name.from(params.table),\n limit: params.limit !== undefined ? UInt32.from(params.limit) : undefined,\n scope,\n key_type,\n json,\n upper_bound,\n lower_bound,\n },\n });\n let ram_payers;\n if (params.show_payer) {\n ram_payers = [];\n rows = rows.map(({ data, payer }) => {\n ram_payers.push(Name.from(payer));\n return data;\n });\n }\n if (type) {\n if (json) {\n rows = rows.map((value) => {\n if (typeof value === 'string' && Bytes.isBytes(value)) {\n // this handles the case where nodeos bails on abi decoding and just returns a hex string\n return Serializer.decode({ data: Bytes.from(value), type });\n }\n else {\n return Serializer.decode({ object: value, type });\n }\n });\n }\n else {\n rows = rows\n .map((hex) => Bytes.from(hex))\n .map((data) => Serializer.decode({ data, type }));\n }\n }\n if (next_key && next_key.length > 0) {\n let indexType;\n // set index type so we can decode next_key in the response if present\n switch (key_type) {\n case 'i64':\n indexType = UInt64;\n break;\n case 'i128':\n indexType = UInt128;\n break;\n case 'name':\n indexType = Name;\n break;\n case 'float64':\n indexType = Float64;\n break;\n case 'float128':\n indexType = Float128;\n break;\n case 'sha256':\n indexType = Checksum256;\n break;\n case 'ripemd160':\n indexType = Checksum160;\n break;\n default:\n throw new Error(`Unsupported key type: ${key_type}`);\n }\n if (indexType === Name) {\n // names are sent back as an uint64 string instead of a name string..\n next_key = Name.from(Serializer.decode({ object: next_key, type: UInt64 }));\n }\n else {\n next_key = Serializer.decode({ object: next_key, type: indexType });\n }\n }\n else {\n next_key = undefined;\n }\n return { rows, more, next_key, ram_payers };\n }\n async get_table_by_scope(params) {\n return this.client.call({\n path: '/v1/chain/get_table_by_scope',\n params,\n responseType: GetTableByScopeResponse,\n });\n }\n async get_transaction_status(id) {\n return this.client.call({\n path: '/v1/chain/get_transaction_status',\n params: {\n id: Checksum256.from(id),\n },\n responseType: GetTransactionStatusResponse,\n });\n }\n}\n\nclass HistoryAPI {\n constructor(client) {\n this.client = client;\n }\n async get_actions(accountName, pos, offset) {\n return this.client.call({\n path: '/v1/history/get_actions',\n params: {\n account_name: Name.from(accountName),\n pos: Int32.from(pos),\n offset: Int32.from(offset),\n },\n responseType: GetActionsResponse,\n });\n }\n async get_transaction(id, options = {}) {\n return this.client.call({\n path: '/v1/history/get_transaction',\n params: {\n id: Checksum256.from(id),\n block_num_hint: options.blockNumHint && UInt32.from(options.blockNumHint),\n traces: options.excludeTraces === true ? false : undefined,\n },\n responseType: GetTransactionResponse,\n });\n }\n async get_key_accounts(publicKey) {\n return this.client.call({\n path: '/v1/history/get_key_accounts',\n params: { public_key: PublicKey.from(publicKey) },\n responseType: GetKeyAccountsResponse,\n });\n }\n async get_controlled_accounts(controllingAccount) {\n return this.client.call({\n path: '/v1/history/get_controlled_accounts',\n params: { controlling_account: Name.from(controllingAccount) },\n responseType: GetControlledAccountsResponse,\n });\n }\n}\n\nclass APIError extends Error {\n static formatError(error) {\n if (error.what === 'unspecified' &&\n error.details[0].file &&\n error.details[0].file === 'http_plugin.cpp' &&\n error.details[0].message.slice(0, 11) === 'unknown key') {\n // fix cryptic error messages from nodeos for missing accounts\n return 'Account not found';\n }\n else if (error.what === 'unspecified' && error.details && error.details.length > 0) {\n return error.details[0].message;\n }\n else if (error.what && error.what.length > 0) {\n return error.what;\n }\n else {\n return 'Unknown API error';\n }\n }\n constructor(path, response) {\n let message;\n if (response.json && response.json.error) {\n message = `${APIError.formatError(response.json.error)} at ${path}`;\n }\n else {\n message = `HTTP ${response.status} at ${path}`;\n }\n super(message);\n this.path = path;\n this.response = response;\n }\n /** The nodeos error object. */\n get error() {\n const { json } = this.response;\n return (json ? json.error : undefined);\n }\n /** The nodeos error name, e.g. `tx_net_usage_exceeded` */\n get name() {\n const { error } = this;\n return error ? error.name : 'unspecified';\n }\n /** The nodeos error code, e.g. `3080002`. */\n get code() {\n const { error } = this;\n return error ? error.code : 0;\n }\n /** List of exceptions, if any. */\n get details() {\n const { error } = this;\n return error ? error.details : [];\n }\n}\nAPIError.__className = 'APIError';\nclass APIClient {\n constructor(options) {\n this.v1 = {\n chain: new ChainAPI(this),\n history: new HistoryAPI(this),\n };\n if (options.provider) {\n this.provider = options.provider;\n }\n else if (options.url) {\n this.provider = new FetchProvider(options.url, options);\n }\n else {\n throw new Error('Missing url or provider');\n }\n }\n async call(args) {\n const response = await this.provider.call(args.path, args.params);\n const { json } = response;\n if (Math.floor(response.status / 100) !== 2 || (json && typeof json.error === 'object')) {\n throw new APIError(args.path, response);\n }\n if (args.responseType) {\n return abiDecode({ type: args.responseType, object: response.json });\n }\n return response.json || response.text;\n }\n}\nAPIClient.__className = 'APIClient';\n\nvar types$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n v1: types$2\n});\n\nvar BlockHeader_1;\nlet HandshakeMessage = class HandshakeMessage extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], HandshakeMessage.prototype, \"networkVersion\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"chainId\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"nodeId\", void 0);\n__decorate([\n Struct.field('public_key')\n], HandshakeMessage.prototype, \"key\", void 0);\n__decorate([\n Struct.field('int64')\n], HandshakeMessage.prototype, \"time\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"token\", void 0);\n__decorate([\n Struct.field('signature')\n], HandshakeMessage.prototype, \"sig\", void 0);\n__decorate([\n Struct.field('string')\n], HandshakeMessage.prototype, \"p2pAddress\", void 0);\n__decorate([\n Struct.field('uint32')\n], HandshakeMessage.prototype, \"lastIrreversibleBlockNumber\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"lastIrreversibleBlockId\", void 0);\n__decorate([\n Struct.field('uint32')\n], HandshakeMessage.prototype, \"headNum\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"headId\", void 0);\n__decorate([\n Struct.field('string')\n], HandshakeMessage.prototype, \"os\", void 0);\n__decorate([\n Struct.field('string')\n], HandshakeMessage.prototype, \"agent\", void 0);\n__decorate([\n Struct.field('int16')\n], HandshakeMessage.prototype, \"generation\", void 0);\nHandshakeMessage = __decorate([\n Struct.type('handshake_message')\n], HandshakeMessage);\nlet ChainSizeMessage = class ChainSizeMessage extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], ChainSizeMessage.prototype, \"lastIrreversibleBlockNumber\", void 0);\n__decorate([\n Struct.field('checksum256')\n], ChainSizeMessage.prototype, \"lastIrreversibleBlockId\", void 0);\n__decorate([\n Struct.field('uint32')\n], ChainSizeMessage.prototype, \"headNum\", void 0);\n__decorate([\n Struct.field('checksum256')\n], ChainSizeMessage.prototype, \"headId\", void 0);\nChainSizeMessage = __decorate([\n Struct.type('chain_size_message')\n], ChainSizeMessage);\nlet GoAwayMessage = class GoAwayMessage extends Struct {\n};\n__decorate([\n Struct.field('uint8')\n], GoAwayMessage.prototype, \"reason\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GoAwayMessage.prototype, \"nodeId\", void 0);\nGoAwayMessage = __decorate([\n Struct.type('go_away_message')\n], GoAwayMessage);\nlet TimeMessage = class TimeMessage extends Struct {\n};\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"org\", void 0);\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"rec\", void 0);\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"xmt\", void 0);\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"dst\", void 0);\nTimeMessage = __decorate([\n Struct.type('time_message')\n], TimeMessage);\nlet NoticeMessage = class NoticeMessage extends Struct {\n};\n__decorate([\n Struct.field('checksum256', { array: true })\n], NoticeMessage.prototype, \"knownTrx\", void 0);\n__decorate([\n Struct.field('checksum256', { array: true })\n], NoticeMessage.prototype, \"knownBlocks\", void 0);\nNoticeMessage = __decorate([\n Struct.type('notice_message')\n], NoticeMessage);\nlet RequestMessage = class RequestMessage extends Struct {\n};\n__decorate([\n Struct.field('checksum256', { array: true })\n], RequestMessage.prototype, \"reqTrx\", void 0);\n__decorate([\n Struct.field('checksum256', { array: true })\n], RequestMessage.prototype, \"reqBlocks\", void 0);\nRequestMessage = __decorate([\n Struct.type('request_message')\n], RequestMessage);\nlet SyncRequestMessage = class SyncRequestMessage extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], SyncRequestMessage.prototype, \"startBlock\", void 0);\n__decorate([\n Struct.field('uint32')\n], SyncRequestMessage.prototype, \"endBlock\", void 0);\nSyncRequestMessage = __decorate([\n Struct.type('sync_request_message')\n], SyncRequestMessage);\nlet NewProducersEntry = class NewProducersEntry extends Struct {\n};\n__decorate([\n Struct.field('name')\n], NewProducersEntry.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], NewProducersEntry.prototype, \"block_signing_key\", void 0);\nNewProducersEntry = __decorate([\n Struct.type('new_producers_entry')\n], NewProducersEntry);\nlet NewProducers = class NewProducers extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], NewProducers.prototype, \"version\", void 0);\n__decorate([\n Struct.field(NewProducersEntry, { array: true })\n], NewProducers.prototype, \"producers\", void 0);\nNewProducers = __decorate([\n Struct.type('new_producers')\n], NewProducers);\nlet BlockExtension = class BlockExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], BlockExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], BlockExtension.prototype, \"data\", void 0);\nBlockExtension = __decorate([\n Struct.type('block_extension')\n], BlockExtension);\nlet HeaderExtension = class HeaderExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], HeaderExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], HeaderExtension.prototype, \"data\", void 0);\nHeaderExtension = __decorate([\n Struct.type('header_extension')\n], HeaderExtension);\nlet TrxVariant = class TrxVariant extends Variant {\n};\nTrxVariant = __decorate([\n Variant.type('trx_variant', [Checksum256, PackedTransaction])\n], TrxVariant);\nlet FullTransactionReceipt = class FullTransactionReceipt extends Struct {\n};\n__decorate([\n Struct.field(UInt8)\n], FullTransactionReceipt.prototype, \"status\", void 0);\n__decorate([\n Struct.field(UInt32)\n], FullTransactionReceipt.prototype, \"cpu_usage_us\", void 0);\n__decorate([\n Struct.field(VarUInt)\n], FullTransactionReceipt.prototype, \"net_usage_words\", void 0);\n__decorate([\n Struct.field(TrxVariant)\n], FullTransactionReceipt.prototype, \"trx\", void 0);\nFullTransactionReceipt = __decorate([\n Struct.type('full_transaction_receipt')\n], FullTransactionReceipt);\nlet BlockHeader = BlockHeader_1 = class BlockHeader extends Struct {\n get blockNum() {\n const bytes = this.previous.array.slice(0, 4);\n let num = 0;\n for (let i = 0; i < 4; i++) {\n num = (num << 8) + bytes[i];\n }\n return num + 1;\n }\n get id() {\n const id = Checksum256.hash(Serializer.encode({ object: this, type: BlockHeader_1 }));\n const numBuffer = new Uint8Array(4);\n numBuffer[0] = (this.blockNum >> 24) & 0xff;\n numBuffer[1] = (this.blockNum >> 16) & 0xff;\n numBuffer[2] = (this.blockNum >> 8) & 0xff;\n numBuffer[3] = this.blockNum & 0xff;\n id.array.set(numBuffer, 0);\n return id;\n }\n};\n__decorate([\n Struct.field('uint32')\n], BlockHeader.prototype, \"timeSlot\", void 0);\n__decorate([\n Struct.field('name')\n], BlockHeader.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], BlockHeader.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockHeader.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockHeader.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockHeader.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], BlockHeader.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(NewProducers, { optional: true })\n], BlockHeader.prototype, \"new_producers\", void 0);\n__decorate([\n Struct.field(HeaderExtension, { array: true })\n], BlockHeader.prototype, \"header_extensions\", void 0);\nBlockHeader = BlockHeader_1 = __decorate([\n Struct.type('block_header')\n], BlockHeader);\nlet SignedBlock = class SignedBlock extends BlockHeader {\n};\n__decorate([\n Struct.field('signature')\n], SignedBlock.prototype, \"producer_signature\", void 0);\n__decorate([\n Struct.field(FullTransactionReceipt, { array: true })\n], SignedBlock.prototype, \"transactions\", void 0);\n__decorate([\n Struct.field(BlockExtension, { array: true })\n], SignedBlock.prototype, \"block_extensions\", void 0);\nSignedBlock = __decorate([\n Struct.type('signed_block')\n], SignedBlock);\nlet NetMessage = class NetMessage extends Variant {\n};\nNetMessage = __decorate([\n Variant.type('net_message', [\n HandshakeMessage,\n ChainSizeMessage,\n GoAwayMessage,\n TimeMessage,\n NoticeMessage,\n RequestMessage,\n SyncRequestMessage,\n SignedBlock,\n PackedTransaction,\n ])\n], NetMessage);\n\nvar types = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get BlockExtension () { return BlockExtension; },\n get BlockHeader () { return BlockHeader; },\n get ChainSizeMessage () { return ChainSizeMessage; },\n get FullTransactionReceipt () { return FullTransactionReceipt; },\n get GoAwayMessage () { return GoAwayMessage; },\n get HandshakeMessage () { return HandshakeMessage; },\n get HeaderExtension () { return HeaderExtension; },\n get NetMessage () { return NetMessage; },\n get NewProducers () { return NewProducers; },\n get NewProducersEntry () { return NewProducersEntry; },\n get NoticeMessage () { return NoticeMessage; },\n get RequestMessage () { return RequestMessage; },\n get SignedBlock () { return SignedBlock; },\n get SyncRequestMessage () { return SyncRequestMessage; },\n get TimeMessage () { return TimeMessage; }\n});\n\nclass P2PClient {\n constructor(options) {\n if (options.provider) {\n this.provider = options.provider;\n }\n else {\n throw new Error('Missing provider');\n }\n if (options.setTimeoutImpl !== undefined) {\n this.setTimeoutImpl = options.setTimeoutImpl;\n }\n else {\n this.setTimeoutImpl = setTimeout;\n }\n if (options.heartbeatTimoutMs !== undefined) {\n this.heartbeatTimoutMs = options.heartbeatTimoutMs;\n this.resetHeartbeat();\n }\n this.provider.on('data', (data) => {\n this.handleData(data);\n });\n this.provider.on('error', (e) => {\n this.emit('error', [e]);\n });\n this.provider.on('close', () => {\n this.emit('close', []);\n });\n this.eventListeners = {};\n }\n send(message, done) {\n const wrappedMessage = NetMessage.from(message);\n const messageBuffer = Serializer.encode({ object: wrappedMessage });\n this.provider.write(messageBuffer.array, done);\n }\n end(cb) {\n this.endHeartbeat();\n this.provider.end(cb);\n }\n destroy(err) {\n this.endHeartbeat();\n this.provider.destroy(err);\n }\n handleData(data) {\n try {\n const message = Serializer.decode({ type: NetMessage, data });\n this.emit('message', [message]);\n }\n catch (e) {\n this.emit('error', [e]);\n }\n }\n endHeartbeat() {\n if (this.heartbeatTimoutId !== undefined) {\n clearTimeout(this.heartbeatTimoutId);\n this.heartbeatTimoutId = undefined;\n }\n }\n resetHeartbeat() {\n this.endHeartbeat();\n if (this.heartbeatTimoutMs !== undefined) {\n this.setTimeoutImpl(() => {\n this.handleHeartbeat();\n }, this.heartbeatTimoutMs);\n }\n }\n handleHeartbeat() {\n const now = Date.now();\n const timeMessage = TimeMessage.from({\n org: now,\n rec: 0,\n xmt: 0,\n dst: 0,\n });\n this.send(timeMessage, () => {\n this.resetHeartbeat();\n });\n }\n on(event, handler) {\n return this.addListenerInternal(event, handler, false, false);\n }\n once(event, handler) {\n return this.addListenerInternal(event, handler, true, false);\n }\n addListener(event, handler) {\n return this.addListenerInternal(event, handler, false, false);\n }\n prependListener(event, handler) {\n return this.addListenerInternal(event, handler, false, true);\n }\n removeListener(event, handler) {\n if (this.eventListeners[event] !== undefined) {\n this.eventListeners[event] = this.eventListeners[event].filter((e) => {\n return e.handler !== handler;\n });\n }\n return this;\n }\n addListenerInternal(event, handler, once, prepend) {\n if (this.eventListeners[event] === undefined) {\n this.eventListeners[event] = [];\n }\n if (!prepend) {\n this.eventListeners[event].push({ once, handler });\n }\n else {\n this.eventListeners[event].unshift({ once, handler });\n }\n return this;\n }\n emit(event, args) {\n if (this.eventListeners[event] === undefined) {\n return;\n }\n for (const { handler } of this.eventListeners[event]) {\n // typescript is loosing the specificity provided by T in the assignment above\n const erasedHandler = handler;\n erasedHandler(...args);\n }\n this.eventListeners[event] = this.eventListeners[event].filter((e) => {\n return e.once !== true;\n });\n }\n}\nP2PClient.__className = 'P2PClient';\n\nclass SimpleEnvelopeP2PProvider {\n constructor(nextProvider) {\n this.nextProvider = nextProvider;\n this.remainingData = new Uint8Array(0);\n this.dataHandlers = [];\n this.errorHandlers = [];\n // process nextProvider data\n this.nextProvider.on('data', (data) => {\n const newData = new Uint8Array(this.remainingData.byteLength + data.byteLength);\n newData.set(this.remainingData, 0);\n newData.set(data, this.remainingData.byteLength);\n this.remainingData = newData;\n while (this.remainingData.byteLength >= 4) {\n const view = new DataView(this.remainingData.buffer);\n const messageLength = view.getUint32(0, true);\n if (messageLength > SimpleEnvelopeP2PProvider.maxReadLength) {\n this.emitError(new Error('Incoming Message too long'));\n }\n if (this.remainingData.byteLength < 4 + messageLength) {\n // need more data\n break;\n }\n const messageBuffer = this.remainingData.subarray(4, 4 + messageLength);\n this.remainingData = this.remainingData.slice(4 + messageLength);\n this.emitData(messageBuffer);\n }\n });\n // proxy error\n this.nextProvider.on('error', (err) => {\n this.emitError(err);\n });\n }\n write(data, done) {\n const nextBuffer = new Uint8Array(4 + data.byteLength);\n const view = new DataView(nextBuffer.buffer);\n view.setUint32(0, data.byteLength, true);\n nextBuffer.set(data, 4);\n this.nextProvider.write(nextBuffer, done);\n }\n end(cb) {\n this.nextProvider.end(cb);\n }\n destroy(err) {\n this.nextProvider.destroy(err);\n }\n on(event, handler) {\n if (event === 'data') {\n this.dataHandlers.push(handler);\n }\n else if (event === 'error') {\n this.errorHandlers.push(handler);\n }\n else {\n this.nextProvider.on(event, handler);\n }\n return this;\n }\n emitData(messageBuffer) {\n for (const handler of this.dataHandlers) {\n // typescript is loosing the specificity provided by T in the assignment above\n handler(messageBuffer);\n }\n }\n emitError(err) {\n for (const handler of this.errorHandlers) {\n // typescript is loosing the specificity provided by T in the assignment above\n handler(err);\n }\n }\n}\nSimpleEnvelopeP2PProvider.maxReadLength = 8 * 1024 * 1024;\n\nexport { ABI, ABIDecoder, ABIEncoder, types$1 as API, APIClient, APIError, Action, Asset, Authority, Base58, BlockTimestamp, Bytes, ChainAPI, Checksum160, Checksum256, Checksum512, ExtendedAsset, FetchProvider, Float128, Float32, Float64, HistoryAPI, Int, Int128, Int16, Int32, Int64, Int8, KeyType, KeyWeight, Name, types as P2P, P2PClient, PackedTransaction, PermissionLevel, PermissionLevelWeight, PrivateKey, PublicKey, Serializer, Signature, SignedTransaction, SimpleEnvelopeP2PProvider, Struct, TimePoint, TimePointSec, Transaction, TransactionExtension, TransactionHeader, TransactionReceipt, TypeAlias, UInt128, UInt16, UInt32, UInt64, UInt8, VarInt, VarUInt, Variant, WaitWeight, Weight, isInstanceOf };\n//# sourceMappingURL=eosio-core.m.js.map\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 if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\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","/**\n * @greymass/miniaes v1.0.0\n * https://github.com/greymass/miniaes-js\n *\n * @license\n * Copyright (c) 2021 FFF00 Agents AB & Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\n/* eslint-disable */\n/**\n * @file {@link http://asmjs.org Asm.js} implementation of the {@link https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Advanced Encryption Standard}.\n * @author Artem S Vybornov \n * @license MIT\n */\n var AES_asm = function () {\n\n /**\n * Galois Field stuff init flag\n */\n var ginit_done = false;\n\n /**\n * Galois Field exponentiation and logarithm tables for 3 (the generator)\n */\n var gexp3, glog3;\n\n /**\n * Init Galois Field tables\n */\n function ginit() {\n gexp3 = [],\n glog3 = [];\n\n var a = 1, c, d;\n for (c = 0; c < 255; c++) {\n gexp3[c] = a;\n\n // Multiply by three\n d = a & 0x80, a <<= 1, a &= 255;\n if (d === 0x80) a ^= 0x1b;\n a ^= gexp3[c];\n\n // Set the log table value\n glog3[gexp3[c]] = c;\n }\n gexp3[255] = gexp3[0];\n glog3[0] = 0;\n\n ginit_done = true;\n }\n\n /**\n * Galois Field multiplication\n * @param {number} a\n * @param {number} b\n * @return {number}\n */\n function gmul(a, b) {\n var c = gexp3[(glog3[a] + glog3[b]) % 255];\n if (a === 0 || b === 0) c = 0;\n return c;\n }\n\n /**\n * Galois Field reciprocal\n * @param {number} a\n * @return {number}\n */\n function ginv(a) {\n var i = gexp3[255 - glog3[a]];\n if (a === 0) i = 0;\n return i;\n }\n\n /**\n * AES stuff init flag\n */\n var aes_init_done = false;\n\n /**\n * Encryption, Decryption, S-Box and KeyTransform tables\n *\n * @type {number[]}\n */\n var aes_sbox;\n\n /**\n * @type {number[]}\n */\n var aes_sinv;\n\n /**\n * @type {number[][]}\n */\n var aes_enc;\n\n /**\n * @type {number[][]}\n */\n var aes_dec;\n\n /**\n * Init AES tables\n */\n function aes_init() {\n if (!ginit_done) ginit();\n\n // Calculates AES S-Box value\n function _s(a) {\n var c, s, x;\n s = x = ginv(a);\n for (c = 0; c < 4; c++) {\n s = ((s << 1) | (s >>> 7)) & 255;\n x ^= s;\n }\n x ^= 99;\n return x;\n }\n\n // Tables\n aes_sbox = [],\n aes_sinv = [],\n aes_enc = [[], [], [], []],\n aes_dec = [[], [], [], []];\n\n for (var i = 0; i < 256; i++) {\n var s = _s(i);\n\n // S-Box and its inverse\n aes_sbox[i] = s;\n aes_sinv[s] = i;\n\n // Ecryption and Decryption tables\n aes_enc[0][i] = (gmul(2, s) << 24) | (s << 16) | (s << 8) | gmul(3, s);\n aes_dec[0][s] = (gmul(14, i) << 24) | (gmul(9, i) << 16) | (gmul(13, i) << 8) | gmul(11, i);\n // Rotate tables\n for (var t = 1; t < 4; t++) {\n aes_enc[t][i] = (aes_enc[t - 1][i] >>> 8) | (aes_enc[t - 1][i] << 24);\n aes_dec[t][s] = (aes_dec[t - 1][s] >>> 8) | (aes_dec[t - 1][s] << 24);\n }\n }\n\n aes_init_done = true;\n }\n\n /**\n * Asm.js module constructor.\n *\n *

\n * Heap buffer layout by offset:\n *

\n   * 0x0000   encryption key schedule\n   * 0x0400   decryption key schedule\n   * 0x0800   sbox\n   * 0x0c00   inv sbox\n   * 0x1000   encryption tables\n   * 0x2000   decryption tables\n   * 0x3000   reserved (future GCM multiplication lookup table)\n   * 0x4000   data\n   * 
\n * Don't touch anything before 0x400.\n *

\n *\n * @alias AES_asm\n * @class\n * @param foreign - ignored\n * @param buffer - heap buffer to link with\n * @type any\n */\n var wrapper = function (foreign, buffer) {\n // Init AES stuff for the first time\n if (!aes_init_done) aes_init();\n\n // Fill up AES tables\n var heap = new Uint32Array(buffer);\n heap.set(aes_sbox, 0x0800 >> 2);\n heap.set(aes_sinv, 0x0c00 >> 2);\n for (var i = 0; i < 4; i++) {\n heap.set(aes_enc[i], (0x1000 + 0x400 * i) >> 2);\n heap.set(aes_dec[i], (0x2000 + 0x400 * i) >> 2);\n }\n\n /**\n * Calculate AES key schedules.\n * @instance\n * @memberof AES_asm\n * @param {number} ks - key size, 4/6/8 (for 128/192/256-bit key correspondingly)\n * @param {number} k0 - key vector components\n * @param {number} k1 - key vector components\n * @param {number} k2 - key vector components\n * @param {number} k3 - key vector components\n * @param {number} k4 - key vector components\n * @param {number} k5 - key vector components\n * @param {number} k6 - key vector components\n * @param {number} k7 - key vector components\n */\n function set_key(ks, k0, k1, k2, k3, k4, k5, k6, k7) {\n var ekeys = heap.subarray(0x000, 60),\n dkeys = heap.subarray(0x100, 0x100 + 60);\n\n // Encryption key schedule\n ekeys.set([k0, k1, k2, k3, k4, k5, k6, k7]);\n for (var i = ks, rcon = 1; i < 4 * ks + 28; i++) {\n var k = ekeys[i - 1];\n if ((i % ks === 0) || (ks === 8 && i % ks === 4)) {\n k = aes_sbox[k >>> 24] << 24 ^ aes_sbox[k >>> 16 & 255] << 16 ^ aes_sbox[k >>> 8 & 255] << 8 ^ aes_sbox[k & 255];\n }\n if (i % ks === 0) {\n k = (k << 8) ^ (k >>> 24) ^ (rcon << 24);\n rcon = (rcon << 1) ^ ((rcon & 0x80) ? 0x1b : 0);\n }\n ekeys[i] = ekeys[i - ks] ^ k;\n }\n\n // Decryption key schedule\n for (var j = 0; j < i; j += 4) {\n for (var jj = 0; jj < 4; jj++) {\n var k = ekeys[i - (4 + j) + (4 - jj) % 4];\n if (j < 4 || j >= i - 4) {\n dkeys[j + jj] = k;\n } else {\n dkeys[j + jj] = aes_dec[0][aes_sbox[k >>> 24]]\n ^ aes_dec[1][aes_sbox[k >>> 16 & 255]]\n ^ aes_dec[2][aes_sbox[k >>> 8 & 255]]\n ^ aes_dec[3][aes_sbox[k & 255]];\n }\n }\n }\n\n // Set rounds number\n asm.set_rounds(ks + 5);\n }\n\n // create library object with necessary properties\n var stdlib = {Uint8Array: Uint8Array, Uint32Array: Uint32Array};\n\n var asm = function (stdlib, foreign, buffer) {\n \"use asm\";\n\n var S0 = 0, S1 = 0, S2 = 0, S3 = 0,\n I0 = 0, I1 = 0, I2 = 0, I3 = 0,\n N0 = 0, N1 = 0, N2 = 0, N3 = 0,\n M0 = 0, M1 = 0, M2 = 0, M3 = 0,\n H0 = 0, H1 = 0, H2 = 0, H3 = 0,\n R = 0;\n\n var HEAP = new stdlib.Uint32Array(buffer),\n DATA = new stdlib.Uint8Array(buffer);\n\n /**\n * AES core\n * @param {number} k - precomputed key schedule offset\n * @param {number} s - precomputed sbox table offset\n * @param {number} t - precomputed round table offset\n * @param {number} r - number of inner rounds to perform\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _core(k, s, t, r, x0, x1, x2, x3) {\n k = k | 0;\n s = s | 0;\n t = t | 0;\n r = r | 0;\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n var t1 = 0, t2 = 0, t3 = 0,\n y0 = 0, y1 = 0, y2 = 0, y3 = 0,\n i = 0;\n\n t1 = t | 0x400, t2 = t | 0x800, t3 = t | 0xc00;\n\n // round 0\n x0 = x0 ^ HEAP[(k | 0) >> 2],\n x1 = x1 ^ HEAP[(k | 4) >> 2],\n x2 = x2 ^ HEAP[(k | 8) >> 2],\n x3 = x3 ^ HEAP[(k | 12) >> 2];\n\n // round 1..r\n for (i = 16; (i | 0) <= (r << 4); i = (i + 16) | 0) {\n y0 = HEAP[(t | x0 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x1 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x2 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x3 << 2 & 1020) >> 2] ^ HEAP[(k | i | 0) >> 2],\n y1 = HEAP[(t | x1 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x2 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x3 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x0 << 2 & 1020) >> 2] ^ HEAP[(k | i | 4) >> 2],\n y2 = HEAP[(t | x2 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x3 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x0 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x1 << 2 & 1020) >> 2] ^ HEAP[(k | i | 8) >> 2],\n y3 = HEAP[(t | x3 >> 22 & 1020) >> 2] ^ HEAP[(t1 | x0 >> 14 & 1020) >> 2] ^ HEAP[(t2 | x1 >> 6 & 1020) >> 2] ^ HEAP[(t3 | x2 << 2 & 1020) >> 2] ^ HEAP[(k | i | 12) >> 2];\n x0 = y0, x1 = y1, x2 = y2, x3 = y3;\n }\n\n // final round\n S0 = HEAP[(s | x0 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x1 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x2 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x3 << 2 & 1020) >> 2] ^ HEAP[(k | i | 0) >> 2],\n S1 = HEAP[(s | x1 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x2 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x3 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x0 << 2 & 1020) >> 2] ^ HEAP[(k | i | 4) >> 2],\n S2 = HEAP[(s | x2 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x3 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x0 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x1 << 2 & 1020) >> 2] ^ HEAP[(k | i | 8) >> 2],\n S3 = HEAP[(s | x3 >> 22 & 1020) >> 2] << 24 ^ HEAP[(s | x0 >> 14 & 1020) >> 2] << 16 ^ HEAP[(s | x1 >> 6 & 1020) >> 2] << 8 ^ HEAP[(s | x2 << 2 & 1020) >> 2] ^ HEAP[(k | i | 12) >> 2];\n }\n\n /**\n * ECB mode encryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n // function _ecb_enc(x0, x1, x2, x3) {\n // x0 = x0 | 0;\n // x1 = x1 | 0;\n // x2 = x2 | 0;\n // x3 = x3 | 0;\n\n // _core(\n // 0x0000, 0x0800, 0x1000,\n // R,\n // x0,\n // x1,\n // x2,\n // x3\n // );\n // }\n\n /**\n * ECB mode decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n // function _ecb_dec(x0, x1, x2, x3) {\n // x0 = x0 | 0;\n // x1 = x1 | 0;\n // x2 = x2 | 0;\n // x3 = x3 | 0;\n\n // var t = 0;\n\n // _core(\n // 0x0400, 0x0c00, 0x2000,\n // R,\n // x0,\n // x3,\n // x2,\n // x1\n // );\n\n // t = S1, S1 = S3, S3 = t;\n // }\n\n\n /**\n * CBC mode encryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _cbc_enc(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n _core(\n 0x0000, 0x0800, 0x1000,\n R,\n I0 ^ x0,\n I1 ^ x1,\n I2 ^ x2,\n I3 ^ x3\n );\n\n I0 = S0,\n I1 = S1,\n I2 = S2,\n I3 = S3;\n }\n\n /**\n * CBC mode decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _cbc_dec(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n var t = 0;\n\n _core(\n 0x0400, 0x0c00, 0x2000,\n R,\n x0,\n x3,\n x2,\n x1\n );\n\n t = S1, S1 = S3, S3 = t;\n\n S0 = S0 ^ I0,\n S1 = S1 ^ I1,\n S2 = S2 ^ I2,\n S3 = S3 ^ I3;\n\n I0 = x0,\n I1 = x1,\n I2 = x2,\n I3 = x3;\n }\n\n /**\n * CFB mode encryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n // function _cfb_enc(x0, x1, x2, x3) {\n // x0 = x0 | 0;\n // x1 = x1 | 0;\n // x2 = x2 | 0;\n // x3 = x3 | 0;\n\n // _core(\n // 0x0000, 0x0800, 0x1000,\n // R,\n // I0,\n // I1,\n // I2,\n // I3\n // );\n\n // I0 = S0 = S0 ^ x0,\n // I1 = S1 = S1 ^ x1,\n // I2 = S2 = S2 ^ x2,\n // I3 = S3 = S3 ^ x3;\n // }\n\n\n /**\n * CFB mode decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n // function _cfb_dec(x0, x1, x2, x3) {\n // x0 = x0 | 0;\n // x1 = x1 | 0;\n // x2 = x2 | 0;\n // x3 = x3 | 0;\n\n // _core(\n // 0x0000, 0x0800, 0x1000,\n // R,\n // I0,\n // I1,\n // I2,\n // I3\n // );\n\n // S0 = S0 ^ x0,\n // S1 = S1 ^ x1,\n // S2 = S2 ^ x2,\n // S3 = S3 ^ x3;\n\n // I0 = x0,\n // I1 = x1,\n // I2 = x2,\n // I3 = x3;\n // }\n\n /**\n * OFB mode encryption / decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n // function _ofb(x0, x1, x2, x3) {\n // x0 = x0 | 0;\n // x1 = x1 | 0;\n // x2 = x2 | 0;\n // x3 = x3 | 0;\n\n // _core(\n // 0x0000, 0x0800, 0x1000,\n // R,\n // I0,\n // I1,\n // I2,\n // I3\n // );\n\n // I0 = S0,\n // I1 = S1,\n // I2 = S2,\n // I3 = S3;\n\n // S0 = S0 ^ x0,\n // S1 = S1 ^ x1,\n // S2 = S2 ^ x2,\n // S3 = S3 ^ x3;\n // }\n\n /**\n * CTR mode encryption / decryption\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n // function _ctr(x0, x1, x2, x3) {\n // x0 = x0 | 0;\n // x1 = x1 | 0;\n // x2 = x2 | 0;\n // x3 = x3 | 0;\n\n // _core(\n // 0x0000, 0x0800, 0x1000,\n // R,\n // N0,\n // N1,\n // N2,\n // N3\n // );\n\n // N3 = (~M3 & N3) | M3 & (N3 + 1);\n // N2 = (~M2 & N2) | M2 & (N2 + ((N3 | 0) == 0));\n // N1 = (~M1 & N1) | M1 & (N1 + ((N2 | 0) == 0));\n // N0 = (~M0 & N0) | M0 & (N0 + ((N1 | 0) == 0));\n\n // S0 = S0 ^ x0;\n // S1 = S1 ^ x1;\n // S2 = S2 ^ x2;\n // S3 = S3 ^ x3;\n // }\n\n /**\n * GCM mode MAC calculation\n * @param {number} x0 - 128-bit input block vector\n * @param {number} x1 - 128-bit input block vector\n * @param {number} x2 - 128-bit input block vector\n * @param {number} x3 - 128-bit input block vector\n */\n function _gcm_mac(x0, x1, x2, x3) {\n x0 = x0 | 0;\n x1 = x1 | 0;\n x2 = x2 | 0;\n x3 = x3 | 0;\n\n var y0 = 0, y1 = 0, y2 = 0, y3 = 0,\n z0 = 0, z1 = 0, z2 = 0, z3 = 0,\n i = 0, c = 0;\n\n x0 = x0 ^ I0,\n x1 = x1 ^ I1,\n x2 = x2 ^ I2,\n x3 = x3 ^ I3;\n\n y0 = H0 | 0,\n y1 = H1 | 0,\n y2 = H2 | 0,\n y3 = H3 | 0;\n\n for (; (i | 0) < 128; i = (i + 1) | 0) {\n if (y0 >>> 31) {\n z0 = z0 ^ x0,\n z1 = z1 ^ x1,\n z2 = z2 ^ x2,\n z3 = z3 ^ x3;\n }\n\n y0 = (y0 << 1) | (y1 >>> 31),\n y1 = (y1 << 1) | (y2 >>> 31),\n y2 = (y2 << 1) | (y3 >>> 31),\n y3 = (y3 << 1);\n\n c = x3 & 1;\n\n x3 = (x3 >>> 1) | (x2 << 31),\n x2 = (x2 >>> 1) | (x1 << 31),\n x1 = (x1 >>> 1) | (x0 << 31),\n x0 = (x0 >>> 1);\n\n if (c) x0 = x0 ^ 0xe1000000;\n }\n\n I0 = z0,\n I1 = z1,\n I2 = z2,\n I3 = z3;\n }\n\n /**\n * Set the internal rounds number.\n * @instance\n * @memberof AES_asm\n * @param {number} r - number if inner AES rounds\n */\n function set_rounds(r) {\n r = r | 0;\n R = r;\n }\n\n /**\n * Populate the internal state of the module.\n * @instance\n * @memberof AES_asm\n * @param {number} s0 - state vector\n * @param {number} s1 - state vector\n * @param {number} s2 - state vector\n * @param {number} s3 - state vector\n */\n function set_state(s0, s1, s2, s3) {\n s0 = s0 | 0;\n s1 = s1 | 0;\n s2 = s2 | 0;\n s3 = s3 | 0;\n\n S0 = s0,\n S1 = s1,\n S2 = s2,\n S3 = s3;\n }\n\n /**\n * Populate the internal iv of the module.\n * @instance\n * @memberof AES_asm\n * @param {number} i0 - iv vector\n * @param {number} i1 - iv vector\n * @param {number} i2 - iv vector\n * @param {number} i3 - iv vector\n */\n function set_iv(i0, i1, i2, i3) {\n i0 = i0 | 0;\n i1 = i1 | 0;\n i2 = i2 | 0;\n i3 = i3 | 0;\n\n I0 = i0,\n I1 = i1,\n I2 = i2,\n I3 = i3;\n }\n\n /**\n * Set nonce for CTR-family modes.\n * @instance\n * @memberof AES_asm\n * @param {number} n0 - nonce vector\n * @param {number} n1 - nonce vector\n * @param {number} n2 - nonce vector\n * @param {number} n3 - nonce vector\n */\n function set_nonce(n0, n1, n2, n3) {\n n0 = n0 | 0;\n n1 = n1 | 0;\n n2 = n2 | 0;\n n3 = n3 | 0;\n\n N0 = n0,\n N1 = n1,\n N2 = n2,\n N3 = n3;\n }\n\n /**\n * Set counter mask for CTR-family modes.\n * @instance\n * @memberof AES_asm\n * @param {number} m0 - counter mask vector\n * @param {number} m1 - counter mask vector\n * @param {number} m2 - counter mask vector\n * @param {number} m3 - counter mask vector\n */\n function set_mask(m0, m1, m2, m3) {\n m0 = m0 | 0;\n m1 = m1 | 0;\n m2 = m2 | 0;\n m3 = m3 | 0;\n\n M0 = m0,\n M1 = m1,\n M2 = m2,\n M3 = m3;\n }\n\n /**\n * Set counter for CTR-family modes.\n * @instance\n * @memberof AES_asm\n * @param {number} c0 - counter vector\n * @param {number} c1 - counter vector\n * @param {number} c2 - counter vector\n * @param {number} c3 - counter vector\n */\n function set_counter(c0, c1, c2, c3) {\n c0 = c0 | 0;\n c1 = c1 | 0;\n c2 = c2 | 0;\n c3 = c3 | 0;\n\n N3 = (~M3 & N3) | M3 & c3,\n N2 = (~M2 & N2) | M2 & c2,\n N1 = (~M1 & N1) | M1 & c1,\n N0 = (~M0 & N0) | M0 & c0;\n }\n\n /**\n * Store the internal state vector into the heap.\n * @instance\n * @memberof AES_asm\n * @param {number} pos - offset where to put the data\n * @return {number} The number of bytes have been written into the heap, always 16.\n */\n function get_state(pos) {\n pos = pos | 0;\n\n if (pos & 15) return -1;\n\n DATA[pos | 0] = S0 >>> 24,\n DATA[pos | 1] = S0 >>> 16 & 255,\n DATA[pos | 2] = S0 >>> 8 & 255,\n DATA[pos | 3] = S0 & 255,\n DATA[pos | 4] = S1 >>> 24,\n DATA[pos | 5] = S1 >>> 16 & 255,\n DATA[pos | 6] = S1 >>> 8 & 255,\n DATA[pos | 7] = S1 & 255,\n DATA[pos | 8] = S2 >>> 24,\n DATA[pos | 9] = S2 >>> 16 & 255,\n DATA[pos | 10] = S2 >>> 8 & 255,\n DATA[pos | 11] = S2 & 255,\n DATA[pos | 12] = S3 >>> 24,\n DATA[pos | 13] = S3 >>> 16 & 255,\n DATA[pos | 14] = S3 >>> 8 & 255,\n DATA[pos | 15] = S3 & 255;\n\n return 16;\n }\n\n /**\n * Store the internal iv vector into the heap.\n * @instance\n * @memberof AES_asm\n * @param {number} pos - offset where to put the data\n * @return {number} The number of bytes have been written into the heap, always 16.\n */\n function get_iv(pos) {\n pos = pos | 0;\n\n if (pos & 15) return -1;\n\n DATA[pos | 0] = I0 >>> 24,\n DATA[pos | 1] = I0 >>> 16 & 255,\n DATA[pos | 2] = I0 >>> 8 & 255,\n DATA[pos | 3] = I0 & 255,\n DATA[pos | 4] = I1 >>> 24,\n DATA[pos | 5] = I1 >>> 16 & 255,\n DATA[pos | 6] = I1 >>> 8 & 255,\n DATA[pos | 7] = I1 & 255,\n DATA[pos | 8] = I2 >>> 24,\n DATA[pos | 9] = I2 >>> 16 & 255,\n DATA[pos | 10] = I2 >>> 8 & 255,\n DATA[pos | 11] = I2 & 255,\n DATA[pos | 12] = I3 >>> 24,\n DATA[pos | 13] = I3 >>> 16 & 255,\n DATA[pos | 14] = I3 >>> 8 & 255,\n DATA[pos | 15] = I3 & 255;\n\n return 16;\n }\n\n /**\n * GCM initialization.\n * @instance\n * @memberof AES_asm\n */\n // function gcm_init() {\n // _ecb_enc(0, 0, 0, 0);\n // H0 = S0,\n // H1 = S1,\n // H2 = S2,\n // H3 = S3;\n // }\n\n /**\n * Perform ciphering operation on the supplied data.\n * @instance\n * @memberof AES_asm\n * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)\n * @param {number} pos - offset of the data being processed\n * @param {number} len - length of the data being processed\n * @return {number} Actual amount of data have been processed.\n */\n function cipher(mode, pos, len) {\n mode = mode | 0;\n pos = pos | 0;\n len = len | 0;\n\n var ret = 0;\n\n if (pos & 15) return -1;\n\n while ((len | 0) >= 16) {\n _cipher_modes[mode & 7](\n DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3],\n DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7],\n DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11],\n DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]\n );\n\n DATA[pos | 0] = S0 >>> 24,\n DATA[pos | 1] = S0 >>> 16 & 255,\n DATA[pos | 2] = S0 >>> 8 & 255,\n DATA[pos | 3] = S0 & 255,\n DATA[pos | 4] = S1 >>> 24,\n DATA[pos | 5] = S1 >>> 16 & 255,\n DATA[pos | 6] = S1 >>> 8 & 255,\n DATA[pos | 7] = S1 & 255,\n DATA[pos | 8] = S2 >>> 24,\n DATA[pos | 9] = S2 >>> 16 & 255,\n DATA[pos | 10] = S2 >>> 8 & 255,\n DATA[pos | 11] = S2 & 255,\n DATA[pos | 12] = S3 >>> 24,\n DATA[pos | 13] = S3 >>> 16 & 255,\n DATA[pos | 14] = S3 >>> 8 & 255,\n DATA[pos | 15] = S3 & 255;\n\n ret = (ret + 16) | 0,\n pos = (pos + 16) | 0,\n len = (len - 16) | 0;\n }\n\n return ret | 0;\n }\n\n /**\n * Calculates MAC of the supplied data.\n * @instance\n * @memberof AES_asm\n * @param {number} mode - block cipher mode (see {@link AES_asm} mode constants)\n * @param {number} pos - offset of the data being processed\n * @param {number} len - length of the data being processed\n * @return {number} Actual amount of data have been processed.\n */\n function mac(mode, pos, len) {\n mode = mode | 0;\n pos = pos | 0;\n len = len | 0;\n\n var ret = 0;\n\n if (pos & 15) return -1;\n\n while ((len | 0) >= 16) {\n _mac_modes[mode & 1](\n DATA[pos | 0] << 24 | DATA[pos | 1] << 16 | DATA[pos | 2] << 8 | DATA[pos | 3],\n DATA[pos | 4] << 24 | DATA[pos | 5] << 16 | DATA[pos | 6] << 8 | DATA[pos | 7],\n DATA[pos | 8] << 24 | DATA[pos | 9] << 16 | DATA[pos | 10] << 8 | DATA[pos | 11],\n DATA[pos | 12] << 24 | DATA[pos | 13] << 16 | DATA[pos | 14] << 8 | DATA[pos | 15]\n );\n\n ret = (ret + 16) | 0,\n pos = (pos + 16) | 0,\n len = (len - 16) | 0;\n }\n\n return ret | 0;\n }\n\n /**\n * AES cipher modes table (virual methods)\n */\n var _cipher_modes = [_cbc_enc, _cbc_enc, _cbc_enc, _cbc_dec, _cbc_dec, _cbc_dec, _cbc_dec, _cbc_dec];\n\n /**\n * AES MAC modes table (virual methods)\n */\n var _mac_modes = [_cbc_enc, _cbc_enc];\n\n /**\n * Asm.js module exports\n */\n return {\n set_rounds: set_rounds,\n set_state: set_state,\n set_iv: set_iv,\n set_nonce: set_nonce,\n set_mask: set_mask,\n set_counter: set_counter,\n get_state: get_state,\n get_iv: get_iv,\n // gcm_init: gcm_init,\n cipher: cipher,\n mac: mac,\n };\n }(stdlib, foreign, buffer);\n\n asm.set_key = set_key;\n\n return asm;\n };\n\n /**\n * AES enciphering mode constants\n * @enum {number}\n * @const\n */\n wrapper.ENC = {\n //ECB: 0,\n CBC: 2,\n //CFB: 4,\n //OFB: 6,\n // CTR: 7,\n },\n\n /**\n * AES deciphering mode constants\n * @enum {number}\n * @const\n */\n wrapper.DEC = {\n //ECB: 1,\n CBC: 3,\n //CFB: 5,\n //OFB: 6,\n // CTR: 7,\n },\n\n /**\n * AES MAC mode constants\n * @enum {number}\n * @const\n */\n wrapper.MAC = {\n CBC: 0,\n //GCM: 1,\n };\n\n /**\n * Heap data offset\n * @type {number}\n * @const\n */\n wrapper.HEAP_DATA = 0x4000;\n\n return wrapper;\n}();\n\nfunction _heap_init(heap, heapSize) {\n const size = heap ? heap.byteLength : heapSize || 65536;\n if (size & 0xfff || size <= 0)\n throw new Error('heap size must be a positive integer and a multiple of 4096');\n heap = heap || new Uint8Array(new ArrayBuffer(size));\n return heap;\n}\nfunction _heap_write(heap, hpos, data, dpos, dlen) {\n const hlen = heap.length - hpos;\n const wlen = hlen < dlen ? hlen : dlen;\n heap.set(data.subarray(dpos, dpos + wlen), hpos);\n return wlen;\n}\nfunction is_bytes(a) {\n return a instanceof Uint8Array;\n}\nfunction joinBytes(...arg) {\n const totalLength = arg.reduce((sum, curr) => sum + curr.length, 0);\n const ret = new Uint8Array(totalLength);\n let cursor = 0;\n for (let i = 0; i < arg.length; i++) {\n ret.set(arg[i], cursor);\n cursor += arg[i].length;\n }\n return ret;\n}\n\nclass AES {\n constructor(key, iv, padding = true, mode) {\n this.pos = 0;\n this.len = 0;\n this.mode = mode;\n // The AES \"worker\"\n this.heap = _heap_init().subarray(AES_asm.HEAP_DATA);\n this.asm = new AES_asm(null, this.heap.buffer);\n // The AES object state\n this.pos = 0;\n this.len = 0;\n // Key\n const keylen = key.length;\n if (keylen !== 16 && keylen !== 24 && keylen !== 32)\n throw new TypeError('illegal key size');\n const keyview = new DataView(key.buffer, key.byteOffset, key.byteLength);\n this.asm.set_key(keylen >> 2, keyview.getUint32(0), keyview.getUint32(4), keyview.getUint32(8), keyview.getUint32(12), keylen > 16 ? keyview.getUint32(16) : 0, keylen > 16 ? keyview.getUint32(20) : 0, keylen > 24 ? keyview.getUint32(24) : 0, keylen > 24 ? keyview.getUint32(28) : 0);\n // IV\n if (iv !== undefined) {\n if (iv.length !== 16)\n throw new TypeError('illegal iv size');\n const ivview = new DataView(iv.buffer, iv.byteOffset, iv.byteLength);\n this.asm.set_iv(ivview.getUint32(0), ivview.getUint32(4), ivview.getUint32(8), ivview.getUint32(12));\n }\n else {\n this.asm.set_iv(0, 0, 0, 0);\n }\n this.padding = padding;\n }\n AES_Encrypt_process(data) {\n if (!is_bytes(data))\n throw new TypeError(\"data isn't of expected type\");\n const asm = this.asm;\n const heap = this.heap;\n const amode = AES_asm.ENC[this.mode];\n const hpos = AES_asm.HEAP_DATA;\n let pos = this.pos;\n let len = this.len;\n let dpos = 0;\n let dlen = data.length || 0;\n let rpos = 0;\n const rlen = (len + dlen) & -16;\n let wlen = 0;\n const result = new Uint8Array(rlen);\n while (dlen > 0) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.cipher(amode, hpos + pos, len);\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n rpos += wlen;\n if (wlen < len) {\n pos += wlen;\n len -= wlen;\n }\n else {\n pos = 0;\n len = 0;\n }\n }\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_Encrypt_finish() {\n const asm = this.asm;\n const heap = this.heap;\n const amode = AES_asm.ENC[this.mode];\n const hpos = AES_asm.HEAP_DATA;\n const pos = this.pos;\n let len = this.len;\n const plen = 16 - (len % 16);\n let rlen = len;\n // if (this.hasOwnProperty('padding')) {\n if (this.padding) {\n for (let p = 0; p < plen; ++p) {\n heap[pos + len + p] = plen;\n }\n len += plen;\n rlen = len;\n }\n else if (len % 16) {\n throw new TypeError('data length must be a multiple of the block size');\n }\n // } else {\n // len += plen\n // }\n const result = new Uint8Array(rlen);\n if (len)\n asm.cipher(amode, hpos + pos, len);\n if (rlen)\n result.set(heap.subarray(pos, pos + rlen));\n this.pos = 0;\n this.len = 0;\n return result;\n }\n AES_Decrypt_process(data) {\n if (!is_bytes(data))\n throw new TypeError(\"data isn't of expected type\");\n const asm = this.asm;\n const heap = this.heap;\n const amode = AES_asm.DEC[this.mode];\n const hpos = AES_asm.HEAP_DATA;\n let pos = this.pos;\n let len = this.len;\n let dpos = 0;\n let dlen = data.length || 0;\n let rpos = 0;\n let rlen = (len + dlen) & -16;\n let plen = 0;\n let wlen = 0;\n if (this.padding) {\n plen = len + dlen - rlen || 16;\n rlen -= plen;\n }\n const result = new Uint8Array(rlen);\n while (dlen > 0) {\n wlen = _heap_write(heap, pos + len, data, dpos, dlen);\n len += wlen;\n dpos += wlen;\n dlen -= wlen;\n wlen = asm.cipher(amode, hpos + pos, len - (!dlen ? plen : 0));\n if (wlen)\n result.set(heap.subarray(pos, pos + wlen), rpos);\n rpos += wlen;\n if (wlen < len) {\n pos += wlen;\n len -= wlen;\n }\n else {\n pos = 0;\n len = 0;\n }\n }\n this.pos = pos;\n this.len = len;\n return result;\n }\n AES_Decrypt_finish() {\n const asm = this.asm;\n const heap = this.heap;\n const amode = AES_asm.DEC[this.mode];\n const hpos = AES_asm.HEAP_DATA;\n const pos = this.pos;\n const len = this.len;\n let rlen = len;\n if (len > 0) {\n if (len % 16) {\n // if (this.hasOwnProperty('padding')) {\n throw new Error('data length must be a multiple of the block size');\n // } else {\n // len += 16 - (len % 16)\n // }\n }\n asm.cipher(amode, hpos + pos, len);\n if ( /*this.hasOwnProperty('padding') &&*/this.padding) {\n const pad = heap[pos + rlen - 1];\n if (pad < 1 || pad > 16 || pad > rlen)\n throw new Error('bad padding');\n let pcheck = 0;\n for (let i = pad; i > 1; i--)\n pcheck |= pad ^ heap[pos + rlen - i];\n if (pcheck)\n throw new Error('bad padding');\n rlen -= pad;\n }\n }\n const result = new Uint8Array(rlen);\n if (rlen > 0) {\n result.set(heap.subarray(pos, pos + rlen));\n }\n this.pos = 0;\n this.len = 0;\n return result;\n }\n}\n\nclass AES_CBC {\n constructor(key, iv, padding = true, aes) {\n this.aes = aes ? aes : new AES(key, iv, padding, 'CBC');\n }\n static encrypt(data, key, padding = true, iv) {\n return new AES_CBC(key, iv, padding).encrypt(data);\n }\n static decrypt(data, key, padding = true, iv) {\n return new AES_CBC(key, iv, padding).decrypt(data);\n }\n encrypt(data) {\n const r1 = this.aes.AES_Encrypt_process(data);\n const r2 = this.aes.AES_Encrypt_finish();\n return joinBytes(r1, r2);\n }\n decrypt(data) {\n const r1 = this.aes.AES_Decrypt_process(data);\n const r2 = this.aes.AES_Decrypt_finish();\n return joinBytes(r1, r2);\n }\n}\n\nexport { AES, AES_CBC };\n//# sourceMappingURL=miniaes.m.js.map\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\";Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.proto=exports.google=exports.com=exports.Writer=exports.Reader=void 0;var $protobuf=_interopRequireWildcard(require(\"protobufjs/minimal.js\")),_long=_interopRequireDefault(require(\"long\")),$proto=_interopRequireWildcard(require(\"./proto.js\"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _getRequireWildcardCache(a){if(\"function\"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(_getRequireWildcardCache=function(a){return a?c:b})(a)}function _interopRequireWildcard(b,c){if(!c&&b&&b.__esModule)return b;if(null===b||\"object\"!=typeof b&&\"function\"!=typeof b)return{default:b};var d=_getRequireWildcardCache(c);if(d&&d.has(b))return d.get(b);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in b)if(\"default\"!=a&&Object.prototype.hasOwnProperty.call(b,a)){var g=f?Object.getOwnPropertyDescriptor(b,a):null;g&&(g.get||g.set)?Object.defineProperty(e,a,g):e[a]=b[a]}return e.default=b,d&&d.set(b,e),e}(()=>{var a=$protobuf.util;null==a.Long&&(console.log(`Patching Protobuf Long.js instance...`),a.Long=_long.default,null!=$protobuf.Reader._configure&&$protobuf.Reader._configure($protobuf.BufferReader))})();const Reader=$protobuf.Reader;exports.Reader=Reader;const Writer=$protobuf.Writer;exports.Writer=Writer;const proto=$proto.proto;exports.proto=proto;const com=$proto.com;exports.com=com;const google=$proto.google;exports.google=google;","\"use strict\";var $protobuf=_interopRequireWildcard(require(\"protobufjs/minimal\"));Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.proto=exports.google=exports.default=exports.com=void 0;function _getRequireWildcardCache(o){if(\"function\"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(_getRequireWildcardCache=function(o){return o?r:n})(o)}function _interopRequireWildcard(o,e){if(!e&&o&&o.__esModule)return o;if(null===o||\"object\"!=typeof o&&\"function\"!=typeof o)return{default:o};var r=_getRequireWildcardCache(e);if(r&&r.has(o))return r.get(o);var t={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var d in o)if(\"default\"!=d&&Object.prototype.hasOwnProperty.call(o,d)){var a=n?Object.getOwnPropertyDescriptor(o,d):null;a&&(a.get||a.set)?Object.defineProperty(t,d,a):t[d]=o[d]}return t.default=o,r&&r.set(o,t),t}const $Reader=$protobuf.Reader,$Writer=$protobuf.Writer,$util=$protobuf.util,$root=$protobuf.roots.hashgraph||($protobuf.roots.hashgraph={});exports.default=$root;const com=$root.com=(()=>{const e={hedera:function(){const e={mirror:function(){const e={api:function(){const e={proto:function(){const e={ConsensusTopicQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.topicID=$root.proto.TopicID.decode(e,e.uint32());break}case 2:{d.consensusStartTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 3:{d.consensusEndTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 4:{d.limit=e.uint64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/com.hedera.mirror.api.proto.ConsensusTopicQuery\"},e}(),ConsensusTopicResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.consensusTimestamp=$root.proto.Timestamp.decode(e,e.uint32());break}case 2:{d.message=e.bytes();break}case 3:{d.runningHash=e.bytes();break}case 4:{d.sequenceNumber=e.uint64();break}case 5:{d.runningHashVersion=e.uint64();break}case 6:{d.chunkInfo=$root.proto.ConsensusMessageChunkInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/com.hedera.mirror.api.proto.ConsensusTopicResponse\"},e}(),ConsensusService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.subscribeTopic=function t(e,o){return this.rpcCall(t,$root.com.hedera.mirror.api.proto.ConsensusTopicQuery,$root.com.hedera.mirror.api.proto.ConsensusTopicResponse,e,o)},\"name\",{value:\"subscribeTopic\"}),e}(),AddressBookQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileId=$root.proto.FileID.decode(e,e.uint32());break}case 2:{d.limit=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/com.hedera.mirror.api.proto.AddressBookQuery\"},e}(),NetworkService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.getNodes=function t(e,o){return this.rpcCall(t,$root.com.hedera.mirror.api.proto.AddressBookQuery,$root.proto.NodeAddress,e,o)},\"name\",{value:\"getNodes\"}),e}()};return e}()};return e}()};return e}(),hapi:function(){const e={node:function(){const e={addressbook:function(){const e={NodeCreateTransactionBody:function(){function e(e){if(this.gossipEndpoint=[],this.serviceEndpoint=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountId=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.description=e.string();break}case 3:{d.gossipEndpoint&&d.gossipEndpoint.length||(d.gossipEndpoint=[]),d.gossipEndpoint.push($root.proto.ServiceEndpoint.decode(e,e.uint32()));break}case 4:{d.serviceEndpoint&&d.serviceEndpoint.length||(d.serviceEndpoint=[]),d.serviceEndpoint.push($root.proto.ServiceEndpoint.decode(e,e.uint32()));break}case 5:{d.gossipCaCertificate=e.bytes();break}case 6:{d.grpcCertificateHash=e.bytes();break}case 7:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/com.hedera.hapi.node.addressbook.NodeCreateTransactionBody\"},e}(),NodeUpdateTransactionBody:function(){function e(e){if(this.gossipEndpoint=[],this.serviceEndpoint=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nodeId=e.uint64();break}case 2:{d.accountId=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.description=$root.google.protobuf.StringValue.decode(e,e.uint32());break}case 4:{d.gossipEndpoint&&d.gossipEndpoint.length||(d.gossipEndpoint=[]),d.gossipEndpoint.push($root.proto.ServiceEndpoint.decode(e,e.uint32()));break}case 5:{d.serviceEndpoint&&d.serviceEndpoint.length||(d.serviceEndpoint=[]),d.serviceEndpoint.push($root.proto.ServiceEndpoint.decode(e,e.uint32()));break}case 6:{d.gossipCaCertificate=$root.google.protobuf.BytesValue.decode(e,e.uint32());break}case 7:{d.grpcCertificateHash=$root.google.protobuf.BytesValue.decode(e,e.uint32());break}case 8:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/com.hedera.hapi.node.addressbook.NodeUpdateTransactionBody\"},e}(),NodeDeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nodeId=e.uint64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/com.hedera.hapi.node.addressbook.NodeDeleteTransactionBody\"},e}()};return e}()};return e}()};return e}()};return e}()};return e})();exports.com=com;const proto=$root.proto=(()=>{const e={TransactionList:function(){function e(e){if(this.transactionList=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transactionList&&d.transactionList.length||(d.transactionList=[]),d.transactionList.push($root.proto.Transaction.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionList\"},e}(),AddressBookService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.createNode=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"createNode\"}),Object.defineProperty(e.prototype.deleteNode=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteNode\"}),Object.defineProperty(e.prototype.updateNode=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateNode\"}),e}(),Query:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.getByKey=$root.proto.GetByKeyQuery.decode(e,e.uint32());break}case 2:{d.getBySolidityID=$root.proto.GetBySolidityIDQuery.decode(e,e.uint32());break}case 3:{d.contractCallLocal=$root.proto.ContractCallLocalQuery.decode(e,e.uint32());break}case 4:{d.contractGetInfo=$root.proto.ContractGetInfoQuery.decode(e,e.uint32());break}case 5:{d.contractGetBytecode=$root.proto.ContractGetBytecodeQuery.decode(e,e.uint32());break}case 6:{d.ContractGetRecords=$root.proto.ContractGetRecordsQuery.decode(e,e.uint32());break}case 7:{d.cryptogetAccountBalance=$root.proto.CryptoGetAccountBalanceQuery.decode(e,e.uint32());break}case 8:{d.cryptoGetAccountRecords=$root.proto.CryptoGetAccountRecordsQuery.decode(e,e.uint32());break}case 9:{d.cryptoGetInfo=$root.proto.CryptoGetInfoQuery.decode(e,e.uint32());break}case 10:{d.cryptoGetLiveHash=$root.proto.CryptoGetLiveHashQuery.decode(e,e.uint32());break}case 11:{d.cryptoGetProxyStakers=$root.proto.CryptoGetStakersQuery.decode(e,e.uint32());break}case 12:{d.fileGetContents=$root.proto.FileGetContentsQuery.decode(e,e.uint32());break}case 13:{d.fileGetInfo=$root.proto.FileGetInfoQuery.decode(e,e.uint32());break}case 14:{d.transactionGetReceipt=$root.proto.TransactionGetReceiptQuery.decode(e,e.uint32());break}case 15:{d.transactionGetRecord=$root.proto.TransactionGetRecordQuery.decode(e,e.uint32());break}case 16:{d.transactionGetFastRecord=$root.proto.TransactionGetFastRecordQuery.decode(e,e.uint32());break}case 50:{d.consensusGetTopicInfo=$root.proto.ConsensusGetTopicInfoQuery.decode(e,e.uint32());break}case 51:{d.networkGetVersionInfo=$root.proto.NetworkGetVersionInfoQuery.decode(e,e.uint32());break}case 52:{d.tokenGetInfo=$root.proto.TokenGetInfoQuery.decode(e,e.uint32());break}case 53:{d.scheduleGetInfo=$root.proto.ScheduleGetInfoQuery.decode(e,e.uint32());break}case 54:{d.tokenGetAccountNftInfos=$root.proto.TokenGetAccountNftInfosQuery.decode(e,e.uint32());break}case 55:{d.tokenGetNftInfo=$root.proto.TokenGetNftInfoQuery.decode(e,e.uint32());break}case 56:{d.tokenGetNftInfos=$root.proto.TokenGetNftInfosQuery.decode(e,e.uint32());break}case 57:{d.networkGetExecutionTime=$root.proto.NetworkGetExecutionTimeQuery.decode(e,e.uint32());break}case 58:{d.accountDetails=$root.proto.GetAccountDetailsQuery.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Query\"},e}(),GetByKeyQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.key=$root.proto.Key.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GetByKeyQuery\"},e}(),EntityID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.liveHash=$root.proto.LiveHash.decode(e,e.uint32());break}case 3:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 4:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.EntityID\"},e}(),GetByKeyResponse:function(){function e(e){if(this.entities=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.entities&&d.entities.length||(d.entities=[]),d.entities.push($root.proto.EntityID.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GetByKeyResponse\"},e}(),ShardID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ShardID\"},e}(),RealmID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}case 2:{d.realmNum=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.RealmID\"},e}(),AccountID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}case 2:{d.realmNum=e.int64();break}case 3:{d.accountNum=e.int64();break}case 4:{d.alias=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.AccountID\"},e}(),NftID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token_ID=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.serialNumber=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NftID\"},e}(),FileID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}case 2:{d.realmNum=e.int64();break}case 3:{d.fileNum=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileID\"},e}(),ContractID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}case 2:{d.realmNum=e.int64();break}case 3:{d.contractNum=e.int64();break}case 4:{d.evmAddress=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractID\"},e}(),TransactionID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transactionValidStart=$root.proto.Timestamp.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.scheduled=e.bool();break}case 4:{d.nonce=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionID\"},e}(),AccountAmount:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.amount=e.sint64();break}case 3:{d.isApproval=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.AccountAmount\"},e}(),TransferList:function(){function e(e){if(this.accountAmounts=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountAmounts&&d.accountAmounts.length||(d.accountAmounts=[]),d.accountAmounts.push($root.proto.AccountAmount.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransferList\"},e}(),NftTransfer:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.senderAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.receiverAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.serialNumber=e.int64();break}case 4:{d.isApproval=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NftTransfer\"},e}(),TokenTransferList:function(){function e(e){if(this.transfers=[],this.nftTransfers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.transfers&&d.transfers.length||(d.transfers=[]),d.transfers.push($root.proto.AccountAmount.decode(e,e.uint32()));break}case 3:{d.nftTransfers&&d.nftTransfers.length||(d.nftTransfers=[]),d.nftTransfers.push($root.proto.NftTransfer.decode(e,e.uint32()));break}case 4:{d.expectedDecimals=$root.google.protobuf.UInt32Value.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenTransferList\"},e}(),Fraction:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.numerator=e.int64();break}case 2:{d.denominator=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Fraction\"},e}(),TopicID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}case 2:{d.realmNum=e.int64();break}case 3:{d.topicNum=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TopicID\"},e}(),TokenID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}case 2:{d.realmNum=e.int64();break}case 3:{d.tokenNum=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenID\"},e}(),ScheduleID:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.shardNum=e.int64();break}case 2:{d.realmNum=e.int64();break}case 3:{d.scheduleNum=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ScheduleID\"},e}(),TokenType:function(){const e={},o=Object.create(e);return o[e[0]=\"FUNGIBLE_COMMON\"]=0,o[e[1]=\"NON_FUNGIBLE_UNIQUE\"]=1,o}(),SubType:function(){const e={},o=Object.create(e);return o[e[0]=\"DEFAULT\"]=0,o[e[1]=\"TOKEN_FUNGIBLE_COMMON\"]=1,o[e[2]=\"TOKEN_NON_FUNGIBLE_UNIQUE\"]=2,o[e[3]=\"TOKEN_FUNGIBLE_COMMON_WITH_CUSTOM_FEES\"]=3,o[e[4]=\"TOKEN_NON_FUNGIBLE_UNIQUE_WITH_CUSTOM_FEES\"]=4,o[e[5]=\"SCHEDULE_CREATE_CONTRACT_CALL\"]=5,o}(),TokenSupplyType:function(){const e={},o=Object.create(e);return o[e[0]=\"INFINITE\"]=0,o[e[1]=\"FINITE\"]=1,o}(),TokenKeyValidation:function(){const e={},o=Object.create(e);return o[e[0]=\"FULL_VALIDATION\"]=0,o[e[1]=\"NO_VALIDATION\"]=1,o}(),TokenFreezeStatus:function(){const e={},o=Object.create(e);return o[e[0]=\"FreezeNotApplicable\"]=0,o[e[1]=\"Frozen\"]=1,o[e[2]=\"Unfrozen\"]=2,o}(),TokenKycStatus:function(){const e={},o=Object.create(e);return o[e[0]=\"KycNotApplicable\"]=0,o[e[1]=\"Granted\"]=1,o[e[2]=\"Revoked\"]=2,o}(),TokenPauseStatus:function(){const e={},o=Object.create(e);return o[e[0]=\"PauseNotApplicable\"]=0,o[e[1]=\"Paused\"]=1,o[e[2]=\"Unpaused\"]=2,o}(),Key:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.ed25519=e.bytes();break}case 3:{d.RSA_3072=e.bytes();break}case 4:{d.ECDSA_384=e.bytes();break}case 5:{d.thresholdKey=$root.proto.ThresholdKey.decode(e,e.uint32());break}case 6:{d.keyList=$root.proto.KeyList.decode(e,e.uint32());break}case 7:{d.ECDSASecp256k1=e.bytes();break}case 8:{d.delegatableContractId=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Key\"},e}(),ThresholdKey:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.threshold=e.uint32();break}case 2:{d.keys=$root.proto.KeyList.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ThresholdKey\"},e}(),KeyList:function(){function e(e){if(this.keys=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.keys&&d.keys.length||(d.keys=[]),d.keys.push($root.proto.Key.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.KeyList\"},e}(),Signature:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contract=e.bytes();break}case 2:{d.ed25519=e.bytes();break}case 3:{d.RSA_3072=e.bytes();break}case 4:{d.ECDSA_384=e.bytes();break}case 5:{d.thresholdSignature=$root.proto.ThresholdSignature.decode(e,e.uint32());break}case 6:{d.signatureList=$root.proto.SignatureList.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Signature\"},e}(),ThresholdSignature:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 2:{d.sigs=$root.proto.SignatureList.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ThresholdSignature\"},e}(),SignatureList:function(){function e(e){if(this.sigs=[],e)for(var o=Object.keys(e),t=0;t>>3){case 2:{d.sigs&&d.sigs.length||(d.sigs=[]),d.sigs.push($root.proto.Signature.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SignatureList\"},e}(),SignaturePair:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.pubKeyPrefix=e.bytes();break}case 2:{d.contract=e.bytes();break}case 3:{d.ed25519=e.bytes();break}case 4:{d.RSA_3072=e.bytes();break}case 5:{d.ECDSA_384=e.bytes();break}case 6:{d.ECDSASecp256k1=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SignaturePair\"},e}(),SignatureMap:function(){function e(e){if(this.sigPair=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.sigPair&&d.sigPair.length||(d.sigPair=[]),d.sigPair.push($root.proto.SignaturePair.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SignatureMap\"},e}(),HederaFunctionality:function(){const e={},o=Object.create(e);return o[e[0]=\"NONE\"]=0,o[e[1]=\"CryptoTransfer\"]=1,o[e[2]=\"CryptoUpdate\"]=2,o[e[3]=\"CryptoDelete\"]=3,o[e[4]=\"CryptoAddLiveHash\"]=4,o[e[5]=\"CryptoDeleteLiveHash\"]=5,o[e[6]=\"ContractCall\"]=6,o[e[7]=\"ContractCreate\"]=7,o[e[8]=\"ContractUpdate\"]=8,o[e[9]=\"FileCreate\"]=9,o[e[10]=\"FileAppend\"]=10,o[e[11]=\"FileUpdate\"]=11,o[e[12]=\"FileDelete\"]=12,o[e[13]=\"CryptoGetAccountBalance\"]=13,o[e[14]=\"CryptoGetAccountRecords\"]=14,o[e[15]=\"CryptoGetInfo\"]=15,o[e[16]=\"ContractCallLocal\"]=16,o[e[17]=\"ContractGetInfo\"]=17,o[e[18]=\"ContractGetBytecode\"]=18,o[e[19]=\"GetBySolidityID\"]=19,o[e[20]=\"GetByKey\"]=20,o[e[21]=\"CryptoGetLiveHash\"]=21,o[e[22]=\"CryptoGetStakers\"]=22,o[e[23]=\"FileGetContents\"]=23,o[e[24]=\"FileGetInfo\"]=24,o[e[25]=\"TransactionGetRecord\"]=25,o[e[26]=\"ContractGetRecords\"]=26,o[e[27]=\"CryptoCreate\"]=27,o[e[28]=\"SystemDelete\"]=28,o[e[29]=\"SystemUndelete\"]=29,o[e[30]=\"ContractDelete\"]=30,o[e[31]=\"Freeze\"]=31,o[e[32]=\"CreateTransactionRecord\"]=32,o[e[33]=\"CryptoAccountAutoRenew\"]=33,o[e[34]=\"ContractAutoRenew\"]=34,o[e[35]=\"GetVersionInfo\"]=35,o[e[36]=\"TransactionGetReceipt\"]=36,o[e[50]=\"ConsensusCreateTopic\"]=50,o[e[51]=\"ConsensusUpdateTopic\"]=51,o[e[52]=\"ConsensusDeleteTopic\"]=52,o[e[53]=\"ConsensusGetTopicInfo\"]=53,o[e[54]=\"ConsensusSubmitMessage\"]=54,o[e[55]=\"UncheckedSubmit\"]=55,o[e[56]=\"TokenCreate\"]=56,o[e[58]=\"TokenGetInfo\"]=58,o[e[59]=\"TokenFreezeAccount\"]=59,o[e[60]=\"TokenUnfreezeAccount\"]=60,o[e[61]=\"TokenGrantKycToAccount\"]=61,o[e[62]=\"TokenRevokeKycFromAccount\"]=62,o[e[63]=\"TokenDelete\"]=63,o[e[64]=\"TokenUpdate\"]=64,o[e[65]=\"TokenMint\"]=65,o[e[66]=\"TokenBurn\"]=66,o[e[67]=\"TokenAccountWipe\"]=67,o[e[68]=\"TokenAssociateToAccount\"]=68,o[e[69]=\"TokenDissociateFromAccount\"]=69,o[e[70]=\"ScheduleCreate\"]=70,o[e[71]=\"ScheduleDelete\"]=71,o[e[72]=\"ScheduleSign\"]=72,o[e[73]=\"ScheduleGetInfo\"]=73,o[e[74]=\"TokenGetAccountNftInfos\"]=74,o[e[75]=\"TokenGetNftInfo\"]=75,o[e[76]=\"TokenGetNftInfos\"]=76,o[e[77]=\"TokenFeeScheduleUpdate\"]=77,o[e[78]=\"NetworkGetExecutionTime\"]=78,o[e[79]=\"TokenPause\"]=79,o[e[80]=\"TokenUnpause\"]=80,o[e[81]=\"CryptoApproveAllowance\"]=81,o[e[82]=\"CryptoDeleteAllowance\"]=82,o[e[83]=\"GetAccountDetails\"]=83,o[e[84]=\"EthereumTransaction\"]=84,o[e[85]=\"NodeStakeUpdate\"]=85,o[e[86]=\"UtilPrng\"]=86,o[e[87]=\"TransactionGetFastRecord\"]=87,o[e[88]=\"TokenUpdateNfts\"]=88,o[e[89]=\"NodeCreate\"]=89,o[e[90]=\"NodeUpdate\"]=90,o[e[91]=\"NodeDelete\"]=91,o[e[92]=\"TokenReject\"]=92,o[e[93]=\"TokenAirdrop\"]=93,o[e[94]=\"TokenCancelAirdrop\"]=94,o[e[95]=\"TokenClaimAirdrop\"]=95,o}(),FeeComponents:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.min=e.int64();break}case 2:{d.max=e.int64();break}case 3:{d.constant=e.int64();break}case 4:{d.bpt=e.int64();break}case 5:{d.vpt=e.int64();break}case 6:{d.rbh=e.int64();break}case 7:{d.sbh=e.int64();break}case 8:{d.gas=e.int64();break}case 9:{d.tv=e.int64();break}case 10:{d.bpr=e.int64();break}case 11:{d.sbpr=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FeeComponents\"},e}(),TransactionFeeSchedule:function(){function e(e){if(this.fees=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.hederaFunctionality=e.int32();break}case 2:{d.feeData=$root.proto.FeeData.decode(e,e.uint32());break}case 3:{d.fees&&d.fees.length||(d.fees=[]),d.fees.push($root.proto.FeeData.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionFeeSchedule\"},e}(),FeeData:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nodedata=$root.proto.FeeComponents.decode(e,e.uint32());break}case 2:{d.networkdata=$root.proto.FeeComponents.decode(e,e.uint32());break}case 3:{d.servicedata=$root.proto.FeeComponents.decode(e,e.uint32());break}case 4:{d.subType=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FeeData\"},e}(),FeeSchedule:function(){function e(e){if(this.transactionFeeSchedule=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transactionFeeSchedule&&d.transactionFeeSchedule.length||(d.transactionFeeSchedule=[]),d.transactionFeeSchedule.push($root.proto.TransactionFeeSchedule.decode(e,e.uint32()));break}case 2:{d.expiryTime=$root.proto.TimestampSeconds.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FeeSchedule\"},e}(),CurrentAndNextFeeSchedule:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.currentFeeSchedule=$root.proto.FeeSchedule.decode(e,e.uint32());break}case 2:{d.nextFeeSchedule=$root.proto.FeeSchedule.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CurrentAndNextFeeSchedule\"},e}(),ServiceEndpoint:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.ipAddressV4=e.bytes();break}case 2:{d.port=e.int32();break}case 3:{d.domainName=e.string();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ServiceEndpoint\"},e}(),NodeAddress:function(){function e(e){if(this.serviceEndpoint=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.ipAddress=e.bytes();break}case 2:{d.portno=e.int32();break}case 3:{d.memo=e.bytes();break}case 4:{d.RSA_PubKey=e.string();break}case 5:{d.nodeId=e.int64();break}case 6:{d.nodeAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 7:{d.nodeCertHash=e.bytes();break}case 8:{d.serviceEndpoint&&d.serviceEndpoint.length||(d.serviceEndpoint=[]),d.serviceEndpoint.push($root.proto.ServiceEndpoint.decode(e,e.uint32()));break}case 9:{d.description=e.string();break}case 10:{d.stake=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NodeAddress\"},e}(),NodeAddressBook:function(){function e(e){if(this.nodeAddress=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nodeAddress&&d.nodeAddress.length||(d.nodeAddress=[]),d.nodeAddress.push($root.proto.NodeAddress.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NodeAddressBook\"},e}(),SemanticVersion:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.major=e.int32();break}case 2:{d.minor=e.int32();break}case 3:{d.patch=e.int32();break}case 4:{d.pre=e.string();break}case 5:{d.build=e.string();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SemanticVersion\"},e}(),Setting:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.name=e.string();break}case 2:{d.value=e.string();break}case 3:{d.data=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Setting\"},e}(),ServicesConfigurationList:function(){function e(e){if(this.nameValue=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nameValue&&d.nameValue.length||(d.nameValue=[]),d.nameValue.push($root.proto.Setting.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ServicesConfigurationList\"},e}(),TokenRelationship:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.symbol=e.string();break}case 3:{d.balance=e.uint64();break}case 4:{d.kycStatus=e.int32();break}case 5:{d.freezeStatus=e.int32();break}case 6:{d.decimals=e.uint32();break}case 7:{d.automaticAssociation=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenRelationship\"},e}(),TokenBalance:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.balance=e.uint64();break}case 3:{d.decimals=e.uint32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenBalance\"},e}(),TokenBalances:function(){function e(e){if(this.tokenBalances=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenBalances&&d.tokenBalances.length||(d.tokenBalances=[]),d.tokenBalances.push($root.proto.TokenBalance.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenBalances\"},e}(),TokenAssociation:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.accountId=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenAssociation\"},e}(),StakingInfo:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.declineReward=e.bool();break}case 2:{d.stakePeriodStart=$root.proto.Timestamp.decode(e,e.uint32());break}case 3:{d.pendingReward=e.int64();break}case 4:{d.stakedToMe=e.int64();break}case 5:{d.stakedAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 6:{d.stakedNodeId=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.StakingInfo\"},e}(),PendingAirdropId:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.senderId=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.receiverId=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.fungibleTokenType=$root.proto.TokenID.decode(e,e.uint32());break}case 4:{d.nonFungibleToken=$root.proto.NftID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.PendingAirdropId\"},e}(),PendingAirdropValue:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.amount=e.uint64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.PendingAirdropValue\"},e}(),Timestamp:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.seconds=e.int64();break}case 2:{d.nanos=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Timestamp\"},e}(),TimestampSeconds:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.seconds=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TimestampSeconds\"},e}(),ResponseType:function(){const e={},o=Object.create(e);return o[e[0]=\"ANSWER_ONLY\"]=0,o[e[1]=\"ANSWER_STATE_PROOF\"]=1,o[e[2]=\"COST_ANSWER\"]=2,o[e[3]=\"COST_ANSWER_STATE_PROOF\"]=3,o}(),QueryHeader:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.payment=$root.proto.Transaction.decode(e,e.uint32());break}case 2:{d.responseType=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.QueryHeader\"},e}(),Transaction:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.body=$root.proto.TransactionBody.decode(e,e.uint32());break}case 2:{d.sigs=$root.proto.SignatureList.decode(e,e.uint32());break}case 3:{d.sigMap=$root.proto.SignatureMap.decode(e,e.uint32());break}case 4:{d.bodyBytes=e.bytes();break}case 5:{d.signedTransactionBytes=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Transaction\"},e}(),TransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transactionID=$root.proto.TransactionID.decode(e,e.uint32());break}case 2:{d.nodeAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.transactionFee=e.uint64();break}case 4:{d.transactionValidDuration=$root.proto.Duration.decode(e,e.uint32());break}case 5:{d.generateRecord=e.bool();break}case 6:{d.memo=e.string();break}case 7:{d.contractCall=$root.proto.ContractCallTransactionBody.decode(e,e.uint32());break}case 8:{d.contractCreateInstance=$root.proto.ContractCreateTransactionBody.decode(e,e.uint32());break}case 9:{d.contractUpdateInstance=$root.proto.ContractUpdateTransactionBody.decode(e,e.uint32());break}case 10:{d.cryptoAddLiveHash=$root.proto.CryptoAddLiveHashTransactionBody.decode(e,e.uint32());break}case 11:{d.cryptoCreateAccount=$root.proto.CryptoCreateTransactionBody.decode(e,e.uint32());break}case 12:{d.cryptoDelete=$root.proto.CryptoDeleteTransactionBody.decode(e,e.uint32());break}case 13:{d.cryptoDeleteLiveHash=$root.proto.CryptoDeleteLiveHashTransactionBody.decode(e,e.uint32());break}case 14:{d.cryptoTransfer=$root.proto.CryptoTransferTransactionBody.decode(e,e.uint32());break}case 15:{d.cryptoUpdateAccount=$root.proto.CryptoUpdateTransactionBody.decode(e,e.uint32());break}case 16:{d.fileAppend=$root.proto.FileAppendTransactionBody.decode(e,e.uint32());break}case 17:{d.fileCreate=$root.proto.FileCreateTransactionBody.decode(e,e.uint32());break}case 18:{d.fileDelete=$root.proto.FileDeleteTransactionBody.decode(e,e.uint32());break}case 19:{d.fileUpdate=$root.proto.FileUpdateTransactionBody.decode(e,e.uint32());break}case 20:{d.systemDelete=$root.proto.SystemDeleteTransactionBody.decode(e,e.uint32());break}case 21:{d.systemUndelete=$root.proto.SystemUndeleteTransactionBody.decode(e,e.uint32());break}case 22:{d.contractDeleteInstance=$root.proto.ContractDeleteTransactionBody.decode(e,e.uint32());break}case 23:{d.freeze=$root.proto.FreezeTransactionBody.decode(e,e.uint32());break}case 24:{d.consensusCreateTopic=$root.proto.ConsensusCreateTopicTransactionBody.decode(e,e.uint32());break}case 25:{d.consensusUpdateTopic=$root.proto.ConsensusUpdateTopicTransactionBody.decode(e,e.uint32());break}case 26:{d.consensusDeleteTopic=$root.proto.ConsensusDeleteTopicTransactionBody.decode(e,e.uint32());break}case 27:{d.consensusSubmitMessage=$root.proto.ConsensusSubmitMessageTransactionBody.decode(e,e.uint32());break}case 28:{d.uncheckedSubmit=$root.proto.UncheckedSubmitBody.decode(e,e.uint32());break}case 29:{d.tokenCreation=$root.proto.TokenCreateTransactionBody.decode(e,e.uint32());break}case 31:{d.tokenFreeze=$root.proto.TokenFreezeAccountTransactionBody.decode(e,e.uint32());break}case 32:{d.tokenUnfreeze=$root.proto.TokenUnfreezeAccountTransactionBody.decode(e,e.uint32());break}case 33:{d.tokenGrantKyc=$root.proto.TokenGrantKycTransactionBody.decode(e,e.uint32());break}case 34:{d.tokenRevokeKyc=$root.proto.TokenRevokeKycTransactionBody.decode(e,e.uint32());break}case 35:{d.tokenDeletion=$root.proto.TokenDeleteTransactionBody.decode(e,e.uint32());break}case 36:{d.tokenUpdate=$root.proto.TokenUpdateTransactionBody.decode(e,e.uint32());break}case 37:{d.tokenMint=$root.proto.TokenMintTransactionBody.decode(e,e.uint32());break}case 38:{d.tokenBurn=$root.proto.TokenBurnTransactionBody.decode(e,e.uint32());break}case 39:{d.tokenWipe=$root.proto.TokenWipeAccountTransactionBody.decode(e,e.uint32());break}case 40:{d.tokenAssociate=$root.proto.TokenAssociateTransactionBody.decode(e,e.uint32());break}case 41:{d.tokenDissociate=$root.proto.TokenDissociateTransactionBody.decode(e,e.uint32());break}case 42:{d.scheduleCreate=$root.proto.ScheduleCreateTransactionBody.decode(e,e.uint32());break}case 43:{d.scheduleDelete=$root.proto.ScheduleDeleteTransactionBody.decode(e,e.uint32());break}case 44:{d.scheduleSign=$root.proto.ScheduleSignTransactionBody.decode(e,e.uint32());break}case 45:{d.tokenFeeScheduleUpdate=$root.proto.TokenFeeScheduleUpdateTransactionBody.decode(e,e.uint32());break}case 46:{d.tokenPause=$root.proto.TokenPauseTransactionBody.decode(e,e.uint32());break}case 47:{d.tokenUnpause=$root.proto.TokenUnpauseTransactionBody.decode(e,e.uint32());break}case 48:{d.cryptoApproveAllowance=$root.proto.CryptoApproveAllowanceTransactionBody.decode(e,e.uint32());break}case 49:{d.cryptoDeleteAllowance=$root.proto.CryptoDeleteAllowanceTransactionBody.decode(e,e.uint32());break}case 50:{d.ethereumTransaction=$root.proto.EthereumTransactionBody.decode(e,e.uint32());break}case 51:{d.nodeStakeUpdate=$root.proto.NodeStakeUpdateTransactionBody.decode(e,e.uint32());break}case 52:{d.utilPrng=$root.proto.UtilPrngTransactionBody.decode(e,e.uint32());break}case 53:{d.tokenUpdateNfts=$root.proto.TokenUpdateNftsTransactionBody.decode(e,e.uint32());break}case 54:{d.nodeCreate=$root.com.hedera.hapi.node.addressbook.NodeCreateTransactionBody.decode(e,e.uint32());break}case 55:{d.nodeUpdate=$root.com.hedera.hapi.node.addressbook.NodeUpdateTransactionBody.decode(e,e.uint32());break}case 56:{d.nodeDelete=$root.com.hedera.hapi.node.addressbook.NodeDeleteTransactionBody.decode(e,e.uint32());break}case 57:{d.tokenReject=$root.proto.TokenRejectTransactionBody.decode(e,e.uint32());break}case 58:{d.tokenAirdrop=$root.proto.TokenAirdropTransactionBody.decode(e,e.uint32());break}case 59:{d.tokenCancelAirdrop=$root.proto.TokenCancelAirdropTransactionBody.decode(e,e.uint32());break}case 60:{d.tokenClaimAirdrop=$root.proto.TokenClaimAirdropTransactionBody.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionBody\"},e}(),SystemDeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 2:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 3:{d.expirationTime=$root.proto.TimestampSeconds.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SystemDeleteTransactionBody\"},e}(),SystemUndeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 2:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SystemUndeleteTransactionBody\"},e}(),FreezeTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.startHour=e.int32();break}case 2:{d.startMin=e.int32();break}case 3:{d.endHour=e.int32();break}case 4:{d.endMin=e.int32();break}case 5:{d.updateFile=$root.proto.FileID.decode(e,e.uint32());break}case 6:{d.fileHash=e.bytes();break}case 7:{d.startTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 8:{d.freezeType=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FreezeTransactionBody\"},e}(),FreezeType:function(){const e={},o=Object.create(e);return o[e[0]=\"UNKNOWN_FREEZE_TYPE\"]=0,o[e[1]=\"FREEZE_ONLY\"]=1,o[e[2]=\"PREPARE_UPGRADE\"]=2,o[e[3]=\"FREEZE_UPGRADE\"]=3,o[e[4]=\"FREEZE_ABORT\"]=4,o[e[5]=\"TELEMETRY_UPGRADE\"]=5,o}(),ContractCallTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.gas=e.int64();break}case 3:{d.amount=e.int64();break}case 4:{d.functionParameters=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractCallTransactionBody\"},e}(),ContractCreateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 16:{d.initcode=e.bytes();break}case 3:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 4:{d.gas=e.int64();break}case 5:{d.initialBalance=e.int64();break}case 6:{d.proxyAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 8:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 9:{d.constructorParameters=e.bytes();break}case 10:{d.shardID=$root.proto.ShardID.decode(e,e.uint32());break}case 11:{d.realmID=$root.proto.RealmID.decode(e,e.uint32());break}case 12:{d.newRealmAdminKey=$root.proto.Key.decode(e,e.uint32());break}case 13:{d.memo=e.string();break}case 14:{d.maxAutomaticTokenAssociations=e.int32();break}case 15:{d.autoRenewAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 17:{d.stakedAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 18:{d.stakedNodeId=e.int64();break}case 19:{d.declineReward=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractCreateTransactionBody\"},e}(),Duration:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.seconds=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Duration\"},e}(),ContractUpdateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 3:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 6:{d.proxyAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 7:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 8:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 9:{d.memo=e.string();break}case 10:{d.memoWrapper=$root.google.protobuf.StringValue.decode(e,e.uint32());break}case 11:{d.maxAutomaticTokenAssociations=$root.google.protobuf.Int32Value.decode(e,e.uint32());break}case 12:{d.autoRenewAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 13:{d.stakedAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 14:{d.stakedNodeId=e.int64();break}case 15:{d.declineReward=$root.google.protobuf.BoolValue.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractUpdateTransactionBody\"},e}(),LiveHash:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountId=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.hash=e.bytes();break}case 3:{d.keys=$root.proto.KeyList.decode(e,e.uint32());break}case 5:{d.duration=$root.proto.Duration.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.LiveHash\"},e}(),CryptoAddLiveHashTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 3:{d.liveHash=$root.proto.LiveHash.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoAddLiveHashTransactionBody\"},e}(),CryptoCreateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.key=$root.proto.Key.decode(e,e.uint32());break}case 2:{d.initialBalance=e.uint64();break}case 3:{d.proxyAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 6:{d.sendRecordThreshold=e.uint64();break}case 7:{d.receiveRecordThreshold=e.uint64();break}case 8:{d.receiverSigRequired=e.bool();break}case 9:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 10:{d.shardID=$root.proto.ShardID.decode(e,e.uint32());break}case 11:{d.realmID=$root.proto.RealmID.decode(e,e.uint32());break}case 12:{d.newRealmAdminKey=$root.proto.Key.decode(e,e.uint32());break}case 13:{d.memo=e.string();break}case 14:{d.maxAutomaticTokenAssociations=e.int32();break}case 15:{d.stakedAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 16:{d.stakedNodeId=e.int64();break}case 17:{d.declineReward=e.bool();break}case 18:{d.alias=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoCreateTransactionBody\"},e}(),CryptoDeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transferAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.deleteAccountID=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoDeleteTransactionBody\"},e}(),CryptoDeleteLiveHashTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountOfLiveHash=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.liveHashToDelete=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoDeleteLiveHashTransactionBody\"},e}(),CryptoTransferTransactionBody:function(){function e(e){if(this.tokenTransfers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transfers=$root.proto.TransferList.decode(e,e.uint32());break}case 2:{d.tokenTransfers&&d.tokenTransfers.length||(d.tokenTransfers=[]),d.tokenTransfers.push($root.proto.TokenTransferList.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoTransferTransactionBody\"},e}(),CryptoUpdateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 2:{d.accountIDToUpdate=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.key=$root.proto.Key.decode(e,e.uint32());break}case 4:{d.proxyAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 5:{d.proxyFraction=e.int32();break}case 6:{d.sendRecordThreshold=e.uint64();break}case 11:{d.sendRecordThresholdWrapper=$root.google.protobuf.UInt64Value.decode(e,e.uint32());break}case 7:{d.receiveRecordThreshold=e.uint64();break}case 12:{d.receiveRecordThresholdWrapper=$root.google.protobuf.UInt64Value.decode(e,e.uint32());break}case 8:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 9:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 10:{d.receiverSigRequired=e.bool();break}case 13:{d.receiverSigRequiredWrapper=$root.google.protobuf.BoolValue.decode(e,e.uint32());break}case 14:{d.memo=$root.google.protobuf.StringValue.decode(e,e.uint32());break}case 15:{d.maxAutomaticTokenAssociations=$root.google.protobuf.Int32Value.decode(e,e.uint32());break}case 16:{d.stakedAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 17:{d.stakedNodeId=e.int64();break}case 18:{d.declineReward=$root.google.protobuf.BoolValue.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoUpdateTransactionBody\"},e}(),CryptoApproveAllowanceTransactionBody:function(){function e(e){if(this.cryptoAllowances=[],this.nftAllowances=[],this.tokenAllowances=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.cryptoAllowances&&d.cryptoAllowances.length||(d.cryptoAllowances=[]),d.cryptoAllowances.push($root.proto.CryptoAllowance.decode(e,e.uint32()));break}case 2:{d.nftAllowances&&d.nftAllowances.length||(d.nftAllowances=[]),d.nftAllowances.push($root.proto.NftAllowance.decode(e,e.uint32()));break}case 3:{d.tokenAllowances&&d.tokenAllowances.length||(d.tokenAllowances=[]),d.tokenAllowances.push($root.proto.TokenAllowance.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoApproveAllowanceTransactionBody\"},e}(),CryptoAllowance:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.owner=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.spender=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.amount=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoAllowance\"},e}(),NftAllowance:function(){function e(e){if(this.serialNumbers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.owner=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.spender=$root.proto.AccountID.decode(e,e.uint32());break}case 4:{if(d.serialNumbers&&d.serialNumbers.length||(d.serialNumbers=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.owner=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.spender=$root.proto.AccountID.decode(e,e.uint32());break}case 4:{d.amount=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenAllowance\"},e}(),CryptoDeleteAllowanceTransactionBody:function(){function e(e){if(this.nftAllowances=[],e)for(var o=Object.keys(e),t=0;t>>3){case 2:{d.nftAllowances&&d.nftAllowances.length||(d.nftAllowances=[]),d.nftAllowances.push($root.proto.NftRemoveAllowance.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoDeleteAllowanceTransactionBody\"},e}(),NftRemoveAllowance:function(){function e(e){if(this.serialNumbers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.owner=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{if(d.serialNumbers&&d.serialNumbers.length||(d.serialNumbers=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.ethereumData=e.bytes();break}case 2:{d.callData=$root.proto.FileID.decode(e,e.uint32());break}case 3:{d.maxGasAllowance=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.EthereumTransactionBody\"},e}(),FileAppendTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 2:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 4:{d.contents=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileAppendTransactionBody\"},e}(),FileCreateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 2:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 3:{d.keys=$root.proto.KeyList.decode(e,e.uint32());break}case 4:{d.contents=e.bytes();break}case 5:{d.shardID=$root.proto.ShardID.decode(e,e.uint32());break}case 6:{d.realmID=$root.proto.RealmID.decode(e,e.uint32());break}case 7:{d.newRealmAdminKey=$root.proto.Key.decode(e,e.uint32());break}case 8:{d.memo=e.string();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileCreateTransactionBody\"},e}(),FileDeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 2:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileDeleteTransactionBody\"},e}(),FileUpdateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 2:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 3:{d.keys=$root.proto.KeyList.decode(e,e.uint32());break}case 4:{d.contents=e.bytes();break}case 5:{d.memo=$root.google.protobuf.StringValue.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileUpdateTransactionBody\"},e}(),ContractDeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.transferAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.transferContractID=$root.proto.ContractID.decode(e,e.uint32());break}case 4:{d.permanentRemoval=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractDeleteTransactionBody\"},e}(),ConsensusCreateTopicTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.memo=e.string();break}case 2:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 3:{d.submitKey=$root.proto.Key.decode(e,e.uint32());break}case 6:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 7:{d.autoRenewAccount=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusCreateTopicTransactionBody\"},e}(),ConsensusUpdateTopicTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.topicID=$root.proto.TopicID.decode(e,e.uint32());break}case 2:{d.memo=$root.google.protobuf.StringValue.decode(e,e.uint32());break}case 4:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 6:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 7:{d.submitKey=$root.proto.Key.decode(e,e.uint32());break}case 8:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 9:{d.autoRenewAccount=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusUpdateTopicTransactionBody\"},e}(),ConsensusDeleteTopicTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.topicID=$root.proto.TopicID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusDeleteTopicTransactionBody\"},e}(),ConsensusMessageChunkInfo:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.initialTransactionID=$root.proto.TransactionID.decode(e,e.uint32());break}case 2:{d.total=e.int32();break}case 3:{d.number=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusMessageChunkInfo\"},e}(),ConsensusSubmitMessageTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.topicID=$root.proto.TopicID.decode(e,e.uint32());break}case 2:{d.message=e.bytes();break}case 3:{d.chunkInfo=$root.proto.ConsensusMessageChunkInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusSubmitMessageTransactionBody\"},e}(),UncheckedSubmitBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transactionBytes=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.UncheckedSubmitBody\"},e}(),TokenCreateTransactionBody:function(){function e(e){if(this.customFees=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.name=e.string();break}case 2:{d.symbol=e.string();break}case 3:{d.decimals=e.uint32();break}case 4:{d.initialSupply=e.uint64();break}case 5:{d.treasury=$root.proto.AccountID.decode(e,e.uint32());break}case 6:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 7:{d.kycKey=$root.proto.Key.decode(e,e.uint32());break}case 8:{d.freezeKey=$root.proto.Key.decode(e,e.uint32());break}case 9:{d.wipeKey=$root.proto.Key.decode(e,e.uint32());break}case 10:{d.supplyKey=$root.proto.Key.decode(e,e.uint32());break}case 11:{d.freezeDefault=e.bool();break}case 13:{d.expiry=$root.proto.Timestamp.decode(e,e.uint32());break}case 14:{d.autoRenewAccount=$root.proto.AccountID.decode(e,e.uint32());break}case 15:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 16:{d.memo=e.string();break}case 17:{d.tokenType=e.int32();break}case 18:{d.supplyType=e.int32();break}case 19:{d.maxSupply=e.int64();break}case 20:{d.feeScheduleKey=$root.proto.Key.decode(e,e.uint32());break}case 21:{d.customFees&&d.customFees.length||(d.customFees=[]),d.customFees.push($root.proto.CustomFee.decode(e,e.uint32()));break}case 22:{d.pauseKey=$root.proto.Key.decode(e,e.uint32());break}case 23:{d.metadata=e.bytes();break}case 24:{d.metadataKey=$root.proto.Key.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenCreateTransactionBody\"},e}(),FractionalFee:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fractionalAmount=$root.proto.Fraction.decode(e,e.uint32());break}case 2:{d.minimumAmount=e.int64();break}case 3:{d.maximumAmount=e.int64();break}case 4:{d.netOfTransfers=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FractionalFee\"},e}(),FixedFee:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.amount=e.int64();break}case 2:{d.denominatingTokenId=$root.proto.TokenID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FixedFee\"},e}(),RoyaltyFee:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.exchangeValueFraction=$root.proto.Fraction.decode(e,e.uint32());break}case 2:{d.fallbackFee=$root.proto.FixedFee.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.RoyaltyFee\"},e}(),CustomFee:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fixedFee=$root.proto.FixedFee.decode(e,e.uint32());break}case 2:{d.fractionalFee=$root.proto.FractionalFee.decode(e,e.uint32());break}case 4:{d.royaltyFee=$root.proto.RoyaltyFee.decode(e,e.uint32());break}case 3:{d.feeCollectorAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 5:{d.allCollectorsAreExempt=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CustomFee\"},e}(),AssessedCustomFee:function(){function e(e){if(this.effectivePayerAccountId=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.amount=e.int64();break}case 2:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 3:{d.feeCollectorAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 4:{d.effectivePayerAccountId&&d.effectivePayerAccountId.length||(d.effectivePayerAccountId=[]),d.effectivePayerAccountId.push($root.proto.AccountID.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.AssessedCustomFee\"},e}(),TokenFreezeAccountTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.account=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenFreezeAccountTransactionBody\"},e}(),TokenUnfreezeAccountTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.account=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenUnfreezeAccountTransactionBody\"},e}(),TokenGrantKycTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.account=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGrantKycTransactionBody\"},e}(),TokenRevokeKycTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.account=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenRevokeKycTransactionBody\"},e}(),TokenDeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenDeleteTransactionBody\"},e}(),TokenUpdateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.symbol=e.string();break}case 3:{d.name=e.string();break}case 4:{d.treasury=$root.proto.AccountID.decode(e,e.uint32());break}case 5:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 6:{d.kycKey=$root.proto.Key.decode(e,e.uint32());break}case 7:{d.freezeKey=$root.proto.Key.decode(e,e.uint32());break}case 8:{d.wipeKey=$root.proto.Key.decode(e,e.uint32());break}case 9:{d.supplyKey=$root.proto.Key.decode(e,e.uint32());break}case 10:{d.autoRenewAccount=$root.proto.AccountID.decode(e,e.uint32());break}case 11:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 12:{d.expiry=$root.proto.Timestamp.decode(e,e.uint32());break}case 13:{d.memo=$root.google.protobuf.StringValue.decode(e,e.uint32());break}case 14:{d.feeScheduleKey=$root.proto.Key.decode(e,e.uint32());break}case 15:{d.pauseKey=$root.proto.Key.decode(e,e.uint32());break}case 16:{d.metadata=$root.google.protobuf.BytesValue.decode(e,e.uint32());break}case 17:{d.metadataKey=$root.proto.Key.decode(e,e.uint32());break}case 18:{d.keyVerificationMode=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenUpdateTransactionBody\"},e}(),TokenMintTransactionBody:function(){function e(e){if(this.metadata=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.amount=e.uint64();break}case 3:{d.metadata&&d.metadata.length||(d.metadata=[]),d.metadata.push(e.bytes());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenMintTransactionBody\"},e}(),TokenBurnTransactionBody:function(){function e(e){if(this.serialNumbers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.amount=e.uint64();break}case 3:{if(d.serialNumbers&&d.serialNumbers.length||(d.serialNumbers=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.account=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.amount=e.uint64();break}case 4:{if(d.serialNumbers&&d.serialNumbers.length||(d.serialNumbers=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.account=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.tokens&&d.tokens.length||(d.tokens=[]),d.tokens.push($root.proto.TokenID.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenAssociateTransactionBody\"},e}(),TokenDissociateTransactionBody:function(){function e(e){if(this.tokens=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.account=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.tokens&&d.tokens.length||(d.tokens=[]),d.tokens.push($root.proto.TokenID.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenDissociateTransactionBody\"},e}(),TokenFeeScheduleUpdateTransactionBody:function(){function e(e){if(this.customFees=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.customFees&&d.customFees.length||(d.customFees=[]),d.customFees.push($root.proto.CustomFee.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenFeeScheduleUpdateTransactionBody\"},e}(),TokenPauseTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenPauseTransactionBody\"},e}(),TokenUnpauseTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenUnpauseTransactionBody\"},e}(),TokenUpdateNftsTransactionBody:function(){function e(e){if(this.serialNumbers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{if(d.serialNumbers&&d.serialNumbers.length||(d.serialNumbers=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.owner=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.rejections&&d.rejections.length||(d.rejections=[]),d.rejections.push($root.proto.TokenReference.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenRejectTransactionBody\"},e}(),TokenReference:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fungibleToken=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.nft=$root.proto.NftID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenReference\"},e}(),TokenAirdropTransactionBody:function(){function e(e){if(this.tokenTransfers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenTransfers&&d.tokenTransfers.length||(d.tokenTransfers=[]),d.tokenTransfers.push($root.proto.TokenTransferList.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenAirdropTransactionBody\"},e}(),TokenCancelAirdropTransactionBody:function(){function e(e){if(this.pendingAirdrops=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.pendingAirdrops&&d.pendingAirdrops.length||(d.pendingAirdrops=[]),d.pendingAirdrops.push($root.proto.PendingAirdropId.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenCancelAirdropTransactionBody\"},e}(),TokenClaimAirdropTransactionBody:function(){function e(e){if(this.pendingAirdrops=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.pendingAirdrops&&d.pendingAirdrops.length||(d.pendingAirdrops=[]),d.pendingAirdrops.push($root.proto.PendingAirdropId.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenClaimAirdropTransactionBody\"},e}(),ScheduleCreateTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.scheduledTransactionBody=$root.proto.SchedulableTransactionBody.decode(e,e.uint32());break}case 2:{d.memo=e.string();break}case 3:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 4:{d.payerAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 5:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 13:{d.waitForExpiry=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ScheduleCreateTransactionBody\"},e}(),SchedulableTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transactionFee=e.uint64();break}case 2:{d.memo=e.string();break}case 3:{d.contractCall=$root.proto.ContractCallTransactionBody.decode(e,e.uint32());break}case 4:{d.contractCreateInstance=$root.proto.ContractCreateTransactionBody.decode(e,e.uint32());break}case 5:{d.contractUpdateInstance=$root.proto.ContractUpdateTransactionBody.decode(e,e.uint32());break}case 6:{d.contractDeleteInstance=$root.proto.ContractDeleteTransactionBody.decode(e,e.uint32());break}case 37:{d.cryptoApproveAllowance=$root.proto.CryptoApproveAllowanceTransactionBody.decode(e,e.uint32());break}case 38:{d.cryptoDeleteAllowance=$root.proto.CryptoDeleteAllowanceTransactionBody.decode(e,e.uint32());break}case 7:{d.cryptoCreateAccount=$root.proto.CryptoCreateTransactionBody.decode(e,e.uint32());break}case 8:{d.cryptoDelete=$root.proto.CryptoDeleteTransactionBody.decode(e,e.uint32());break}case 9:{d.cryptoTransfer=$root.proto.CryptoTransferTransactionBody.decode(e,e.uint32());break}case 10:{d.cryptoUpdateAccount=$root.proto.CryptoUpdateTransactionBody.decode(e,e.uint32());break}case 11:{d.fileAppend=$root.proto.FileAppendTransactionBody.decode(e,e.uint32());break}case 12:{d.fileCreate=$root.proto.FileCreateTransactionBody.decode(e,e.uint32());break}case 13:{d.fileDelete=$root.proto.FileDeleteTransactionBody.decode(e,e.uint32());break}case 14:{d.fileUpdate=$root.proto.FileUpdateTransactionBody.decode(e,e.uint32());break}case 15:{d.systemDelete=$root.proto.SystemDeleteTransactionBody.decode(e,e.uint32());break}case 16:{d.systemUndelete=$root.proto.SystemUndeleteTransactionBody.decode(e,e.uint32());break}case 17:{d.freeze=$root.proto.FreezeTransactionBody.decode(e,e.uint32());break}case 18:{d.consensusCreateTopic=$root.proto.ConsensusCreateTopicTransactionBody.decode(e,e.uint32());break}case 19:{d.consensusUpdateTopic=$root.proto.ConsensusUpdateTopicTransactionBody.decode(e,e.uint32());break}case 20:{d.consensusDeleteTopic=$root.proto.ConsensusDeleteTopicTransactionBody.decode(e,e.uint32());break}case 21:{d.consensusSubmitMessage=$root.proto.ConsensusSubmitMessageTransactionBody.decode(e,e.uint32());break}case 22:{d.tokenCreation=$root.proto.TokenCreateTransactionBody.decode(e,e.uint32());break}case 23:{d.tokenFreeze=$root.proto.TokenFreezeAccountTransactionBody.decode(e,e.uint32());break}case 24:{d.tokenUnfreeze=$root.proto.TokenUnfreezeAccountTransactionBody.decode(e,e.uint32());break}case 25:{d.tokenGrantKyc=$root.proto.TokenGrantKycTransactionBody.decode(e,e.uint32());break}case 26:{d.tokenRevokeKyc=$root.proto.TokenRevokeKycTransactionBody.decode(e,e.uint32());break}case 27:{d.tokenDeletion=$root.proto.TokenDeleteTransactionBody.decode(e,e.uint32());break}case 28:{d.tokenUpdate=$root.proto.TokenUpdateTransactionBody.decode(e,e.uint32());break}case 29:{d.tokenMint=$root.proto.TokenMintTransactionBody.decode(e,e.uint32());break}case 30:{d.tokenBurn=$root.proto.TokenBurnTransactionBody.decode(e,e.uint32());break}case 31:{d.tokenWipe=$root.proto.TokenWipeAccountTransactionBody.decode(e,e.uint32());break}case 32:{d.tokenAssociate=$root.proto.TokenAssociateTransactionBody.decode(e,e.uint32());break}case 33:{d.tokenDissociate=$root.proto.TokenDissociateTransactionBody.decode(e,e.uint32());break}case 39:{d.tokenFeeScheduleUpdate=$root.proto.TokenFeeScheduleUpdateTransactionBody.decode(e,e.uint32());break}case 35:{d.tokenPause=$root.proto.TokenPauseTransactionBody.decode(e,e.uint32());break}case 36:{d.tokenUnpause=$root.proto.TokenUnpauseTransactionBody.decode(e,e.uint32());break}case 34:{d.scheduleDelete=$root.proto.ScheduleDeleteTransactionBody.decode(e,e.uint32());break}case 40:{d.utilPrng=$root.proto.UtilPrngTransactionBody.decode(e,e.uint32());break}case 41:{d.tokenUpdateNfts=$root.proto.TokenUpdateNftsTransactionBody.decode(e,e.uint32());break}case 42:{d.nodeCreate=$root.com.hedera.hapi.node.addressbook.NodeCreateTransactionBody.decode(e,e.uint32());break}case 43:{d.nodeUpdate=$root.com.hedera.hapi.node.addressbook.NodeUpdateTransactionBody.decode(e,e.uint32());break}case 44:{d.nodeDelete=$root.com.hedera.hapi.node.addressbook.NodeDeleteTransactionBody.decode(e,e.uint32());break}case 45:{d.tokenReject=$root.proto.TokenRejectTransactionBody.decode(e,e.uint32());break}case 46:{d.tokenCancelAirdrop=$root.proto.TokenCancelAirdropTransactionBody.decode(e,e.uint32());break}case 47:{d.tokenClaimAirdrop=$root.proto.TokenClaimAirdropTransactionBody.decode(e,e.uint32());break}case 48:{d.tokenAirdrop=$root.proto.TokenAirdropTransactionBody.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SchedulableTransactionBody\"},e}(),ScheduleDeleteTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.scheduleID=$root.proto.ScheduleID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ScheduleDeleteTransactionBody\"},e}(),UtilPrngTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.range=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.UtilPrngTransactionBody\"},e}(),ScheduleSignTransactionBody:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.scheduleID=$root.proto.ScheduleID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ScheduleSignTransactionBody\"},e}(),NodeStakeUpdateTransactionBody:function(){function e(e){if(this.nodeStake=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.endOfStakingPeriod=$root.proto.Timestamp.decode(e,e.uint32());break}case 2:{d.nodeStake&&d.nodeStake.length||(d.nodeStake=[]),d.nodeStake.push($root.proto.NodeStake.decode(e,e.uint32()));break}case 3:{d.maxStakingRewardRatePerHbar=e.int64();break}case 4:{d.nodeRewardFeeFraction=$root.proto.Fraction.decode(e,e.uint32());break}case 5:{d.stakingPeriodsStored=e.int64();break}case 6:{d.stakingPeriod=e.int64();break}case 7:{d.stakingRewardFeeFraction=$root.proto.Fraction.decode(e,e.uint32());break}case 8:{d.stakingStartThreshold=e.int64();break}case 9:{d.stakingRewardRate=e.int64();break}case 10:{d.reservedStakingRewards=e.int64();break}case 11:{d.unreservedStakingRewardBalance=e.int64();break}case 12:{d.rewardBalanceThreshold=e.int64();break}case 13:{d.maxStakeRewarded=e.int64();break}case 14:{d.maxTotalReward=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NodeStakeUpdateTransactionBody\"},e}(),NodeStake:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.maxStake=e.int64();break}case 2:{d.minStake=e.int64();break}case 3:{d.nodeId=e.int64();break}case 4:{d.rewardRate=e.int64();break}case 5:{d.stake=e.int64();break}case 6:{d.stakeNotRewarded=e.int64();break}case 7:{d.stakeRewarded=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NodeStake\"},e}(),ResponseHeader:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nodeTransactionPrecheckCode=e.int32();break}case 2:{d.responseType=e.int32();break}case 3:{d.cost=e.uint64();break}case 4:{d.stateProof=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ResponseHeader\"},e}(),ResponseCodeEnum:function(){const e={},o=Object.create(e);return o[e[0]=\"OK\"]=0,o[e[1]=\"INVALID_TRANSACTION\"]=1,o[e[2]=\"PAYER_ACCOUNT_NOT_FOUND\"]=2,o[e[3]=\"INVALID_NODE_ACCOUNT\"]=3,o[e[4]=\"TRANSACTION_EXPIRED\"]=4,o[e[5]=\"INVALID_TRANSACTION_START\"]=5,o[e[6]=\"INVALID_TRANSACTION_DURATION\"]=6,o[e[7]=\"INVALID_SIGNATURE\"]=7,o[e[8]=\"MEMO_TOO_LONG\"]=8,o[e[9]=\"INSUFFICIENT_TX_FEE\"]=9,o[e[10]=\"INSUFFICIENT_PAYER_BALANCE\"]=10,o[e[11]=\"DUPLICATE_TRANSACTION\"]=11,o[e[12]=\"BUSY\"]=12,o[e[13]=\"NOT_SUPPORTED\"]=13,o[e[14]=\"INVALID_FILE_ID\"]=14,o[e[15]=\"INVALID_ACCOUNT_ID\"]=15,o[e[16]=\"INVALID_CONTRACT_ID\"]=16,o[e[17]=\"INVALID_TRANSACTION_ID\"]=17,o[e[18]=\"RECEIPT_NOT_FOUND\"]=18,o[e[19]=\"RECORD_NOT_FOUND\"]=19,o[e[20]=\"INVALID_SOLIDITY_ID\"]=20,o[e[21]=\"UNKNOWN\"]=21,o[e[22]=\"SUCCESS\"]=22,o[e[23]=\"FAIL_INVALID\"]=23,o[e[24]=\"FAIL_FEE\"]=24,o[e[25]=\"FAIL_BALANCE\"]=25,o[e[26]=\"KEY_REQUIRED\"]=26,o[e[27]=\"BAD_ENCODING\"]=27,o[e[28]=\"INSUFFICIENT_ACCOUNT_BALANCE\"]=28,o[e[29]=\"INVALID_SOLIDITY_ADDRESS\"]=29,o[e[30]=\"INSUFFICIENT_GAS\"]=30,o[e[31]=\"CONTRACT_SIZE_LIMIT_EXCEEDED\"]=31,o[e[32]=\"LOCAL_CALL_MODIFICATION_EXCEPTION\"]=32,o[e[33]=\"CONTRACT_REVERT_EXECUTED\"]=33,o[e[34]=\"CONTRACT_EXECUTION_EXCEPTION\"]=34,o[e[35]=\"INVALID_RECEIVING_NODE_ACCOUNT\"]=35,o[e[36]=\"MISSING_QUERY_HEADER\"]=36,o[e[37]=\"ACCOUNT_UPDATE_FAILED\"]=37,o[e[38]=\"INVALID_KEY_ENCODING\"]=38,o[e[39]=\"NULL_SOLIDITY_ADDRESS\"]=39,o[e[40]=\"CONTRACT_UPDATE_FAILED\"]=40,o[e[41]=\"INVALID_QUERY_HEADER\"]=41,o[e[42]=\"INVALID_FEE_SUBMITTED\"]=42,o[e[43]=\"INVALID_PAYER_SIGNATURE\"]=43,o[e[44]=\"KEY_NOT_PROVIDED\"]=44,o[e[45]=\"INVALID_EXPIRATION_TIME\"]=45,o[e[46]=\"NO_WACL_KEY\"]=46,o[e[47]=\"FILE_CONTENT_EMPTY\"]=47,o[e[48]=\"INVALID_ACCOUNT_AMOUNTS\"]=48,o[e[49]=\"EMPTY_TRANSACTION_BODY\"]=49,o[e[50]=\"INVALID_TRANSACTION_BODY\"]=50,o[e[51]=\"INVALID_SIGNATURE_TYPE_MISMATCHING_KEY\"]=51,o[e[52]=\"INVALID_SIGNATURE_COUNT_MISMATCHING_KEY\"]=52,o[e[53]=\"EMPTY_LIVE_HASH_BODY\"]=53,o[e[54]=\"EMPTY_LIVE_HASH\"]=54,o[e[55]=\"EMPTY_LIVE_HASH_KEYS\"]=55,o[e[56]=\"INVALID_LIVE_HASH_SIZE\"]=56,o[e[57]=\"EMPTY_QUERY_BODY\"]=57,o[e[58]=\"EMPTY_LIVE_HASH_QUERY\"]=58,o[e[59]=\"LIVE_HASH_NOT_FOUND\"]=59,o[e[60]=\"ACCOUNT_ID_DOES_NOT_EXIST\"]=60,o[e[61]=\"LIVE_HASH_ALREADY_EXISTS\"]=61,o[e[62]=\"INVALID_FILE_WACL\"]=62,o[e[63]=\"SERIALIZATION_FAILED\"]=63,o[e[64]=\"TRANSACTION_OVERSIZE\"]=64,o[e[65]=\"TRANSACTION_TOO_MANY_LAYERS\"]=65,o[e[66]=\"CONTRACT_DELETED\"]=66,o[e[67]=\"PLATFORM_NOT_ACTIVE\"]=67,o[e[68]=\"KEY_PREFIX_MISMATCH\"]=68,o[e[69]=\"PLATFORM_TRANSACTION_NOT_CREATED\"]=69,o[e[70]=\"INVALID_RENEWAL_PERIOD\"]=70,o[e[71]=\"INVALID_PAYER_ACCOUNT_ID\"]=71,o[e[72]=\"ACCOUNT_DELETED\"]=72,o[e[73]=\"FILE_DELETED\"]=73,o[e[74]=\"ACCOUNT_REPEATED_IN_ACCOUNT_AMOUNTS\"]=74,o[e[75]=\"SETTING_NEGATIVE_ACCOUNT_BALANCE\"]=75,o[e[76]=\"OBTAINER_REQUIRED\"]=76,o[e[77]=\"OBTAINER_SAME_CONTRACT_ID\"]=77,o[e[78]=\"OBTAINER_DOES_NOT_EXIST\"]=78,o[e[79]=\"MODIFYING_IMMUTABLE_CONTRACT\"]=79,o[e[80]=\"FILE_SYSTEM_EXCEPTION\"]=80,o[e[81]=\"AUTORENEW_DURATION_NOT_IN_RANGE\"]=81,o[e[82]=\"ERROR_DECODING_BYTESTRING\"]=82,o[e[83]=\"CONTRACT_FILE_EMPTY\"]=83,o[e[84]=\"CONTRACT_BYTECODE_EMPTY\"]=84,o[e[85]=\"INVALID_INITIAL_BALANCE\"]=85,o[e[86]=\"INVALID_RECEIVE_RECORD_THRESHOLD\"]=86,o[e[87]=\"INVALID_SEND_RECORD_THRESHOLD\"]=87,o[e[88]=\"ACCOUNT_IS_NOT_GENESIS_ACCOUNT\"]=88,o[e[89]=\"PAYER_ACCOUNT_UNAUTHORIZED\"]=89,o[e[90]=\"INVALID_FREEZE_TRANSACTION_BODY\"]=90,o[e[91]=\"FREEZE_TRANSACTION_BODY_NOT_FOUND\"]=91,o[e[92]=\"TRANSFER_LIST_SIZE_LIMIT_EXCEEDED\"]=92,o[e[93]=\"RESULT_SIZE_LIMIT_EXCEEDED\"]=93,o[e[94]=\"NOT_SPECIAL_ACCOUNT\"]=94,o[e[95]=\"CONTRACT_NEGATIVE_GAS\"]=95,o[e[96]=\"CONTRACT_NEGATIVE_VALUE\"]=96,o[e[97]=\"INVALID_FEE_FILE\"]=97,o[e[98]=\"INVALID_EXCHANGE_RATE_FILE\"]=98,o[e[99]=\"INSUFFICIENT_LOCAL_CALL_GAS\"]=99,o[e[100]=\"ENTITY_NOT_ALLOWED_TO_DELETE\"]=100,o[e[101]=\"AUTHORIZATION_FAILED\"]=101,o[e[102]=\"FILE_UPLOADED_PROTO_INVALID\"]=102,o[e[103]=\"FILE_UPLOADED_PROTO_NOT_SAVED_TO_DISK\"]=103,o[e[104]=\"FEE_SCHEDULE_FILE_PART_UPLOADED\"]=104,o[e[105]=\"EXCHANGE_RATE_CHANGE_LIMIT_EXCEEDED\"]=105,o[e[106]=\"MAX_CONTRACT_STORAGE_EXCEEDED\"]=106,o[e[107]=\"TRANSFER_ACCOUNT_SAME_AS_DELETE_ACCOUNT\"]=107,o[e[108]=\"TOTAL_LEDGER_BALANCE_INVALID\"]=108,o[e[110]=\"EXPIRATION_REDUCTION_NOT_ALLOWED\"]=110,o[e[111]=\"MAX_GAS_LIMIT_EXCEEDED\"]=111,o[e[112]=\"MAX_FILE_SIZE_EXCEEDED\"]=112,o[e[113]=\"RECEIVER_SIG_REQUIRED\"]=113,o[e[150]=\"INVALID_TOPIC_ID\"]=150,o[e[155]=\"INVALID_ADMIN_KEY\"]=155,o[e[156]=\"INVALID_SUBMIT_KEY\"]=156,o[e[157]=\"UNAUTHORIZED\"]=157,o[e[158]=\"INVALID_TOPIC_MESSAGE\"]=158,o[e[159]=\"INVALID_AUTORENEW_ACCOUNT\"]=159,o[e[160]=\"AUTORENEW_ACCOUNT_NOT_ALLOWED\"]=160,o[e[162]=\"TOPIC_EXPIRED\"]=162,o[e[163]=\"INVALID_CHUNK_NUMBER\"]=163,o[e[164]=\"INVALID_CHUNK_TRANSACTION_ID\"]=164,o[e[165]=\"ACCOUNT_FROZEN_FOR_TOKEN\"]=165,o[e[166]=\"TOKENS_PER_ACCOUNT_LIMIT_EXCEEDED\"]=166,o[e[167]=\"INVALID_TOKEN_ID\"]=167,o[e[168]=\"INVALID_TOKEN_DECIMALS\"]=168,o[e[169]=\"INVALID_TOKEN_INITIAL_SUPPLY\"]=169,o[e[170]=\"INVALID_TREASURY_ACCOUNT_FOR_TOKEN\"]=170,o[e[171]=\"INVALID_TOKEN_SYMBOL\"]=171,o[e[172]=\"TOKEN_HAS_NO_FREEZE_KEY\"]=172,o[e[173]=\"TRANSFERS_NOT_ZERO_SUM_FOR_TOKEN\"]=173,o[e[174]=\"MISSING_TOKEN_SYMBOL\"]=174,o[e[175]=\"TOKEN_SYMBOL_TOO_LONG\"]=175,o[e[176]=\"ACCOUNT_KYC_NOT_GRANTED_FOR_TOKEN\"]=176,o[e[177]=\"TOKEN_HAS_NO_KYC_KEY\"]=177,o[e[178]=\"INSUFFICIENT_TOKEN_BALANCE\"]=178,o[e[179]=\"TOKEN_WAS_DELETED\"]=179,o[e[180]=\"TOKEN_HAS_NO_SUPPLY_KEY\"]=180,o[e[181]=\"TOKEN_HAS_NO_WIPE_KEY\"]=181,o[e[182]=\"INVALID_TOKEN_MINT_AMOUNT\"]=182,o[e[183]=\"INVALID_TOKEN_BURN_AMOUNT\"]=183,o[e[184]=\"TOKEN_NOT_ASSOCIATED_TO_ACCOUNT\"]=184,o[e[185]=\"CANNOT_WIPE_TOKEN_TREASURY_ACCOUNT\"]=185,o[e[186]=\"INVALID_KYC_KEY\"]=186,o[e[187]=\"INVALID_WIPE_KEY\"]=187,o[e[188]=\"INVALID_FREEZE_KEY\"]=188,o[e[189]=\"INVALID_SUPPLY_KEY\"]=189,o[e[190]=\"MISSING_TOKEN_NAME\"]=190,o[e[191]=\"TOKEN_NAME_TOO_LONG\"]=191,o[e[192]=\"INVALID_WIPING_AMOUNT\"]=192,o[e[193]=\"TOKEN_IS_IMMUTABLE\"]=193,o[e[194]=\"TOKEN_ALREADY_ASSOCIATED_TO_ACCOUNT\"]=194,o[e[195]=\"TRANSACTION_REQUIRES_ZERO_TOKEN_BALANCES\"]=195,o[e[196]=\"ACCOUNT_IS_TREASURY\"]=196,o[e[197]=\"TOKEN_ID_REPEATED_IN_TOKEN_LIST\"]=197,o[e[198]=\"TOKEN_TRANSFER_LIST_SIZE_LIMIT_EXCEEDED\"]=198,o[e[199]=\"EMPTY_TOKEN_TRANSFER_BODY\"]=199,o[e[200]=\"EMPTY_TOKEN_TRANSFER_ACCOUNT_AMOUNTS\"]=200,o[e[201]=\"INVALID_SCHEDULE_ID\"]=201,o[e[202]=\"SCHEDULE_IS_IMMUTABLE\"]=202,o[e[203]=\"INVALID_SCHEDULE_PAYER_ID\"]=203,o[e[204]=\"INVALID_SCHEDULE_ACCOUNT_ID\"]=204,o[e[205]=\"NO_NEW_VALID_SIGNATURES\"]=205,o[e[206]=\"UNRESOLVABLE_REQUIRED_SIGNERS\"]=206,o[e[207]=\"SCHEDULED_TRANSACTION_NOT_IN_WHITELIST\"]=207,o[e[208]=\"SOME_SIGNATURES_WERE_INVALID\"]=208,o[e[209]=\"TRANSACTION_ID_FIELD_NOT_ALLOWED\"]=209,o[e[210]=\"IDENTICAL_SCHEDULE_ALREADY_CREATED\"]=210,o[e[211]=\"INVALID_ZERO_BYTE_IN_STRING\"]=211,o[e[212]=\"SCHEDULE_ALREADY_DELETED\"]=212,o[e[213]=\"SCHEDULE_ALREADY_EXECUTED\"]=213,o[e[214]=\"MESSAGE_SIZE_TOO_LARGE\"]=214,o[e[215]=\"OPERATION_REPEATED_IN_BUCKET_GROUPS\"]=215,o[e[216]=\"BUCKET_CAPACITY_OVERFLOW\"]=216,o[e[217]=\"NODE_CAPACITY_NOT_SUFFICIENT_FOR_OPERATION\"]=217,o[e[218]=\"BUCKET_HAS_NO_THROTTLE_GROUPS\"]=218,o[e[219]=\"THROTTLE_GROUP_HAS_ZERO_OPS_PER_SEC\"]=219,o[e[220]=\"SUCCESS_BUT_MISSING_EXPECTED_OPERATION\"]=220,o[e[221]=\"UNPARSEABLE_THROTTLE_DEFINITIONS\"]=221,o[e[222]=\"INVALID_THROTTLE_DEFINITIONS\"]=222,o[e[223]=\"ACCOUNT_EXPIRED_AND_PENDING_REMOVAL\"]=223,o[e[224]=\"INVALID_TOKEN_MAX_SUPPLY\"]=224,o[e[225]=\"INVALID_TOKEN_NFT_SERIAL_NUMBER\"]=225,o[e[226]=\"INVALID_NFT_ID\"]=226,o[e[227]=\"METADATA_TOO_LONG\"]=227,o[e[228]=\"BATCH_SIZE_LIMIT_EXCEEDED\"]=228,o[e[229]=\"INVALID_QUERY_RANGE\"]=229,o[e[230]=\"FRACTION_DIVIDES_BY_ZERO\"]=230,o[e[231]=\"INSUFFICIENT_PAYER_BALANCE_FOR_CUSTOM_FEE\"]=231,o[e[232]=\"CUSTOM_FEES_LIST_TOO_LONG\"]=232,o[e[233]=\"INVALID_CUSTOM_FEE_COLLECTOR\"]=233,o[e[234]=\"INVALID_TOKEN_ID_IN_CUSTOM_FEES\"]=234,o[e[235]=\"TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR\"]=235,o[e[236]=\"TOKEN_MAX_SUPPLY_REACHED\"]=236,o[e[237]=\"SENDER_DOES_NOT_OWN_NFT_SERIAL_NO\"]=237,o[e[238]=\"CUSTOM_FEE_NOT_FULLY_SPECIFIED\"]=238,o[e[239]=\"CUSTOM_FEE_MUST_BE_POSITIVE\"]=239,o[e[240]=\"TOKEN_HAS_NO_FEE_SCHEDULE_KEY\"]=240,o[e[241]=\"CUSTOM_FEE_OUTSIDE_NUMERIC_RANGE\"]=241,o[e[242]=\"ROYALTY_FRACTION_CANNOT_EXCEED_ONE\"]=242,o[e[243]=\"FRACTIONAL_FEE_MAX_AMOUNT_LESS_THAN_MIN_AMOUNT\"]=243,o[e[244]=\"CUSTOM_SCHEDULE_ALREADY_HAS_NO_FEES\"]=244,o[e[245]=\"CUSTOM_FEE_DENOMINATION_MUST_BE_FUNGIBLE_COMMON\"]=245,o[e[246]=\"CUSTOM_FRACTIONAL_FEE_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON\"]=246,o[e[247]=\"INVALID_CUSTOM_FEE_SCHEDULE_KEY\"]=247,o[e[248]=\"INVALID_TOKEN_MINT_METADATA\"]=248,o[e[249]=\"INVALID_TOKEN_BURN_METADATA\"]=249,o[e[250]=\"CURRENT_TREASURY_STILL_OWNS_NFTS\"]=250,o[e[251]=\"ACCOUNT_STILL_OWNS_NFTS\"]=251,o[e[252]=\"TREASURY_MUST_OWN_BURNED_NFT\"]=252,o[e[253]=\"ACCOUNT_DOES_NOT_OWN_WIPED_NFT\"]=253,o[e[254]=\"ACCOUNT_AMOUNT_TRANSFERS_ONLY_ALLOWED_FOR_FUNGIBLE_COMMON\"]=254,o[e[255]=\"MAX_NFTS_IN_PRICE_REGIME_HAVE_BEEN_MINTED\"]=255,o[e[256]=\"PAYER_ACCOUNT_DELETED\"]=256,o[e[257]=\"CUSTOM_FEE_CHARGING_EXCEEDED_MAX_RECURSION_DEPTH\"]=257,o[e[258]=\"CUSTOM_FEE_CHARGING_EXCEEDED_MAX_ACCOUNT_AMOUNTS\"]=258,o[e[259]=\"INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE\"]=259,o[e[260]=\"SERIAL_NUMBER_LIMIT_REACHED\"]=260,o[e[261]=\"CUSTOM_ROYALTY_FEE_ONLY_ALLOWED_FOR_NON_FUNGIBLE_UNIQUE\"]=261,o[e[262]=\"NO_REMAINING_AUTOMATIC_ASSOCIATIONS\"]=262,o[e[263]=\"EXISTING_AUTOMATIC_ASSOCIATIONS_EXCEED_GIVEN_LIMIT\"]=263,o[e[264]=\"REQUESTED_NUM_AUTOMATIC_ASSOCIATIONS_EXCEEDS_ASSOCIATION_LIMIT\"]=264,o[e[265]=\"TOKEN_IS_PAUSED\"]=265,o[e[266]=\"TOKEN_HAS_NO_PAUSE_KEY\"]=266,o[e[267]=\"INVALID_PAUSE_KEY\"]=267,o[e[268]=\"FREEZE_UPDATE_FILE_DOES_NOT_EXIST\"]=268,o[e[269]=\"FREEZE_UPDATE_FILE_HASH_DOES_NOT_MATCH\"]=269,o[e[270]=\"NO_UPGRADE_HAS_BEEN_PREPARED\"]=270,o[e[271]=\"NO_FREEZE_IS_SCHEDULED\"]=271,o[e[272]=\"UPDATE_FILE_HASH_CHANGED_SINCE_PREPARE_UPGRADE\"]=272,o[e[273]=\"FREEZE_START_TIME_MUST_BE_FUTURE\"]=273,o[e[274]=\"PREPARED_UPDATE_FILE_IS_IMMUTABLE\"]=274,o[e[275]=\"FREEZE_ALREADY_SCHEDULED\"]=275,o[e[276]=\"FREEZE_UPGRADE_IN_PROGRESS\"]=276,o[e[277]=\"UPDATE_FILE_ID_DOES_NOT_MATCH_PREPARED\"]=277,o[e[278]=\"UPDATE_FILE_HASH_DOES_NOT_MATCH_PREPARED\"]=278,o[e[279]=\"CONSENSUS_GAS_EXHAUSTED\"]=279,o[e[280]=\"REVERTED_SUCCESS\"]=280,o[e[281]=\"MAX_STORAGE_IN_PRICE_REGIME_HAS_BEEN_USED\"]=281,o[e[282]=\"INVALID_ALIAS_KEY\"]=282,o[e[283]=\"UNEXPECTED_TOKEN_DECIMALS\"]=283,o[e[284]=\"INVALID_PROXY_ACCOUNT_ID\"]=284,o[e[285]=\"INVALID_TRANSFER_ACCOUNT_ID\"]=285,o[e[286]=\"INVALID_FEE_COLLECTOR_ACCOUNT_ID\"]=286,o[e[287]=\"ALIAS_IS_IMMUTABLE\"]=287,o[e[288]=\"SPENDER_ACCOUNT_SAME_AS_OWNER\"]=288,o[e[289]=\"AMOUNT_EXCEEDS_TOKEN_MAX_SUPPLY\"]=289,o[e[290]=\"NEGATIVE_ALLOWANCE_AMOUNT\"]=290,o[e[291]=\"CANNOT_APPROVE_FOR_ALL_FUNGIBLE_COMMON\"]=291,o[e[292]=\"SPENDER_DOES_NOT_HAVE_ALLOWANCE\"]=292,o[e[293]=\"AMOUNT_EXCEEDS_ALLOWANCE\"]=293,o[e[294]=\"MAX_ALLOWANCES_EXCEEDED\"]=294,o[e[295]=\"EMPTY_ALLOWANCES\"]=295,o[e[296]=\"SPENDER_ACCOUNT_REPEATED_IN_ALLOWANCES\"]=296,o[e[297]=\"REPEATED_SERIAL_NUMS_IN_NFT_ALLOWANCES\"]=297,o[e[298]=\"FUNGIBLE_TOKEN_IN_NFT_ALLOWANCES\"]=298,o[e[299]=\"NFT_IN_FUNGIBLE_TOKEN_ALLOWANCES\"]=299,o[e[300]=\"INVALID_ALLOWANCE_OWNER_ID\"]=300,o[e[301]=\"INVALID_ALLOWANCE_SPENDER_ID\"]=301,o[e[302]=\"REPEATED_ALLOWANCES_TO_DELETE\"]=302,o[e[303]=\"INVALID_DELEGATING_SPENDER\"]=303,o[e[304]=\"DELEGATING_SPENDER_CANNOT_GRANT_APPROVE_FOR_ALL\"]=304,o[e[305]=\"DELEGATING_SPENDER_DOES_NOT_HAVE_APPROVE_FOR_ALL\"]=305,o[e[306]=\"SCHEDULE_EXPIRATION_TIME_TOO_FAR_IN_FUTURE\"]=306,o[e[307]=\"SCHEDULE_EXPIRATION_TIME_MUST_BE_HIGHER_THAN_CONSENSUS_TIME\"]=307,o[e[308]=\"SCHEDULE_FUTURE_THROTTLE_EXCEEDED\"]=308,o[e[309]=\"SCHEDULE_FUTURE_GAS_LIMIT_EXCEEDED\"]=309,o[e[310]=\"INVALID_ETHEREUM_TRANSACTION\"]=310,o[e[311]=\"WRONG_CHAIN_ID\"]=311,o[e[312]=\"WRONG_NONCE\"]=312,o[e[313]=\"ACCESS_LIST_UNSUPPORTED\"]=313,o[e[314]=\"SCHEDULE_PENDING_EXPIRATION\"]=314,o[e[315]=\"CONTRACT_IS_TOKEN_TREASURY\"]=315,o[e[316]=\"CONTRACT_HAS_NON_ZERO_TOKEN_BALANCES\"]=316,o[e[317]=\"CONTRACT_EXPIRED_AND_PENDING_REMOVAL\"]=317,o[e[318]=\"CONTRACT_HAS_NO_AUTO_RENEW_ACCOUNT\"]=318,o[e[319]=\"PERMANENT_REMOVAL_REQUIRES_SYSTEM_INITIATION\"]=319,o[e[320]=\"PROXY_ACCOUNT_ID_FIELD_IS_DEPRECATED\"]=320,o[e[321]=\"SELF_STAKING_IS_NOT_ALLOWED\"]=321,o[e[322]=\"INVALID_STAKING_ID\"]=322,o[e[323]=\"STAKING_NOT_ENABLED\"]=323,o[e[324]=\"INVALID_PRNG_RANGE\"]=324,o[e[325]=\"MAX_ENTITIES_IN_PRICE_REGIME_HAVE_BEEN_CREATED\"]=325,o[e[326]=\"INVALID_FULL_PREFIX_SIGNATURE_FOR_PRECOMPILE\"]=326,o[e[327]=\"INSUFFICIENT_BALANCES_FOR_STORAGE_RENT\"]=327,o[e[328]=\"MAX_CHILD_RECORDS_EXCEEDED\"]=328,o[e[329]=\"INSUFFICIENT_BALANCES_FOR_RENEWAL_FEES\"]=329,o[e[330]=\"TRANSACTION_HAS_UNKNOWN_FIELDS\"]=330,o[e[331]=\"ACCOUNT_IS_IMMUTABLE\"]=331,o[e[332]=\"ALIAS_ALREADY_ASSIGNED\"]=332,o[e[333]=\"INVALID_METADATA_KEY\"]=333,o[e[334]=\"TOKEN_HAS_NO_METADATA_KEY\"]=334,o[e[335]=\"MISSING_TOKEN_METADATA\"]=335,o[e[336]=\"MISSING_SERIAL_NUMBERS\"]=336,o[e[337]=\"TOKEN_HAS_NO_ADMIN_KEY\"]=337,o[e[338]=\"NODE_DELETED\"]=338,o[e[339]=\"INVALID_NODE_ID\"]=339,o[e[340]=\"INVALID_GOSSIP_ENDPOINT\"]=340,o[e[341]=\"INVALID_NODE_ACCOUNT_ID\"]=341,o[e[342]=\"INVALID_NODE_DESCRIPTION\"]=342,o[e[343]=\"INVALID_SERVICE_ENDPOINT\"]=343,o[e[344]=\"INVALID_GOSSIP_CA_CERTIFICATE\"]=344,o[e[345]=\"INVALID_GRPC_CERTIFICATE\"]=345,o[e[346]=\"INVALID_MAX_AUTO_ASSOCIATIONS\"]=346,o[e[347]=\"MAX_NODES_CREATED\"]=347,o[e[348]=\"IP_FQDN_CANNOT_BE_SET_FOR_SAME_ENDPOINT\"]=348,o[e[349]=\"GOSSIP_ENDPOINT_CANNOT_HAVE_FQDN\"]=349,o[e[350]=\"FQDN_SIZE_TOO_LARGE\"]=350,o[e[351]=\"INVALID_ENDPOINT\"]=351,o[e[352]=\"GOSSIP_ENDPOINTS_EXCEEDED_LIMIT\"]=352,o[e[353]=\"TOKEN_REFERENCE_REPEATED\"]=353,o[e[354]=\"INVALID_OWNER_ID\"]=354,o[e[355]=\"TOKEN_REFERENCE_LIST_SIZE_LIMIT_EXCEEDED\"]=355,o[e[356]=\"SERVICE_ENDPOINTS_EXCEEDED_LIMIT\"]=356,o[e[357]=\"INVALID_IPV4_ADDRESS\"]=357,o[e[358]=\"EMPTY_TOKEN_REFERENCE_LIST\"]=358,o[e[359]=\"UPDATE_NODE_ACCOUNT_NOT_ALLOWED\"]=359,o[e[360]=\"TOKEN_HAS_NO_METADATA_OR_SUPPLY_KEY\"]=360,o[e[361]=\"EMPTY_PENDING_AIRDROP_ID_LIST\"]=361,o[e[362]=\"PENDING_AIRDROP_ID_REPEATED\"]=362,o[e[363]=\"MAX_PENDING_AIRDROP_ID_EXCEEDED\"]=363,o[e[364]=\"PENDING_NFT_AIRDROP_ALREADY_EXISTS\"]=364,o[e[365]=\"ACCOUNT_HAS_PENDING_AIRDROPS\"]=365,o}(),GetBySolidityIDQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.solidityID=e.string();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GetBySolidityIDQuery\"},e}(),GetBySolidityIDResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 4:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GetBySolidityIDResponse\"},e}(),ContractLoginfo:function(){function e(e){if(this.topic=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.bloom=e.bytes();break}case 3:{d.topic&&d.topic.length||(d.topic=[]),d.topic.push(e.bytes());break}case 4:{d.data=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractLoginfo\"},e}(),ContractFunctionResult:function(){function e(e){if(this.logInfo=[],this.createdContractIDs=[],this.contractNonces=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.contractCallResult=e.bytes();break}case 3:{d.errorMessage=e.string();break}case 4:{d.bloom=e.bytes();break}case 5:{d.gasUsed=e.uint64();break}case 6:{d.logInfo&&d.logInfo.length||(d.logInfo=[]),d.logInfo.push($root.proto.ContractLoginfo.decode(e,e.uint32()));break}case 7:{d.createdContractIDs&&d.createdContractIDs.length||(d.createdContractIDs=[]),d.createdContractIDs.push($root.proto.ContractID.decode(e,e.uint32()));break}case 9:{d.evmAddress=$root.google.protobuf.BytesValue.decode(e,e.uint32());break}case 10:{d.gas=e.int64();break}case 11:{d.amount=e.int64();break}case 12:{d.functionParameters=e.bytes();break}case 13:{d.senderId=$root.proto.AccountID.decode(e,e.uint32());break}case 14:{d.contractNonces&&d.contractNonces.length||(d.contractNonces=[]),d.contractNonces.push($root.proto.ContractNonceInfo.decode(e,e.uint32()));break}case 15:{d.signerNonce=$root.google.protobuf.Int64Value.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractFunctionResult\"},e}(),ContractCallLocalQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 3:{d.gas=e.int64();break}case 4:{d.functionParameters=e.bytes();break}case 5:{d.maxResultSize=e.int64();break}case 6:{d.senderId=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractCallLocalQuery\"},e}(),ContractCallLocalResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.functionResult=$root.proto.ContractFunctionResult.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractCallLocalResponse\"},e}(),ContractNonceInfo:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractId=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.nonce=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractNonceInfo\"},e}(),ContractGetInfoQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractGetInfoQuery\"},e}(),ContractGetInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.contractInfo=$root.proto.ContractGetInfoResponse.ContractInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractGetInfoResponse\"},e.ContractInfo=function(){function e(e){if(this.tokenRelationships=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.contractAccountID=e.string();break}case 4:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 5:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 6:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 7:{d.storage=e.int64();break}case 8:{d.memo=e.string();break}case 9:{d.balance=e.uint64();break}case 10:{d.deleted=e.bool();break}case 11:{d.tokenRelationships&&d.tokenRelationships.length||(d.tokenRelationships=[]),d.tokenRelationships.push($root.proto.TokenRelationship.decode(e,e.uint32()));break}case 12:{d.ledgerId=e.bytes();break}case 13:{d.autoRenewAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 14:{d.maxAutomaticTokenAssociations=e.int32();break}case 15:{d.stakingInfo=$root.proto.StakingInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractGetInfoResponse.ContractInfo\"},e}(),e}(),ContractGetBytecodeQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractGetBytecodeQuery\"},e}(),ContractGetBytecodeResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 6:{d.bytecode=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractGetBytecodeResponse\"},e}(),ContractGetRecordsQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractGetRecordsQuery\"},e}(),ContractGetRecordsResponse:function(){function e(e){if(this.records=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 3:{d.records&&d.records.length||(d.records=[]),d.records.push($root.proto.TransactionRecord.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractGetRecordsResponse\"},e}(),TransactionRecord:function(){function e(e){if(this.tokenTransferLists=[],this.assessedCustomFees=[],this.automaticTokenAssociations=[],this.paidStakingRewards=[],this.newPendingAirdrops=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.receipt=$root.proto.TransactionReceipt.decode(e,e.uint32());break}case 2:{d.transactionHash=e.bytes();break}case 3:{d.consensusTimestamp=$root.proto.Timestamp.decode(e,e.uint32());break}case 4:{d.transactionID=$root.proto.TransactionID.decode(e,e.uint32());break}case 5:{d.memo=e.string();break}case 6:{d.transactionFee=e.uint64();break}case 7:{d.contractCallResult=$root.proto.ContractFunctionResult.decode(e,e.uint32());break}case 8:{d.contractCreateResult=$root.proto.ContractFunctionResult.decode(e,e.uint32());break}case 10:{d.transferList=$root.proto.TransferList.decode(e,e.uint32());break}case 11:{d.tokenTransferLists&&d.tokenTransferLists.length||(d.tokenTransferLists=[]),d.tokenTransferLists.push($root.proto.TokenTransferList.decode(e,e.uint32()));break}case 12:{d.scheduleRef=$root.proto.ScheduleID.decode(e,e.uint32());break}case 13:{d.assessedCustomFees&&d.assessedCustomFees.length||(d.assessedCustomFees=[]),d.assessedCustomFees.push($root.proto.AssessedCustomFee.decode(e,e.uint32()));break}case 14:{d.automaticTokenAssociations&&d.automaticTokenAssociations.length||(d.automaticTokenAssociations=[]),d.automaticTokenAssociations.push($root.proto.TokenAssociation.decode(e,e.uint32()));break}case 15:{d.parentConsensusTimestamp=$root.proto.Timestamp.decode(e,e.uint32());break}case 16:{d.alias=e.bytes();break}case 17:{d.ethereumHash=e.bytes();break}case 18:{d.paidStakingRewards&&d.paidStakingRewards.length||(d.paidStakingRewards=[]),d.paidStakingRewards.push($root.proto.AccountAmount.decode(e,e.uint32()));break}case 19:{d.prngBytes=e.bytes();break}case 20:{d.prngNumber=e.int32();break}case 21:{d.evmAddress=e.bytes();break}case 22:{d.newPendingAirdrops&&d.newPendingAirdrops.length||(d.newPendingAirdrops=[]),d.newPendingAirdrops.push($root.proto.PendingAirdropRecord.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionRecord\"},e}(),PendingAirdropRecord:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.pendingAirdropId=$root.proto.PendingAirdropId.decode(e,e.uint32());break}case 2:{d.pendingAirdropValue=$root.proto.PendingAirdropValue.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.PendingAirdropRecord\"},e}(),TransactionReceipt:function(){function e(e){if(this.serialNumbers=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.status=e.int32();break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 4:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}case 5:{d.exchangeRate=$root.proto.ExchangeRateSet.decode(e,e.uint32());break}case 6:{d.topicID=$root.proto.TopicID.decode(e,e.uint32());break}case 7:{d.topicSequenceNumber=e.uint64();break}case 8:{d.topicRunningHash=e.bytes();break}case 9:{d.topicRunningHashVersion=e.uint64();break}case 10:{d.tokenID=$root.proto.TokenID.decode(e,e.uint32());break}case 11:{d.newTotalSupply=e.uint64();break}case 12:{d.scheduleID=$root.proto.ScheduleID.decode(e,e.uint32());break}case 13:{d.scheduledTransactionID=$root.proto.TransactionID.decode(e,e.uint32());break}case 14:{if(d.serialNumbers&&d.serialNumbers.length||(d.serialNumbers=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.hbarEquiv=e.int32();break}case 2:{d.centEquiv=e.int32();break}case 3:{d.expirationTime=$root.proto.TimestampSeconds.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ExchangeRate\"},e}(),ExchangeRateSet:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.currentRate=$root.proto.ExchangeRate.decode(e,e.uint32());break}case 2:{d.nextRate=$root.proto.ExchangeRate.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ExchangeRateSet\"},e}(),CryptoGetAccountBalanceQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.contractID=$root.proto.ContractID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetAccountBalanceQuery\"},e}(),CryptoGetAccountBalanceResponse:function(){function e(e){if(this.tokenBalances=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.balance=e.uint64();break}case 4:{d.tokenBalances&&d.tokenBalances.length||(d.tokenBalances=[]),d.tokenBalances.push($root.proto.TokenBalance.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetAccountBalanceResponse\"},e}(),CryptoGetAccountRecordsQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetAccountRecordsQuery\"},e}(),CryptoGetAccountRecordsResponse:function(){function e(e){if(this.records=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.records&&d.records.length||(d.records=[]),d.records.push($root.proto.TransactionRecord.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetAccountRecordsResponse\"},e}(),CryptoGetInfoQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetInfoQuery\"},e}(),CryptoGetInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.accountInfo=$root.proto.CryptoGetInfoResponse.AccountInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetInfoResponse\"},e.AccountInfo=function(){function e(e){if(this.liveHashes=[],this.tokenRelationships=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.contractAccountID=e.string();break}case 3:{d.deleted=e.bool();break}case 4:{d.proxyAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 6:{d.proxyReceived=e.int64();break}case 7:{d.key=$root.proto.Key.decode(e,e.uint32());break}case 8:{d.balance=e.uint64();break}case 9:{d.generateSendRecordThreshold=e.uint64();break}case 10:{d.generateReceiveRecordThreshold=e.uint64();break}case 11:{d.receiverSigRequired=e.bool();break}case 12:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 13:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 14:{d.liveHashes&&d.liveHashes.length||(d.liveHashes=[]),d.liveHashes.push($root.proto.LiveHash.decode(e,e.uint32()));break}case 15:{d.tokenRelationships&&d.tokenRelationships.length||(d.tokenRelationships=[]),d.tokenRelationships.push($root.proto.TokenRelationship.decode(e,e.uint32()));break}case 16:{d.memo=e.string();break}case 17:{d.ownedNfts=e.int64();break}case 18:{d.maxAutomaticTokenAssociations=e.int32();break}case 19:{d.alias=e.bytes();break}case 20:{d.ledgerId=e.bytes();break}case 21:{d.ethereumNonce=e.int64();break}case 22:{d.stakingInfo=$root.proto.StakingInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetInfoResponse.AccountInfo\"},e}(),e}(),CryptoGetLiveHashQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.hash=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetLiveHashQuery\"},e}(),CryptoGetLiveHashResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.liveHash=$root.proto.LiveHash.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetLiveHashResponse\"},e}(),CryptoGetStakersQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetStakersQuery\"},e}(),ProxyStaker:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.amount=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ProxyStaker\"},e}(),AllProxyStakers:function(){function e(e){if(this.proxyStaker=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.proxyStaker&&d.proxyStaker.length||(d.proxyStaker=[]),d.proxyStaker.push($root.proto.ProxyStaker.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.AllProxyStakers\"},e}(),CryptoGetStakersResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 3:{d.stakers=$root.proto.AllProxyStakers.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.CryptoGetStakersResponse\"},e}(),FileGetContentsQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileGetContentsQuery\"},e}(),FileGetContentsResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.fileContents=$root.proto.FileGetContentsResponse.FileContents.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileGetContentsResponse\"},e.FileContents=function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 2:{d.contents=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileGetContentsResponse.FileContents\"},e}(),e}(),FileGetInfoQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileGetInfoQuery\"},e}(),FileGetInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.fileInfo=$root.proto.FileGetInfoResponse.FileInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileGetInfoResponse\"},e.FileInfo=function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileID=$root.proto.FileID.decode(e,e.uint32());break}case 2:{d.size=e.int64();break}case 3:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 4:{d.deleted=e.bool();break}case 5:{d.keys=$root.proto.KeyList.decode(e,e.uint32());break}case 6:{d.memo=e.string();break}case 7:{d.ledgerId=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.FileGetInfoResponse.FileInfo\"},e}(),e}(),TransactionGetReceiptQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.transactionID=$root.proto.TransactionID.decode(e,e.uint32());break}case 3:{d.includeDuplicates=e.bool();break}case 4:{d.includeChildReceipts=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionGetReceiptQuery\"},e}(),TransactionGetReceiptResponse:function(){function e(e){if(this.duplicateTransactionReceipts=[],this.childTransactionReceipts=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.receipt=$root.proto.TransactionReceipt.decode(e,e.uint32());break}case 4:{d.duplicateTransactionReceipts&&d.duplicateTransactionReceipts.length||(d.duplicateTransactionReceipts=[]),d.duplicateTransactionReceipts.push($root.proto.TransactionReceipt.decode(e,e.uint32()));break}case 5:{d.childTransactionReceipts&&d.childTransactionReceipts.length||(d.childTransactionReceipts=[]),d.childTransactionReceipts.push($root.proto.TransactionReceipt.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionGetReceiptResponse\"},e}(),TransactionGetRecordQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.transactionID=$root.proto.TransactionID.decode(e,e.uint32());break}case 3:{d.includeDuplicates=e.bool();break}case 4:{d.includeChildRecords=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionGetRecordQuery\"},e}(),TransactionGetRecordResponse:function(){function e(e){if(this.duplicateTransactionRecords=[],this.childTransactionRecords=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 3:{d.transactionRecord=$root.proto.TransactionRecord.decode(e,e.uint32());break}case 4:{d.duplicateTransactionRecords&&d.duplicateTransactionRecords.length||(d.duplicateTransactionRecords=[]),d.duplicateTransactionRecords.push($root.proto.TransactionRecord.decode(e,e.uint32()));break}case 5:{d.childTransactionRecords&&d.childTransactionRecords.length||(d.childTransactionRecords=[]),d.childTransactionRecords.push($root.proto.TransactionRecord.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionGetRecordResponse\"},e}(),TransactionGetFastRecordQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.transactionID=$root.proto.TransactionID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionGetFastRecordQuery\"},e}(),TransactionGetFastRecordResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.transactionRecord=$root.proto.TransactionRecord.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionGetFastRecordResponse\"},e}(),ConsensusGetTopicInfoQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.topicID=$root.proto.TopicID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusGetTopicInfoQuery\"},e}(),ConsensusGetTopicInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.topicID=$root.proto.TopicID.decode(e,e.uint32());break}case 5:{d.topicInfo=$root.proto.ConsensusTopicInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusGetTopicInfoResponse\"},e}(),ConsensusTopicInfo:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.memo=e.string();break}case 2:{d.runningHash=e.bytes();break}case 3:{d.sequenceNumber=e.uint64();break}case 4:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 5:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 6:{d.submitKey=$root.proto.Key.decode(e,e.uint32());break}case 7:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 8:{d.autoRenewAccount=$root.proto.AccountID.decode(e,e.uint32());break}case 9:{d.ledgerId=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ConsensusTopicInfo\"},e}(),NetworkGetVersionInfoQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NetworkGetVersionInfoQuery\"},e}(),NetworkGetVersionInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.hapiProtoVersion=$root.proto.SemanticVersion.decode(e,e.uint32());break}case 3:{d.hederaServicesVersion=$root.proto.SemanticVersion.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NetworkGetVersionInfoResponse\"},e}(),NetworkGetExecutionTimeQuery:function(){function e(e){if(this.transactionIds=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.transactionIds&&d.transactionIds.length||(d.transactionIds=[]),d.transactionIds.push($root.proto.TransactionID.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.NetworkGetExecutionTimeQuery\"},e}(),NetworkGetExecutionTimeResponse:function(){function e(e){if(this.executionTimes=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{if(d.executionTimes&&d.executionTimes.length||(d.executionTimes=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.token=$root.proto.TokenID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetInfoQuery\"},e}(),TokenInfo:function(){function e(e){if(this.customFees=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.name=e.string();break}case 3:{d.symbol=e.string();break}case 4:{d.decimals=e.uint32();break}case 5:{d.totalSupply=e.uint64();break}case 6:{d.treasury=$root.proto.AccountID.decode(e,e.uint32());break}case 7:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 8:{d.kycKey=$root.proto.Key.decode(e,e.uint32());break}case 9:{d.freezeKey=$root.proto.Key.decode(e,e.uint32());break}case 10:{d.wipeKey=$root.proto.Key.decode(e,e.uint32());break}case 11:{d.supplyKey=$root.proto.Key.decode(e,e.uint32());break}case 12:{d.defaultFreezeStatus=e.int32();break}case 13:{d.defaultKycStatus=e.int32();break}case 14:{d.deleted=e.bool();break}case 15:{d.autoRenewAccount=$root.proto.AccountID.decode(e,e.uint32());break}case 16:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 17:{d.expiry=$root.proto.Timestamp.decode(e,e.uint32());break}case 18:{d.memo=e.string();break}case 19:{d.tokenType=e.int32();break}case 20:{d.supplyType=e.int32();break}case 21:{d.maxSupply=e.int64();break}case 22:{d.feeScheduleKey=$root.proto.Key.decode(e,e.uint32());break}case 23:{d.customFees&&d.customFees.length||(d.customFees=[]),d.customFees.push($root.proto.CustomFee.decode(e,e.uint32()));break}case 24:{d.pauseKey=$root.proto.Key.decode(e,e.uint32());break}case 25:{d.pauseStatus=e.int32();break}case 26:{d.ledgerId=e.bytes();break}case 27:{d.metadata=e.bytes();break}case 28:{d.metadataKey=$root.proto.Key.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenInfo\"},e}(),TokenGetInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.tokenInfo=$root.proto.TokenInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetInfoResponse\"},e}(),ScheduleGetInfoQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.scheduleID=$root.proto.ScheduleID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ScheduleGetInfoQuery\"},e}(),ScheduleInfo:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.scheduleID=$root.proto.ScheduleID.decode(e,e.uint32());break}case 2:{d.deletionTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 3:{d.executionTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 4:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 5:{d.scheduledTransactionBody=$root.proto.SchedulableTransactionBody.decode(e,e.uint32());break}case 6:{d.memo=e.string();break}case 7:{d.adminKey=$root.proto.Key.decode(e,e.uint32());break}case 8:{d.signers=$root.proto.KeyList.decode(e,e.uint32());break}case 9:{d.creatorAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 10:{d.payerAccountID=$root.proto.AccountID.decode(e,e.uint32());break}case 11:{d.scheduledTransactionID=$root.proto.TransactionID.decode(e,e.uint32());break}case 12:{d.ledgerId=e.bytes();break}case 13:{d.waitForExpiry=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ScheduleInfo\"},e}(),ScheduleGetInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.scheduleInfo=$root.proto.ScheduleInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ScheduleGetInfoResponse\"},e}(),TokenGetAccountNftInfosQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.start=e.int64();break}case 4:{d.end=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetAccountNftInfosQuery\"},e}(),TokenGetAccountNftInfosResponse:function(){function e(e){if(this.nfts=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.nfts&&d.nfts.length||(d.nfts=[]),d.nfts.push($root.proto.TokenNftInfo.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetAccountNftInfosResponse\"},e}(),TokenGetNftInfoQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.nftID=$root.proto.NftID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetNftInfoQuery\"},e}(),TokenNftInfo:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nftID=$root.proto.NftID.decode(e,e.uint32());break}case 2:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.creationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 4:{d.metadata=e.bytes();break}case 5:{d.ledgerId=e.bytes();break}case 6:{d.spenderId=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenNftInfo\"},e}(),TokenGetNftInfoResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.nft=$root.proto.TokenNftInfo.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetNftInfoResponse\"},e}(),TokenGetNftInfosQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.tokenID=$root.proto.TokenID.decode(e,e.uint32());break}case 3:{d.start=e.int64();break}case 4:{d.end=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetNftInfosQuery\"},e}(),TokenGetNftInfosResponse:function(){function e(e){if(this.nfts=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.tokenID=$root.proto.TokenID.decode(e,e.uint32());break}case 3:{d.nfts&&d.nfts.length||(d.nfts=[]),d.nfts.push($root.proto.TokenNftInfo.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenGetNftInfosResponse\"},e}(),GetAccountDetailsQuery:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.QueryHeader.decode(e,e.uint32());break}case 2:{d.accountId=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GetAccountDetailsQuery\"},e}(),GetAccountDetailsResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.header=$root.proto.ResponseHeader.decode(e,e.uint32());break}case 2:{d.accountDetails=$root.proto.GetAccountDetailsResponse.AccountDetails.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GetAccountDetailsResponse\"},e.AccountDetails=function(){function e(e){if(this.tokenRelationships=[],this.grantedCryptoAllowances=[],this.grantedNftAllowances=[],this.grantedTokenAllowances=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountId=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.contractAccountId=e.string();break}case 3:{d.deleted=e.bool();break}case 4:{d.proxyAccountId=$root.proto.AccountID.decode(e,e.uint32());break}case 5:{d.proxyReceived=e.int64();break}case 6:{d.key=$root.proto.Key.decode(e,e.uint32());break}case 7:{d.balance=e.uint64();break}case 8:{d.receiverSigRequired=e.bool();break}case 9:{d.expirationTime=$root.proto.Timestamp.decode(e,e.uint32());break}case 10:{d.autoRenewPeriod=$root.proto.Duration.decode(e,e.uint32());break}case 11:{d.tokenRelationships&&d.tokenRelationships.length||(d.tokenRelationships=[]),d.tokenRelationships.push($root.proto.TokenRelationship.decode(e,e.uint32()));break}case 12:{d.memo=e.string();break}case 13:{d.ownedNfts=e.int64();break}case 14:{d.maxAutomaticTokenAssociations=e.int32();break}case 15:{d.alias=e.bytes();break}case 16:{d.ledgerId=e.bytes();break}case 17:{d.grantedCryptoAllowances&&d.grantedCryptoAllowances.length||(d.grantedCryptoAllowances=[]),d.grantedCryptoAllowances.push($root.proto.GrantedCryptoAllowance.decode(e,e.uint32()));break}case 18:{d.grantedNftAllowances&&d.grantedNftAllowances.length||(d.grantedNftAllowances=[]),d.grantedNftAllowances.push($root.proto.GrantedNftAllowance.decode(e,e.uint32()));break}case 19:{d.grantedTokenAllowances&&d.grantedTokenAllowances.length||(d.grantedTokenAllowances=[]),d.grantedTokenAllowances.push($root.proto.GrantedTokenAllowance.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GetAccountDetailsResponse.AccountDetails\"},e}(),e}(),GrantedCryptoAllowance:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.spender=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.amount=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GrantedCryptoAllowance\"},e}(),GrantedNftAllowance:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.spender=$root.proto.AccountID.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GrantedNftAllowance\"},e}(),GrantedTokenAllowance:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.spender=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.amount=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.GrantedTokenAllowance\"},e}(),Response:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.getByKey=$root.proto.GetByKeyResponse.decode(e,e.uint32());break}case 2:{d.getBySolidityID=$root.proto.GetBySolidityIDResponse.decode(e,e.uint32());break}case 3:{d.contractCallLocal=$root.proto.ContractCallLocalResponse.decode(e,e.uint32());break}case 5:{d.contractGetBytecodeResponse=$root.proto.ContractGetBytecodeResponse.decode(e,e.uint32());break}case 4:{d.contractGetInfo=$root.proto.ContractGetInfoResponse.decode(e,e.uint32());break}case 6:{d.contractGetRecordsResponse=$root.proto.ContractGetRecordsResponse.decode(e,e.uint32());break}case 7:{d.cryptogetAccountBalance=$root.proto.CryptoGetAccountBalanceResponse.decode(e,e.uint32());break}case 8:{d.cryptoGetAccountRecords=$root.proto.CryptoGetAccountRecordsResponse.decode(e,e.uint32());break}case 9:{d.cryptoGetInfo=$root.proto.CryptoGetInfoResponse.decode(e,e.uint32());break}case 10:{d.cryptoGetLiveHash=$root.proto.CryptoGetLiveHashResponse.decode(e,e.uint32());break}case 11:{d.cryptoGetProxyStakers=$root.proto.CryptoGetStakersResponse.decode(e,e.uint32());break}case 12:{d.fileGetContents=$root.proto.FileGetContentsResponse.decode(e,e.uint32());break}case 13:{d.fileGetInfo=$root.proto.FileGetInfoResponse.decode(e,e.uint32());break}case 14:{d.transactionGetReceipt=$root.proto.TransactionGetReceiptResponse.decode(e,e.uint32());break}case 15:{d.transactionGetRecord=$root.proto.TransactionGetRecordResponse.decode(e,e.uint32());break}case 16:{d.transactionGetFastRecord=$root.proto.TransactionGetFastRecordResponse.decode(e,e.uint32());break}case 150:{d.consensusGetTopicInfo=$root.proto.ConsensusGetTopicInfoResponse.decode(e,e.uint32());break}case 151:{d.networkGetVersionInfo=$root.proto.NetworkGetVersionInfoResponse.decode(e,e.uint32());break}case 152:{d.tokenGetInfo=$root.proto.TokenGetInfoResponse.decode(e,e.uint32());break}case 153:{d.scheduleGetInfo=$root.proto.ScheduleGetInfoResponse.decode(e,e.uint32());break}case 154:{d.tokenGetAccountNftInfos=$root.proto.TokenGetAccountNftInfosResponse.decode(e,e.uint32());break}case 155:{d.tokenGetNftInfo=$root.proto.TokenGetNftInfoResponse.decode(e,e.uint32());break}case 156:{d.tokenGetNftInfos=$root.proto.TokenGetNftInfosResponse.decode(e,e.uint32());break}case 157:{d.networkGetExecutionTime=$root.proto.NetworkGetExecutionTimeResponse.decode(e,e.uint32());break}case 158:{d.accountDetails=$root.proto.GetAccountDetailsResponse.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.Response\"},e}(),TransactionResponse:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.nodeTransactionPrecheckCode=e.int32();break}case 2:{d.cost=e.uint64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionResponse\"},e}(),ConsensusService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.createTopic=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"createTopic\"}),Object.defineProperty(e.prototype.updateTopic=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateTopic\"}),Object.defineProperty(e.prototype.deleteTopic=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteTopic\"}),Object.defineProperty(e.prototype.getTopicInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getTopicInfo\"}),Object.defineProperty(e.prototype.submitMessage=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"submitMessage\"}),e}(),CryptoService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.createAccount=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"createAccount\"}),Object.defineProperty(e.prototype.updateAccount=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateAccount\"}),Object.defineProperty(e.prototype.cryptoTransfer=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"cryptoTransfer\"}),Object.defineProperty(e.prototype.cryptoDelete=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"cryptoDelete\"}),Object.defineProperty(e.prototype.approveAllowances=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"approveAllowances\"}),Object.defineProperty(e.prototype.deleteAllowances=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteAllowances\"}),Object.defineProperty(e.prototype.addLiveHash=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"addLiveHash\"}),Object.defineProperty(e.prototype.deleteLiveHash=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteLiveHash\"}),Object.defineProperty(e.prototype.getLiveHash=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getLiveHash\"}),Object.defineProperty(e.prototype.getAccountRecords=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getAccountRecords\"}),Object.defineProperty(e.prototype.cryptoGetBalance=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"cryptoGetBalance\"}),Object.defineProperty(e.prototype.getAccountInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getAccountInfo\"}),Object.defineProperty(e.prototype.getTransactionReceipts=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getTransactionReceipts\"}),Object.defineProperty(e.prototype.getFastTransactionRecord=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getFastTransactionRecord\"}),Object.defineProperty(e.prototype.getTxRecordByTxID=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getTxRecordByTxID\"}),Object.defineProperty(e.prototype.getStakersByAccountID=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getStakersByAccountID\"}),e}(),FileService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.createFile=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"createFile\"}),Object.defineProperty(e.prototype.updateFile=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateFile\"}),Object.defineProperty(e.prototype.deleteFile=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteFile\"}),Object.defineProperty(e.prototype.appendContent=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"appendContent\"}),Object.defineProperty(e.prototype.getFileContent=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getFileContent\"}),Object.defineProperty(e.prototype.getFileInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getFileInfo\"}),Object.defineProperty(e.prototype.systemDelete=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"systemDelete\"}),Object.defineProperty(e.prototype.systemUndelete=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"systemUndelete\"}),e}(),FreezeService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.freeze=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"freeze\"}),e}(),NetworkService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.getVersionInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getVersionInfo\"}),Object.defineProperty(e.prototype.getExecutionTime=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getExecutionTime\"}),Object.defineProperty(e.prototype.uncheckedSubmit=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"uncheckedSubmit\"}),Object.defineProperty(e.prototype.getAccountDetails=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getAccountDetails\"}),e}(),ScheduleService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.createSchedule=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"createSchedule\"}),Object.defineProperty(e.prototype.signSchedule=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"signSchedule\"}),Object.defineProperty(e.prototype.deleteSchedule=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteSchedule\"}),Object.defineProperty(e.prototype.getScheduleInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getScheduleInfo\"}),e}(),SmartContractService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.createContract=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"createContract\"}),Object.defineProperty(e.prototype.updateContract=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateContract\"}),Object.defineProperty(e.prototype.contractCallMethod=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"contractCallMethod\"}),Object.defineProperty(e.prototype.getContractInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getContractInfo\"}),Object.defineProperty(e.prototype.contractCallLocalMethod=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"contractCallLocalMethod\"}),Object.defineProperty(e.prototype.contractGetBytecode=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"ContractGetBytecode\"}),Object.defineProperty(e.prototype.getBySolidityID=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getBySolidityID\"}),Object.defineProperty(e.prototype.getTxRecordByContractID=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getTxRecordByContractID\"}),Object.defineProperty(e.prototype.deleteContract=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteContract\"}),Object.defineProperty(e.prototype.systemDelete=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"systemDelete\"}),Object.defineProperty(e.prototype.systemUndelete=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"systemUndelete\"}),Object.defineProperty(e.prototype.callEthereum=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"callEthereum\"}),e}(),ThrottleGroup:function(){function e(e){if(this.operations=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{if(d.operations&&d.operations.length||(d.operations=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.name=e.string();break}case 2:{d.burstPeriodMs=e.uint64();break}case 3:{d.throttleGroups&&d.throttleGroups.length||(d.throttleGroups=[]),d.throttleGroups.push($root.proto.ThrottleGroup.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ThrottleBucket\"},e}(),ThrottleDefinitions:function(){function e(e){if(this.throttleBuckets=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.throttleBuckets&&d.throttleBuckets.length||(d.throttleBuckets=[]),d.throttleBuckets.push($root.proto.ThrottleBucket.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ThrottleDefinitions\"},e}(),TokenService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.createToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"createToken\"}),Object.defineProperty(e.prototype.updateToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateToken\"}),Object.defineProperty(e.prototype.mintToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"mintToken\"}),Object.defineProperty(e.prototype.burnToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"burnToken\"}),Object.defineProperty(e.prototype.deleteToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"deleteToken\"}),Object.defineProperty(e.prototype.wipeTokenAccount=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"wipeTokenAccount\"}),Object.defineProperty(e.prototype.freezeTokenAccount=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"freezeTokenAccount\"}),Object.defineProperty(e.prototype.unfreezeTokenAccount=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"unfreezeTokenAccount\"}),Object.defineProperty(e.prototype.grantKycToTokenAccount=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"grantKycToTokenAccount\"}),Object.defineProperty(e.prototype.revokeKycFromTokenAccount=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"revokeKycFromTokenAccount\"}),Object.defineProperty(e.prototype.associateTokens=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"associateTokens\"}),Object.defineProperty(e.prototype.dissociateTokens=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"dissociateTokens\"}),Object.defineProperty(e.prototype.updateTokenFeeSchedule=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateTokenFeeSchedule\"}),Object.defineProperty(e.prototype.getTokenInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getTokenInfo\"}),Object.defineProperty(e.prototype.getAccountNftInfos=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getAccountNftInfos\"}),Object.defineProperty(e.prototype.getTokenNftInfo=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getTokenNftInfo\"}),Object.defineProperty(e.prototype.getTokenNftInfos=function t(e,o){return this.rpcCall(t,$root.proto.Query,$root.proto.Response,e,o)},\"name\",{value:\"getTokenNftInfos\"}),Object.defineProperty(e.prototype.pauseToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"pauseToken\"}),Object.defineProperty(e.prototype.unpauseToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"unpauseToken\"}),Object.defineProperty(e.prototype.updateNfts=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"updateNfts\"}),Object.defineProperty(e.prototype.rejectToken=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"rejectToken\"}),Object.defineProperty(e.prototype.airdropTokens=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"airdropTokens\"}),Object.defineProperty(e.prototype.cancelAirdrop=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"cancelAirdrop\"}),Object.defineProperty(e.prototype.claimAirdrop=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"claimAirdrop\"}),e}(),SignedTransaction:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.bodyBytes=e.bytes();break}case 2:{d.sigMap=$root.proto.SignatureMap.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SignedTransaction\"},e}(),UtilService:function(){function e(e,o,t){$protobuf.rpc.Service.call(this,e,o,t)}return(e.prototype=Object.create($protobuf.rpc.Service.prototype)).constructor=e,e.create=function(e,o,t){return new this(e,o,t)},Object.defineProperty(e.prototype.prng=function t(e,o){return this.rpcCall(t,$root.proto.Transaction,$root.proto.TransactionResponse,e,o)},\"name\",{value:\"prng\"}),e}(),TokenUnitBalance:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.tokenId=$root.proto.TokenID.decode(e,e.uint32());break}case 2:{d.balance=e.uint64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TokenUnitBalance\"},e}(),SingleAccountBalances:function(){function e(e){if(this.tokenUnitBalances=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.accountID=$root.proto.AccountID.decode(e,e.uint32());break}case 2:{d.hbarBalance=e.uint64();break}case 3:{d.tokenUnitBalances&&d.tokenUnitBalances.length||(d.tokenUnitBalances=[]),d.tokenUnitBalances.push($root.proto.TokenUnitBalance.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SingleAccountBalances\"},e}(),AllAccountBalances:function(){function e(e){if(this.allAccounts=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.consensusTimestamp=$root.proto.Timestamp.decode(e,e.uint32());break}case 2:{d.allAccounts&&d.allAccounts.length||(d.allAccounts=[]),d.allAccounts.push($root.proto.SingleAccountBalances.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.AllAccountBalances\"},e}(),ContractActions:function(){function e(e){if(this.contractActions=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractActions&&d.contractActions.length||(d.contractActions=[]),d.contractActions.push($root.proto.ContractAction.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractActions\"},e}(),ContractActionType:function(){const e={},o=Object.create(e);return o[e[0]=\"NO_ACTION\"]=0,o[e[1]=\"CALL\"]=1,o[e[2]=\"CREATE\"]=2,o[e[3]=\"PRECOMPILE\"]=3,o[e[4]=\"SYSTEM\"]=4,o}(),CallOperationType:function(){const e={},o=Object.create(e);return o[e[0]=\"OP_UNKNOWN\"]=0,o[e[1]=\"OP_CALL\"]=1,o[e[2]=\"OP_CALLCODE\"]=2,o[e[3]=\"OP_DELEGATECALL\"]=3,o[e[4]=\"OP_STATICCALL\"]=4,o[e[5]=\"OP_CREATE\"]=5,o[e[6]=\"OP_CREATE2\"]=6,o}(),ContractAction:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.callType=e.int32();break}case 2:{d.callingAccount=$root.proto.AccountID.decode(e,e.uint32());break}case 3:{d.callingContract=$root.proto.ContractID.decode(e,e.uint32());break}case 4:{d.gas=e.int64();break}case 5:{d.input=e.bytes();break}case 6:{d.recipientAccount=$root.proto.AccountID.decode(e,e.uint32());break}case 7:{d.recipientContract=$root.proto.ContractID.decode(e,e.uint32());break}case 8:{d.targetedAddress=e.bytes();break}case 9:{d.value=e.int64();break}case 10:{d.gasUsed=e.int64();break}case 11:{d.output=e.bytes();break}case 12:{d.revertReason=e.bytes();break}case 13:{d.error=e.bytes();break}case 14:{d.callDepth=e.int32();break}case 15:{d.callOperationType=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractAction\"},e}(),ContractBytecode:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractId=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.initcode=e.bytes();break}case 3:{d.runtimeBytecode=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractBytecode\"},e}(),ContractStateChanges:function(){function e(e){if(this.contractStateChanges=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractStateChanges&&d.contractStateChanges.length||(d.contractStateChanges=[]),d.contractStateChanges.push($root.proto.ContractStateChange.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractStateChanges\"},e}(),ContractStateChange:function(){function e(e){if(this.storageChanges=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.contractId=$root.proto.ContractID.decode(e,e.uint32());break}case 2:{d.storageChanges&&d.storageChanges.length||(d.storageChanges=[]),d.storageChanges.push($root.proto.StorageChange.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.ContractStateChange\"},e}(),StorageChange:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.slot=e.bytes();break}case 2:{d.valueRead=e.bytes();break}case 3:{d.valueWritten=$root.google.protobuf.BytesValue.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.StorageChange\"},e}(),HashAlgorithm:function(){const e={},o=Object.create(e);return o[e[0]=\"HASH_ALGORITHM_UNKNOWN\"]=0,o[e[1]=\"SHA_384\"]=1,o}(),HashObject:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.algorithm=e.int32();break}case 2:{d.length=e.int32();break}case 3:{d.hash=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.HashObject\"},e}(),RecordStreamFile:function(){function e(e){if(this.recordStreamItems=[],this.sidecars=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.hapiProtoVersion=$root.proto.SemanticVersion.decode(e,e.uint32());break}case 2:{d.startObjectRunningHash=$root.proto.HashObject.decode(e,e.uint32());break}case 3:{d.recordStreamItems&&d.recordStreamItems.length||(d.recordStreamItems=[]),d.recordStreamItems.push($root.proto.RecordStreamItem.decode(e,e.uint32()));break}case 4:{d.endObjectRunningHash=$root.proto.HashObject.decode(e,e.uint32());break}case 5:{d.blockNumber=e.int64();break}case 6:{d.sidecars&&d.sidecars.length||(d.sidecars=[]),d.sidecars.push($root.proto.SidecarMetadata.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.RecordStreamFile\"},e}(),RecordStreamItem:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.transaction=$root.proto.Transaction.decode(e,e.uint32());break}case 2:{d.record=$root.proto.TransactionRecord.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.RecordStreamItem\"},e}(),SidecarMetadata:function(){function e(e){if(this.types=[],e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.hash=$root.proto.HashObject.decode(e,e.uint32());break}case 2:{d.id=e.int32();break}case 3:{if(d.types&&d.types.length||(d.types=[]),2==(7&i))for(var a=e.uint32()+e.pos;e.pos>>3){case 1:{d.sidecarRecords&&d.sidecarRecords.length||(d.sidecarRecords=[]),d.sidecarRecords.push($root.proto.TransactionSidecarRecord.decode(e,e.uint32()));break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SidecarFile\"},e}(),TransactionSidecarRecord:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.consensusTimestamp=$root.proto.Timestamp.decode(e,e.uint32());break}case 2:{d.migration=e.bool();break}case 3:{d.stateChanges=$root.proto.ContractStateChanges.decode(e,e.uint32());break}case 4:{d.actions=$root.proto.ContractActions.decode(e,e.uint32());break}case 5:{d.bytecode=$root.proto.ContractBytecode.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.TransactionSidecarRecord\"},e}(),SignatureFile:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.fileSignature=$root.proto.SignatureObject.decode(e,e.uint32());break}case 2:{d.metadataSignature=$root.proto.SignatureObject.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SignatureFile\"},e}(),SignatureObject:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.type=e.int32();break}case 2:{d.length=e.int32();break}case 3:{d.checksum=e.int32();break}case 4:{d.signature=e.bytes();break}case 5:{d.hashObject=$root.proto.HashObject.decode(e,e.uint32());break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/proto.SignatureObject\"},e}(),SignatureType:function(){const e={},o=Object.create(e);return o[e[0]=\"SIGNATURE_TYPE_UNKNOWN\"]=0,o[e[1]=\"SHA_384_WITH_RSA\"]=1,o}()};return e})();exports.proto=proto;const google=$root.google=(()=>{const e={protobuf:function(){const e={DoubleValue:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.double();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.DoubleValue\"},e}(),FloatValue:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.float();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.FloatValue\"},e}(),Int64Value:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.int64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.Int64Value\"},e}(),UInt64Value:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.uint64();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.UInt64Value\"},e}(),Int32Value:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.int32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.Int32Value\"},e}(),UInt32Value:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.uint32();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.UInt32Value\"},e}(),BoolValue:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.bool();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.BoolValue\"},e}(),StringValue:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.string();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.StringValue\"},e}(),BytesValue:function(){function e(e){if(e)for(var o=Object.keys(e),t=0;t>>3){case 1:{d.value=e.bytes();break}default:e.skipType(7&i)}return d},e.getTypeUrl=function(e){return void 0===e&&(e=\"type.googleapis.com\"),e+\"/google.protobuf.BytesValue\"},e}()};return e}()};return e})();exports.google=google;","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n ])), {}).exports;\r\n} catch (e) {\r\n // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations. For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative). Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n if (isNaN(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n if (typeof val === 'number')\r\n return fromNumber(val, unsigned);\r\n if (typeof val === 'string')\r\n return fromString(val, unsigned);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = wasm.mul(this.low,\r\n this.high,\r\n multiplier.low,\r\n multiplier.high);\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n // guard against signed division overflow: the largest\r\n // negative number / -1 would be 1 larger than the largest\r\n // positive number, due to two's complement.\r\n if (!this.unsigned &&\r\n this.high === -0x80000000 &&\r\n divisor.low === -1 && divisor.high === -1) {\r\n // be consistent with non-wasm code path\r\n return this;\r\n }\r\n var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n\r\n // use wasm support if present\r\n if (wasm) {\r\n var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n this.low,\r\n this.high,\r\n divisor.low,\r\n divisor.high\r\n );\r\n return fromBits(low, wasm.get_high(), this.unsigned);\r\n }\r\n\r\n return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo >>> 16 & 0xff,\r\n lo >>> 24 ,\r\n hi & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi >>> 16 & 0xff,\r\n hi >>> 24\r\n ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n hi >>> 24 ,\r\n hi >>> 16 & 0xff,\r\n hi >>> 8 & 0xff,\r\n hi & 0xff,\r\n lo >>> 24 ,\r\n lo >>> 16 & 0xff,\r\n lo >>> 8 & 0xff,\r\n lo & 0xff\r\n ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n return new Long(\r\n bytes[0] |\r\n bytes[1] << 8 |\r\n bytes[2] << 16 |\r\n bytes[3] << 24,\r\n bytes[4] |\r\n bytes[5] << 8 |\r\n bytes[6] << 16 |\r\n bytes[7] << 24,\r\n unsigned\r\n );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n return new Long(\r\n bytes[4] << 24 |\r\n bytes[5] << 16 |\r\n bytes[6] << 8 |\r\n bytes[7],\r\n bytes[0] << 24 |\r\n bytes[1] << 16 |\r\n bytes[2] << 8 |\r\n bytes[3],\r\n unsigned\r\n );\r\n};\r\n","\"use strict\";\n/**\n * Returns a Promise that resolves to the value of window.ethereum if it is\n * set within the given timeout, or null.\n * The Promise will not reject, but an error will be thrown if invalid options\n * are provided.\n *\n * @param options - Options bag.\n * @param options.mustBeMetaMask - Whether to only look for MetaMask providers.\n * Default: false\n * @param options.silent - Whether to silence console errors. Does not affect\n * thrown errors. Default: false\n * @param options.timeout - Milliseconds to wait for 'ethereum#initialized' to\n * be dispatched. Default: 3000\n * @returns A Promise that resolves with the Provider if it is detected within\n * given timeout, otherwise null.\n */\nfunction detectEthereumProvider({ mustBeMetaMask = false, silent = false, timeout = 3000, } = {}) {\n _validateInputs();\n let handled = false;\n return new Promise((resolve) => {\n if (window.ethereum) {\n handleEthereum();\n }\n else {\n window.addEventListener('ethereum#initialized', handleEthereum, { once: true });\n setTimeout(() => {\n handleEthereum();\n }, timeout);\n }\n function handleEthereum() {\n if (handled) {\n return;\n }\n handled = true;\n window.removeEventListener('ethereum#initialized', handleEthereum);\n const { ethereum } = window;\n if (ethereum && (!mustBeMetaMask || ethereum.isMetaMask)) {\n resolve(ethereum);\n }\n else {\n const message = mustBeMetaMask && ethereum\n ? 'Non-MetaMask window.ethereum detected.'\n : 'Unable to detect window.ethereum.';\n !silent && console.error('@metamask/detect-provider:', message);\n resolve(null);\n }\n }\n });\n function _validateInputs() {\n if (typeof mustBeMetaMask !== 'boolean') {\n throw new Error(`@metamask/detect-provider: Expected option 'mustBeMetaMask' to be a boolean.`);\n }\n if (typeof silent !== 'boolean') {\n throw new Error(`@metamask/detect-provider: Expected option 'silent' to be a boolean.`);\n }\n if (typeof timeout !== 'number') {\n throw new Error(`@metamask/detect-provider: Expected option 'timeout' to be a number.`);\n }\n }\n}\nmodule.exports = detectEthereumProvider;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQVlBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFNBQVMsc0JBQXNCLENBQUMsRUFDOUIsY0FBYyxHQUFHLEtBQUssRUFDdEIsTUFBTSxHQUFHLEtBQUssRUFDZCxPQUFPLEdBQUcsSUFBSSxHQUNmLEdBQUcsRUFBRTtJQUVKLGVBQWUsRUFBRSxDQUFDO0lBRWxCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVwQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBRW5CLGNBQWMsRUFBRSxDQUFDO1NBRWxCO2FBQU07WUFFTCxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQ2YsQ0FBQztZQUVGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2I7UUFFRCxTQUFTLGNBQWM7WUFFckIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsT0FBTzthQUNSO1lBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVmLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUVuRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBRTVCLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQyxjQUFjLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN4RCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbkI7aUJBQU07Z0JBRUwsTUFBTSxPQUFPLEdBQUcsY0FBYyxJQUFJLFFBQVE7b0JBQ3hDLENBQUMsQ0FBQyx3Q0FBd0M7b0JBQzFDLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQztnQkFFeEMsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2Y7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLGVBQWU7UUFDdEIsSUFBSSxPQUFPLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1NBQ2pHO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1NBQ3pGO1FBQ0QsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1NBQ3pGO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFsRkQsaUJBQVMsc0JBQXNCLENBQUMifQ==","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar SecretType_1 = require(\"../models/SecretType\");\nvar Api = /** @class */ (function () {\n function Api(baseURL, tokenProvider) {\n var _this = this;\n ////////////\n // Chains //\n ////////////\n this.getAvailableSecretTypes = function () {\n var response = _this.fetchGet(\"chains\");\n return _this.processResponse(response);\n };\n ////////////\n // Wallet //\n ////////////\n this.getWallets = function (params) {\n params = (params && Utils_1.default.removeNulls(params)) || {};\n var response = _this.fetchGet('wallets', params);\n return _this.processResponse(response);\n };\n this.getWallet = function (walletId) {\n var response = _this.fetchGet(\"wallets/\" + walletId);\n return _this.processResponse(response);\n };\n this.getBalance = function (walletId) {\n var response = _this.fetchGet(\"wallets/\" + walletId + \"/balance\");\n return _this.processResponse(response);\n };\n this.getBalanceByAddress = function (secretType, walletAddress) {\n var response = _this.fetchGet(\"wallets/\" + secretType + \"/\" + walletAddress + \"/balance\");\n return _this.processResponse(response);\n };\n this.getTokenBalances = function (walletId) {\n var response = _this.fetchGet(\"wallets/\" + walletId + \"/balance/tokens\");\n return _this.processResponse(response);\n };\n this.getTokenBalancesByAddress = function (secretType, walletAddress) {\n var response = _this.fetchGet(\"wallets/\" + secretType + \"/\" + walletAddress + \"/balance/tokens\");\n return _this.processResponse(response);\n };\n this.getTokenBalance = function (walletId, tokenAddress) {\n var response = _this.fetchGet(\"wallets/\" + walletId + \"/balance/tokens/\" + tokenAddress);\n return _this.processResponse(response);\n };\n this.getTokenBalanceByAddress = function (secretType, walletAddress, tokenAddress) {\n var response = _this.fetchGet(\"wallets/\" + secretType + \"/\" + walletAddress + \"/balance/tokens/\" + tokenAddress);\n return _this.processResponse(response);\n };\n this.getNonfungibles = function (walletId) {\n var response = _this.fetchGet(\"wallets/\" + walletId + \"/nonfungibles\");\n return _this.processResponse(response);\n };\n this.getNonfungiblesByAddress = function (secretType, walletAddress) {\n var response = _this.fetchGet(\"wallets/\" + secretType + \"/\" + walletAddress + \"/nonfungibles\");\n return _this.processResponse(response);\n };\n this.getAllNonfungibles = function (secretTypes) {\n var queryParams = secretTypes && secretTypes.length > 0\n ? \"?\" + secretTypes.map(function (st) { return \"secretType=\" + st; }).join(\"&\")\n : \"\";\n var response = _this.fetchGet(\"wallets/nonfungibles\", queryParams);\n return _this.processResponse(response);\n };\n this.unlink = function (walletId) {\n var response = _this.fetchGet(\"wallets/\" + walletId + \"/link\");\n return _this.processResponse(response);\n };\n /////////////\n // Profile //\n /////////////\n this.getProfile = function () {\n var response = _this.fetchGet('profile');\n return _this.processResponse(response);\n };\n //////////////////\n // Transactions //\n //////////////////\n this.getPendingTransactions = function () {\n var response = _this.fetchGet('transactions');\n return _this.processResponse(response);\n };\n this.deleteTransaction = function (transactionId) {\n var response = _this.fetchDelete(\"transactions/\" + transactionId);\n return _this.processResponse(response);\n };\n this.getTransactionStatus = function (transactionHash, secretType) {\n var response = _this.fetchGet(\"transactions/\" + secretType + \"/\" + transactionHash + \"/status\");\n return _this.mapTransactionData(secretType, response);\n };\n this.mapTransactionData = function (secretType, response) {\n switch (secretType) {\n case SecretType_1.SecretType.AVAC || SecretType_1.SecretType.BSC || SecretType_1.SecretType.ETHEREUM || SecretType_1.SecretType.GOCHAIN || SecretType_1.SecretType.MATIC:\n return _this.processResponse(response);\n case SecretType_1.SecretType.HEDERA:\n return _this.processResponse(response);\n case SecretType_1.SecretType.TRON:\n return _this.processResponse(response);\n case SecretType_1.SecretType.VECHAIN:\n return _this.processResponse(response);\n default:\n return _this.processResponse(response);\n }\n };\n ///////////////\n // Contracts //\n ///////////////\n this.readContract = function (contractReadRequest) {\n var response = _this.fetchPost('contracts/read', contractReadRequest);\n return _this.processResponse(response);\n };\n this._baseUrl = baseURL.endsWith('/') ? baseURL.substring(0, baseURL.length - 1) : baseURL;\n this._tokenProvider = tokenProvider;\n }\n Api.prototype.fetchGet = function (url, queryParams) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var bearerToken;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n bearerToken = this._tokenProvider();\n if (!bearerToken) {\n throw new Error('Not authenticated');\n }\n return [4 /*yield*/, fetch(this._baseUrl + \"/\" + url + \"?\" + new URLSearchParams(queryParams).toString(), {\n headers: { Authorization: \"Bearer \" + bearerToken }\n }).then(function (response) { return response.json(); }).then(function (data) { return data; })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Api.prototype.fetchPost = function (url, body) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var bearerToken;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n bearerToken = this._tokenProvider();\n if (!bearerToken) {\n throw new Error('Not authenticated');\n }\n return [4 /*yield*/, fetch(this._baseUrl + \"/\" + url, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { Authorization: \"Bearer \" + bearerToken }\n }).then(function (response) { return response.json(); }).then(function (data) { return data; })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Api.prototype.fetchDelete = function (url) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var bearerToken;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n bearerToken = this._tokenProvider();\n if (!bearerToken) {\n throw new Error('Not authenticated');\n }\n return [4 /*yield*/, fetch(this._baseUrl + \"/\" + url, {\n method: 'DELETE',\n headers: { Authorization: \"Bearer \" + bearerToken }\n }).then(function (response) { return response.json(); }).then(function (data) { return data; })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Api.prototype.processResponse = function (responsePromise) {\n return new Promise(function (resolve, reject) {\n responsePromise.then(function (response) {\n if (response.success) {\n if (response.result) {\n resolve(response.result);\n }\n else {\n resolve();\n }\n }\n else {\n reject(response.errors);\n }\n })\n .catch(function (error) {\n if (error.response && error.response.data) {\n reject(error.response.data.errors);\n }\n else if (error.message) {\n var code = error.message.indexOf('authenticat') >= 0 ? 'auth.error' : 'unknown.error';\n reject([{ code: code, message: error.message }]);\n }\n else {\n reject([{ code: 'unknown.error', message: 'An unknown error occured' }]);\n }\n });\n });\n };\n return Api;\n}());\nexports.Api = Api;\n//# sourceMappingURL=Api.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar GeneralPopup_1 = require(\"../popup/GeneralPopup\");\nvar PopupActions_1 = require(\"../popup/PopupActions\");\nvar Security_1 = require(\"./Security\");\nvar WindowMode_1 = require(\"../models/WindowMode\");\nvar Flows = /** @class */ (function () {\n function Flows(venlyConnect, clientId) {\n this.clientId = clientId;\n this.connect = venlyConnect;\n }\n Flows.prototype.authenticate = function (options) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var authOptions, loginResult;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n authOptions = tslib_1.__assign({}, options);\n authOptions.windowMode = authOptions.windowMode || this.connect.windowMode;\n return [4 /*yield*/, Security_1.Security.login(this.clientId, authOptions)];\n case 1:\n loginResult = _a.sent();\n return [2 /*return*/, this.connect._afterAuthenticationForFlowUse(loginResult)];\n }\n });\n });\n };\n Flows.prototype.manageWallets = function (chain, options) {\n var windowMode = options && options.windowMode || this.connect.windowMode;\n var useOverlayWithPopup = options && options.useOverlayWithPopup != undefined ? options.useOverlayWithPopup : this.connect.useOverlayWithPopup;\n if (windowMode === WindowMode_1.WindowMode.REDIRECT) {\n return this.manageWalletsRedirect(chain, options);\n }\n else {\n return this.manageWalletsPopup(chain, { useOverlay: useOverlayWithPopup });\n }\n };\n Flows.prototype.linkWallets = function (options) {\n var windowMode = options && options.windowMode || this.connect.windowMode;\n var useOverlayWithPopup = options && options.useOverlayWithPopup != undefined ? options.useOverlayWithPopup : this.connect.useOverlayWithPopup;\n if (windowMode === WindowMode_1.WindowMode.REDIRECT) {\n return this.linkWalletsRedirect(options);\n }\n else {\n return this.linkWalletsPopup({ useOverlay: useOverlayWithPopup });\n }\n };\n Flows.prototype.claimWallets = function (options) {\n var windowMode = options && options.windowMode || this.connect.windowMode;\n var useOverlayWithPopup = options && options.useOverlayWithPopup || this.connect.useOverlayWithPopup;\n if (windowMode === WindowMode_1.WindowMode.REDIRECT) {\n return this.claimWalletsRedirect(options);\n }\n else {\n return this.claimWalletsPopup({ useOverlay: useOverlayWithPopup });\n }\n };\n Flows.prototype.performKYC = function (options) {\n var windowMode = options && options.windowMode || this.connect.windowMode;\n var useOverlayWithPopup = options && options.useOverlayWithPopup != undefined ? options.useOverlayWithPopup : this.connect.useOverlayWithPopup;\n if (windowMode === WindowMode_1.WindowMode.REDIRECT) {\n return this.performKYCRedirect(options);\n }\n else {\n return this.performKYCPopup({ useOverlay: useOverlayWithPopup });\n }\n };\n Flows.prototype.getAccount = function (chain, options) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var loginResult, wallets, correlationId, authenticationOptions, result, popupResult, e_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n loginResult = {};\n wallets = [];\n correlationId = Utils_1.default.uuidv4();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 7, , 8]);\n authenticationOptions = { windowMode: WindowMode_1.WindowMode.POPUP, closePopup: false };\n if (options && options.idpHint) {\n authenticationOptions.idpHint = options.idpHint;\n }\n return [4 /*yield*/, Security_1.Security.login(this.clientId, authenticationOptions, correlationId)];\n case 2:\n loginResult = _a.sent();\n result = this.connect._afterAuthenticationForFlowUse(loginResult);\n if (!result.isAuthenticated) return [3 /*break*/, 6];\n return [4 /*yield*/, this.connect.api.getWallets({ secretType: chain.toUpperCase() })];\n case 3:\n wallets = _a.sent();\n if (!!(wallets && wallets.length > 0)) return [3 /*break*/, 6];\n return [4 /*yield*/, this.manageWallets(chain, { windowMode: WindowMode_1.WindowMode.POPUP })];\n case 4:\n popupResult = _a.sent();\n if (!(popupResult && popupResult.status === 'SUCCESS')) return [3 /*break*/, 6];\n return [4 /*yield*/, this.connect.api.getWallets({ secretType: chain.toUpperCase() })];\n case 5:\n wallets = _a.sent();\n _a.label = 6;\n case 6:\n if (!result.isAuthenticated || wallets.length === 0) {\n throw Error('Something went wrong.');\n }\n return [3 /*break*/, 8];\n case 7:\n e_1 = _a.sent();\n console.error(e_1);\n return [3 /*break*/, 8];\n case 8:\n if (Security_1.Security.hasPopupWindow()) {\n Security_1.Security.closePopupWindow();\n }\n return [2 /*return*/, {\n wallets: wallets,\n auth: loginResult.keycloak,\n isAuthenticated: loginResult.authenticated\n }];\n }\n });\n });\n };\n Flows.prototype.manageWalletsRedirect = function (chain, options) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/wallets/manage\", { chain: chain.toLowerCase() }, this.connect._bearerTokenProvider, options);\n return Promise.resolve();\n };\n Flows.prototype.manageWalletsPopup = function (chain, options) {\n return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.MANAGE_WALLETS, this.connect._bearerTokenProvider, { chain: chain.toLowerCase() }, options);\n };\n Flows.prototype.linkWalletsRedirect = function (options) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/wallets/link\", {}, this.connect._bearerTokenProvider, options);\n return Promise.resolve();\n };\n Flows.prototype.performKYCRedirect = function (options) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/verification/sessions\", {}, this.connect._bearerTokenProvider, options);\n return Promise.resolve();\n };\n Flows.prototype.linkWalletsPopup = function (options) {\n return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.LINK_WALLET, this.connect._bearerTokenProvider, undefined, options);\n };\n Flows.prototype.performKYCPopup = function (options) {\n return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.PERFORM_KYC, this.connect._bearerTokenProvider, undefined, options);\n };\n Flows.prototype.claimWalletsRedirect = function (options) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/wallets/claim\", {}, this.connect._bearerTokenProvider, options);\n return Promise.resolve();\n };\n Flows.prototype.claimWalletsPopup = function (options) {\n return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.CLAIM_WALLETS, this.connect._bearerTokenProvider, undefined, options);\n };\n return Flows;\n}());\nexports.Flows = Flows;\n//# sourceMappingURL=Flows.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar querystring_1 = tslib_1.__importDefault(require(\"querystring\"));\nvar WindowMode_1 = require(\"../models/WindowMode\");\nvar PopupWindowAsync_1 = require(\"../popup/PopupWindowAsync\");\nvar EventTypes_1 = require(\"../types/EventTypes\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar Security = /** @class */ (function () {\n function Security() {\n }\n Security.getConfig = function (clientId) {\n return {\n 'clientId': clientId,\n 'realm': 'Arkane',\n 'url': Utils_1.default.urls.login,\n 'ssl-required': 'external',\n 'public-client': 'true',\n };\n };\n Security.login = function (clientId, options, cid) {\n if (options && options.idpHint && (options.idpHint === 'twitter' || options.idpHint === 'facebook')) {\n options.idpHint = 'arkane-' + options.idpHint;\n }\n switch (options && options.windowMode) {\n case WindowMode_1.WindowMode.POPUP:\n return Security.loginPopup(clientId, !!cid ? cid : Utils_1.default.uuidv4(), options);\n default:\n return Security.loginRedirect(clientId, options);\n }\n };\n Security.loginRedirect = function (clientId, options) {\n var config = Security.getConfig(clientId);\n var loginOptions = {};\n if (options && options.idpHint) {\n loginOptions.idpHint = options.idpHint;\n }\n return this.keycloakLogin(config, options);\n };\n Security.loginPopup = function (clientId, cid, options) {\n var closePopup = options ? options.closePopup : true;\n return Promise.race([\n Security.initialiseAuthenticatedListener(clientId, EventTypes_1.EventTypes.AUTHENTICATE, cid, closePopup),\n Security.initialiseLoginPopup(clientId, cid, options),\n ]);\n };\n Security.checkAuthenticated = function (clientId, options) {\n if ((options && options.windowMode) === WindowMode_1.WindowMode.REDIRECT) {\n var initOptions = {\n onLoad: 'check-sso',\n checkLoginIframe: false,\n };\n if (options.redirectUri) {\n initOptions.redirectUri = options.redirectUri;\n }\n return Security.initKeycloak(Security.getConfig(clientId), initOptions);\n }\n else {\n var authenticatedPromise = Security.initialiseAuthenticatedListener(clientId, EventTypes_1.EventTypes.CHECK_AUTHENTICATED, Utils_1.default.uuidv4());\n Security.initialiseCheckAuthenticatedIFrame(clientId);\n return authenticatedPromise;\n }\n };\n Security.logout = function (auth) {\n var _this = this;\n if (auth.authenticated && auth.clientId) {\n return new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var params_1, searchParams, _a;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!auth.clientId) return [3 /*break*/, 3];\n params_1 = {\n client_id: auth.clientId,\n refresh_token: auth.refreshToken\n };\n searchParams = Object.keys(params_1).map(function (key) {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params_1[key]);\n }).join('&');\n return [4 /*yield*/, fetch(Utils_1.default.urls.login + '/realms/Arkane/protocol/openid-connect/logout', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\n },\n body: searchParams\n })];\n case 1:\n _b.sent();\n _a = Security;\n return [4 /*yield*/, Security.createLogoutListener(EventTypes_1.EventTypes.LOGOUT, auth, resolve, reject)];\n case 2:\n _a.logoutListener = _b.sent();\n window.addEventListener('message', Security.logoutListener);\n Security.initialiseLogoutIFrame(auth.clientId);\n _b.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n }); });\n }\n else {\n return Promise.resolve();\n }\n };\n Security.hasPopupWindow = function () {\n return !!this.popupWindow;\n };\n Security.closePopupWindow = function () {\n if (Security.popupWindow && !Security.popupWindow.closed) {\n Security.popupWindow.close();\n delete Security.popupWindow;\n }\n };\n Object.defineProperty(Security, \"checkAuthenticatedURI\", {\n get: function () {\n return Utils_1.default.urls.connect + \"/checkAuthenticated\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Security, \"authenticateURI\", {\n get: function () {\n return Utils_1.default.urls.connect + \"/authenticate\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Security, \"logoutURI\", {\n get: function () {\n return Utils_1.default.urls.connect + \"/logout\";\n },\n enumerable: true,\n configurable: true\n });\n Security.initialiseLoginPopup = function (clientId, cid, options) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var origin, url, kcIdpHint, _a;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n origin = window.location.href.replace(window.location.search, '');\n url = Security.authenticateURI + \"?\" + querystring_1.default.stringify({ clientId: clientId, origin: origin, env: Utils_1.default.rawEnvironment });\n if (options && options.idpHint) {\n kcIdpHint = options.idpHint;\n url += \"&\" + querystring_1.default.stringify({ kc_idp_hint: kcIdpHint });\n }\n _a = this;\n return [4 /*yield*/, PopupWindowAsync_1.PopupWindowAsync.openNew(url, cid, { useOverlay: false })];\n case 1:\n _a.popupWindow = _b.sent();\n return [2 /*return*/, Security.initialiseIsLoginPopupClosedInterval(cid)];\n }\n });\n });\n };\n Security.initialiseIsLoginPopupClosedInterval = function (cid) {\n return new Promise(function (resolve, reject) {\n Security.isLoginPopupClosedInterval = window.setInterval(function () {\n var popupWindow = Security.popupWindow;\n if (popupWindow && popupWindow.closed) {\n Security.clearIsLoginPopupClosedInterval();\n Security.cleanUp(EventTypes_1.EventTypes.AUTHENTICATE, cid);\n resolve({ authenticated: false });\n }\n }, 2000);\n });\n };\n Security.clearIsLoginPopupClosedInterval = function () {\n clearInterval(Security.isLoginPopupClosedInterval);\n delete Security.isLoginPopupClosedInterval;\n };\n Security.initialiseCheckAuthenticatedIFrame = function (clientId) {\n return this.initialiseIFrame(clientId, Security.AUTH_IFRAME_ID, Security.checkAuthenticatedURI);\n };\n Security.initialiseLogoutIFrame = function (clientId) {\n return this.initialiseIFrame(clientId, Security.LOGOUT_IFRAME_ID, Security.logoutURI);\n };\n Security.initialiseIFrame = function (clientId, iframeID, uri) {\n var iframe = document.getElementById(iframeID);\n var isIframeInBody = true;\n if (!iframe) {\n isIframeInBody = false;\n iframe = document.createElement('iframe');\n }\n var origin = window.location.href.replace(window.location.search, '');\n iframe.src = uri + \"?\" + querystring_1.default.stringify({ clientId: clientId, origin: origin, env: Utils_1.default.rawEnvironment });\n iframe.hidden = true;\n iframe.id = iframeID;\n iframe.setAttribute('style', 'display: none!important;');\n document.body.appendChild(iframe);\n if (!isIframeInBody) {\n document.body.appendChild(iframe);\n }\n return iframe;\n };\n Security.setUpdateTokenInterval = function () {\n var _this = this;\n if (Security.updateTokenInterval) {\n clearInterval(Security.updateTokenInterval);\n Security.updateTokenInterval = null;\n }\n Security.updateTokenInterval = setInterval(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n new Promise(function (resolve, reject) {\n if (Security.keycloak) {\n Security.keycloak.updateToken(70).then(function (refreshed) {\n resolve(refreshed);\n });\n }\n else {\n reject(false);\n }\n }).then(function (refreshed) {\n if (refreshed) {\n if (Security.onTokenUpdate && Security.keycloak.token) {\n Security.onTokenUpdate(Security.keycloak.token);\n }\n }\n }).catch(function () {\n console.error('failed to refresh token');\n clearInterval(Security.updateTokenInterval);\n Security.updateTokenInterval = null;\n });\n return [2 /*return*/];\n });\n }); }, 60000);\n };\n Security.keycloakLogin = function (config, loginOptions) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var Keycloak;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve().then(function () { return tslib_1.__importStar(require('keycloak-js')); })];\n case 1:\n Keycloak = _a.sent();\n Security.keycloak = Keycloak.default(config);\n return [2 /*return*/, new Promise(function (resolve, reject) {\n Security.keycloak\n .init({})\n .then(function () { return Security.keycloak\n .login(loginOptions)\n .then(function (authenticated) {\n if (authenticated) {\n Security.setUpdateTokenInterval();\n }\n resolve({\n keycloak: Security.keycloak,\n authenticated: authenticated,\n });\n })\n .catch(function (e) {\n reject(e);\n }); });\n })];\n }\n });\n });\n };\n Security.initKeycloak = function (config, initOptions) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var Keycloak;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve().then(function () { return tslib_1.__importStar(require('keycloak-js')); })];\n case 1:\n Keycloak = _a.sent();\n Security.keycloak = Keycloak.default(config);\n return [2 /*return*/, new Promise(function (resolve, reject) {\n Security.keycloak\n .init(initOptions)\n .then(function (authenticated) {\n if (authenticated) {\n Security.setUpdateTokenInterval();\n }\n resolve({\n keycloak: Security.keycloak,\n authenticated: authenticated,\n });\n })\n .catch(function (e) {\n reject(e);\n });\n })];\n }\n });\n });\n };\n Security.removeLoginState = function () {\n var url = window.location.href;\n var fragmentIndex = url.indexOf('#');\n if (fragmentIndex !== -1) {\n var newURL = url.substring(0, fragmentIndex);\n window.history.replaceState({}, '', newURL);\n }\n };\n Security.cleanUp = function (eventType, cid, closePopup) {\n if (closePopup === void 0) { closePopup = true; }\n if (Security.authenticatedListeners.has(eventType)) {\n window.removeEventListener('message', Security.authenticatedListeners.get(eventType));\n Security.authenticatedListeners.delete(eventType);\n }\n if (eventType === EventTypes_1.EventTypes.CHECK_AUTHENTICATED) {\n var iframe = document.getElementById(Security.AUTH_IFRAME_ID);\n if (iframe) {\n iframe.remove();\n }\n }\n else if (eventType === EventTypes_1.EventTypes.AUTHENTICATE) {\n if (closePopup) {\n if (Security.popupWindow && !Security.popupWindow.closed) {\n Security.popupWindow.close();\n }\n delete Security.popupWindow;\n }\n }\n };\n Security.authenticatedListeners = new Map();\n Security.AUTH_IFRAME_ID = 'venly-auth-iframe';\n Security.LOGOUT_IFRAME_ID = 'venly-logout-iframe';\n Security.THIRD_PARTY_COOKIES_DISABLED = 'Third party cookies are disabled';\n Security.initialiseAuthenticatedListener = function (clientId, eventType, cid, closePopup) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _this = this;\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var newListener = function (message) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var auth, keycloakResult, initOptions, loginResult, loginResult, e_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(message && message.origin === Utils_1.default.urls.connect)) return [3 /*break*/, 11];\n if (!(message.data && message.data.type === eventType)) return [3 /*break*/, 10];\n auth = message.data;\n if (Security.isLoginPopupClosedInterval) {\n Security.clearIsLoginPopupClosedInterval();\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 9, , 10]);\n if (!auth.success) return [3 /*break*/, 5];\n if (!auth.authenticated) return [3 /*break*/, 3];\n Security.cleanUp(eventType, cid, closePopup);\n keycloakResult = auth.keycloak;\n initOptions = {\n onLoad: 'check-sso',\n token: keycloakResult.token,\n refreshToken: keycloakResult.refreshToken,\n idToken: keycloakResult.idToken,\n timeSkew: keycloakResult.timeSkew,\n checkLoginIframe: false,\n };\n // Remove the login state from the URL when tokens are already present (the checkAuthenticated iframe already handled it)\n Security.removeLoginState();\n return [4 /*yield*/, Security.initKeycloak(Security.getConfig(clientId), initOptions)];\n case 2:\n loginResult = _a.sent();\n resolve({\n keycloak: loginResult.keycloak,\n authenticated: loginResult.authenticated,\n });\n return [3 /*break*/, 4];\n case 3:\n resolve({ authenticated: false });\n _a.label = 4;\n case 4: return [3 /*break*/, 8];\n case 5:\n if (!(auth.reason && auth.reason === Security.THIRD_PARTY_COOKIES_DISABLED)) return [3 /*break*/, 7];\n return [4 /*yield*/, Security.initKeycloak(Security.getConfig(clientId), { onLoad: 'check-sso', checkLoginIframe: false })];\n case 6:\n loginResult = _a.sent();\n resolve({\n keycloak: loginResult.keycloak,\n authenticated: loginResult.authenticated,\n });\n return [3 /*break*/, 8];\n case 7:\n reject({ error: auth.reason });\n _a.label = 8;\n case 8: return [3 /*break*/, 10];\n case 9:\n e_1 = _a.sent();\n reject({ error: e_1 });\n return [3 /*break*/, 10];\n case 10: return [2 /*return*/, message];\n case 11: return [2 /*return*/];\n }\n });\n }); };\n window.addEventListener('message', newListener);\n if (Security.authenticatedListeners.has(eventType)) {\n window.removeEventListener('message', Security.authenticatedListeners.get(eventType));\n }\n Security.authenticatedListeners.set(eventType, newListener);\n })];\n });\n });\n };\n Security.createLogoutListener = function (eventType, auth, resolve, reject) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, function (message) {\n if (message && message.origin === Utils_1.default.urls.connect && message.data && message.data.type === eventType) {\n if (auth.authenticated) {\n if (!message.data.authenticated) {\n auth.onAuthLogout && auth.onAuthLogout();\n resolve();\n }\n else {\n reject();\n }\n }\n else {\n resolve();\n }\n }\n }];\n });\n });\n };\n return Security;\n}());\nexports.Security = Security;\n//# sourceMappingURL=Security.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Security_1 = require(\"./Security\");\nvar Api_1 = require(\"../api/Api\");\nvar WindowMode_1 = require(\"../models/WindowMode\");\nvar Signer_1 = require(\"../signer/Signer\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar Flows_1 = require(\"./Flows\");\nvar VenlyConnect = /** @class */ (function () {\n function VenlyConnect(clientId, options) {\n var _this = this;\n this.clientId = clientId;\n this.signUsing = (options && options.signUsing) || WindowMode_1.WindowMode.POPUP;\n this.windowMode = (options && options.windowMode) || WindowMode_1.WindowMode.POPUP;\n this.useOverlayWithPopup = (options && options.useOverlayWithPopup != undefined) ? options.useOverlayWithPopup : true;\n Utils_1.default.rawEnvironment = options && options.environment || 'prod';\n this._bearerTokenProvider = options && options.bearerTokenProvider || (function () { return _this.loginResult && _this.loginResult.authenticated && _this.auth && _this.auth.token || ''; });\n if (this._bearerTokenProvider) {\n this.api = new Api_1.Api(Utils_1.default.urls.api, this._bearerTokenProvider);\n }\n this.flows = new Flows_1.Flows(this, this.clientId);\n }\n VenlyConnect.prototype.checkAuthenticated = function (options) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var authOptions, loginResult;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.loginResult) return [3 /*break*/, 1];\n return [2 /*return*/, this.afterAuthentication(this.loginResult)];\n case 1:\n authOptions = tslib_1.__assign({}, options);\n authOptions.windowMode = authOptions.windowMode || this.windowMode;\n return [4 /*yield*/, Security_1.Security.checkAuthenticated(this.clientId, authOptions)];\n case 2:\n loginResult = _a.sent();\n return [2 /*return*/, this.afterAuthentication(loginResult)];\n }\n });\n });\n };\n VenlyConnect.prototype.logout = function (options) {\n var _this = this;\n this.loginResult = undefined;\n var windowMode = options && options.windowMode || this.windowMode;\n if (windowMode === WindowMode_1.WindowMode.REDIRECT) {\n return new Promise(function (resolve, reject) {\n var logoutOptions = {};\n if (options && options.redirectUri) {\n Object.assign(logoutOptions, { redirectUri: options.redirectUri });\n }\n _this.auth ? _this.auth.logout(logoutOptions).then(function () { return resolve(); }).catch(function () { return reject; }) : resolve();\n });\n }\n else {\n if (this.auth) {\n return Security_1.Security.logout(this.auth).then(function () { return _this.auth = undefined; });\n }\n else {\n return Promise.resolve();\n }\n }\n };\n VenlyConnect.prototype.addOnTokenRefreshCallback = function (tokenRefreshCallback) {\n if (tokenRefreshCallback) {\n Security_1.Security.onTokenUpdate = tokenRefreshCallback;\n }\n };\n VenlyConnect.prototype.createSigner = function (windowMode, popupOptions) {\n if (!popupOptions || popupOptions.useOverlay == undefined) {\n popupOptions = { useOverlay: this.useOverlayWithPopup };\n }\n return Signer_1.SignerFactory.createSignerFor(windowMode || this.signUsing || this.windowMode, this._bearerTokenProvider, popupOptions);\n };\n VenlyConnect.prototype.isPopupSigner = function (signer) {\n return typeof signer.closePopup !== 'undefined';\n };\n /* Deprecated - Use flows.authenticate instead */\n VenlyConnect.prototype.authenticate = function (options) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.flows.authenticate(options)];\n });\n });\n };\n /* Deprecated - Use flows.manageWallets instead */\n VenlyConnect.prototype.manageWallets = function (chain, options) {\n return this.flows.manageWallets(chain, options);\n };\n /* Deprecated - Use flows.linkWallets instead */\n VenlyConnect.prototype.linkWallets = function (options) {\n return this.flows.linkWallets(options);\n };\n VenlyConnect.prototype._afterAuthenticationForFlowUse = function (loginResult) {\n return this.afterAuthentication(loginResult);\n };\n VenlyConnect.prototype.afterAuthentication = function (loginResult) {\n // this.auth is needed for the bearerTokenProvider\n this.loginResult = loginResult;\n this.auth = loginResult.keycloak;\n return {\n auth: this.auth,\n isAuthenticated: loginResult.authenticated,\n authenticated: function (callback) {\n if (loginResult.authenticated && loginResult.keycloak) {\n callback(loginResult.keycloak);\n }\n return this;\n },\n notAuthenticated: function (callback) {\n if (!loginResult.authenticated) {\n callback(loginResult.keycloak);\n }\n return this;\n },\n };\n };\n return VenlyConnect;\n}());\nexports.VenlyConnect = VenlyConnect;\n//# sourceMappingURL=connect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar connect_1 = require(\"./connect/connect\");\nvar connect_2 = require(\"./connect/connect\");\nexports.VenlyConnect = connect_2.VenlyConnect;\nvar Signer_1 = require(\"./signer/Signer\");\nexports.SignMethod = Signer_1.SignMethod;\nvar PopupSigner_1 = require(\"./signer/PopupSigner\");\nexports.PopupSigner = PopupSigner_1.PopupSigner;\nvar RedirectSigner_1 = require(\"./signer/RedirectSigner\");\nexports.RedirectSigner = RedirectSigner_1.RedirectSigner;\nvar Api_1 = require(\"./api/Api\");\nexports.Api = Api_1.Api;\nvar SecretType_1 = require(\"./models/SecretType\");\nexports.SecretType = SecretType_1.SecretType;\nvar WindowMode_1 = require(\"./models/WindowMode\");\nexports.WindowMode = WindowMode_1.WindowMode;\nvar SignatureRequestType_1 = require(\"./models/SignatureRequestType\");\nexports.SignatureRequestType = SignatureRequestType_1.SignatureRequestType;\nvar TransactionRequestType_1 = require(\"./models/TransactionRequestType\");\nexports.TransactionRequestType = TransactionRequestType_1.TransactionRequestType;\nvar Wallet_1 = require(\"./models/wallet/Wallet\");\nexports.Wallet = Wallet_1.Wallet;\nvar Profile_1 = require(\"./models/profile/Profile\");\nexports.Profile = Profile_1.Profile;\nvar BuildTransactionRequest_1 = require(\"./models/transaction/build/BuildTransactionRequest\");\nexports.BuildTransactionRequest = BuildTransactionRequest_1.BuildTransactionRequest;\nvar TransactionRequest_1 = require(\"./models/transaction/TransactionRequest\");\nexports.TransactionRequest = TransactionRequest_1.TransactionRequest;\nvar EthereumErc20TransactionRequest_1 = require(\"./models/transaction/ethereum/request/EthereumErc20TransactionRequest\");\nexports.EthereumErc20TransactionRequest = EthereumErc20TransactionRequest_1.EthereumErc20TransactionRequest;\nvar EthereumTransactionRequest_1 = require(\"./models/transaction/ethereum/request/EthereumTransactionRequest\");\nexports.EthereumTransactionRequest = EthereumTransactionRequest_1.EthereumTransactionRequest;\nvar EthereumContractCallExecutionRequest_1 = require(\"./models/transaction/ethereum/request/EthereumContractCallExecutionRequest\");\nexports.EthereumContractCallExecutionRequest = EthereumContractCallExecutionRequest_1.EthereumContractCallExecutionRequest;\nvar GochainErc20TransactionRequest_1 = require(\"./models/transaction/gochain/request/GochainErc20TransactionRequest\");\nexports.GochainErc20TransactionRequest = GochainErc20TransactionRequest_1.GochainErc20TransactionRequest;\nvar GochainTransactionRequest_1 = require(\"./models/transaction/gochain/request/GochainTransactionRequest\");\nexports.GochainTransactionRequest = GochainTransactionRequest_1.GochainTransactionRequest;\nvar TronTransactionRequest_1 = require(\"./models/transaction/tron/request/TronTransactionRequest\");\nexports.TronTransactionRequest = TronTransactionRequest_1.TronTransactionRequest;\nvar TronContractCallExecutionRequest_1 = require(\"./models/transaction/tron/request/TronContractCallExecutionRequest\");\nexports.TronContractCallExecutionRequest = TronContractCallExecutionRequest_1.TronContractCallExecutionRequest;\nvar VechainTransactionRequest_1 = require(\"./models/transaction/vechain/request/VechainTransactionRequest\");\nexports.VechainTransactionRequest = VechainTransactionRequest_1.VechainTransactionRequest;\nvar VechainVip180TransactionRequest_1 = require(\"./models/transaction/vechain/request/VechainVip180TransactionRequest\");\nexports.VechainVip180TransactionRequest = VechainVip180TransactionRequest_1.VechainVip180TransactionRequest;\nvar VechainContractCallExecutionRequest_1 = require(\"./models/transaction/vechain/request/VechainContractCallExecutionRequest\");\nexports.VechainContractCallExecutionRequest = VechainContractCallExecutionRequest_1.VechainContractCallExecutionRequest;\nvar VechainExecutableContractCall_1 = require(\"./models/transaction/vechain/request/VechainExecutableContractCall\");\nexports.VechainExecutableContractCall = VechainExecutableContractCall_1.VechainExecutableContractCall;\nvar BitcoinTransactionRequest_1 = require(\"./models/transaction/bitcoin/request/BitcoinTransactionRequest\");\nexports.BitcoinTransactionRequest = BitcoinTransactionRequest_1.BitcoinTransactionRequest;\nvar LitecoinTransactionRequest_1 = require(\"./models/transaction/litecoin/request/LitecoinTransactionRequest\");\nexports.LitecoinTransactionRequest = LitecoinTransactionRequest_1.LitecoinTransactionRequest;\nvar WalletBalance_1 = require(\"./models/wallet/WalletBalance\");\nexports.WalletBalance = WalletBalance_1.WalletBalance;\nvar TokenBalance_1 = require(\"./models/wallet/TokenBalance\");\nexports.TokenBalance = TokenBalance_1.TokenBalance;\nvar TransactionResult_1 = require(\"./models/transaction/TransactionResult\");\nexports.TransactionResult = TransactionResult_1.TransactionResult;\nif (typeof window !== 'undefined') {\n window.VenlyConnect = connect_1.VenlyConnect;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ConfirmationRequestType;\n(function (ConfirmationRequestType) {\n ConfirmationRequestType[\"CREATE_APPLICATION_WALLET\"] = \"CREATE_APPLICATION_WALLET\";\n ConfirmationRequestType[\"CREATE_FIRST_WALLET\"] = \"CREATE_FIRST_WALLET\";\n ConfirmationRequestType[\"IMPORT_WALLET\"] = \"IMPORT\";\n})(ConfirmationRequestType = exports.ConfirmationRequestType || (exports.ConfirmationRequestType = {}));\n//# sourceMappingURL=ConfirmationRequestType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SecretType;\n(function (SecretType) {\n SecretType[\"AETERNITY\"] = \"AETERNITY\";\n SecretType[\"AVAC\"] = \"AVAC\";\n SecretType[\"BITCOIN\"] = \"BITCOIN\";\n SecretType[\"BSC\"] = \"BSC\";\n SecretType[\"ETHEREUM\"] = \"ETHEREUM\";\n SecretType[\"GOCHAIN\"] = \"GOCHAIN\";\n SecretType[\"HEDERA\"] = \"HEDERA\";\n SecretType[\"LITECOIN\"] = \"LITECOIN\";\n SecretType[\"MATIC\"] = \"MATIC\";\n SecretType[\"NEO\"] = \"NEO\";\n SecretType[\"TRON\"] = \"TRON\";\n SecretType[\"VECHAIN\"] = \"VECHAIN\";\n SecretType[\"IMX\"] = \"IMX\";\n})(SecretType = exports.SecretType || (exports.SecretType = {}));\n//# sourceMappingURL=SecretType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SignatureRequestType;\n(function (SignatureRequestType) {\n SignatureRequestType[\"AETERNITY_RAW\"] = \"AETERNITY_RAW\";\n SignatureRequestType[\"AETERNITY_TRANSACTION\"] = \"AETERNITY_TRANSACTION\";\n SignatureRequestType[\"AVAC_EIP712\"] = \"AVAC_712\";\n SignatureRequestType[\"AVAC_RAW\"] = \"AVAC_RAW\";\n SignatureRequestType[\"AVAC_TRANSACTION\"] = \"AVAC_TRANSACTION\";\n SignatureRequestType[\"BITCOIN_TRANSACTION\"] = \"BITCOIN_TRANSACTION\";\n SignatureRequestType[\"BSC_EIP712\"] = \"BSC_712\";\n SignatureRequestType[\"BSC_RAW\"] = \"BSC_RAW\";\n SignatureRequestType[\"BSC_TRANSACTION\"] = \"BSC_TRANSACTION\";\n SignatureRequestType[\"ETHEREUM_EIP712\"] = \"ETHEREUM_712\";\n SignatureRequestType[\"ETHEREUM_RAW\"] = \"ETHEREUM_RAW\";\n SignatureRequestType[\"ETHEREUM_TRANSACTION\"] = \"ETHEREUM_TRANSACTION\";\n SignatureRequestType[\"GOCHAIN_RAW\"] = \"GOCHAIN_RAW\";\n SignatureRequestType[\"GOCHAIN_TRANSACTION\"] = \"GOCHAIN_TRANSACTION\";\n SignatureRequestType[\"HEDERA_HBAR_TRANSFER\"] = \"HEDERA_HBAR_TRANSFER\";\n SignatureRequestType[\"HEDERA_RAW\"] = \"HEDERA_RAW\";\n SignatureRequestType[\"IMX_RAW\"] = \"IMX_RAW\";\n SignatureRequestType[\"LITECOIN_TRANSACTION\"] = \"LITECOIN_TRANSACTION\";\n SignatureRequestType[\"MATIC_RAW\"] = \"MATIC_RAW\";\n SignatureRequestType[\"MATIC_TRANSACTION\"] = \"MATIC_TRANSACTION\";\n SignatureRequestType[\"NEO_MESSAGE\"] = \"NEO_MESSAGE\";\n SignatureRequestType[\"NEO_NATIVE_TRANSACTION\"] = \"NEO_NATIVE_TRANSACTION\";\n SignatureRequestType[\"NEO_RAW\"] = \"NEO_RAW\";\n SignatureRequestType[\"TRC10_TRANSACTION\"] = \"TRC10_TRANSACTION\";\n SignatureRequestType[\"TRON_RAW\"] = \"TRON_RAW\";\n SignatureRequestType[\"TRON_TRANSACTION\"] = \"TRON_TRANSACTION\";\n SignatureRequestType[\"VECHAIN_RAW\"] = \"VECHAIN_RAW\";\n SignatureRequestType[\"VECHAIN_TRANSACTION\"] = \"VECHAIN_TRANSACTION\";\n})(SignatureRequestType = exports.SignatureRequestType || (exports.SignatureRequestType = {}));\n//# sourceMappingURL=SignatureRequestType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TransactionRequestType;\n(function (TransactionRequestType) {\n TransactionRequestType[\"AE_TRANSACTION\"] = \"AE_TRANSACTION\";\n TransactionRequestType[\"AVAC_TRANSACTION\"] = \"AVAC_TRANSACTION\";\n TransactionRequestType[\"AVAC_ERC20_TRANSACTION\"] = \"AVAC_ERC20_TRANSACTION\";\n TransactionRequestType[\"AVAC_ERC721_TRANSACTION\"] = \"AVAC_ERC721_TRANSACTION\";\n TransactionRequestType[\"AVAC_CONTRACT_EXECUTION\"] = \"AVAC_CONTRACT_EXECUTION\";\n TransactionRequestType[\"BSC_TRANSACTION\"] = \"BSC_TRANSACTION\";\n TransactionRequestType[\"BSC_BEP20_TRANSACTION\"] = \"BSC_BEP20_TRANSACTION\";\n TransactionRequestType[\"BSC_ERC721_TRANSACTION\"] = \"BSC_ERC721_TRANSACTION\";\n TransactionRequestType[\"BSC_CONTRACT_EXECUTION\"] = \"BSC_CONTRACT_EXECUTION\";\n TransactionRequestType[\"BTC_TRANSACTION\"] = \"BTC_TRANSACTION\";\n TransactionRequestType[\"ETH_TRANSACTION\"] = \"ETH_TRANSACTION\";\n TransactionRequestType[\"ETHEREUM_ERC20_TRANSACTION\"] = \"ETHEREUM_ERC20_TRANSACTION\";\n TransactionRequestType[\"ETHEREUM_ERC721_TRANSACTION\"] = \"ETHEREUM_ERC721_TRANSACTION\";\n TransactionRequestType[\"ETHEREUM_CONTRACT_EXECUTION\"] = \"ETHEREUM_CONTRACT_EXECUTION\";\n TransactionRequestType[\"MATIC_TRANSACTION\"] = \"MATIC_TRANSACTION\";\n TransactionRequestType[\"MATIC_ERC20_TRANSACTION\"] = \"MATIC_ERC20_TRANSACTION\";\n TransactionRequestType[\"MATIC_ERC721_TRANSACTION\"] = \"MATIC_ERC721_TRANSACTION\";\n TransactionRequestType[\"MATIC_CONTRACT_EXECUTION\"] = \"MATIC_CONTRACT_EXECUTION\";\n TransactionRequestType[\"GO_TRANSACTION\"] = \"GO_TRANSACTION\";\n TransactionRequestType[\"GOCHAIN_GO20_TRANSACTION\"] = \"GOCHAIN_GO20_TRANSACTION\";\n TransactionRequestType[\"HBAR_TRANSFER\"] = \"HBAR_TRANSFER\";\n TransactionRequestType[\"HEDERA_TOKEN_TRANSFER\"] = \"HEDERA_TOKEN_TRANSFER\";\n TransactionRequestType[\"HEDERA_NFT_TRANSFER\"] = \"HEDERA_NFT_TRANSFER\";\n TransactionRequestType[\"HEDERA_TOKEN_ASSOCIATION\"] = \"HEDERA_TOKEN_ASSOCIATION\";\n TransactionRequestType[\"HEDERA_APPROVE_ALLOWANCE\"] = \"HEDERA_APPROVE_ALLOWANCE\";\n TransactionRequestType[\"LTC_TRANSACTION\"] = \"LTC_TRANSACTION\";\n TransactionRequestType[\"VECHAIN_VIP180_TRANSACTION\"] = \"VECHAIN_VIP180_TRANSACTION\";\n TransactionRequestType[\"VET_TRANSACTION\"] = \"VET_TRANSACTION\";\n TransactionRequestType[\"VECHAIN_CONTRACT_EXECUTION\"] = \"VECHAIN_CONTRACT_EXECUTION\";\n TransactionRequestType[\"TRC10_TRANSACTION\"] = \"TRC10_TRANSACTION\";\n TransactionRequestType[\"TRX_TRANSACTION\"] = \"TRX_TRANSACTION\";\n TransactionRequestType[\"TRON_CONTRACT_EXECUTION\"] = \"TRON_CONTRACT_EXECUTION\";\n TransactionRequestType[\"NEO_NATIVE_TRANSACTION\"] = \"NEO_NATIVE_TRANSACTION\";\n TransactionRequestType[\"NEO_GAS_TRANSACTION\"] = \"NEO_GAS_TRANSACTION\";\n TransactionRequestType[\"NEO_CONTRACT_EXECUTION\"] = \"NEO_CONTRACT_EXECUTION\";\n TransactionRequestType[\"IMX_TRANSACTION\"] = \"IMX_TRANSACTION\";\n TransactionRequestType[\"IMX_ERC20_TRANSACTION\"] = \"IMX_ERC20_TRANSACTION\";\n TransactionRequestType[\"IMX_ERC721_TRANSACTION\"] = \"IMX_ERC721_TRANSACTION\";\n})(TransactionRequestType = exports.TransactionRequestType || (exports.TransactionRequestType = {}));\n//# sourceMappingURL=TransactionRequestType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WindowMode;\n(function (WindowMode) {\n WindowMode[\"POPUP\"] = \"POPUP\";\n WindowMode[\"REDIRECT\"] = \"REDIRECT\";\n})(WindowMode = exports.WindowMode || (exports.WindowMode = {}));\n//# sourceMappingURL=WindowMode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Profile = /** @class */ (function () {\n function Profile() {\n this.hasMasterPin = false;\n }\n return Profile;\n}());\nexports.Profile = Profile;\nvar VerificationResult;\n(function (VerificationResult) {\n VerificationResult[\"VERIFIED\"] = \"verified\";\n VerificationResult[\"FRAUD\"] = \"fraud\";\n})(VerificationResult = exports.VerificationResult || (exports.VerificationResult = {}));\n//# sourceMappingURL=Profile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TransactionRequest = /** @class */ (function () {\n function TransactionRequest() {\n }\n return TransactionRequest;\n}());\nexports.TransactionRequest = TransactionRequest;\n//# sourceMappingURL=TransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TransactionResult = /** @class */ (function () {\n function TransactionResult() {\n }\n return TransactionResult;\n}());\nexports.TransactionResult = TransactionResult;\n//# sourceMappingURL=TransactionResult.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar BitcoinTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BitcoinTransactionRequest, _super);\n function BitcoinTransactionRequest() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return BitcoinTransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.BitcoinTransactionRequest = BitcoinTransactionRequest;\n//# sourceMappingURL=BitcoinTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransferRequestBase_1 = require(\"./BuildTransferRequestBase\");\nvar BuildTransactionRequestType_1 = require(\"./BuildTransactionRequestType\");\nvar ContractCallInput_1 = require(\"./ContractCallInput\");\nvar BuildContractExecutionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildContractExecutionRequest, _super);\n function BuildContractExecutionRequest(walletId, to, secretType, functionName, inputs, value, chainSpecificFields, network) {\n var _this = _super.call(this, BuildTransactionRequestType_1.BuildTransactionRequestType.CONTRACT_EXECUTION, walletId, to, secretType, network) || this;\n _this.functionName = functionName;\n _this.value = value;\n _this.inputs = inputs;\n _this.chainSpecificFields = chainSpecificFields;\n return _this;\n }\n BuildContractExecutionRequest.fromData = function (data) {\n var walletId = data.walletId, to = data.to, secretType = data.secretType, network = data.network, functionName = data.functionName, value = data.value, chainSpecificFields = data.chainSpecificFields;\n var inputs = data.inputs ? data.inputs.map(function (inputDto) { return ContractCallInput_1.ContractCallInput.fromData(inputDto); }) : [];\n return new this(walletId, to, secretType, functionName, inputs, value, chainSpecificFields, network);\n };\n return BuildContractExecutionRequest;\n}(BuildTransferRequestBase_1.BuildTransferRequestBase));\nexports.BuildContractExecutionRequest = BuildContractExecutionRequest;\n//# sourceMappingURL=BuildContractExecutionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildSignRequestBase_1 = require(\"./BuildSignRequestBase\");\nvar BuildSignatureRequestType_1 = require(\"./BuildSignatureRequestType\");\nvar BuildEip712SignRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildEip712SignRequest, _super);\n function BuildEip712SignRequest(walletId, secretType, data) {\n var _this = _super.call(this, BuildSignatureRequestType_1.BuildSignatureRequestType.EIP712, walletId, secretType) || this;\n _this.data = data;\n return _this;\n }\n BuildEip712SignRequest.fromData = function (requestData) {\n var walletId = requestData.walletId, secretType = requestData.secretType, data = requestData.data;\n return new this(walletId, secretType, data);\n };\n return BuildEip712SignRequest;\n}(BuildSignRequestBase_1.BuildSignRequestBase));\nexports.BuildEip712SignRequest = BuildEip712SignRequest;\n//# sourceMappingURL=BuildEip712SignRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransactionRequestType_1 = require(\"./BuildTransactionRequestType\");\nvar BuildTransferRequestBase_1 = require(\"./BuildTransferRequestBase\");\nvar BuildGasTransferRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildGasTransferRequest, _super);\n function BuildGasTransferRequest(walletId, to, value, secretType, network) {\n var _this = _super.call(this, BuildTransactionRequestType_1.BuildTransactionRequestType.GAS_TRANSFER, walletId, to, secretType, network) || this;\n _this.value = value;\n return _this;\n }\n BuildGasTransferRequest.fromData = function (data) {\n var walletId = data.walletId, to = data.to, value = data.value, secretType = data.secretType, network = data.network;\n return new this(walletId, to, value, secretType, network);\n };\n return BuildGasTransferRequest;\n}(BuildTransferRequestBase_1.BuildTransferRequestBase));\nexports.BuildGasTransferRequest = BuildGasTransferRequest;\n//# sourceMappingURL=BuildGasTransferRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildSignRequestBase_1 = require(\"./BuildSignRequestBase\");\nvar BuildSignatureRequestType_1 = require(\"./BuildSignatureRequestType\");\nvar BuildMessageSignRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildMessageSignRequest, _super);\n function BuildMessageSignRequest(walletId, secretType, data) {\n var _this = _super.call(this, BuildSignatureRequestType_1.BuildSignatureRequestType.MESSAGE, walletId, secretType) || this;\n _this.data = data;\n return _this;\n }\n BuildMessageSignRequest.fromData = function (requestData) {\n var walletId = requestData.walletId, secretType = requestData.secretType, data = requestData.data;\n return new this(walletId, secretType, data);\n };\n return BuildMessageSignRequest;\n}(BuildSignRequestBase_1.BuildSignRequestBase));\nexports.BuildMessageSignRequest = BuildMessageSignRequest;\n//# sourceMappingURL=BuildMessageSignRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransactionRequestType_1 = require(\"./BuildTransactionRequestType\");\nvar BuildTransferRequestBase_1 = require(\"./BuildTransferRequestBase\");\nvar BuildNftTransferRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildNftTransferRequest, _super);\n function BuildNftTransferRequest(walletId, to, secretType, tokenAddress, tokenId, amount, from, network, chainSpecificFields) {\n var _this = _super.call(this, BuildTransactionRequestType_1.BuildTransactionRequestType.NFT_TRANSFER, walletId, to, secretType, network) || this;\n _this.tokenAddress = tokenAddress;\n _this.tokenId = tokenId;\n _this.amount = amount ? amount : 1;\n from ? _this.from = from : undefined;\n chainSpecificFields ? _this.chainSpecificFields = chainSpecificFields : undefined;\n return _this;\n }\n BuildNftTransferRequest.fromData = function (requestData) {\n var walletId = requestData.walletId, to = requestData.to, secretType = requestData.secretType, tokenAddress = requestData.tokenAddress, tokenId = requestData.tokenId, amount = requestData.amount, from = requestData.from, network = requestData.network, chainSpecificFields = requestData.chainSpecificFields;\n return new this(walletId, to, secretType, tokenAddress, tokenId, amount, from, network, chainSpecificFields);\n };\n return BuildNftTransferRequest;\n}(BuildTransferRequestBase_1.BuildTransferRequestBase));\nexports.BuildNftTransferRequest = BuildNftTransferRequest;\n//# sourceMappingURL=BuildNftTransferRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BuildSignRequestBase = /** @class */ (function () {\n function BuildSignRequestBase(type, walletId, secretType) {\n this.type = type;\n this.walletId = walletId;\n this.secretType = secretType;\n }\n return BuildSignRequestBase;\n}());\nexports.BuildSignRequestBase = BuildSignRequestBase;\n//# sourceMappingURL=BuildSignRequestBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BuildSignatureRequestType;\n(function (BuildSignatureRequestType) {\n BuildSignatureRequestType[\"MESSAGE\"] = \"MESSAGE\";\n BuildSignatureRequestType[\"EIP712\"] = \"EIP712\";\n})(BuildSignatureRequestType = exports.BuildSignatureRequestType || (exports.BuildSignatureRequestType = {}));\n//# sourceMappingURL=BuildSignatureRequestType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransactionRequestType_1 = require(\"./BuildTransactionRequestType\");\nvar BuildTransferRequestBase_1 = require(\"./BuildTransferRequestBase\");\nvar BuildSimpleTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildSimpleTransactionRequest, _super);\n function BuildSimpleTransactionRequest(walletId, to, secretType, value, data, network, chainSpecificFields) {\n var _this = _super.call(this, BuildTransactionRequestType_1.BuildTransactionRequestType.TRANSFER, walletId, to, secretType, network, chainSpecificFields) || this;\n _this.value = value;\n data ? _this.data = data : undefined;\n return _this;\n }\n BuildSimpleTransactionRequest.fromData = function (requestData) {\n var walletId = requestData.walletId, to = requestData.to, secretType = requestData.secretType, value = requestData.value, data = requestData.data, network = requestData.network, chainSpecificFields = requestData.chainSpecificFields;\n return new this(walletId, to, secretType, value, data, network, chainSpecificFields);\n };\n return BuildSimpleTransactionRequest;\n}(BuildTransferRequestBase_1.BuildTransferRequestBase));\nexports.BuildSimpleTransactionRequest = BuildSimpleTransactionRequest;\n//# sourceMappingURL=BuildSimpleTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransactionRequestType_1 = require(\"./BuildTransactionRequestType\");\nvar BuildTransferRequestBase_1 = require(\"./BuildTransferRequestBase\");\nvar BuildTokenTransferRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildTokenTransferRequest, _super);\n function BuildTokenTransferRequest(walletId, to, value, secretType, tokenAddress, network, chainSpecificFields) {\n var _this = _super.call(this, BuildTransactionRequestType_1.BuildTransactionRequestType.TOKEN_TRANSFER, walletId, to, secretType, network, chainSpecificFields) || this;\n _this.value = value;\n _this.tokenAddress = tokenAddress;\n return _this;\n }\n BuildTokenTransferRequest.fromData = function (requestData) {\n var walletId = requestData.walletId, to = requestData.to, value = requestData.value, secretType = requestData.secretType, tokenAddress = requestData.tokenAddress, network = requestData.network, chainSpecificFields = requestData.chainSpecificFields;\n return new this(walletId, to, value, secretType, tokenAddress, network, chainSpecificFields);\n };\n return BuildTokenTransferRequest;\n}(BuildTransferRequestBase_1.BuildTransferRequestBase));\nexports.BuildTokenTransferRequest = BuildTokenTransferRequest;\n//# sourceMappingURL=BuildTokenTransferRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransactionRequestType_1 = require(\"./BuildTransactionRequestType\");\nvar BuildTransferRequestBase_1 = require(\"./BuildTransferRequestBase\");\nvar BuildTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(BuildTransactionRequest, _super);\n function BuildTransactionRequest(walletId, to, secretType, value, tokenAddress, data, from, tokenId, network) {\n var _this = this;\n var type;\n if (tokenAddress && tokenId) {\n type = BuildTransactionRequestType_1.BuildTransactionRequestType.NFT_TRANSFER;\n }\n else if (tokenAddress) {\n type = BuildTransactionRequestType_1.BuildTransactionRequestType.TOKEN_TRANSFER;\n }\n else {\n type = BuildTransactionRequestType_1.BuildTransactionRequestType.TRANSFER;\n }\n _this = _super.call(this, type, walletId, to, secretType, network) || this;\n _this.value = value;\n tokenAddress ? _this.tokenAddress = tokenAddress : undefined;\n data ? _this.data = data : undefined;\n from ? _this.from = from : undefined;\n tokenId ? _this.tokenId = tokenId : undefined;\n return _this;\n }\n BuildTransactionRequest.fromData = function (requestData) {\n var walletId = requestData.walletId, to = requestData.to, secretType = requestData.secretType, value = requestData.value, tokenAddress = requestData.tokenAddress, data = requestData.data, from = requestData.from, tokenId = requestData.tokenId, network = requestData.network;\n return new this(walletId, to, secretType, value, tokenAddress, data, from, tokenId, network);\n };\n return BuildTransactionRequest;\n}(BuildTransferRequestBase_1.BuildTransferRequestBase));\nexports.BuildTransactionRequest = BuildTransactionRequest;\n//# sourceMappingURL=BuildTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BuildTransactionRequestType;\n(function (BuildTransactionRequestType) {\n BuildTransactionRequestType[\"TRANSFER\"] = \"TRANSFER\";\n BuildTransactionRequestType[\"GAS_TRANSFER\"] = \"GAS_TRANSFER\";\n BuildTransactionRequestType[\"TOKEN_TRANSFER\"] = \"TOKEN_TRANSFER\";\n BuildTransactionRequestType[\"NFT_TRANSFER\"] = \"NFT_TRANSFER\";\n BuildTransactionRequestType[\"CONTRACT_EXECUTION\"] = \"CONTRACT_EXECUTION\";\n})(BuildTransactionRequestType = exports.BuildTransactionRequestType || (exports.BuildTransactionRequestType = {}));\n//# sourceMappingURL=BuildTransactionRequestType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BuildTransferRequestBase = /** @class */ (function () {\n function BuildTransferRequestBase(type, walletId, to, secretType, network, chainSpecificFields) {\n this.type = type;\n this.walletId = walletId;\n this.to = to;\n this.secretType = secretType;\n network ? this.network = network : undefined;\n chainSpecificFields ? this.chainSpecificFields = chainSpecificFields : undefined;\n }\n return BuildTransferRequestBase;\n}());\nexports.BuildTransferRequestBase = BuildTransferRequestBase;\n//# sourceMappingURL=BuildTransferRequestBase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContractCallInput = /** @class */ (function () {\n function ContractCallInput(type, value) {\n this.type = type;\n this.value = value;\n }\n ContractCallInput.fromData = function (data) {\n var type = data.type, value = data.value;\n return new this(type, value);\n };\n return ContractCallInput;\n}());\nexports.ContractCallInput = ContractCallInput;\n//# sourceMappingURL=ContractCallInput.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar EthereumContractCallExecutionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(EthereumContractCallExecutionRequest, _super);\n function EthereumContractCallExecutionRequest() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.inputs = [];\n return _this;\n }\n return EthereumContractCallExecutionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.EthereumContractCallExecutionRequest = EthereumContractCallExecutionRequest;\n//# sourceMappingURL=EthereumContractCallExecutionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar EthereumErcTokenTransactionRequest_1 = require(\"./EthereumErcTokenTransactionRequest\");\nvar EthereumErc20TransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(EthereumErc20TransactionRequest, _super);\n function EthereumErc20TransactionRequest() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return EthereumErc20TransactionRequest;\n}(EthereumErcTokenTransactionRequest_1.EthereumErcTokenTransactionRequest));\nexports.EthereumErc20TransactionRequest = EthereumErc20TransactionRequest;\n//# sourceMappingURL=EthereumErc20TransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar EthereumErcTokenTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(EthereumErcTokenTransactionRequest, _super);\n function EthereumErcTokenTransactionRequest() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return EthereumErcTokenTransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.EthereumErcTokenTransactionRequest = EthereumErcTokenTransactionRequest;\n//# sourceMappingURL=EthereumErcTokenTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar EthereumTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(EthereumTransactionRequest, _super);\n function EthereumTransactionRequest() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.data = '0x';\n return _this;\n }\n return EthereumTransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.EthereumTransactionRequest = EthereumTransactionRequest;\n//# sourceMappingURL=EthereumTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar GochainErc20TransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(GochainErc20TransactionRequest, _super);\n function GochainErc20TransactionRequest() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return GochainErc20TransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.GochainErc20TransactionRequest = GochainErc20TransactionRequest;\n//# sourceMappingURL=GochainErc20TransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar GochainTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(GochainTransactionRequest, _super);\n function GochainTransactionRequest() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.data = '0x';\n return _this;\n }\n return GochainTransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.GochainTransactionRequest = GochainTransactionRequest;\n//# sourceMappingURL=GochainTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar LitecoinTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(LitecoinTransactionRequest, _super);\n function LitecoinTransactionRequest() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return LitecoinTransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.LitecoinTransactionRequest = LitecoinTransactionRequest;\n//# sourceMappingURL=LitecoinTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar TronContractCallExecutionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(TronContractCallExecutionRequest, _super);\n function TronContractCallExecutionRequest() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.inputs = [];\n return _this;\n }\n return TronContractCallExecutionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.TronContractCallExecutionRequest = TronContractCallExecutionRequest;\n//# sourceMappingURL=TronContractCallExecutionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar TronTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(TronTransactionRequest, _super);\n function TronTransactionRequest() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return TronTransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.TronTransactionRequest = TronTransactionRequest;\n//# sourceMappingURL=TronTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar VechainContractCallExecutionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(VechainContractCallExecutionRequest, _super);\n function VechainContractCallExecutionRequest() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.expiration = 0;\n _this.contractCalls = [];\n return _this;\n }\n return VechainContractCallExecutionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.VechainContractCallExecutionRequest = VechainContractCallExecutionRequest;\n//# sourceMappingURL=VechainContractCallExecutionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VechainExecutableContractCall = /** @class */ (function () {\n function VechainExecutableContractCall() {\n this.inputs = [];\n }\n return VechainExecutableContractCall;\n}());\nexports.VechainExecutableContractCall = VechainExecutableContractCall;\n//# sourceMappingURL=VechainExecutableContractCall.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar VechainTransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(VechainTransactionRequest, _super);\n function VechainTransactionRequest() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.expiration = 0;\n _this.clauses = [];\n return _this;\n }\n return VechainTransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.VechainTransactionRequest = VechainTransactionRequest;\n//# sourceMappingURL=VechainTransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar TransactionRequest_1 = require(\"../../TransactionRequest\");\nvar VechainVip180TransactionRequest = /** @class */ (function (_super) {\n tslib_1.__extends(VechainVip180TransactionRequest, _super);\n function VechainVip180TransactionRequest() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.expiration = 0;\n _this.clauses = [];\n return _this;\n }\n return VechainVip180TransactionRequest;\n}(TransactionRequest_1.TransactionRequest));\nexports.VechainVip180TransactionRequest = VechainVip180TransactionRequest;\n//# sourceMappingURL=VechainVip180TransactionRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ConfirmationRequestType_1 = require(\"../ConfirmationRequestType\");\nvar ImportWalletRequest = /** @class */ (function () {\n function ImportWalletRequest(walletId, to) {\n this.walletId = walletId;\n this.to = to;\n this.confirmationRequestType = ConfirmationRequestType_1.ConfirmationRequestType.IMPORT_WALLET;\n }\n ImportWalletRequest.fromData = function (data) {\n return new this(data.walletId, data.to);\n };\n return ImportWalletRequest;\n}());\nexports.ImportWalletRequest = ImportWalletRequest;\n//# sourceMappingURL=ImportWalletRequest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TokenBalance = /** @class */ (function () {\n function TokenBalance() {\n }\n return TokenBalance;\n}());\nexports.TokenBalance = TokenBalance;\n//# sourceMappingURL=TokenBalance.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WalletType;\n(function (WalletType) {\n WalletType[\"THREEWAY_SHARED\"] = \"THREEWAY_SHARED\";\n WalletType[\"USER_OWNED\"] = \"USER_OWNED\";\n WalletType[\"UNCLAIMED\"] = \"UNCLAIMED\";\n WalletType[\"APPLICATION\"] = \"APPLICATION\";\n})(WalletType = exports.WalletType || (exports.WalletType = {}));\nvar WalletAppType;\n(function (WalletAppType) {\n WalletAppType[\"APP\"] = \"APP\";\n WalletAppType[\"PERSONAL\"] = \"PERSONAL\";\n})(WalletAppType = exports.WalletAppType || (exports.WalletAppType = {}));\nvar Wallet = /** @class */ (function () {\n function Wallet() {\n this.description = '';\n this.lastUpdated = 0;\n }\n return Wallet;\n}());\nexports.Wallet = Wallet;\n//# sourceMappingURL=Wallet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar WalletBalance = /** @class */ (function () {\n function WalletBalance() {\n }\n return WalletBalance;\n}());\nexports.WalletBalance = WalletBalance;\n//# sourceMappingURL=WalletBalance.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar EventTypes_1 = require(\"../types/EventTypes\");\nvar Popup_1 = tslib_1.__importDefault(require(\"./Popup\"));\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar GeneralPopup = /** @class */ (function (_super) {\n tslib_1.__extends(GeneralPopup, _super);\n function GeneralPopup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.finishedEventType = EventTypes_1.EventTypes.POPUP_FINISHED;\n _this.sendDataEventType = EventTypes_1.EventTypes.SEND_DATA;\n return _this;\n }\n GeneralPopup.openNewPopup = function (action, bearerTokenProvider, data, options) {\n var popup = new GeneralPopup(Utils_1.default.urls.connect + \"/popup/general/init.html\", bearerTokenProvider, options);\n window.addEventListener('beforeunload', function () {\n popup.close();\n });\n popup.focus();\n return popup.sendData(action, data && JSON.parse(JSON.stringify(data))).finally(function () {\n popup.close();\n });\n };\n GeneralPopup.prototype.sendData = function (action, data) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.onPopupMountedQueue.push(_this.attachFinishedListener(resolve, reject));\n _this.onPopupMountedQueue.push(_this.sendDataToPopup(action, data));\n _this.processPopupMountedQueue();\n });\n };\n GeneralPopup.prototype.sendDataToPopup = function (action, data) {\n var _this = this;\n return function () {\n if (_this.isOpen()) {\n var params = { action: action, bearerToken: _this.bearerTokenProvider() };\n if (data) {\n params.data = data;\n }\n _this.popupWindow.postMessage({ type: _this.sendDataEventType, params: params }, Utils_1.default.urls.connect);\n }\n };\n };\n return GeneralPopup;\n}(Popup_1.default));\nexports.GeneralPopup = GeneralPopup;\n//# sourceMappingURL=GeneralPopup.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar PopupWindow_1 = require(\"./PopupWindow\");\nvar EventTypes_1 = require(\"../types/EventTypes\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar Popup = /** @class */ (function () {\n function Popup(url, bearerTokenProvider, options) {\n this.onPopupMountedQueue = [];\n this.isPopupMounted = false;\n this.useOverlay = true;\n this.useOverlay = (options && typeof options.useOverlay !== 'undefined') ? options.useOverlay : true;\n this.correlationID = '' + Date.now() + Math.random();\n this.bearerTokenProvider = bearerTokenProvider;\n this.popupMountedListener = this.createPopupMountedListener(this.correlationID);\n window.addEventListener('message', this.popupMountedListener);\n url = Utils_1.default.http().addRequestParams(url, { cid: this.correlationID, webURI: Utils_1.default.urls.connect });\n this.popupWindow = PopupWindow_1.PopupWindow.openNew(url, { useOverlay: this.useOverlay });\n }\n Popup.clearPopupIntervals = function () {\n // Make sure, all intervals are cleared;\n Popup.popupIntervals.forEach(function (v, i) {\n clearInterval(Popup.popupIntervals[i]);\n });\n Popup.popupIntervals = [];\n };\n Popup.prototype.isOpen = function () {\n return this.popupWindow && !this.popupWindow.closed;\n };\n Popup.prototype.close = function () {\n if (this.popupMountedListener) {\n window.removeEventListener('message', this.popupMountedListener);\n }\n this.popupWindow.close();\n };\n Popup.prototype.focus = function () {\n this.popupWindow.focus();\n };\n Popup.prototype.attachFinishedListener = function (resolve, reject) {\n var _this = this;\n return function () {\n Popup.clearPopupIntervals();\n if (_this.finishedListener) {\n window.removeEventListener('message', _this.finishedListener);\n delete _this.finishedListener;\n }\n Popup.popupIntervals.push(_this.createPopupClosedListener(reject));\n _this.finishedListener = _this.createFinishedListener(resolve, reject);\n window.addEventListener('message', _this.finishedListener);\n };\n };\n Popup.prototype.createPopupMountedListener = function (correlationID) {\n var _this = this;\n return function (message) {\n if (Utils_1.default.messages().hasValidOrigin(message)\n && Utils_1.default.messages().hasCorrectCorrelationID(message, correlationID)\n && Utils_1.default.messages().isOfType(message, EventTypes_1.EventTypes.POPUP_MOUNTED)) {\n _this.isPopupMounted = true;\n if (_this.popupMountedListener) {\n window.removeEventListener('message', _this.popupMountedListener);\n delete _this.popupMountedListener;\n }\n _this.processPopupMountedQueue();\n }\n };\n };\n Popup.prototype.createPopupClosedListener = function (reject) {\n var _this = this;\n return window.setInterval(function () {\n if (!_this.popupWindow || _this.popupWindow.closed) {\n Popup.clearPopupIntervals();\n reject({ status: 'ABORTED', errors: [] });\n }\n }, 100);\n };\n Popup.prototype.createFinishedListener = function (resolve, reject) {\n var _this = this;\n return function (message) {\n if (Utils_1.default.messages().hasValidOrigin(message)\n && Utils_1.default.messages().isOfType(message, _this.finishedEventType)\n && Utils_1.default.messages().hasCorrectCorrelationID(message, _this.correlationID)) {\n // Finished handler will take cre of popup closing\n Popup.clearPopupIntervals();\n switch (message.data.result.status) {\n case 'SUCCESS':\n resolve(message.data && tslib_1.__assign({}, message.data.result));\n break;\n case 'ABORTED':\n reject(message.data && tslib_1.__assign({}, message.data.result));\n break;\n case 'FAILED':\n reject(message.data && tslib_1.__assign({}, message.data.result));\n break;\n }\n }\n };\n };\n /**\n * Process onPopupMountedQueue when popup is mounted\n */\n Popup.prototype.processPopupMountedQueue = function () {\n if (this.isPopupMounted) {\n var callback = this.onPopupMountedQueue.shift();\n while (callback) {\n callback();\n callback = this.onPopupMountedQueue.shift();\n }\n }\n };\n Popup.popupIntervals = [];\n return Popup;\n}());\nexports.default = Popup;\n//# sourceMappingURL=Popup.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PopupActions;\n(function (PopupActions) {\n PopupActions[\"MANAGE_WALLETS\"] = \"manage-wallets\";\n PopupActions[\"LINK_WALLET\"] = \"link-wallets\";\n PopupActions[\"CLAIM_WALLETS\"] = \"claim-wallets\";\n PopupActions[\"PERFORM_KYC\"] = \"perform-kyc\";\n})(PopupActions = exports.PopupActions || (exports.PopupActions = {}));\n//# sourceMappingURL=PopupActions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar PopupWindow = /** @class */ (function () {\n function PopupWindow(url, target, features, useOverlay, replace) {\n this.id = \"id-\" + Utils_1.default.uuidv4();\n this.useOverlay = typeof useOverlay !== 'undefined' ? useOverlay : true;\n this.win = window.open(url, target, features);\n if (this.win) {\n this.setCloseInterval();\n }\n else {\n throw new Error('Something went wrong while trying to open the popup');\n }\n this.openOverlay();\n }\n PopupWindow.openNew = function (url, options) {\n var mergedOptions = Object.assign({\n title: 'Venly Connect',\n w: 350,\n h: 685,\n useOverlay: true\n }, options);\n var left = (screen.width / 2) - (mergedOptions.w / 2);\n var top = (screen.height / 2) - (mergedOptions.h / 2);\n var features = 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, ';\n features += \"copyhistory=no, width=\" + mergedOptions.w + \", height=\" + mergedOptions.h + \", top=\" + top + \", left=\" + left;\n return new PopupWindow(url, mergedOptions.title, features, mergedOptions.useOverlay);\n };\n PopupWindow.prototype.setCloseInterval = function () {\n var _this = this;\n this.interval = window.setInterval(function () {\n if (!_this.win || _this.win.closed) {\n _this.clearCloseInterval();\n _this.close();\n }\n }, 100);\n };\n PopupWindow.prototype.clearCloseInterval = function () {\n window.clearInterval(this.interval);\n };\n PopupWindow.prototype.close = function () {\n if (this.win) {\n this.win.close();\n this.closeOverlay();\n }\n };\n Object.defineProperty(PopupWindow.prototype, \"closed\", {\n get: function () {\n if (this.win) {\n return this.win.closed;\n }\n else {\n return true;\n }\n },\n enumerable: true,\n configurable: true\n });\n PopupWindow.prototype.focus = function () {\n if (this.win) {\n this.win.focus();\n }\n };\n PopupWindow.prototype.postMessage = function (message, targetOrigin, transfer) {\n if (this.win) {\n this.win.postMessage(message, targetOrigin, transfer);\n }\n };\n PopupWindow.prototype.closeOverlay = function () {\n PopupWindow.closeOverlay(this.id, this.useOverlay);\n };\n PopupWindow.prototype.openOverlay = function () {\n PopupWindow.openOverlay(this.id, this.useOverlay, this.focus.bind(this), this.close.bind(this));\n };\n PopupWindow.closeOverlay = function (id, useOverlay) {\n if (useOverlay) {\n var overlay = document.querySelector(\"#\" + id);\n if (overlay && overlay.parentNode) {\n overlay.parentNode.removeChild(overlay);\n }\n }\n };\n PopupWindow.openOverlay = function (id, useOverlay, focus, close) {\n if (useOverlay) {\n //remove existing overlay divs\n var overlayDiv = document.createElement('div');\n overlayDiv.id = id;\n overlayDiv.classList.add(PopupWindow.CONST.overlayClassName);\n overlayDiv.style.zIndex = '2147483647';\n overlayDiv.style.display = 'flex';\n overlayDiv.style.alignItems = 'center';\n overlayDiv.style.justifyContent = 'center';\n overlayDiv.style.textAlign = 'center';\n overlayDiv.style.position = 'fixed';\n overlayDiv.style.left = '0px';\n overlayDiv.style.right = '0px';\n overlayDiv.style.top = '0px';\n overlayDiv.style.bottom = '0px';\n overlayDiv.style.background = 'rgba(0,0,0,0.80)';\n overlayDiv.style.color = 'white';\n overlayDiv.style.border = '2px solid #f1f1f1';\n overlayDiv.innerHTML = \"
\" +\n (\"
\" + PopupWindow.CONST.overlayMessage + \"
\") +\n (\"\") +\n (\"X\") +\n \"
\";\n var existingOverlays = document.getElementsByClassName(PopupWindow.CONST.overlayClassName);\n for (var i = 0; i < existingOverlays.length; i++) {\n var existingOverlay = existingOverlays.item(i);\n if (existingOverlay) {\n existingOverlay.remove();\n }\n }\n document.body.appendChild(overlayDiv);\n var link = overlayDiv.querySelector(\"#\" + id + \" .\" + PopupWindow.CONST.overlayLinkClassName);\n var closeLink = overlayDiv.querySelector(\"#\" + id + \" .\" + PopupWindow.CONST.overlayCloseLinkClassName);\n if (link) {\n link.addEventListener('click', function () {\n focus();\n });\n }\n if (closeLink) {\n closeLink.addEventListener('click', function () {\n close();\n });\n }\n }\n };\n PopupWindow.CONST = {\n overlayClassName: 'venly-connect__overlay',\n overlayLinkClassName: 'venly-connect__reopen-link',\n overlayCloseLinkClassName: 'venly-connect__close-link',\n overlayMessage: 'Don’t see the popup? We’ll help you re-open the popup to complete your action.',\n overlayLinkMessage: 'Click to continue',\n overlayLinkStyle: 'color: white; text-decoration: underline; font-weight: bold;',\n };\n return PopupWindow;\n}());\nexports.PopupWindow = PopupWindow;\n//# sourceMappingURL=PopupWindow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar EventTypes_1 = require(\"../types/EventTypes\");\nvar PopupWindow_1 = require(\"./PopupWindow\");\nvar PopupWindowAsync = /** @class */ (function () {\n function PopupWindowAsync(url, target, features, useOverlay, correlationId, replace) {\n this.id = \"id-\" + Utils_1.default.uuidv4();\n this.url = url;\n this.target = target;\n this.features = features;\n this.useOverlay = typeof useOverlay !== 'undefined' ? useOverlay : true;\n this.correlationID = correlationId;\n this.replace = replace;\n this.openOverlay();\n }\n PopupWindowAsync.openNew = function (url, correlationID, options) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var mergedOptions, left, top, features, popupWindow;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n mergedOptions = Object.assign({\n title: 'Venly Connect',\n w: 350,\n h: 685,\n useOverlay: true\n }, options);\n left = (screen.width / 2) - (mergedOptions.w / 2);\n top = (screen.height / 2) - (mergedOptions.h / 2);\n features = 'popup=true, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, '\n + (\"width=\" + mergedOptions.w + \", height=\" + mergedOptions.h + \", top=\" + top + \", left=\" + left);\n url = Utils_1.default.http().addRequestParams(url, { cid: correlationID });\n popupWindow = new PopupWindowAsync(url, mergedOptions.title, features, mergedOptions.useOverlay, correlationID);\n return [4 /*yield*/, popupWindow.open()];\n case 1:\n _a.sent();\n return [2 /*return*/, popupWindow];\n }\n });\n });\n };\n PopupWindowAsync.prototype.open = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a;\n var _this = this;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, new Promise(function (resolve) {\n _this.popupMountedListener = _this.createPopupMountedListener(_this.correlationID, resolve);\n window.addEventListener('message', _this.popupMountedListener);\n try {\n window.open(_this.url, _this.target, _this.features);\n }\n catch (e) {\n console.debug('popup open failed', e);\n }\n }).then(function (win) {\n _this.setCloseInterval();\n return win;\n })];\n case 1:\n _a.win = _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PopupWindowAsync.prototype.createPopupMountedListener = function (correlationID, resolve) {\n var _this = this;\n return function (message) {\n if (Utils_1.default.messages().hasValidOrigin(message)\n && Utils_1.default.messages().isOfType(message, EventTypes_1.EventTypes.POPUP_MOUNTED)) {\n if (_this.popupMountedListener) {\n window.removeEventListener('message', _this.popupMountedListener);\n delete _this.popupMountedListener;\n }\n resolve(message.source);\n }\n };\n };\n PopupWindowAsync.prototype.setCloseInterval = function () {\n var _this = this;\n this.closeInterval = window.setInterval(function () {\n if (!_this.win || _this.win.closed) {\n _this.close();\n }\n }, 100);\n };\n PopupWindowAsync.prototype.clearCloseInterval = function () {\n window.clearInterval(this.closeInterval);\n };\n PopupWindowAsync.prototype.close = function () {\n this.closePopup();\n this.closeOverlay();\n this.clearCloseInterval();\n this.removePopupMountedListener();\n };\n PopupWindowAsync.prototype.closePopup = function () {\n if (this.win) {\n this.win.close();\n }\n };\n PopupWindowAsync.prototype.removePopupMountedListener = function () {\n if (this.popupMountedListener) {\n window.removeEventListener('message', this.popupMountedListener);\n delete this.popupMountedListener;\n }\n };\n Object.defineProperty(PopupWindowAsync.prototype, \"closed\", {\n get: function () {\n if (this.win) {\n return this.win.closed;\n }\n else {\n return true;\n }\n },\n enumerable: true,\n configurable: true\n });\n PopupWindowAsync.prototype.focus = function () {\n if (this.win) {\n this.win.focus();\n }\n };\n PopupWindowAsync.prototype.closeOverlay = function () {\n PopupWindow_1.PopupWindow.closeOverlay(this.id, this.useOverlay);\n };\n PopupWindowAsync.prototype.openOverlay = function () {\n PopupWindow_1.PopupWindow.openOverlay(this.id, this.useOverlay, this.focus, this.close);\n };\n return PopupWindowAsync;\n}());\nexports.PopupWindowAsync = PopupWindowAsync;\n//# sourceMappingURL=PopupWindowAsync.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransactionRequest_1 = require(\"../models/transaction/build/BuildTransactionRequest\");\nvar BuildSimpleTransactionRequest_1 = require(\"../models/transaction/build/BuildSimpleTransactionRequest\");\nvar BuildTokenTransferRequest_1 = require(\"../models/transaction/build/BuildTokenTransferRequest\");\nvar BuildNftTransferRequest_1 = require(\"../models/transaction/build/BuildNftTransferRequest\");\nvar BuildGasTransferRequest_1 = require(\"../models/transaction/build/BuildGasTransferRequest\");\nvar BuildContractExecutionRequest_1 = require(\"../models/transaction/build/BuildContractExecutionRequest\");\nvar Popup_1 = tslib_1.__importDefault(require(\"../popup/Popup\"));\nvar EventTypes_1 = require(\"../types/EventTypes\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar BuildMessageSignRequest_1 = require(\"../models/transaction/build/BuildMessageSignRequest\");\nvar BuildEip712SignRequest_1 = require(\"../models/transaction/build/BuildEip712SignRequest\");\nvar ImportWalletRequest_1 = require(\"../models/wallet/ImportWalletRequest\");\nvar PopupSigner = /** @class */ (function () {\n function PopupSigner(bearerTokenProvider, options) {\n var _this = this;\n this.bearerTokenProvider = bearerTokenProvider;\n this.popup = new PopupSignerPopup(Utils_1.default.urls.connect + \"/popup/transaction/init.html\", this.bearerTokenProvider, options);\n window.addEventListener('beforeunload', function () {\n _this.closePopup();\n });\n }\n PopupSigner.prototype.closePopup = function () {\n this.popup.close();\n };\n PopupSigner.prototype.isOpen = function () {\n return this.popup.isOpen();\n };\n PopupSigner.prototype.sign = function (signatureRequest) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n signatureRequest.hash = typeof signatureRequest.hash === 'undefined' ? true : signatureRequest.hash;\n signatureRequest.prefix = typeof signatureRequest.hash === 'undefined' ? true : signatureRequest.prefix;\n return [2 /*return*/, this.signRequest(signatureRequest)];\n });\n });\n };\n PopupSigner.prototype.signMessage = function (buildDate) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.signRequest(BuildMessageSignRequest_1.BuildMessageSignRequest.fromData(buildDate))];\n });\n });\n };\n PopupSigner.prototype.signEip712 = function (buildDate) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.signRequest(BuildEip712SignRequest_1.BuildEip712SignRequest.fromData(buildDate))];\n });\n });\n };\n /** Deprecated since 1.1.9. Use sign instead */\n PopupSigner.prototype.signTransaction = function (signatureRequest) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.sign(signatureRequest)];\n });\n });\n };\n PopupSigner.prototype.executeNativeTransaction = function (transactionRequest) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.handleRequest(\"execute/\" + transactionRequest.type, transactionRequest)];\n });\n });\n };\n /** Deprecated since 1.4.0. Use transfer functions instead */\n PopupSigner.prototype.executeTransaction = function (genericTransactionRequestOrTransactionId) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n if (typeof genericTransactionRequestOrTransactionId === 'string') {\n return [2 /*return*/, this.execute({ transactionId: genericTransactionRequestOrTransactionId })];\n }\n else {\n return [2 /*return*/, this.execute(BuildTransactionRequest_1.BuildTransactionRequest.fromData(genericTransactionRequestOrTransactionId))];\n }\n return [2 /*return*/];\n });\n });\n };\n PopupSigner.prototype.executeTransfer = function (buildTransactionData) {\n return this.execute(BuildSimpleTransactionRequest_1.BuildSimpleTransactionRequest.fromData(buildTransactionData));\n };\n PopupSigner.prototype.executeTokenTransfer = function (buildTransactionData) {\n return this.execute(BuildTokenTransferRequest_1.BuildTokenTransferRequest.fromData(buildTransactionData));\n };\n PopupSigner.prototype.executeNftTransfer = function (buildTransactionData) {\n return this.execute(BuildNftTransferRequest_1.BuildNftTransferRequest.fromData(buildTransactionData));\n };\n PopupSigner.prototype.executeGasTransfer = function (buildTransactionData) {\n return this.execute(BuildGasTransferRequest_1.BuildGasTransferRequest.fromData(buildTransactionData));\n };\n PopupSigner.prototype.executeContract = function (buildTransactionData) {\n return this.execute(BuildContractExecutionRequest_1.BuildContractExecutionRequest.fromData(buildTransactionData));\n };\n PopupSigner.prototype.executeSavedTransaction = function (transactionId) {\n return this.handleRequest(\"execute/\" + transactionId, {});\n };\n PopupSigner.prototype.resubmitTransaction = function (transactionId) {\n return this.handleRequest('resubmit', { transactionId: transactionId });\n };\n PopupSigner.prototype.cancelTransaction = function (transactionId) {\n return this.handleRequest('cancel', { transactionId: transactionId });\n };\n PopupSigner.prototype.importWallet = function (request) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.confirm(ImportWalletRequest_1.ImportWalletRequest.fromData(request))];\n });\n });\n };\n PopupSigner.prototype.confirm = function (request) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.handleRequest('confirm', request)];\n });\n });\n };\n PopupSigner.prototype.execute = function (requestData) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.handleRequest('execute', requestData)];\n });\n });\n };\n PopupSigner.prototype.signRequest = function (requestData) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.handleRequest('sign', requestData)];\n });\n });\n };\n PopupSigner.prototype.handleRequest = function (action, requestData) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _this = this;\n return tslib_1.__generator(this, function (_a) {\n this.popup.focus();\n return [2 /*return*/, this.popup\n .sendData(action, Object.assign({}, requestData))\n .finally(function () {\n _this.closePopup();\n })];\n });\n });\n };\n return PopupSigner;\n}());\nexports.PopupSigner = PopupSigner;\nvar PopupSignerPopup = /** @class */ (function (_super) {\n tslib_1.__extends(PopupSignerPopup, _super);\n function PopupSignerPopup(url, bearerTokenProvider, options) {\n var _this = _super.call(this, url, bearerTokenProvider, options) || this;\n _this.finishedEventType = EventTypes_1.EventTypes.SIGNER_FINISHED;\n _this.sendDataEventType = EventTypes_1.EventTypes.SEND_TRANSACTION_DATA;\n return _this;\n }\n PopupSignerPopup.prototype.sendData = function (action, requestData) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.onPopupMountedQueue.push(_this.attachFinishedListener(resolve, reject));\n _this.onPopupMountedQueue.push(_this.sendDataToPopup(action, requestData));\n _this.processPopupMountedQueue();\n });\n };\n PopupSignerPopup.prototype.sendDataToPopup = function (action, requestData) {\n var _this = this;\n return function () {\n if (_this.isOpen()) {\n _this.popupWindow.postMessage({ type: _this.sendDataEventType, params: { action: action, transactionRequest: requestData, bearerToken: _this.bearerTokenProvider() } }, Utils_1.default.urls.connect);\n }\n };\n };\n return PopupSignerPopup;\n}(Popup_1.default));\n//# sourceMappingURL=PopupSigner.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar BuildTransactionRequest_1 = require(\"../models/transaction/build/BuildTransactionRequest\");\nvar Utils_1 = tslib_1.__importDefault(require(\"../utils/Utils\"));\nvar BuildGasTransferRequest_1 = require(\"../models/transaction/build/BuildGasTransferRequest\");\nvar BuildTokenTransferRequest_1 = require(\"../models/transaction/build/BuildTokenTransferRequest\");\nvar BuildNftTransferRequest_1 = require(\"../models/transaction/build/BuildNftTransferRequest\");\nvar BuildSimpleTransactionRequest_1 = require(\"../models/transaction/build/BuildSimpleTransactionRequest\");\nvar BuildContractExecutionRequest_1 = require(\"../models/transaction/build/BuildContractExecutionRequest\");\nvar BuildMessageSignRequest_1 = require(\"../models/transaction/build/BuildMessageSignRequest\");\nvar BuildEip712SignRequest_1 = require(\"../models/transaction/build/BuildEip712SignRequest\");\nvar ImportWalletRequest_1 = require(\"../models/wallet/ImportWalletRequest\");\nvar RedirectSigner = /** @class */ (function () {\n function RedirectSigner(bearerTokenProvider) {\n this.bearerTokenProvider = bearerTokenProvider;\n }\n RedirectSigner.prototype.executeNativeTransaction = function (transactionRequest, redirectOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/transaction/execute/\" + transactionRequest.type.toLowerCase(), transactionRequest, _this.bearerTokenProvider, redirectOptions);\n resolve();\n });\n };\n /** @Deprecated */\n RedirectSigner.prototype.executeTransaction = function (buildTransactionRequestOrTransactionId, redirectOptions) {\n if (typeof buildTransactionRequestOrTransactionId === 'string') {\n return this.executeSavedTransaction(buildTransactionRequestOrTransactionId, redirectOptions);\n }\n else {\n return this.executeProvidedTransaction(BuildTransactionRequest_1.BuildTransactionRequest.fromData(buildTransactionRequestOrTransactionId), redirectOptions);\n }\n };\n RedirectSigner.prototype.executeTransfer = function (buildTransactionData, redirectOptions) {\n return this.executeProvidedTransaction(BuildSimpleTransactionRequest_1.BuildSimpleTransactionRequest.fromData(buildTransactionData), redirectOptions);\n };\n RedirectSigner.prototype.executeTokenTransfer = function (buildTransactionData, redirectOptions) {\n return this.executeProvidedTransaction(BuildTokenTransferRequest_1.BuildTokenTransferRequest.fromData(buildTransactionData), redirectOptions);\n };\n RedirectSigner.prototype.executeNftTransfer = function (buildTransactionData, redirectOptions) {\n return this.executeProvidedTransaction(BuildNftTransferRequest_1.BuildNftTransferRequest.fromData(buildTransactionData), redirectOptions);\n };\n RedirectSigner.prototype.executeGasTransfer = function (buildTransactionData, redirectOptions) {\n return this.executeProvidedTransaction(BuildGasTransferRequest_1.BuildGasTransferRequest.fromData(buildTransactionData), redirectOptions);\n };\n RedirectSigner.prototype.executeContract = function (buildTransactionData, redirectOptions) {\n return this.executeProvidedTransaction(BuildContractExecutionRequest_1.BuildContractExecutionRequest.fromData(buildTransactionData), redirectOptions);\n };\n RedirectSigner.prototype.executeSavedTransaction = function (transactionId, redirectOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/transaction/execute/\" + transactionId, {}, _this.bearerTokenProvider, redirectOptions);\n resolve();\n });\n };\n RedirectSigner.prototype.resubmitTransaction = function (transactionId, redirectOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/transaction/resubmit/\" + transactionId, {}, _this.bearerTokenProvider, redirectOptions);\n resolve();\n });\n };\n RedirectSigner.prototype.cancelTransaction = function (transactionId, redirectOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/transaction/cancel/\" + transactionId, {}, _this.bearerTokenProvider, redirectOptions);\n resolve();\n });\n };\n RedirectSigner.prototype.executeProvidedTransaction = function (buildTransactionData, redirectOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/transaction/execute\", buildTransactionData, _this.bearerTokenProvider, redirectOptions);\n resolve();\n });\n };\n RedirectSigner.prototype.sign = function (signatureRequest, redirectOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/transaction/sign/\" + signatureRequest.type.toLowerCase(), signatureRequest, _this.bearerTokenProvider, redirectOptions);\n resolve();\n });\n };\n RedirectSigner.prototype.signMessage = function (buildData, redirectOptions) {\n return this.signProvidedSignature(BuildMessageSignRequest_1.BuildMessageSignRequest.fromData(buildData), redirectOptions);\n };\n RedirectSigner.prototype.signEip712 = function (buildData, redirectOptions) {\n return this.signProvidedSignature(BuildEip712SignRequest_1.BuildEip712SignRequest.fromData(buildData), redirectOptions);\n };\n RedirectSigner.prototype.signProvidedSignature = function (buildSignatureData, redirectOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/transaction/sign\", buildSignatureData, _this.bearerTokenProvider, redirectOptions);\n resolve();\n });\n };\n /** Deprecated since v1.1.9: Use 'sign' instead. */\n RedirectSigner.prototype.signTransaction = function (signatureRequest, redirectOptions) {\n return this.sign(signatureRequest, redirectOptions);\n };\n RedirectSigner.prototype.importWallet = function (request, redirectOptions) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.confirm(ImportWalletRequest_1.ImportWalletRequest.fromData(request), redirectOptions)];\n });\n });\n };\n RedirectSigner.prototype.confirm = function (request, redirectOptions) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _this = this;\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n Utils_1.default.http().postInForm(Utils_1.default.urls.connect + \"/confirm/\" + request.confirmationRequestType.toLowerCase(), request, _this.bearerTokenProvider, redirectOptions);\n resolve();\n })];\n });\n });\n };\n return RedirectSigner;\n}());\nexports.RedirectSigner = RedirectSigner;\n//# sourceMappingURL=RedirectSigner.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PopupSigner_1 = require(\"./PopupSigner\");\nvar RedirectSigner_1 = require(\"./RedirectSigner\");\nvar WindowMode_1 = require(\"../models/WindowMode\");\nvar SignerFactory = /** @class */ (function () {\n function SignerFactory() {\n }\n SignerFactory.createSignerFor = function (signMethod, bearerTokenProvider, popupOptions) {\n switch (signMethod) {\n case WindowMode_1.WindowMode.POPUP:\n return new PopupSigner_1.PopupSigner(bearerTokenProvider, popupOptions);\n case WindowMode_1.WindowMode.REDIRECT:\n return new RedirectSigner_1.RedirectSigner(bearerTokenProvider);\n default:\n throw new Error('The provided signMethod is not supported');\n }\n };\n return SignerFactory;\n}());\nexports.SignerFactory = SignerFactory;\n/* Deprecated, use WindowMode */\nvar SignMethod;\n(function (SignMethod) {\n SignMethod[\"POPUP\"] = \"POPUP\";\n SignMethod[\"REDIRECT\"] = \"REDIRECT\";\n})(SignMethod = exports.SignMethod || (exports.SignMethod = {}));\n//# sourceMappingURL=Signer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EventTypes;\n(function (EventTypes) {\n EventTypes[\"POPUP_CLOSED\"] = \"POPUP_CLOSED\";\n EventTypes[\"POPUP_FINISHED\"] = \"POPUP_FINISHED\";\n EventTypes[\"POPUP_MOUNTED\"] = \"POPUP_MOUNTED\";\n EventTypes[\"SEND_DATA\"] = \"SEND_DATA\";\n EventTypes[\"SEND_TRANSACTION_DATA\"] = \"SEND_TRANSACTION_DATA\";\n EventTypes[\"SIGNER_FINISHED\"] = \"SIGNER_FINISHED\";\n EventTypes[\"TRANSACTION_EXECUTED\"] = \"TRANSACTION_EXECUTED\";\n EventTypes[\"TRANSACTION_SIGNED\"] = \"TRANSACTION_SIGNED\";\n EventTypes[\"CHECK_AUTHENTICATED\"] = \"CHECK_AUTHENTICATED\";\n EventTypes[\"AUTHENTICATE\"] = \"AUTHENTICATE\";\n EventTypes[\"LOGOUT\"] = \"LOGOUT\";\n})(EventTypes = exports.EventTypes || (exports.EventTypes = {}));\n//# sourceMappingURL=EventTypes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar QueryString = tslib_1.__importStar(require(\"querystring\"));\nvar Utils = /** @class */ (function () {\n function Utils() {\n }\n Object.defineProperty(Utils, \"rawEnvironment\", {\n get: function () {\n return Utils.rawEnvironmentHolder;\n },\n set: function (env) {\n Utils.rawEnvironmentHolder = env;\n var split = env.split('-');\n Utils.environment = split[0];\n Utils.connectEnvironment = split.length > 1 && split[1] || '';\n },\n enumerable: true,\n configurable: true\n });\n ;\n Utils.environments = function () {\n return {\n 'qa': {\n api: 'https://api-wallet-qa.venly.io/api',\n connect: 'https://connect-qa.venly.io',\n login: 'https://login-qa.arkane.network/auth',\n },\n 'staging': {\n api: 'https://api-wallet-staging.venly.io/api',\n connect: 'https://connect-staging.venly.io',\n login: 'https://login-staging.arkane.network/auth',\n },\n };\n };\n Object.defineProperty(Utils, \"urls\", {\n get: function () {\n var postfix = '';\n switch (Utils.environment) {\n case 'local':\n postfix = 'qa';\n break;\n case 'prod':\n case 'production':\n postfix = '';\n break;\n default:\n postfix = Utils.environment;\n }\n var environment = this.environments()[postfix];\n if (environment) {\n return {\n api: environment.api,\n connect: Utils.environment === 'local' || Utils.connectEnvironment === 'local' ? 'http://127.0.0.1:8181' : environment.connect,\n login: environment.login,\n };\n }\n else {\n return {\n api: \"https://api-wallet.venly.io/api\",\n connect: \"https://connect.venly.io\",\n login: \"https://login.arkane.network/auth\",\n };\n }\n },\n enumerable: true,\n configurable: true\n });\n Utils.removeNulls = function (obj) {\n return Object.keys(obj)\n .filter(function (key) { return obj[key] !== null && obj[key] !== undefined; }) // Remove undef. and null.\n .reduce(function (newObj, key) {\n var _a, _b;\n if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {\n return Object.assign(newObj, (_a = {}, _a[key] = Utils.removeNulls(obj[key]), _a));\n }\n else {\n return Object.assign(newObj, (_b = {}, _b[key] = obj[key], _b));\n }\n }, {});\n };\n Utils.removeNullsAndEmpty = function (obj) {\n return Object.keys(obj)\n .filter(function (key) { return obj[key] !== null && obj[key] !== undefined && obj[key] !== ''; }) // Remove undef. and null.\n .reduce(function (newObj, key) {\n var _a, _b;\n if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {\n return Object.assign(newObj, (_a = {}, _a[key] = Utils.removeNullsAndEmpty(obj[key]), _a));\n }\n else {\n return Object.assign(newObj, (_b = {}, _b[key] = obj[key], _b));\n }\n }, {});\n };\n Utils.messages = function () {\n return {\n hasValidOrigin: function (message) {\n return message.origin === Utils.urls.connect;\n },\n hasType: function (message) {\n return message.data && message.data.type && message.data.type !== '';\n },\n isOfType: function (message, eventType) {\n return Utils.messages().hasType(message) && message.data.type === eventType.toString();\n },\n hasCorrectCorrelationID: function (message, correlationID) {\n return correlationID && message.data && message.data.correlationID === correlationID;\n }\n };\n };\n Utils.formatNumber = function (value, minDecimals, maxDecimals) {\n if (minDecimals === void 0) { minDecimals = 2; }\n if (maxDecimals === void 0) { maxDecimals = minDecimals; }\n return new Intl.NumberFormat('en-US', {\n minimumFractionDigits: minDecimals,\n maximumFractionDigits: maxDecimals,\n }).format(value);\n };\n Utils.rawValue = function () {\n return {\n toTokenValue: function (rawValue, decimals) { return rawValue / Math.pow(10, decimals); },\n toGwei: function (rawValue) { return rawValue / Math.pow(10, 9); },\n };\n };\n Utils.gwei = function () {\n return {\n toRawValue: function (rawValue) { return rawValue * Math.pow(10, 9); },\n };\n };\n Utils.openExternalUrl = function (url, targetBlank) {\n if (targetBlank === void 0) { targetBlank = true; }\n if (targetBlank) {\n var newWindow = window.open('', '_blank');\n if (newWindow) {\n newWindow.opener = null;\n newWindow.location.assign(url);\n }\n return newWindow;\n }\n else {\n window.location.href = url;\n return window;\n }\n };\n Utils.zeroIfUndefined = function (numberToVerify) {\n return numberToVerify ? numberToVerify : 0;\n };\n Utils.defaultRedirectUriIfNotPresent = function (options) {\n if (options === void 0) { options = {}; }\n if (!options.redirectUri) {\n options.redirectUri = window.location.href;\n }\n return options;\n };\n Utils.http = function () {\n return {\n postInForm: function (to, request, bearerTokenProvider, options) {\n options = Utils.defaultRedirectUriIfNotPresent(options);\n var form = document.createElement('form');\n form.action = Utils.http().buildUrl(to, options);\n form.method = 'POST';\n var inputBearer = document.createElement('input');\n inputBearer.type = 'hidden';\n inputBearer.name = 'bearerToken';\n inputBearer.value = bearerTokenProvider();\n form.appendChild(inputBearer);\n var inputData = document.createElement('input');\n inputData.type = 'hidden';\n inputData.name = 'data';\n inputData.value = JSON.stringify(tslib_1.__assign({}, request));\n form.appendChild(inputData);\n document.body.appendChild(form);\n form.submit();\n },\n buildUrl: function (to, options) {\n if (options && (options.redirectUri || options.correlationID)) {\n var params = {};\n if (options.redirectUri) {\n params.redirectUri = options.redirectUri;\n }\n if (options.correlationID) {\n params.cid = options.correlationID;\n }\n return Utils.http().addRequestParams(to, params);\n }\n return to;\n },\n addRequestParams: function (url, params) {\n if (url && params) {\n var paramsAsString = QueryString.stringify(params);\n if (url && url.indexOf('?') > 0) {\n return url + \"&\" + paramsAsString;\n }\n else {\n return url + \"?\" + paramsAsString;\n }\n }\n return url;\n }\n };\n };\n Utils.uuidv4 = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n Utils.rawEnvironmentHolder = '';\n Utils.environment = '';\n Utils.connectEnvironment = '';\n return Utils;\n}());\nexports.default = Utils;\n//# sourceMappingURL=Utils.js.map","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WaxEventSource = void 0;\nclass WaxEventSource {\n constructor(waxSigningURL) {\n this.waxSigningURL = waxSigningURL;\n this.timeout = () => __awaiter(this, void 0, void 0, function* () {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(\"Timeout\")), 5000));\n });\n this.openEventSource = this.openEventSource.bind(this);\n this.onceEvent = this.onceEvent.bind(this);\n }\n openPopup(url) {\n return __awaiter(this, void 0, void 0, function* () {\n const win = yield window.open(url, \"WaxPopup\", \"height=800,width=600\");\n if (win) {\n return win;\n }\n throw new Error(\"Unable to open popup window\");\n });\n }\n openEventSource(url, message, win) {\n return __awaiter(this, void 0, void 0, function* () {\n const openedWindow = win ? win : yield this.openPopup(url);\n if (!openedWindow) {\n throw new Error(\"Unable to open a popup window\");\n }\n if (typeof message === \"undefined\") {\n return openedWindow;\n }\n const postTransaction = (event) => __awaiter(this, void 0, void 0, function* () {\n if (event.data.type === \"READY\") {\n openedWindow.postMessage(message, this.waxSigningURL);\n }\n });\n const eventPromise = this.onceEvent(openedWindow, this.waxSigningURL, postTransaction, \"READY\");\n yield Promise.race([eventPromise, this.timeout()]).catch(err => {\n if (err.message !== \"Timeout\") {\n throw err;\n }\n openedWindow.postMessage(message, this.waxSigningURL);\n });\n return openedWindow;\n });\n }\n onceEvent(source, origin, action, type) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n let resolved = false;\n window.addEventListener(\"message\", function onEvent(event) {\n return __awaiter(this, void 0, void 0, function* () {\n if (event.origin !== origin) {\n return;\n }\n if (event.source !== source) {\n return;\n }\n if (typeof event.data !== \"object\") {\n return;\n }\n if (type && (!event.data.type || event.data.type !== type)) {\n return;\n }\n try {\n resolved = true;\n resolve(yield action(event));\n }\n catch (e) {\n resolved = true;\n reject(e);\n }\n window.removeEventListener(\"message\", onEvent, false);\n });\n }, false);\n const interval = setInterval(() => {\n if (source.closed && !resolved) {\n clearInterval(interval);\n reject(\"user closed the window\");\n }\n }, 1000);\n });\n });\n }\n}\nexports.WaxEventSource = WaxEventSource;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WaxSigningApi = void 0;\nconst eosjs_ecc_migration_1 = require(\"eosjs/dist/eosjs-ecc-migration\");\nconst helpers_1 = require(\"./helpers\");\nconst version_1 = require(\"./version\");\nconst WaxEventSource_1 = require(\"./WaxEventSource\");\nfunction getCurrentTime() {\n return Math.floor(new Date().getTime());\n}\nclass WaxSigningApi {\n constructor(waxSigningURL, waxAutoSigningURL, rpc, metricURL, returnTempAccount) {\n this.waxSigningURL = waxSigningURL;\n this.waxAutoSigningURL = waxAutoSigningURL;\n this.rpc = rpc;\n this.metricURL = metricURL;\n this.returnTempAccount = returnTempAccount;\n this.nonce = \"\";\n this.waxEventSource = new WaxEventSource_1.WaxEventSource(waxSigningURL);\n this.metricURL = metricURL;\n this.returnTempAccount = returnTempAccount;\n this.rpc = rpc;\n }\n logout() {\n this.user = null;\n }\n login(nonce) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.user) {\n this.nonce = nonce;\n yield this.loginViaWindow();\n }\n if (this.user) {\n return this.user;\n }\n throw new Error(\"Login failed\");\n });\n }\n tryAutologin() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.user) {\n return true;\n }\n try {\n yield this.loginViaEndpoint();\n return true;\n }\n catch (e) {\n return false;\n }\n });\n }\n prepareTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.canAutoSign(transaction)) {\n this.signingWindow = yield this.waxEventSource.openPopup(`${this.waxSigningURL}/cloud-wallet/signing/`);\n }\n });\n }\n metricLog(name, value = 0, tags = []) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (this.metricURL !== \"\") {\n yield fetch(this.metricURL, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ name, value, tags }),\n });\n }\n }\n catch (e) {\n console.debug(e);\n // do nothing\n }\n });\n }\n signing(transaction, serializedTransaction, noModify = false, feeFallback = true) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.canAutoSign(transaction)) {\n try {\n const startTime = getCurrentTime();\n const res = yield this.signViaEndpoint(serializedTransaction, noModify, feeFallback);\n yield this.metricLog(\"waxjs.metric.auto_signing\", getCurrentTime() - startTime, []);\n return res;\n }\n catch (_a) {\n // handle by continuing\n }\n }\n return yield this.signViaWindow(serializedTransaction, this.signingWindow, noModify, feeFallback);\n });\n }\n proofWindow(nonce, type, description) {\n return __awaiter(this, void 0, void 0, function* () {\n const verifyUrl = `${this.waxSigningURL}/cloud-wallet/verify`;\n const referWindow = yield this.waxEventSource.openEventSource(verifyUrl, {\n type: \"VERIFY\",\n nonce,\n proof_type: type,\n description,\n });\n return this.waxEventSource.onceEvent(referWindow, this.waxSigningURL, this.receiveVerfication.bind(this), undefined);\n });\n }\n loginViaWindow() {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(`${this.waxSigningURL}/cloud-wallet/login`);\n if (this.returnTempAccount) {\n url.searchParams.append(\"returnTemp\", \"true\");\n }\n if (version_1.version) {\n url.searchParams.append(\"v\", Buffer.from(version_1.version).toString(\"base64\"));\n }\n if (this.nonce) {\n url.searchParams.append(\"n\", Buffer.from(this.nonce).toString(\"base64\"));\n }\n const confirmationWindow = yield this.waxEventSource.openEventSource(url.toString());\n return this.waxEventSource.onceEvent(confirmationWindow, this.waxSigningURL, this.receiveLogin.bind(this), undefined);\n });\n }\n loginViaEndpoint() {\n return __awaiter(this, void 0, void 0, function* () {\n const url = new URL(`${this.waxAutoSigningURL}login`);\n if (this.returnTempAccount) {\n url.search = \"returnTemp=true\";\n }\n else {\n url.search = \"\";\n }\n const response = yield fetch(url.toString(), {\n credentials: \"include\",\n method: \"get\",\n });\n if (!response.ok) {\n throw new Error(`Login Endpoint Error ${response.status} ${response.statusText}`);\n }\n const data = yield response.json();\n if (data.processed && data.processed.except) {\n throw new Error(data);\n }\n return this.receiveLogin({ data });\n });\n }\n signViaEndpoint(serializedTransaction, noModify = false, feeFallback = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = new AbortController();\n setTimeout(() => controller.abort(), 5000);\n const response = yield fetch(`${this.waxAutoSigningURL}signing`, {\n body: JSON.stringify({\n freeBandwidth: !noModify,\n feeFallback,\n transaction: Object.values(serializedTransaction),\n }),\n credentials: \"include\",\n headers: { \"Content-Type\": \"application/json\" },\n method: \"POST\",\n signal: controller.signal,\n });\n if (!response.ok) {\n this.whitelistedContracts = [];\n throw new Error(`Signing Endpoint Error ${response.status} ${response.statusText}`);\n }\n const data = yield response.json();\n if (data.processed && data.processed.except) {\n this.whitelistedContracts = [];\n throw new Error(`Error returned from signing endpoint: ${JSON.stringify(data)}`);\n }\n return this.receiveSignatures({ data });\n });\n }\n receiveVerfication(event) {\n if (event.data.type === \"DENY\") {\n throw new Error(\"User Denied Verification\");\n }\n return Object.assign({}, event.data);\n }\n signViaWindow(serializedTransaction, window, noModify = false, feeFallback = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const startTime = getCurrentTime();\n const confirmationWindow = yield this.waxEventSource.openEventSource(`${this.waxSigningURL}/cloud-wallet/signing/`, {\n startTime,\n feeFallback,\n freeBandwidth: !noModify,\n transaction: serializedTransaction,\n type: \"TRANSACTION\",\n }, window);\n return this.waxEventSource.onceEvent(confirmationWindow, this.waxSigningURL, this.receiveSignatures.bind(this), \"TX_SIGNED\");\n });\n }\n receiveLogin(event) {\n return __awaiter(this, void 0, void 0, function* () {\n const { verified, userAccount, pubKeys, whitelistedContracts, isTemp, createData, avatar_url: avatarUrl, trustScore, proof, } = event.data;\n let isProofVerified = false;\n if (!verified) {\n throw new Error(\"User declined to share their user account\");\n }\n if (!userAccount || !pubKeys) {\n throw new Error(\"User does not have a blockchain account\");\n }\n if ((proof === null || proof === void 0 ? void 0 : proof.verified) && this.nonce) {\n // handle proof logic\n const message = `cloudwallet-verification-${proof.data.referer}-${this.nonce}-${userAccount}`;\n isProofVerified = eosjs_ecc_migration_1.ecc.verify(proof.data.signature, message, yield (0, helpers_1.getProofWaxRequiredKeys)(this.rpc.endpoint));\n }\n this.whitelistedContracts = whitelistedContracts || [];\n this.user = {\n account: userAccount,\n keys: pubKeys,\n isTemp,\n createData,\n avatarUrl,\n trustScore,\n isProofVerified,\n };\n return true;\n });\n }\n receiveSignatures(event) {\n return __awaiter(this, void 0, void 0, function* () {\n if (event.data.type === \"TX_SIGNED\") {\n const { verified, signatures, whitelistedContracts, serializedTransaction, startTime, } = event.data;\n if (!verified || !signatures) {\n throw new Error(\"User declined to sign the transaction\");\n }\n this.whitelistedContracts = whitelistedContracts || [];\n if (startTime && startTime > 0) {\n this.metricLog(\"waxjs.metric.manual_sign_transaction_time\", getCurrentTime() - startTime, []);\n }\n return { serializedTransaction, signatures };\n }\n throw new Error(`Unexpected response received when attempting signing: ${JSON.stringify(event.data)}`);\n });\n }\n canAutoSign(transaction) {\n const ua = navigator.userAgent.toLowerCase();\n if (ua.search(\"chrome\") === -1 && ua.search(\"safari\") >= 0) {\n return false;\n }\n return !transaction.actions.find((action) => !this.isWhitelisted(action));\n }\n isWhitelisted(action) {\n return !!(this.whitelistedContracts &&\n !!this.whitelistedContracts.find((w) => {\n if (w.contract === action.account) {\n if (action.account === \"eosio.token\" && action.name === \"transfer\") {\n return w.recipients.includes(action.data.to);\n }\n return true;\n }\n return false;\n }));\n }\n}\nexports.WaxSigningApi = WaxSigningApi;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProofWaxRequiredKeys = void 0;\nconst getProofWaxRequiredKeys = (rpcUrl) => __awaiter(void 0, void 0, void 0, function* () {\n const response = yield fetch(`${rpcUrl}/v1/chain/get_account`, {\n body: JSON.stringify({\n account_name: \"proof.wax\",\n }),\n method: \"POST\",\n });\n if (!response.ok) {\n // Handle non-successful HTTP responses (e.g., 404 Not Found, 500 Internal Server Error)\n console.error(`HTTP error! Status: ${response.status}`);\n }\n else {\n const responseData = yield response.json();\n if (responseData.permissions) {\n for (const perm of responseData.permissions) {\n if (perm.perm_name === \"active\") {\n return perm.required_auth.keys[0].key;\n }\n }\n }\n }\n throw (new Error('Unable to retrieve the WAX proof key for account verification'));\n});\nexports.getProofWaxRequiredKeys = getProofWaxRequiredKeys;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTxVerifier = exports.WaxJS = void 0;\nconst eosjs_1 = require(\"eosjs\");\nconst eosjs_ecc_migration_1 = require(\"eosjs/dist/eosjs-ecc-migration\");\nconst helpers_1 = require(\"./helpers\");\nconst version_1 = require(\"./version\");\nconst WaxSigningApi_1 = require(\"./WaxSigningApi\");\nconst PROOF_WAX = 1;\nconst PROOF_USER = 2;\nclass WaxJS {\n get userAccount() {\n return this.user && this.user.account;\n }\n get pubKeys() {\n return this.user && this.user.keys;\n }\n get isTemp() {\n return this.user && this.user.isTemp;\n }\n get createInfo() {\n return this.user && this.user.createData;\n }\n get avatar() {\n var _a;\n return (_a = this.user) === null || _a === void 0 ? void 0 : _a.avatarUrl;\n }\n get trustScore() {\n var _a;\n return (_a = this.user) === null || _a === void 0 ? void 0 : _a.trustScore;\n }\n get trustScoreProvider() {\n return \"https://chainchamps.com\";\n }\n get version() {\n return version_1.version;\n }\n get proofVerified() {\n var _a;\n return (_a = this.user) === null || _a === void 0 ? void 0 : _a.isProofVerified;\n }\n constructor({ rpcEndpoint, tryAutoLogin = true, userAccount, pubKeys, apiSigner, waxSigningURL = \"https://www.mycloudwallet.com\", waxAutoSigningURL = \"https://idm-api.mycloudwallet.com/v1/accounts/auto-accept/\", eosApiArgs = {}, freeBandwidth = true, feeFallback = true, verifyTx = defaultTxVerifier, metricURL = \"\", returnTempAccounts = false, }) {\n this.rpc = new eosjs_1.JsonRpc(rpcEndpoint);\n this.signingApi = new WaxSigningApi_1.WaxSigningApi(waxSigningURL, waxAutoSigningURL, this.rpc, metricURL, returnTempAccounts);\n this.waxSigningURL = waxSigningURL;\n this.waxAutoSigningURL = waxAutoSigningURL;\n this.apiSigner = apiSigner;\n this.eosApiArgs = eosApiArgs;\n this.freeBandwidth = freeBandwidth;\n this.feeFallback = feeFallback;\n this.metricURL = metricURL;\n this.verifyTx = verifyTx;\n this.returnTempAccounts = returnTempAccounts;\n if (userAccount && Array.isArray(pubKeys)) {\n // login from constructor\n this.receiveLogin({ account: userAccount, keys: pubKeys });\n }\n else {\n // try to auto-login via endpoint\n if (tryAutoLogin) {\n this.signingApi.tryAutologin().then((response) => __awaiter(this, void 0, void 0, function* () {\n if (response) {\n this.receiveLogin(yield this.signingApi.login());\n }\n }));\n }\n }\n }\n login(nonce) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.user) {\n this.receiveLogin(yield this.signingApi.login(nonce));\n }\n return this.user.account;\n });\n }\n isAutoLoginAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.user) {\n return true;\n }\n else if (yield this.signingApi.tryAutologin()) {\n this.receiveLogin(yield this.signingApi.login());\n return true;\n }\n return false;\n });\n }\n logout() {\n return __awaiter(this, void 0, void 0, function* () {\n this.user = null;\n this.api = null;\n if (this.signingApi) {\n this.signingApi.logout();\n }\n });\n }\n userAccountProof(nonce, description, verify = true) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.user) {\n throw new Error(\"User is not logged in\");\n }\n const data = yield this.signingApi.proofWindow(nonce, PROOF_USER, description);\n const message = nonce;\n if (!verify) {\n return Object.assign(Object.assign({}, data), { message });\n }\n for (const key of this.pubKeys) {\n if (eosjs_ecc_migration_1.ecc.verify(data.signature, message, key)) {\n return true;\n }\n }\n return false;\n });\n }\n waxProof(nonce, verify = true) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.user) {\n throw new Error(\"User is not logged in\");\n }\n const data = yield this.signingApi.proofWindow(nonce, PROOF_WAX, null);\n const message = `cloudwallet-verification-${data.referer}-${nonce}-${data.accountName}`;\n if (!verify) {\n return Object.assign(Object.assign({}, data), { message });\n }\n return eosjs_ecc_migration_1.ecc.verify(data.signature, message, yield (0, helpers_1.getProofWaxRequiredKeys)(this.rpc.endpoint));\n });\n }\n receiveLogin(data) {\n this.user = data;\n const signatureProvider = {\n getAvailableKeys: () => __awaiter(this, void 0, void 0, function* () {\n return [\n ...this.user.keys,\n ...((this.apiSigner && (yield this.apiSigner.getAvailableKeys())) ||\n []),\n ];\n }),\n sign: (sigArgs) => __awaiter(this, void 0, void 0, function* () {\n const originalTx = yield this.api.deserializeTransactionWithActions(sigArgs.serializedTransaction);\n const { serializedTransaction, signatures } = yield this.signingApi.signing(originalTx, sigArgs.serializedTransaction, !this.freeBandwidth, this.feeFallback);\n const augmentedTx = yield this.api.deserializeTransactionWithActions(serializedTransaction);\n this.verifyTx(this.user, originalTx, augmentedTx);\n sigArgs.serializedTransaction = serializedTransaction;\n return {\n serializedTransaction,\n signatures: [\n ...signatures,\n ...((this.apiSigner &&\n (yield this.apiSigner.sign(sigArgs)).signatures) ||\n []),\n ],\n };\n }),\n };\n this.api = new eosjs_1.Api(Object.assign(Object.assign({}, this.eosApiArgs), { rpc: this.rpc, signatureProvider }));\n const transact = this.api.transact.bind(this.api);\n // We monkeypatch the transact method to overcome timeouts\n // firing the pop-up which some browsers enforce, such as Safari.\n // By pre-creating the pop-up window we will interact with,\n // we ensure that it is not going to be rejected due to a delayed\n // pop up that would otherwise occur post transaction creation\n this.api.transact = (transaction, namedParams) => __awaiter(this, void 0, void 0, function* () {\n yield this.signingApi.prepareTransaction(transaction);\n return yield transact(transaction, namedParams);\n });\n }\n}\nexports.WaxJS = WaxJS;\nfunction defaultTxVerifier(user, originalTx, augmentedTx, maxPayment = 1) {\n const { actions: originalActions } = originalTx;\n const { actions: augmentedActions } = augmentedTx;\n if (JSON.stringify(originalActions) !==\n JSON.stringify(augmentedActions.slice(augmentedActions.length - originalActions.length))) {\n throw new Error(`Augmented transaction actions has modified actions from the original.\\nOriginal: ${JSON.stringify(originalActions, undefined, 2)}\\nAugmented: ${JSON.stringify(augmentedActions, undefined, 2)}`);\n }\n for (const extraAction of augmentedActions.slice(0, augmentedActions.length - originalActions.length)) {\n const userAuthedAction = extraAction.authorization.find((auth) => {\n return auth.actor === user.account;\n });\n if (userAuthedAction) {\n if (extraAction.account === \"eosio.token\" &&\n extraAction.name === \"transfer\") {\n const noopAction = augmentedActions[0];\n if (extraAction.data.to === \"txfee.wax\" &&\n extraAction.data.memo.startsWith(\"WAX fee for \") &&\n JSON.stringify(noopAction) ===\n JSON.stringify({\n account: \"boost.wax\",\n name: \"noop\",\n authorization: [\n {\n actor: \"boost.wax\",\n permission: \"paybw\",\n },\n ],\n data: {},\n })) {\n continue;\n }\n }\n if (extraAction.account === \"eosio\" &&\n extraAction.name === \"buyrambytes\" &&\n extraAction.data.receiver === user.account) {\n continue;\n }\n if (extraAction.account === \"eosio\" &&\n extraAction.name === \"powerup\" &&\n extraAction.data.payer === user.account &&\n extraAction.data.receiver === user.account) {\n continue;\n }\n throw new Error(`Augmented transaction actions has an extra action from the original authorizing the user.\\nOriginal: ${JSON.stringify(originalActions, undefined, 2)}\\nAugmented: ${JSON.stringify(augmentedActions, undefined, 2)}`);\n }\n }\n}\nexports.defaultTxVerifier = defaultTxVerifier;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = void 0;\n// Generated by genversion.\nexports.version = '1.7.1';\n","\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED$1 = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN$1 = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1 = 3;\nconst MAX_MATCH$1 = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1 = 30;\n/* number of distance codes */\n\nconst BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Tracev((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n\n const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS$1; bits++) {\n code = (code + bl_count[bits - 1]) << 1;\n next_code[bits] = code;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES$1; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES$1; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES$1; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES$1; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let sx = 0; /* running index in sym_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.sym_next !== 0) {\n do {\n dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n lc = s.pending_buf[s.sym_buf + sx++];\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and sym_buf is ok: */\n //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n } while (sx < s.sym_next);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE$1;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"block list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* block_mask is the bit mask of block-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let block_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"block-listed\") bytes. */\n for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"allow-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS$1; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"block-listed\" or \"allow-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n bi_windup(s); /* align on byte boundary */\n put_short(s, stored_len);\n put_short(s, ~stored_len);\n if (stored_len) {\n s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n }\n s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN$1) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->sym_next / 3));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block$1(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) => {\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n return (s.sym_next === s.sym_end);\n};\n\nvar _tr_init_1 = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1 = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,\n Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n Z_UNKNOWN,\n Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42; /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE = 57; /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE = 69; /* gzip extra block -> NAME_STATE */\nconst NAME_STATE = 73; /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE = 91; /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE = 103; /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE = 113; /* deflate -> FINISH_STATE */\nconst FINISH_STATE = 666; /* stream complete */\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = messages[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n let n, m;\n let p;\n let wsize = s.w_size;\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= wsize ? m - wsize : 0);\n } while (--n);\n n = wsize;\n//#ifndef FASTEST\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= wsize ? m - wsize : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32_1(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32_1(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let n, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n slide_hash(s);\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Smallest worthy block size when not flushing or finishing. By default\n * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n * large input and output buffers, the stored block size will be larger.\n */\n let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n /* Copy as many min_block or larger stored blocks directly to next_out as\n * possible. If flushing, copy the remaining available input to next_out as\n * stored blocks, if there is enough space.\n */\n let len, left, have, last = 0;\n let used = s.strm.avail_in;\n do {\n /* Set len to the maximum size block that we can copy directly with the\n * available input data and output space. Set left to how much of that\n * would be copied from what's left in the window.\n */\n len = 65535/* MAX_STORED */; /* maximum deflate stored block length */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n if (s.strm.avail_out < have) { /* need room for header */\n break;\n }\n /* maximum stored block length that will fit in avail_out: */\n have = s.strm.avail_out - have;\n left = s.strstart - s.block_start; /* bytes left in window */\n if (len > left + s.strm.avail_in) {\n len = left + s.strm.avail_in; /* limit len to the input */\n }\n if (len > have) {\n len = have; /* limit len to the output */\n }\n\n /* If the stored block would be less than min_block in length, or if\n * unable to copy all of the available input when flushing, then try\n * copying to the window and the pending buffer instead. Also don't\n * write an empty block when flushing -- deflate() does that.\n */\n if (len < min_block && ((len === 0 && flush !== Z_FINISH$3) ||\n flush === Z_NO_FLUSH$2 ||\n len !== left + s.strm.avail_in)) {\n break;\n }\n\n /* Make a dummy stored block in pending to get the header bytes,\n * including any pending bits. This also updates the debugging counts.\n */\n last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;\n _tr_stored_block(s, 0, 0, last);\n\n /* Replace the lengths in the dummy stored block with len. */\n s.pending_buf[s.pending - 4] = len;\n s.pending_buf[s.pending - 3] = len >> 8;\n s.pending_buf[s.pending - 2] = ~len;\n s.pending_buf[s.pending - 1] = ~len >> 8;\n\n /* Write the stored block header bytes. */\n flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n// /* Update debugging counts for the data about to be copied. */\n// s->compressed_len += len << 3;\n// s->bits_sent += len << 3;\n//#endif\n\n /* Copy uncompressed bytes from the window to next_out. */\n if (left) {\n if (left > len) {\n left = len;\n }\n //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n s.strm.next_out += left;\n s.strm.avail_out -= left;\n s.strm.total_out += left;\n s.block_start += left;\n len -= left;\n }\n\n /* Copy uncompressed bytes directly from next_in to next_out, updating\n * the check value.\n */\n if (len) {\n read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n s.strm.next_out += len;\n s.strm.avail_out -= len;\n s.strm.total_out += len;\n }\n } while (last === 0);\n\n /* Update the sliding window with the last s->w_size bytes of the copied\n * data, or append all of the copied data to the existing window if less\n * than s->w_size bytes were copied. Also update the number of bytes to\n * insert in the hash tables, in the event that deflateParams() switches to\n * a non-zero compression level.\n */\n used -= s.strm.avail_in; /* number of input bytes directly copied */\n if (used) {\n /* If any input was used, then no unused input remains in the window,\n * therefore s->block_start == s->strstart.\n */\n if (used >= s.w_size) { /* supplant the previous history */\n s.matches = 2; /* clear hash */\n //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n s.strstart = s.w_size;\n s.insert = s.strstart;\n }\n else {\n if (s.window_size - s.strstart <= used) {\n /* Slide the window down. */\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n s.strstart += used;\n s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n }\n s.block_start = s.strstart;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* If the last block was written to next_out, then done. */\n if (last) {\n return BS_FINISH_DONE;\n }\n\n /* If flushing and all input has been consumed, then done. */\n if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 &&\n s.strm.avail_in === 0 && s.strstart === s.block_start) {\n return BS_BLOCK_DONE;\n }\n\n /* Fill the window with any remaining input. */\n have = s.window_size - s.strstart;\n if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n /* Slide the window down. */\n s.block_start -= s.w_size;\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n have += s.w_size; /* more space now */\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n if (have > s.strm.avail_in) {\n have = s.strm.avail_in;\n }\n if (have) {\n read_buf(s.strm, s.window, s.strstart, have);\n s.strstart += have;\n s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* There was not enough avail_out to write a complete worthy or flushed\n * stored block to next_out. Write a stored block to pending instead, if we\n * have enough input for a worthy block, or if flushing and there is enough\n * room for the remaining input as a stored block in the pending buffer.\n */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n /* maximum stored block length that will fit in pending: */\n have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n min_block = have > s.w_size ? s.w_size : have;\n left = s.strstart - s.block_start;\n if (left >= min_block ||\n ((left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 &&\n s.strm.avail_in === 0 && left <= have)) {\n len = left > have ? have : left;\n last = flush === Z_FINISH$3 && s.strm.avail_in === 0 &&\n len === left ? 1 : 0;\n _tr_stored_block(s, s.block_start, len, last);\n s.block_start += len;\n flush_pending(s.strm);\n }\n\n /* We've done all we can with the available input and output. */\n return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.sym_buf = 0; /* buffer for distances and literals/lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.sym_next = 0; /* running index in sym_buf */\n this.sym_end = 0; /* symbol table full when sym_next reaches this */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const s = strm.state;\n if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n s.status !== GZIP_STATE &&\n//#endif\n s.status !== EXTRA_STATE &&\n s.status !== NAME_STATE &&\n s.status !== COMMENT_STATE &&\n s.status !== HCRC_STATE &&\n s.status !== BUSY_STATE &&\n s.status !== FINISH_STATE)) {\n return 1;\n }\n return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status =\n//#ifdef GZIP\n s.wrap === 2 ? GZIP_STATE :\n//#endif\n s.wrap ? INIT_STATE : BUSY_STATE;\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = -2;\n _tr_init(s);\n return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK$3) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n return Z_STREAM_ERROR$2;\n }\n strm.state.gzhead = head;\n return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR$2;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION$1) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n s.status = INIT_STATE; /* to pass state test in deflateReset() */\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n /* We overlay pending_buf and sym_buf. This works since the average size\n * for length/distance pairs over any compressed block is assured to be 31\n * bits or less.\n *\n * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n * possible fixed-codes length/distance pair is then 31 bits total.\n *\n * sym_buf starts one-fourth of the way into pending_buf. So there are\n * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n * in sym_buf is three bytes -- two for the distance and one for the\n * literal/length. As each symbol is consumed, the pointer to the next\n * sym_buf value to read moves forward three bytes. From that symbol, up to\n * 31 bits are written to pending_buf. The closest the written pending_buf\n * bits gets to the next sym_buf symbol to read is just before the last\n * code is written. At that time, 31*(n-2) bits have been written, just\n * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n * symbols are written.) The closest the writing gets to what is unread is\n * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n * can range from 128 to 32768.\n *\n * Therefore, at a minimum, there are 142 bits of space between what is\n * written and what is read in the overlain buffers, so the symbols cannot\n * be overwritten by the compressed data. That space is actually 139 bits,\n * due to the three-bit fixed-code block header.\n *\n * That covers the case where either Z_FIXED is specified, forcing fixed\n * codes, or when the use of fixed codes is chosen, because that choice\n * results in a smaller compressed block than dynamic codes. That latter\n * condition then assures that the above analysis also covers all dynamic\n * blocks. A dynamic-code block will only be chosen to be emitted if it has\n * fewer bits than a fixed-code block would for the same set of symbols.\n * Therefore its average symbol length is assured to be less than 31. So\n * the compressed data for a dynamic block also cannot overwrite the\n * symbols from which it is being constructed.\n */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->sym_buf = s->pending_buf + s->lit_bufsize;\n s.sym_buf = s.lit_bufsize;\n\n //s->sym_end = (s->lit_bufsize - 1) * 3;\n s.sym_end = (s.lit_bufsize - 1) * 3;\n /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\n/* ========================================================================= */\nconst deflate$2 = (strm, flush) => {\n\n if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (strm.avail_in !== 0 && !strm.input) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n }\n\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK$3;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH$3) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* Write the header */\n if (s.status === INIT_STATE && s.wrap === 0) {\n s.status = BUSY_STATE;\n }\n if (s.status === INIT_STATE) {\n /* zlib header */\n let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n//#ifdef GZIP\n if (s.status === GZIP_STATE) {\n /* gzip header */\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n while (s.pending + left > s.pending_buf_size) {\n let copy = s.pending_buf_size - s.pending;\n // zmemcpy(s.pending_buf + s.pending,\n // s.gzhead.extra + s.gzindex, copy);\n s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n s.pending = s.pending_buf_size;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex += copy;\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n left -= copy;\n }\n // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n // TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n let gzhead_extra = new Uint8Array(s.gzhead.extra);\n // zmemcpy(s->pending_buf + s->pending,\n // s->gzhead->extra + s->gzindex, left);\n s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n s.pending += left;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = NAME_STATE;\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = COMMENT_STATE;\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n }\n s.status = HCRC_STATE;\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n }\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n//#endif\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n let bstate = s.level === 0 ? deflate_stored(s, flush) :\n s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush);\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK$3;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH$1) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK$3;\n }\n }\n }\n\n if (flush !== Z_FINISH$3) { return Z_OK$3; }\n if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR$2;\n }\n\n const status = strm.state.status;\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR$2;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n this.options = common.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED$1,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = deflate_1$2.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n if (opt.header) {\n deflate_1$2.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = deflate_1$2.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END$2) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = deflate_1$2.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK$2;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK$2) {\n this.result = common.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n const deflator = new Deflate$1(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 16209; /* got a data error -- remain here until reset */\nconst TYPE$1 = 16191; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE$1;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n// let shoextra; /* extra bits table to use */\n let match; /* use base and extra for symbol >= match */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES$1 || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES$1) {\n base = extra = work; /* dummy value--not used */\n match = 20;\n\n } else if (type === LENS$1) {\n base = lbase;\n extra = lext;\n match = 257;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n match = 0;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] + 1 < match) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] >= match) {\n here_op = extra[work[sym] - match];\n here_val = base[work[sym] - match];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 16180; /* i: waiting for magic header */\nconst FLAGS = 16181; /* i: waiting for method and flags (gzip) */\nconst TIME = 16182; /* i: waiting for modification time (gzip) */\nconst OS = 16183; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 16184; /* i: waiting for extra length (gzip) */\nconst EXTRA = 16185; /* i: waiting for extra bytes (gzip) */\nconst NAME = 16186; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 16187; /* i: waiting for end of comment (gzip) */\nconst HCRC = 16188; /* i: waiting for header crc (gzip) */\nconst DICTID = 16189; /* i: waiting for dictionary check value */\nconst DICT = 16190; /* waiting for inflateSetDictionary() call */\nconst TYPE = 16191; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 16192; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 16193; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 16194; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16195; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 16196; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 16197; /* i: waiting for code length code lengths */\nconst CODELENS = 16198; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 16199; /* i: same as LEN below, but only first time in */\nconst LEN = 16200; /* i: waiting for length/lit/eob code */\nconst LENEXT = 16201; /* i: waiting for length extra bits */\nconst DIST = 16202; /* i: waiting for distance code */\nconst DISTEXT = 16203; /* i: waiting for distance extra bits */\nconst MATCH = 16204; /* o: waiting for output space to copy string */\nconst LIT = 16205; /* o: waiting for output space to write literal */\nconst CHECK = 16206; /* i: waiting for 32-bit check value */\nconst LENGTH = 16207; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 16208; /* finished check, done -- remain here until reset */\nconst BAD = 16209; /* got a data error -- remain here until reset */\nconst MEM = 16210; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 16211; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip,\n bit 2 true to validate check value */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib), or\n -1 if raw or no header yet */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const state = strm.state;\n if (!state || state.strm !== strm ||\n state.mode < HEAD || state.mode > SYNC) {\n return 1;\n }\n return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.flags = -1;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 5;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.strm = strm;\n state.window = null/*Z_NULL*/;\n state.mode = HEAD; /* to pass state test in inflateReset2() */\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (inflateStateCheck(strm) || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n if (state.wbits === 0) {\n state.wbits = 15;\n }\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n if (len > 15 || len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n state.flags = 0; /* indicate zlib header */\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32_1(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inffast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check =\n /*UPDATE_CHECK(state.check, put - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR$1;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (inflateStateCheck(strm)) {\n return Z_STREAM_ERROR$1;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32_1(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR$1;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n this.options = common.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = inflate_1$2.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n\n this.header = new gzheader();\n\n inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate_1$2.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = inflate_1$2.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n inflate_1$2.inflateReset(strm);\n status = inflate_1$2.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = inflate_1$2.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = common.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n const inflator = new Inflate$1(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n","/**\n * @wharfkit/antelope v1.0.12\n * https://github.com/wharfkit/antelope\n *\n * @license\n * Copyright (c) 2023 FFF00 Agents AB & Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport rand from 'brorand';\nimport { sha256, sha512, ripemd160 } from 'hash.js';\nimport BN from 'bn.js';\nimport { ec } from 'elliptic';\nimport { __decorate } from 'tslib';\nimport pako from 'pako';\n\nfunction arrayEquals(a, b) {\n const len = a.length;\n if (len !== b.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nfunction arrayEquatableEquals(a, b) {\n const len = a.length;\n if (len !== b.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (!a[i].equals(b[i])) {\n return false;\n }\n }\n return true;\n}\nconst hexLookup = {};\nfunction buildHexLookup() {\n hexLookup.enc = new Array(0xff);\n hexLookup.dec = {};\n for (let i = 0; i <= 0xff; ++i) {\n const b = i.toString(16).padStart(2, '0');\n hexLookup.enc[i] = b;\n hexLookup.dec[b] = i;\n }\n}\nfunction arrayToHex(array) {\n if (!hexLookup.enc) {\n buildHexLookup();\n }\n const len = array.length;\n const rv = new Array(len);\n for (let i = 0; i < len; ++i) {\n rv[i] = hexLookup.enc[array[i]];\n }\n return rv.join('');\n}\nfunction hexToArray(hex) {\n if (!hexLookup.dec) {\n buildHexLookup();\n }\n if (typeof hex !== 'string') {\n throw new Error('Expected string containing hex digits');\n }\n if (hex.length % 2) {\n throw new Error('Odd number of hex digits');\n }\n hex = hex.toLowerCase();\n const len = hex.length / 2;\n const result = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n const b = hexLookup.dec[hex[i * 2] + hex[i * 2 + 1]];\n if (b === undefined) {\n throw new Error('Expected hex string');\n }\n result[i] = b;\n }\n return result;\n}\n/** Generate N random bytes, throws if a secure random source isn't available. */\nfunction secureRandom(length) {\n return rand(length);\n}\n/** Used in isInstanceOf checks so we don't spam with warnings. */\nlet didWarn = false;\n/** Check if object in instance of class. */\nfunction isInstanceOf(object, someClass) {\n if (object instanceof someClass) {\n return true;\n }\n if (object == null || typeof object !== 'object') {\n return false;\n }\n // not an actual instance but since bundlers can fail to dedupe stuff or\n // multiple versions can be included we check for compatibility if possible\n const className = someClass['__className'] || someClass['abiName'];\n if (!className) {\n return false;\n }\n let instanceClass = object.constructor;\n let isAlienInstance = false;\n while (instanceClass && !isAlienInstance) {\n const instanceClassName = instanceClass['__className'] || instanceClass['abiName'];\n if (!instanceClassName) {\n break;\n }\n isAlienInstance = className == instanceClassName;\n instanceClass = Object.getPrototypeOf(instanceClass);\n }\n if (isAlienInstance && !didWarn) {\n // eslint-disable-next-line no-console\n console.warn(`Detected alien instance of ${className}, this usually means more than one version of @wharfkit/antelope has been included in your bundle.`);\n didWarn = true;\n }\n return isAlienInstance;\n}\n\nclass Blob {\n /**\n * Create a new Blob instance.\n */\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string') {\n return this.fromString(value);\n }\n throw new Error('Invalid blob');\n }\n static fromString(value) {\n // If buffer is available, use it (maintains support for nodejs 14)\n if (typeof Buffer === 'function') {\n return new this(new Uint8Array(Buffer.from(value, 'base64')));\n }\n // fix up base64 padding from nodeos\n switch (value.length % 4) {\n case 2:\n value += '==';\n break;\n case 3:\n value += '=';\n break;\n case 1:\n value = value.substring(0, value.length - 1);\n break;\n }\n const string = atob(value);\n const array = new Uint8Array(string.length);\n for (let i = 0; i < string.length; i++) {\n array[i] = string.charCodeAt(i);\n }\n return new this(array);\n }\n constructor(array) {\n this.array = array;\n }\n equals(other) {\n const self = this.constructor;\n try {\n return arrayEquals(this.array, self.from(other).array);\n }\n catch {\n return false;\n }\n }\n get base64String() {\n // If buffer is available, use it (maintains support for nodejs 14)\n if (typeof Buffer === 'function') {\n return Buffer.from(this.array).toString('base64');\n }\n return btoa(this.utf8String);\n }\n /** UTF-8 string representation of this instance. */\n get utf8String() {\n return new TextDecoder().decode(this.array);\n }\n toABI(encoder) {\n encoder.writeArray(this.array);\n }\n toString() {\n return this.base64String;\n }\n toJSON() {\n return this.toString();\n }\n}\nBlob.abiName = 'blob';\n\nclass Bytes {\n /**\n * Create a new Bytes instance.\n * @note Make sure to take a [[copy]] before mutating the bytes as the underlying source is not copied here.\n */\n static from(value, encoding) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string') {\n return this.fromString(value, encoding);\n }\n if (ArrayBuffer.isView(value)) {\n return new this(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\n }\n if (isInstanceOf(value['array'], Uint8Array)) {\n return new this(value['array']);\n }\n return new this(new Uint8Array(value));\n }\n static fromString(value, encoding = 'hex') {\n if (encoding === 'hex') {\n const array = hexToArray(value);\n return new this(array);\n }\n else if (encoding == 'utf8') {\n const encoder = new TextEncoder();\n return new this(encoder.encode(value));\n }\n else {\n throw new Error(`Unknown encoding: ${encoding}`);\n }\n }\n static fromABI(decoder) {\n const len = decoder.readVaruint32();\n return new this(decoder.readArray(len));\n }\n static abiDefault() {\n return new Bytes();\n }\n static equal(a, b) {\n return this.from(a).equals(this.from(b));\n }\n static random(length) {\n return new this(secureRandom(length));\n }\n /** Return true if given value is a valid `BytesType`. */\n static isBytes(value) {\n if (isInstanceOf(value, Bytes) || isInstanceOf(value, Uint8Array)) {\n return true;\n }\n if (Array.isArray(value) && value.every((v) => typeof v === 'number')) {\n return true;\n }\n if (typeof value === 'string' && (/[\\da-f]/i.test(value) || value === '')) {\n return true;\n }\n return false;\n }\n constructor(array = new Uint8Array()) {\n this.array = array;\n }\n /** Number of bytes in this instance. */\n get length() {\n return this.array.byteLength;\n }\n /** Hex string representation of this instance. */\n get hexString() {\n return arrayToHex(this.array);\n }\n /** UTF-8 string representation of this instance. */\n get utf8String() {\n return new TextDecoder().decode(this.array);\n }\n /** Mutating. Append bytes to this instance. */\n append(other) {\n other = Bytes.from(other);\n const newSize = this.array.byteLength + other.array.byteLength;\n const buffer = new ArrayBuffer(newSize);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n array.set(other.array, this.array.byteLength);\n this.array = array;\n }\n /** Non-mutating, returns a copy of this instance with appended bytes. */\n appending(other) {\n const rv = new Bytes(this.array);\n rv.append(other);\n return rv;\n }\n /** Mutating. Pad this instance to length. */\n zeropad(n, truncate = false) {\n const newSize = truncate ? n : Math.max(n, this.array.byteLength);\n const buffer = new ArrayBuffer(newSize);\n const array = new Uint8Array(buffer);\n array.fill(0);\n if (truncate && this.array.byteLength > newSize) {\n array.set(this.array.slice(0, newSize), 0);\n }\n else {\n array.set(this.array, newSize - this.array.byteLength);\n }\n this.array = array;\n }\n /** Non-mutating, returns a copy of this instance with zeros padded. */\n zeropadded(n, truncate = false) {\n const rv = new Bytes(this.array);\n rv.zeropad(n, truncate);\n return rv;\n }\n /** Mutating. Drop bytes from the start of this instance. */\n dropFirst(n = 1) {\n this.array = this.array.subarray(n);\n }\n /** Non-mutating, returns a copy of this instance with dropped bytes from the start. */\n droppingFirst(n = 1) {\n return new Bytes(this.array.subarray(n));\n }\n copy() {\n const buffer = new ArrayBuffer(this.array.byteLength);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n return new Bytes(array);\n }\n equals(other) {\n return arrayEquals(this.array, Bytes.from(other).array);\n }\n toString(encoding = 'hex') {\n if (encoding === 'hex') {\n return this.hexString;\n }\n else if (encoding === 'utf8') {\n return this.utf8String;\n }\n else {\n throw new Error(`Unknown encoding: ${encoding}`);\n }\n }\n toABI(encoder) {\n encoder.writeVaruint32(this.array.byteLength);\n encoder.writeArray(this.array);\n }\n toJSON() {\n return this.hexString;\n }\n}\nBytes.abiName = 'bytes';\n\nclass Checksum {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (isInstanceOf(value, Checksum)) {\n return new this(value.array);\n }\n return new this(Bytes.from(value).array);\n }\n static fromABI(decoder) {\n return new this(decoder.readArray(this.byteSize));\n }\n static abiDefault() {\n return new this(new Uint8Array(this.byteSize));\n }\n constructor(array) {\n const byteSize = this.constructor.byteSize;\n if (array.byteLength !== byteSize) {\n throw new Error(`Checksum size mismatch, expected ${byteSize} bytes got ${array.byteLength}`);\n }\n this.array = array;\n }\n equals(other) {\n const self = this.constructor;\n try {\n return arrayEquals(this.array, self.from(other).array);\n }\n catch {\n return false;\n }\n }\n get hexString() {\n return arrayToHex(this.array);\n }\n toABI(encoder) {\n encoder.writeArray(this.array);\n }\n toString() {\n return this.hexString;\n }\n toJSON() {\n return this.toString();\n }\n}\nChecksum.abiName = '__checksum';\nclass Checksum256 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(sha256().update(Bytes.from(data).array).digest());\n return new Checksum256(digest);\n }\n}\nChecksum256.abiName = 'checksum256';\nChecksum256.byteSize = 32;\nclass Checksum512 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(sha512().update(Bytes.from(data).array).digest());\n return new Checksum512(digest);\n }\n}\nChecksum512.abiName = 'checksum512';\nChecksum512.byteSize = 64;\nclass Checksum160 extends Checksum {\n static from(value) {\n return super.from(value);\n }\n static hash(data) {\n const digest = new Uint8Array(ripemd160().update(Bytes.from(data).array).digest());\n return new Checksum160(digest);\n }\n}\nChecksum160.abiName = 'checksum160';\nChecksum160.byteSize = 20;\n\n/** Supported Antelope/EOSIO curve types. */\nvar KeyType;\n(function (KeyType) {\n KeyType[\"K1\"] = \"K1\";\n KeyType[\"R1\"] = \"R1\";\n KeyType[\"WA\"] = \"WA\";\n})(KeyType || (KeyType = {}));\n(function (KeyType) {\n function indexFor(value) {\n switch (value) {\n case KeyType.K1:\n return 0;\n case KeyType.R1:\n return 1;\n case KeyType.WA:\n return 2;\n default:\n throw new Error(`Unknown curve type: ${value}`);\n }\n }\n KeyType.indexFor = indexFor;\n function from(value) {\n let index;\n if (typeof value !== 'number') {\n index = KeyType.indexFor(value);\n }\n else {\n index = value;\n }\n switch (index) {\n case 0:\n return KeyType.K1;\n case 1:\n return KeyType.R1;\n case 2:\n return KeyType.WA;\n default:\n throw new Error('Unknown curve type');\n }\n }\n KeyType.from = from;\n})(KeyType || (KeyType = {}));\n\n/**\n * Binary integer with the underlying value represented by a BN.js instance.\n * Follows C++11 standard for arithmetic operators and conversions.\n * @note This type is optimized for correctness not speed, if you plan to manipulate\n * integers in a tight loop you're advised to use the underlying BN.js value or\n * convert to a JavaScript number first.\n */\nclass Int {\n /** Largest value that can be represented by this integer type. */\n static get max() {\n return new BN(2).pow(new BN(this.byteWidth * 8 - (this.isSigned ? 1 : 0))).isubn(1);\n }\n /** Smallest value that can be represented by this integer type. */\n static get min() {\n return this.isSigned ? this.max.ineg().isubn(1) : new BN(0);\n }\n /** Add `lhs` to `rhs` and return the resulting value. */\n static add(lhs, rhs, overflow = 'truncate') {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.add(b));\n }\n /** Add `lhs` to `rhs` and return the resulting value. */\n static sub(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.sub(b));\n }\n /** Multiply `lhs` by `rhs` and return the resulting value. */\n static mul(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => a.mul(b));\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient, dropping the remainder.\n * @throws When dividing by zero.\n */\n static div(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n return a.div(b);\n });\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient + remainder rounded to the closest integer.\n * @throws When dividing by zero.\n */\n static divRound(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n return a.divRound(b);\n });\n }\n /**\n * Divide `lhs` by `rhs` and return the quotient + remainder rounded up to the closest integer.\n * @throws When dividing by zero.\n */\n static divCeil(lhs, rhs, overflow) {\n return Int.operator(lhs, rhs, overflow, (a, b) => {\n if (b.isZero()) {\n throw new Error('Division by zero');\n }\n const dm = a.divmod(b);\n if (dm.mod.isZero())\n return dm.div;\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n });\n }\n /** Compare `lhs` to `rhs` and return true if `lhs` is greater than `rhs`. */\n static gt(lhs, rhs) {\n return lhs.value.gt(rhs.value);\n }\n /** Compare `lhs` to `rhs` and return true if `lhs` is less than `rhs`. */\n static lt(lhs, rhs) {\n return lhs.value.lt(rhs.value);\n }\n /** Compare `lhs` to `rhs` and return true if `lhs` is greater than or equal to `rhs`. */\n static gte(lhs, rhs) {\n return lhs.value.gte(rhs.value);\n }\n /** Compare `lhs` to `rhs` and return true if `lhs` is less than or equal to `rhs`. */\n static lte(lhs, rhs) {\n return lhs.value.lte(rhs.value);\n }\n /**\n * Can be used to implement custom operator.\n * @internal\n */\n static operator(lhs, rhs, overflow = 'truncate', fn) {\n const { a, b } = convert(lhs, rhs);\n const type = a.constructor;\n const result = fn(a.value, b.value);\n return type.from(result, overflow);\n }\n static from(value, overflow) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n let fromType = this;\n let bn;\n if (isInstanceOf(value, Int)) {\n fromType = value.constructor;\n bn = value.value.clone();\n }\n else if (value instanceof Uint8Array) {\n bn = new BN(value, undefined, 'le');\n if (fromType.isSigned) {\n bn = bn.fromTwos(fromType.byteWidth * 8);\n }\n }\n else {\n if ((typeof value === 'string' && !/[0-9]+/.test(value)) ||\n (typeof value === 'number' && !Number.isFinite(value))) {\n throw new Error('Invalid number');\n }\n bn = BN.isBN(value) ? value.clone() : new BN(value, 10);\n if (bn.isNeg() && !fromType.isSigned) {\n fromType = { byteWidth: fromType.byteWidth, isSigned: true };\n }\n }\n switch (overflow) {\n case 'clamp':\n bn = clamp(bn, this.min, this.max);\n break;\n case 'truncate':\n bn = truncate(bn, fromType, this);\n break;\n }\n return new this(bn);\n }\n static fromABI(decoder) {\n return this.from(decoder.readArray(this.byteWidth));\n }\n static abiDefault() {\n return this.from(0);\n }\n static random() {\n return this.from(secureRandom(this.byteWidth));\n }\n /**\n * Create a new instance, don't use this directly. Use the `.from` factory method instead.\n * @throws If the value over- or under-flows the integer type.\n */\n constructor(value) {\n const self = this.constructor;\n if (self.isSigned === undefined || self.byteWidth === undefined) {\n throw new Error('Cannot instantiate abstract class Int');\n }\n if (value.gt(self.max)) {\n throw new Error(`Number ${value} overflows ${self.abiName}`);\n }\n if (value.lt(self.min)) {\n throw new Error(`Number ${value} underflows ${self.abiName}`);\n }\n this.value = value;\n }\n cast(type, overflow = 'truncate') {\n if (this.constructor === type) {\n return this;\n }\n return type.from(this, overflow);\n }\n /** Number as bytes in little endian (matches memory layout in C++ contract). */\n get byteArray() {\n const self = this.constructor;\n const value = self.isSigned ? this.value.toTwos(self.byteWidth * 8) : this.value;\n return value.toArrayLike(Uint8Array, 'le', self.byteWidth);\n }\n /**\n * Compare two integers, if strict is set to true the test will only consider integers\n * of the exact same type. I.e. Int64.from(1).equals(UInt64.from(1)) will return false.\n */\n equals(other, strict = false) {\n const self = this.constructor;\n if (strict === true && isInstanceOf(other, Int)) {\n const otherType = other.constructor;\n if (self.byteWidth !== otherType.byteWidth || self.isSigned !== otherType.isSigned) {\n return false;\n }\n }\n try {\n return this.value.eq(self.from(other).value);\n }\n catch {\n return false;\n }\n }\n /** Mutating add. */\n add(num) {\n this.value = this.operator(num, Int.add).value;\n }\n /** Non-mutating add. */\n adding(num) {\n return this.operator(num, Int.add);\n }\n /** Mutating subtract. */\n subtract(num) {\n this.value = this.operator(num, Int.sub).value;\n }\n /** Non-mutating subtract. */\n subtracting(num) {\n return this.operator(num, Int.sub);\n }\n /** Mutating multiply. */\n multiply(by) {\n this.value = this.operator(by, Int.mul).value;\n }\n /** Non-mutating multiply. */\n multiplying(by) {\n return this.operator(by, Int.mul);\n }\n /**\n * Mutating divide.\n * @param behavior How to handle the remainder, default is to floor (round down).\n * @throws When dividing by zero.\n */\n divide(by, behavior) {\n this.value = this.dividing(by, behavior).value;\n }\n /**\n * Non-mutating divide.\n * @param behavior How to handle the remainder, default is to floor (round down).\n * @throws When dividing by zero.\n */\n dividing(by, behavior) {\n let op = Int.div;\n switch (behavior) {\n case 'ceil':\n op = Int.divCeil;\n break;\n case 'round':\n op = Int.divRound;\n break;\n }\n return this.operator(by, op);\n }\n /** Greater than comparision operator */\n gt(other) {\n return Int.gt(this, other);\n }\n /** Less than comparision operator */\n lt(other) {\n return Int.lt(this, other);\n }\n /** Greater than or equal comparision operator */\n gte(other) {\n return Int.gte(this, other);\n }\n /** Less than or equal comparision operator */\n lte(other) {\n return Int.lte(this, other);\n }\n /**\n * Run operator with C++11 implicit conversion.\n * @internal\n */\n operator(other, fn) {\n let rhs;\n if (isInstanceOf(other, Int)) {\n rhs = other;\n }\n else {\n rhs = Int64.from(other, 'truncate');\n }\n return fn(this, rhs).cast(this.constructor);\n }\n /**\n * Convert to a JavaScript number.\n * @throws If the number cannot be represented by 53-bits.\n **/\n toNumber() {\n return this.value.toNumber();\n }\n toString() {\n return this.value.toString();\n }\n [Symbol.toPrimitive](type) {\n if (type === 'number') {\n return this.toNumber();\n }\n else {\n return this.toString();\n }\n }\n toABI(encoder) {\n encoder.writeArray(this.byteArray);\n }\n toJSON() {\n // match FCs behavior and return strings for anything above 32-bit\n if (this.value.bitLength() > 32) {\n return this.value.toString();\n }\n else {\n return this.value.toNumber();\n }\n }\n}\nInt.abiName = '__int';\nclass Int8 extends Int {\n}\nInt8.abiName = 'int8';\nInt8.byteWidth = 1;\nInt8.isSigned = true;\nclass Int16 extends Int {\n}\nInt16.abiName = 'int16';\nInt16.byteWidth = 2;\nInt16.isSigned = true;\nclass Int32 extends Int {\n}\nInt32.abiName = 'int32';\nInt32.byteWidth = 4;\nInt32.isSigned = true;\nclass Int64 extends Int {\n}\nInt64.abiName = 'int64';\nInt64.byteWidth = 8;\nInt64.isSigned = true;\nclass Int128 extends Int {\n}\nInt128.abiName = 'int128';\nInt128.byteWidth = 16;\nInt128.isSigned = true;\nclass UInt8 extends Int {\n}\nUInt8.abiName = 'uint8';\nUInt8.byteWidth = 1;\nUInt8.isSigned = false;\nclass UInt16 extends Int {\n}\nUInt16.abiName = 'uint16';\nUInt16.byteWidth = 2;\nUInt16.isSigned = false;\nclass UInt32 extends Int {\n}\nUInt32.abiName = 'uint32';\nUInt32.byteWidth = 4;\nUInt32.isSigned = false;\nclass UInt64 extends Int {\n}\nUInt64.abiName = 'uint64';\nUInt64.byteWidth = 8;\nUInt64.isSigned = false;\nclass UInt128 extends Int {\n}\nUInt128.abiName = 'uint128';\nUInt128.byteWidth = 16;\nUInt128.isSigned = false;\nclass VarInt extends Int {\n static fromABI(decoder) {\n return new this(new BN(decoder.readVarint32()));\n }\n toABI(encoder) {\n encoder.writeVarint32(Number(this));\n }\n}\nVarInt.abiName = 'varint32';\nVarInt.byteWidth = 32;\nVarInt.isSigned = true;\nclass VarUInt extends Int {\n static fromABI(decoder) {\n return new this(new BN(decoder.readVaruint32()));\n }\n toABI(encoder) {\n encoder.writeVaruint32(Number(this));\n }\n}\nVarUInt.abiName = 'varuint32';\nVarUInt.byteWidth = 32;\nVarUInt.isSigned = false;\n/** Clamp number between min and max. */\nfunction clamp(num, min, max) {\n return BN.min(BN.max(num, min), max);\n}\n/**\n * Create new BN with the same bit pattern as the passed value,\n * extending or truncating the value’s representation as necessary.\n */\nfunction truncate(value, from, to) {\n const fill = value.isNeg() ? 255 : 0;\n const fromValue = from.isSigned ? value.toTwos(from.byteWidth * 8) : value;\n const fromBytes = fromValue.toArrayLike(Uint8Array, 'le');\n const toBytes = new Uint8Array(to.byteWidth);\n toBytes.fill(fill);\n toBytes.set(fromBytes.slice(0, to.byteWidth));\n const toValue = new BN(toBytes, undefined, 'le');\n return to.isSigned ? toValue.fromTwos(to.byteWidth * 8) : toValue;\n}\n/** C++11 implicit integer conversions. */\nfunction convert(a, b) {\n // The integral promotions (4.5) shall be performed on both operands.\n a = promote(a);\n b = promote(b);\n const aType = a.constructor;\n const bType = b.constructor;\n // If both operands have the same type, no further conversion is needed\n if (aType !== bType) {\n // Otherwise, if both operands have signed integer types or both have unsigned integer types,\n // the operand with the type of lesser integer conversion rank shall be converted to the type\n // of the operand with greater rank.\n if (aType.isSigned === bType.isSigned) {\n if (aType.byteWidth > bType.byteWidth) {\n b = b.cast(aType);\n }\n else if (bType.byteWidth > aType.byteWidth) {\n a = a.cast(bType);\n }\n }\n else {\n // Otherwise, if the operand that has unsigned integer type has rank greater than or equal\n // to the rank of the type of the other operand, the operand with signed integer type\n // shall be converted to the type of the operand with unsigned integer type.\n if (aType.isSigned === false && aType.byteWidth >= bType.byteWidth) {\n b = b.cast(aType);\n }\n else if (bType.isSigned === false && bType.byteWidth >= aType.byteWidth) {\n a = a.cast(bType);\n }\n else {\n // Otherwise, if the type of the operand with signed integer type can represent all of the\n // values of the type of the operand with unsigned integer type, the operand with unsigned\n // integer type shall be converted to the type of the operand with signed integer type.\n if (aType.isSigned === true &&\n aType.max.gte(bType.max) &&\n aType.min.lte(bType.min)) {\n b = b.cast(aType);\n }\n else if (bType.isSigned === true &&\n bType.max.gte(aType.max) &&\n bType.min.lte(aType.min)) {\n a = a.cast(bType);\n }\n else ;\n }\n }\n }\n return { a, b };\n}\n/** C++11 integral promotion. */\nfunction promote(n) {\n // An rvalue of type char, signed char, unsigned char, short int, or\n // unsigned short int can be converted to an rvalue of type int if int\n // can represent all the values of the source type; otherwise, the source\n // rvalue can be converted to an rvalue of type unsigned int.\n let rv = n;\n const type = n.constructor;\n if (type.byteWidth < 4) {\n rv = n.cast(Int32);\n }\n return rv;\n}\n\n/** Return a ABI definition for given ABISerializableType. */\nfunction synthesizeABI(type) {\n const structs = [];\n const variants = [];\n const aliases = [];\n const seen = new Set();\n const resolveAbiType = (t) => {\n let typeName;\n if (typeof t.type !== 'string') {\n typeName = resolve(t.type);\n }\n else {\n typeName = t.type;\n }\n if (t.array === true) {\n typeName += '[]';\n }\n if (t.optional === true) {\n typeName += '?';\n }\n if (t.extension === true) {\n typeName += '$';\n }\n return typeName;\n };\n const resolve = (t) => {\n if (!t.abiName) {\n throw new Error('Encountered non-conforming type');\n }\n else if (t.abiName === '__struct') {\n throw new Error('Misconfigured Struct subclass, did you forget @Struct.type?');\n }\n if (seen.has(t)) {\n return t.abiName;\n }\n seen.add(t);\n if (t.abiAlias) {\n aliases.push({\n new_type_name: t.abiName,\n type: resolveAbiType(t.abiAlias),\n });\n }\n else if (t.abiFields) {\n const fields = t.abiFields.map((field) => {\n return {\n name: field.name,\n type: resolveAbiType(field),\n };\n });\n const struct = {\n base: t.abiBase ? resolve(t.abiBase) : '',\n name: t.abiName,\n fields,\n };\n structs.push(struct);\n }\n else if (t.abiVariant) {\n const variant = {\n name: t.abiName,\n types: t.abiVariant.map(resolveAbiType),\n };\n variants.push(variant);\n }\n return t.abiName;\n };\n const root = resolve(type);\n return { abi: ABI.from({ structs, variants, types: aliases }), types: Array.from(seen), root };\n}\nfunction abiTypeString(type) {\n let typeName = typeof type.type === 'string' ? type.type : type.type.abiName;\n if (type.array === true) {\n typeName += '[]';\n }\n if (type.optional === true) {\n typeName += '?';\n }\n if (type.extension === true) {\n typeName += '$';\n }\n return typeName;\n}\nfunction isTypeDescriptor(type) {\n return (typeof type !== 'string' &&\n type.abiName === undefined &&\n type.type !== undefined);\n}\nfunction toTypeDescriptor(type) {\n if (typeof type === 'string') {\n return { type };\n }\n if (typeof type.abiName !== 'undefined') {\n return { type: type };\n }\n return type;\n}\n\nconst StringType = {\n abiName: 'string',\n abiDefault: () => '',\n fromABI: (decoder) => {\n return decoder.readString();\n },\n from: (string) => string,\n toABI: (string, encoder) => {\n encoder.writeString(string);\n },\n};\nconst BoolType = {\n abiName: 'bool',\n abiDefault: () => false,\n fromABI: (decoder) => {\n return decoder.readByte() === 1;\n },\n from: (value) => value,\n toABI: (value, encoder) => {\n encoder.writeByte(value === true ? 1 : 0);\n },\n};\nfunction getBuiltins() {\n return [\n // types represented by JavaScript builtins\n BoolType,\n StringType,\n // types represented by Classes\n Asset,\n Asset.Symbol,\n Asset.SymbolCode,\n BlockTimestamp,\n Bytes,\n Checksum160,\n Checksum256,\n Checksum512,\n ExtendedAsset,\n Float128,\n Float32,\n Float64,\n Int128,\n Int16,\n Int32,\n Int64,\n Int8,\n Name,\n PublicKey,\n Signature,\n TimePoint,\n TimePointSec,\n UInt128,\n UInt16,\n UInt32,\n UInt64,\n UInt8,\n VarInt,\n VarUInt,\n ];\n}\nfunction buildTypeLookup(additional = []) {\n const rv = {};\n const builtins = getBuiltins();\n for (const type of builtins) {\n rv[type.abiName] = type;\n }\n for (const type of additional) {\n if (!type.abiName) {\n throw new Error('Invalid type');\n }\n rv[type.abiName] = type;\n }\n return rv;\n}\nfunction getTypeName(object) {\n if (object.constructor && object.constructor.abiName !== undefined) {\n return object.constructor.abiName;\n }\n if (Array.isArray(object)) {\n const types = object.map(getTypeName);\n const type = types[0];\n if (!type || !types.every((t) => t === type)) {\n return;\n }\n return type + '[]';\n }\n switch (typeof object) {\n case 'boolean':\n return 'bool';\n case 'string':\n return 'string';\n }\n}\nfunction getType(object, name = 'jsobj') {\n var _a;\n if (object.constructor && object.constructor.abiName !== undefined) {\n return object.constructor;\n }\n if (Array.isArray(object)) {\n // check for array of all ABISerializableType with same type name\n const types = object.map((v) => {\n return getType(v, name);\n });\n const type = types[0];\n if (!type) {\n return; // some type not known\n }\n if (!types.every((t) => t && t.abiName === type.abiName)) {\n return; // not all types are the same\n }\n return type;\n }\n const objectType = typeof object;\n if (objectType === 'object' && object !== null) {\n const fields = Object.keys(object).map((key) => {\n return { name: key, type: getType(object[key], name + '_nested') };\n });\n if (fields.find((field) => !field.type)) {\n return; // encountered unknown type\n }\n return _a = class extends Struct {\n },\n _a.abiName = name,\n _a.abiFields = fields,\n _a;\n }\n switch (objectType) {\n case 'boolean':\n return BoolType;\n case 'string':\n return StringType;\n }\n}\n\n/**\n * Antelope/EOSIO ABI Decoder\n */\nclass DecodingError extends Error {\n constructor(ctx, underlyingError) {\n const path = ctx.codingPath\n .map(({ field, type }) => {\n if (typeof field === 'number') {\n return field;\n }\n else {\n return `${field}<${type.typeName}>`;\n }\n })\n .join('.');\n super(`Decoding error at ${path}: ${underlyingError.message}`);\n this.stack = underlyingError.stack;\n this.ctx = ctx;\n this.underlyingError = underlyingError;\n }\n}\nDecodingError.__className = 'DecodingError';\nfunction abiDecode(args) {\n const descriptor = toTypeDescriptor(args.type);\n const typeName = abiTypeString(descriptor);\n const customTypes = args.customTypes || [];\n let abi;\n if (args.abi) {\n abi = ABI.from(args.abi);\n }\n else {\n try {\n let type;\n if (typeof descriptor.type === 'string') {\n const lookup = buildTypeLookup(customTypes);\n const rName = new ABI.ResolvedType(descriptor.type).name; // type name w/o suffixes\n type = lookup[rName];\n if (!type) {\n throw new Error(`Unknown type: ${descriptor.type}`);\n }\n }\n else {\n type = descriptor.type;\n }\n const synthesized = synthesizeABI(type);\n abi = synthesized.abi;\n customTypes.push(...synthesized.types);\n }\n catch (error) {\n throw Error(`Unable to synthesize ABI for: ${typeName} (${error.message}). ` +\n 'To decode non-class types you need to pass the ABI definition manually.');\n }\n }\n const resolved = abi.resolveType(typeName);\n if (typeof descriptor.type !== 'string') {\n customTypes.unshift(descriptor.type);\n }\n const ctx = {\n types: buildTypeLookup(customTypes),\n strictExtensions: args.strictExtensions || false,\n codingPath: [{ field: 'root', type: resolved }],\n };\n try {\n if (args.data || args.data === '') {\n let decoder;\n if (isInstanceOf(args.data, ABIDecoder)) {\n decoder = args.data;\n }\n else {\n const bytes = Bytes.from(args.data);\n const fatal = args.ignoreInvalidUTF8 === undefined ? true : !args.ignoreInvalidUTF8;\n decoder = new ABIDecoder(bytes.array, new TextDecoder('utf-8', { fatal }));\n }\n if (args.metadata) {\n decoder.metadata = args.metadata;\n }\n return decodeBinary(resolved, decoder, ctx);\n }\n else if (args.object !== undefined) {\n return decodeObject(args.object, resolved, ctx);\n }\n else if (args.json) {\n return decodeObject(JSON.parse(args.json), resolved, ctx);\n }\n else {\n throw new Error('Nothing to decode, you must set one of data, json, object');\n }\n }\n catch (error) {\n throw new DecodingError(ctx, error);\n }\n}\n/** Marker for objects when they have been resolved, i.e. their types `from` factory method will not need to resolve children. */\nconst Resolved = Symbol('Resolved');\nfunction decodeBinary(type, decoder, ctx) {\n if (ctx.codingPath.length > 32) {\n throw new Error('Maximum decoding depth exceeded');\n }\n if (type.isExtension) {\n if (!decoder.canRead()) {\n if (ctx.strictExtensions) {\n return defaultValue(type, ctx);\n }\n else {\n return null;\n }\n }\n }\n if (type.isOptional) {\n if (decoder.readByte() === 0) {\n return null;\n }\n }\n if (type.isArray) {\n const len = decoder.readVaruint32();\n const rv = [];\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n rv.push(decodeInner());\n ctx.codingPath.pop();\n }\n return rv;\n }\n else {\n return decodeInner();\n }\n function decodeInner() {\n const abiType = ctx.types[type.name];\n if (abiType && abiType.fromABI) {\n return abiType.fromABI(decoder);\n }\n else {\n if (type.ref) {\n // follow type alias\n ctx.codingPath.push({ field: '', type: type.ref });\n const rv = decodeBinary(type.ref, decoder, ctx);\n ctx.codingPath.pop();\n return rv;\n }\n else if (type.fields) {\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n const rv = {};\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n rv[field.name] = decodeBinary(field.type, decoder, ctx);\n ctx.codingPath.pop();\n }\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else if (type.variant) {\n const vIdx = decoder.readByte();\n const vType = type.variant[vIdx];\n if (!vType) {\n throw new Error(`Unknown variant idx: ${vIdx}`);\n }\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n const rv = [vType.typeName, decodeBinary(vType, decoder, ctx)];\n ctx.codingPath.pop();\n if (abiType) {\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else if (abiType) {\n throw new Error('Invalid type');\n }\n else {\n throw new Error(type.name === 'any' ? \"Unable to decode 'any' type from binary\" : 'Unknown type');\n }\n }\n }\n}\nfunction decodeObject(value, type, ctx) {\n if (value === null || value === undefined) {\n if (type.isOptional) {\n return null;\n }\n if (type.isExtension) {\n if (ctx.strictExtensions) {\n return defaultValue(type, ctx);\n }\n else {\n return null;\n }\n }\n throw new Error(`Unexpectedly encountered ${value} for non-optional (${ctx.codingPath\n .map((path) => path.field)\n .join('.')})`);\n }\n else if (type.isArray) {\n if (!Array.isArray(value)) {\n throw new Error('Expected array');\n }\n const rv = [];\n const len = value.length;\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n rv.push(decodeInner(value[i]));\n ctx.codingPath.pop();\n }\n return rv;\n }\n else {\n return decodeInner(value);\n }\n function decodeInner(value) {\n const abiType = ctx.types[type.name];\n if (type.ref && !abiType) {\n // follow type alias\n return decodeObject(value, type.ref, ctx);\n }\n else if (type.fields) {\n if (typeof value !== 'object') {\n throw new Error('Expected object');\n }\n if (typeof abiType === 'function' && isInstanceOf(value, abiType)) {\n return value;\n }\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n const struct = {};\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n struct[field.name] = decodeObject(value[field.name], field.type, ctx);\n ctx.codingPath.pop();\n }\n if (abiType) {\n struct[Resolved] = true;\n return abiType.from(struct);\n }\n else {\n return struct;\n }\n }\n else if (type.variant) {\n let vName;\n if (Array.isArray(value) && value.length === 2 && typeof value[0] === 'string') {\n vName = value[0];\n value = value[1];\n }\n else if (isInstanceOf(value, Variant)) {\n vName = value.variantName;\n value = value.value;\n }\n else {\n vName = getTypeName(value);\n }\n const vIdx = type.variant.findIndex((t) => t.typeName === vName);\n if (vIdx === -1) {\n throw new Error(`Unknown variant type: ${vName}`);\n }\n const vType = type.variant[vIdx];\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n const rv = [vType.typeName, decodeObject(value, vType, ctx)];\n ctx.codingPath.pop();\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n else {\n return rv;\n }\n }\n else {\n if (!abiType) {\n // special case for `any` when decoding from object\n if (type.name === 'any') {\n return value;\n }\n throw new Error('Unknown type');\n }\n return abiType.from(value);\n }\n }\n}\n/** Return default value (aka initialized value, matching C++ where possible) for given type */\nfunction defaultValue(type, ctx, seen = new Set()) {\n if (type.isArray) {\n return [];\n }\n if (type.isOptional) {\n return null;\n }\n const abiType = ctx.types[type.name];\n if (abiType && abiType.abiDefault) {\n return abiType.abiDefault();\n }\n if (seen.has(type.name)) {\n throw new Error('Circular type reference');\n }\n seen.add(type.name);\n if (type.allFields) {\n const rv = {};\n for (const field of type.allFields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n rv[field.name] = defaultValue(field.type, ctx, seen);\n ctx.codingPath.pop();\n }\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n return rv;\n }\n if (type.variant && type.variant.length > 0) {\n const rv = [type.variant[0].typeName, defaultValue(type.variant[0], ctx)];\n if (abiType) {\n rv[Resolved] = true;\n return abiType.from(rv);\n }\n return rv;\n }\n if (type.ref) {\n ctx.codingPath.push({ field: '', type: type.ref });\n const rv = defaultValue(type.ref, ctx, seen);\n ctx.codingPath.pop();\n return rv;\n }\n throw new Error('Unable to determine default value');\n}\nclass ABIDecoder {\n constructor(array, textDecoder) {\n this.array = array;\n this.pos = 0;\n /** User declared metadata, can be used to pass info to instances when decoding. */\n this.metadata = {};\n this.textDecoder = textDecoder || new TextDecoder('utf-8', { fatal: true });\n this.data = new DataView(array.buffer, array.byteOffset, array.byteLength);\n }\n canRead(bytes = 1) {\n return !(this.pos + bytes > this.array.byteLength);\n }\n ensure(bytes) {\n if (!this.canRead(bytes)) {\n throw new Error('Read past end of buffer');\n }\n }\n setPosition(pos) {\n if (pos < 0 || pos > this.array.byteLength) {\n throw new Error('Invalid position');\n }\n this.pos = pos;\n }\n getPosition() {\n return this.pos;\n }\n advance(bytes) {\n this.ensure(bytes);\n this.pos += bytes;\n }\n /** Read one byte. */\n readByte() {\n this.ensure(1);\n return this.array[this.pos++];\n }\n /** Read floating point as JavaScript number, 32 or 64 bits. */\n readFloat(byteWidth) {\n this.ensure(byteWidth);\n let rv;\n switch (byteWidth) {\n case 4:\n rv = this.data.getFloat32(this.pos, true);\n break;\n case 8:\n rv = this.data.getFloat64(this.pos, true);\n break;\n default:\n throw new Error('Invalid float size');\n }\n this.pos += byteWidth;\n return rv;\n }\n readVaruint32() {\n let v = 0;\n let bit = 0;\n for (;;) {\n const b = this.readByte();\n v |= (b & 0x7f) << bit;\n bit += 7;\n if (!(b & 0x80)) {\n break;\n }\n }\n return v >>> 0;\n }\n readVarint32() {\n const v = this.readVaruint32();\n if (v & 1) {\n return (~v >> 1) | 2147483648;\n }\n else {\n return v >>> 1;\n }\n }\n readArray(length) {\n this.ensure(length);\n const rv = this.array.subarray(this.pos, this.pos + length);\n this.pos += length;\n return rv;\n }\n readString() {\n const length = this.readVaruint32();\n return this.textDecoder.decode(this.readArray(length));\n }\n}\nABIDecoder.__className = 'ABIDecoder';\n\n/**\n * Antelope/EOSIO ABI Encoder\n */\nclass EncodingError extends Error {\n constructor(ctx, underlyingError) {\n const path = ctx.codingPath\n .map(({ field, type }) => {\n if (typeof field === 'number') {\n return field;\n }\n else {\n return `${field}<${type.typeName}>`;\n }\n })\n .join('.');\n super(`Encoding error at ${path}: ${underlyingError.message}`);\n this.stack = underlyingError.stack;\n this.ctx = ctx;\n this.underlyingError = underlyingError;\n }\n}\nEncodingError.__className = 'EncodingError';\nfunction abiEncode(args) {\n let type;\n let typeName;\n if (typeof args.type === 'string') {\n typeName = args.type;\n }\n else if (args.type && isTypeDescriptor(args.type)) {\n if (typeof args.type.type !== 'string') {\n type = args.type.type;\n }\n typeName = abiTypeString(args.type);\n }\n else if (args.type && args.type.abiName !== undefined) {\n type = args.type;\n typeName = args.type.abiName;\n }\n else {\n type = getType(args.object);\n if (type) {\n typeName = type.abiName;\n if (Array.isArray(args.object)) {\n typeName += '[]';\n }\n }\n }\n const customTypes = args.customTypes ? args.customTypes.slice() : [];\n if (type) {\n customTypes.unshift(type);\n }\n else if (typeName) {\n const rootName = new ABI.ResolvedType(typeName).name;\n type = customTypes.find((t) => t.abiName === rootName);\n }\n let rootType;\n if (args.abi && typeName) {\n rootType = ABI.from(args.abi).resolveType(typeName);\n }\n else if (type) {\n const synthesized = synthesizeABI(type);\n rootType = synthesized.abi.resolveType(typeName || type.abiName);\n customTypes.push(...synthesized.types);\n }\n else if (typeName) {\n rootType = new ABI.ResolvedType(typeName);\n }\n else {\n throw new Error('Unable to determine the type of the object to be encoded. ' +\n 'To encode custom ABI types you must pass the type argument.');\n }\n const types = buildTypeLookup(customTypes);\n const encoder = args.encoder || new ABIEncoder();\n if (args.metadata) {\n encoder.metadata = args.metadata;\n }\n const ctx = {\n types,\n encoder,\n codingPath: [{ field: 'root', type: rootType }],\n };\n try {\n encodeAny(args.object, rootType, ctx);\n }\n catch (error) {\n throw new EncodingError(ctx, error);\n }\n return Bytes.from(encoder.getData());\n}\nfunction encodeAny(value, type, ctx) {\n const valueExists = value !== undefined && value !== null;\n if (type.isOptional) {\n ctx.encoder.writeByte(valueExists ? 1 : 0);\n if (!valueExists) {\n return;\n }\n }\n if (type.isArray) {\n if (!Array.isArray(value)) {\n throw new Error(`Expected array for: ${type.typeName}`);\n }\n const len = value.length;\n ctx.encoder.writeVaruint32(len);\n for (let i = 0; i < len; i++) {\n ctx.codingPath.push({ field: i, type });\n encodeInner(value[i]);\n ctx.codingPath.pop();\n }\n }\n else {\n encodeInner(value);\n }\n function encodeInner(value) {\n const abiType = ctx.types[type.name];\n if (type.ref && !abiType) {\n // type is alias, follow it\n encodeAny(value, type.ref, ctx);\n return;\n }\n if (!valueExists) {\n if (type.isExtension) {\n return;\n }\n throw new Error(`Found ${value} for non-optional type: ${type.typeName} (${ctx.codingPath\n .map((path) => path.field)\n .join('.')})`);\n }\n if (abiType && abiType.toABI) {\n // type explicitly handles encoding\n abiType.toABI(value, ctx.encoder);\n }\n else if (typeof value.toABI === 'function' && value.constructor.abiName === type.name) {\n // instance handles encoding\n value.toABI(ctx.encoder);\n }\n else {\n // encode according to abi def if possible\n if (type.fields) {\n if (typeof value !== 'object') {\n throw new Error(`Expected object for: ${type.name}`);\n }\n const fields = type.allFields;\n if (!fields) {\n throw new Error('Invalid struct fields');\n }\n for (const field of fields) {\n ctx.codingPath.push({ field: field.name, type: field.type });\n encodeAny(value[field.name], field.type, ctx);\n ctx.codingPath.pop();\n }\n }\n else if (type.variant) {\n let vName;\n if (Array.isArray(value) && value.length === 2 && typeof value[0] === 'string') {\n vName = value[0];\n value = value[1];\n }\n else if (isInstanceOf(value, Variant)) {\n vName = value.variantName;\n value = value.value;\n }\n else {\n vName = getTypeName(value);\n }\n const vIdx = type.variant.findIndex((t) => t.typeName === vName);\n if (vIdx === -1) {\n const types = type.variant.map((t) => `'${t.typeName}'`).join(', ');\n throw new Error(`Unknown variant type '${vName}', expected one of ${types}`);\n }\n const vType = type.variant[vIdx];\n ctx.encoder.writeVaruint32(vIdx);\n ctx.codingPath.push({ field: `v${vIdx}`, type: vType });\n encodeAny(value, vType, ctx);\n ctx.codingPath.pop();\n }\n else {\n if (!abiType) {\n throw new Error(type.name === 'any' ? 'Unable to encode any type to binary' : 'Unknown type');\n }\n const instance = abiType.from(value);\n if (!instance.toABI) {\n throw new Error(`Invalid type ${type.name}, no encoding methods implemented`);\n }\n instance.toABI(ctx.encoder);\n }\n }\n }\n}\nclass ABIEncoder {\n constructor(pageSize = 1024) {\n this.pageSize = pageSize;\n this.pos = 0;\n this.textEncoder = new TextEncoder();\n /** User declared metadata, can be used to pass info to instances when encoding. */\n this.metadata = {};\n const buffer = new ArrayBuffer(pageSize);\n this.data = new DataView(buffer);\n this.array = new Uint8Array(buffer);\n }\n ensure(bytes) {\n if (this.data.byteLength >= this.pos + bytes) {\n return;\n }\n const pages = Math.ceil(bytes / this.pageSize);\n const newSize = this.data.byteLength + this.pageSize * pages;\n const buffer = new ArrayBuffer(newSize);\n const data = new DataView(buffer);\n const array = new Uint8Array(buffer);\n array.set(this.array);\n this.data = data;\n this.array = array;\n }\n /** Write a single byte. */\n writeByte(byte) {\n this.ensure(1);\n this.array[this.pos++] = byte;\n }\n /** Write an array of bytes. */\n writeArray(bytes) {\n const size = bytes.length;\n this.ensure(size);\n this.array.set(bytes, this.pos);\n this.pos += size;\n }\n writeFloat(value, byteWidth) {\n this.ensure(byteWidth);\n switch (byteWidth) {\n case 4:\n this.data.setFloat32(this.pos, value, true);\n break;\n case 8:\n this.data.setFloat64(this.pos, value, true);\n break;\n default:\n throw new Error('Invalid float size');\n }\n this.pos += byteWidth;\n }\n writeVaruint32(v) {\n this.ensure(4);\n for (;;) {\n if (v >>> 7) {\n this.array[this.pos++] = 0x80 | (v & 0x7f);\n v = v >>> 7;\n }\n else {\n this.array[this.pos++] = v;\n break;\n }\n }\n }\n writeVarint32(v) {\n this.writeVaruint32((v << 1) ^ (v >> 31));\n }\n writeString(v) {\n const data = this.textEncoder.encode(v);\n this.writeVaruint32(data.byteLength);\n this.writeArray(data);\n }\n getData() {\n return new Uint8Array(this.array.buffer, this.array.byteOffset, this.pos);\n }\n getBytes() {\n return new Bytes(this.getData());\n }\n}\nABIEncoder.__className = 'ABIEncoder';\n\nclass ABI {\n constructor(args) {\n this.version = args.version || ABI.version;\n this.types = args.types || [];\n this.variants = args.variants || [];\n this.structs = args.structs || [];\n this.actions = args.actions || [];\n this.tables = args.tables || [];\n this.ricardian_clauses = args.ricardian_clauses || [];\n this.action_results = args.action_results || [];\n }\n static from(value) {\n if (isInstanceOf(value, ABI)) {\n return value;\n }\n if (isInstanceOf(value, Blob)) {\n return abiDecode({\n data: value.array,\n type: this,\n });\n }\n if (typeof value === 'string') {\n return new ABI(JSON.parse(value));\n }\n return new ABI(value);\n }\n static fromABI(decoder) {\n const version = decoder.readString();\n const types = [];\n const numTypes = decoder.readVaruint32();\n for (let i = 0; i < numTypes; i++) {\n types.push({ new_type_name: decoder.readString(), type: decoder.readString() });\n }\n const structs = [];\n const numStructs = decoder.readVaruint32();\n for (let i = 0; i < numStructs; i++) {\n const name = decoder.readString();\n const base = decoder.readString();\n const numFields = decoder.readVaruint32();\n const fields = [];\n for (let j = 0; j < numFields; j++) {\n fields.push({ name: decoder.readString(), type: decoder.readString() });\n }\n structs.push({ base, name, fields });\n }\n const actions = [];\n const numActions = decoder.readVaruint32();\n for (let i = 0; i < numActions; i++) {\n const name = Name.fromABI(decoder);\n const type = decoder.readString();\n const ricardian_contract = decoder.readString();\n actions.push({ name, type, ricardian_contract });\n }\n const tables = [];\n const numTables = decoder.readVaruint32();\n for (let i = 0; i < numTables; i++) {\n const name = Name.fromABI(decoder);\n const index_type = decoder.readString();\n const key_names = [];\n const numKeyNames = decoder.readVaruint32();\n for (let j = 0; j < numKeyNames; j++) {\n key_names.push(decoder.readString());\n }\n const key_types = [];\n const numKeyTypes = decoder.readVaruint32();\n for (let j = 0; j < numKeyTypes; j++) {\n key_types.push(decoder.readString());\n }\n const type = decoder.readString();\n tables.push({ name, index_type, key_names, key_types, type });\n }\n const ricardian_clauses = [];\n const numClauses = decoder.readVaruint32();\n for (let i = 0; i < numClauses; i++) {\n const id = decoder.readString();\n const body = decoder.readString();\n ricardian_clauses.push({ id, body });\n }\n // error_messages, never used?\n const numErrors = decoder.readVaruint32();\n for (let i = 0; i < numErrors; i++) {\n decoder.advance(8); // uint64 error_code\n decoder.advance(decoder.readVaruint32()); // string error_msgr\n }\n // extensions, not used\n const numExtensions = decoder.readVaruint32();\n for (let i = 0; i < numExtensions; i++) {\n decoder.advance(2); // uint16 type\n decoder.advance(decoder.readVaruint32()); // bytes data\n }\n // variants is a binary extension for some reason even though extensions are defined on the type\n const variants = [];\n if (decoder.canRead()) {\n const numVariants = decoder.readVaruint32();\n for (let i = 0; i < numVariants; i++) {\n const name = decoder.readString();\n const types = [];\n const numTypes = decoder.readVaruint32();\n for (let j = 0; j < numTypes; j++) {\n types.push(decoder.readString());\n }\n variants.push({ name, types });\n }\n }\n const action_results = [];\n if (decoder.canRead()) {\n const numActionResults = decoder.readVaruint32();\n for (let i = 0; i < numActionResults; i++) {\n const name = Name.fromABI(decoder);\n const result_type = decoder.readString();\n action_results.push({ name, result_type });\n }\n }\n return new ABI({\n version,\n types,\n structs,\n actions,\n tables,\n ricardian_clauses,\n variants,\n action_results,\n });\n }\n toABI(encoder) {\n encoder.writeString(this.version);\n encoder.writeVaruint32(this.types.length);\n for (const type of this.types) {\n encoder.writeString(type.new_type_name);\n encoder.writeString(type.type);\n }\n encoder.writeVaruint32(this.structs.length);\n for (const struct of this.structs) {\n encoder.writeString(struct.name);\n encoder.writeString(struct.base);\n encoder.writeVaruint32(struct.fields.length);\n for (const field of struct.fields) {\n encoder.writeString(field.name);\n encoder.writeString(field.type);\n }\n }\n encoder.writeVaruint32(this.actions.length);\n for (const action of this.actions) {\n Name.from(action.name).toABI(encoder);\n encoder.writeString(action.type);\n encoder.writeString(action.ricardian_contract);\n }\n encoder.writeVaruint32(this.tables.length);\n for (const table of this.tables) {\n Name.from(table.name).toABI(encoder);\n encoder.writeString(table.index_type);\n encoder.writeVaruint32(table.key_names.length);\n for (const key of table.key_names) {\n encoder.writeString(key);\n }\n encoder.writeVaruint32(table.key_types.length);\n for (const key of table.key_types) {\n encoder.writeString(key);\n }\n encoder.writeString(table.type);\n }\n encoder.writeVaruint32(this.ricardian_clauses.length);\n for (const clause of this.ricardian_clauses) {\n encoder.writeString(clause.id);\n encoder.writeString(clause.body);\n }\n encoder.writeVaruint32(0); // error_messages\n encoder.writeVaruint32(0); // extensions\n encoder.writeVaruint32(this.variants.length);\n for (const variant of this.variants) {\n encoder.writeString(variant.name);\n encoder.writeVaruint32(variant.types.length);\n for (const type of variant.types) {\n encoder.writeString(type);\n }\n }\n encoder.writeVaruint32(this.action_results.length);\n for (const result of this.action_results) {\n Name.from(result.name).toABI(encoder);\n encoder.writeString(result.result_type);\n }\n }\n resolveType(name) {\n const types = {};\n return this.resolve({ name, types }, { id: 0 });\n }\n resolveAll() {\n const types = {};\n const ctx = { id: 0 };\n return {\n types: this.types.map((t) => this.resolve({ name: t.new_type_name, types }, ctx)),\n variants: this.variants.map((t) => this.resolve({ name: t.name, types }, ctx)),\n structs: this.structs.map((t) => this.resolve({ name: t.name, types }, ctx)),\n };\n }\n resolve({ name, types }, ctx) {\n const existing = types[name];\n if (existing) {\n return existing;\n }\n const type = new ABI.ResolvedType(name, ++ctx.id);\n types[type.typeName] = type;\n const alias = this.types.find((typeDef) => typeDef.new_type_name == type.name);\n if (alias) {\n type.ref = this.resolve({ name: alias.type, types }, ctx);\n return type;\n }\n const struct = this.getStruct(type.name);\n if (struct) {\n if (struct.base) {\n type.base = this.resolve({ name: struct.base, types }, ctx);\n }\n type.fields = struct.fields.map((field) => {\n return {\n name: field.name,\n type: this.resolve({ name: field.type, types }, ctx),\n };\n });\n return type;\n }\n const variant = this.getVariant(type.name);\n if (variant) {\n type.variant = variant.types.map((name) => this.resolve({ name, types }, ctx));\n return type;\n }\n // builtin or unknown type\n return type;\n }\n getStruct(name) {\n return this.structs.find((struct) => struct.name == name);\n }\n getVariant(name) {\n return this.variants.find((variant) => variant.name == name);\n }\n /** Return arguments type of an action in this ABI. */\n getActionType(actionName) {\n const name = Name.from(actionName).toString();\n const action = this.actions.find((a) => a.name.toString() === name);\n if (action) {\n return action.type;\n }\n }\n equals(other) {\n const o = ABI.from(other);\n if (this.version != o.version ||\n this.types.length != o.types.length ||\n this.structs.length != o.structs.length ||\n this.actions.length != o.actions.length ||\n this.tables.length != o.tables.length ||\n this.ricardian_clauses.length != o.ricardian_clauses.length ||\n this.variants.length != o.variants.length ||\n this.action_results.length != o.action_results.length) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: o }));\n }\n toJSON() {\n return {\n version: this.version,\n types: this.types,\n structs: this.structs,\n actions: this.actions,\n tables: this.tables,\n ricardian_clauses: this.ricardian_clauses,\n error_messages: [],\n abi_extensions: [],\n variants: this.variants,\n action_results: this.action_results,\n };\n }\n}\nABI.abiName = 'abi';\nABI.version = 'eosio::abi/1.1';\n(function (ABI) {\n class ResolvedType {\n constructor(fullName, id = 0) {\n let name = fullName;\n if (name.endsWith('$')) {\n name = name.slice(0, -1);\n this.isExtension = true;\n }\n else {\n this.isExtension = false;\n }\n if (name.endsWith('?')) {\n name = name.slice(0, -1);\n this.isOptional = true;\n }\n else {\n this.isOptional = false;\n }\n if (name.endsWith('[]')) {\n name = name.slice(0, -2);\n this.isArray = true;\n }\n else {\n this.isArray = false;\n }\n this.id = id;\n this.name = name;\n }\n /**\n * Type name including suffixes: [] array, ? optional, $ binary ext\n */\n get typeName() {\n let rv = this.name;\n if (this.isArray) {\n rv += '[]';\n }\n if (this.isOptional) {\n rv += '?';\n }\n if (this.isExtension) {\n rv += '$';\n }\n return rv;\n }\n /** All fields including base struct(s), undefined if not a struct type. */\n get allFields() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n const rv = [];\n const seen = new Set();\n do {\n if (!current.fields) {\n return; // invalid struct\n }\n if (seen.has(current.name)) {\n return; // circular ref\n }\n for (let i = current.fields.length - 1; i >= 0; i--) {\n rv.unshift(current.fields[i]);\n }\n seen.add(current.name);\n current = current.base;\n } while (current !== undefined);\n return rv;\n }\n }\n ABI.ResolvedType = ResolvedType;\n})(ABI || (ABI = {}));\n\nclass Struct {\n static from(value) {\n if (value[Resolved] === true) {\n // objects already resolved\n return new this(value);\n }\n if (isInstanceOf(value, this)) {\n return value;\n }\n return abiDecode({ object: value, type: this });\n }\n static get structFields() {\n const rv = [];\n const walk = (t) => {\n if (t.abiBase) {\n walk(t.abiBase);\n }\n for (const field of t.abiFields || []) {\n rv.push(field);\n }\n };\n walk(this);\n return rv;\n }\n /** @internal */\n constructor(object) {\n const self = this.constructor;\n for (const field of self.structFields) {\n const isOptional = typeof field.type === 'string'\n ? new ABI.ResolvedType(String(field.type)).isOptional\n : field.optional;\n const value = object[field.name];\n if (isOptional && !value)\n continue;\n this[field.name] = value;\n }\n }\n /**\n * Return true if this struct equals the other.\n *\n * Note: This compares the ABI encoded bytes of both structs, subclasses\n * should implement their own fast equality check when possible.\n */\n equals(other) {\n const self = this.constructor;\n if (other.constructor &&\n typeof other.constructor.abiName === 'string' &&\n other.constructor.abiName !== self.abiName) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: self.from(other) }));\n }\n /** @internal */\n toJSON() {\n const self = this.constructor;\n const rv = {};\n for (const field of self.structFields) {\n if (field.optional && !this[field.name])\n continue;\n rv[field.name] = this[field.name];\n }\n return rv;\n }\n}\nStruct.abiName = '__struct';\n(function (Struct) {\n const FieldsOwner = Symbol('FieldsOwner');\n function type(name) {\n return function (struct) {\n struct.abiName = name;\n return struct;\n };\n }\n Struct.type = type;\n function field(type, options = {}) {\n return (target, name) => {\n const ctor = target.constructor;\n if (!ctor.abiFields) {\n ctor.abiFields = [];\n ctor.abiFields[FieldsOwner] = ctor;\n }\n else if (ctor.abiFields[FieldsOwner] !== ctor) {\n // if the target class isn't the owner we set the base and start new fields\n ctor.abiBase = ctor.abiFields[FieldsOwner];\n ctor.abiFields = [];\n ctor.abiFields[FieldsOwner] = ctor;\n }\n ctor.abiFields.push({ ...options, name, type });\n };\n }\n Struct.field = field;\n})(Struct || (Struct = {}));\n\nfunction TypeAlias(name) {\n return function (typeAlias) {\n typeAlias.abiAlias = { type: Object.getPrototypeOf(typeAlias.prototype).constructor };\n typeAlias.abiName = name;\n return typeAlias;\n };\n}\n\nclass Variant {\n static from(object) {\n if (object[Resolved]) {\n return new this(object);\n }\n if (isInstanceOf(object, this)) {\n return object;\n }\n return abiDecode({ object, type: this });\n }\n /** @internal */\n constructor(variant) {\n const abiVariant = this.constructor.abiVariant;\n this.value = variant[1];\n const variantIdx = abiVariant.map(abiTypeString).findIndex((t) => t === variant[0]);\n if (0 > variantIdx || abiVariant.length <= variantIdx) {\n throw new Error(`Unknown variant ${variant[0]}`);\n }\n this.variantIdx = variantIdx;\n }\n /**\n * Return true if this variant equals the other.\n *\n * Note: This compares the ABI encoded bytes of both variants, subclasses\n * should implement their own fast equality check when possible.\n */\n equals(other) {\n const self = this.constructor;\n const otherVariant = self.from(other);\n if (this.variantIdx !== otherVariant.variantIdx) {\n return false;\n }\n return abiEncode({ object: this }).equals(abiEncode({ object: otherVariant }));\n }\n get variantName() {\n const variant = this.constructor.abiVariant[this.variantIdx];\n return abiTypeString(variant);\n }\n /** @internal */\n toJSON() {\n return [this.variantName, this.value];\n }\n}\nVariant.abiName = '__variant';\nVariant.abiVariant = [];\n(function (Variant) {\n function type(name, types) {\n return function (variant) {\n variant.abiName = name;\n variant.abiVariant = types.map(toTypeDescriptor);\n return variant;\n };\n }\n Variant.type = type;\n})(Variant || (Variant = {}));\n\nclass Float {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string') {\n value = Number.parseFloat(value);\n }\n else if (isInstanceOf(value, Float)) {\n value = value.value;\n }\n return new this(value);\n }\n static fromABI(decoder) {\n return new this(decoder.readFloat(this.byteWidth));\n }\n static abiDefault() {\n return this.from(0);\n }\n static random() {\n const bytes = secureRandom(this.byteWidth);\n const decoder = new ABIDecoder(bytes);\n return this.fromABI(decoder);\n }\n constructor(value) {\n this.value = value;\n }\n equals(other) {\n const self = this.constructor;\n return this.value === self.from(other).value;\n }\n toABI(encoder) {\n const self = this.constructor;\n encoder.writeFloat(this.value, self.byteWidth);\n }\n toString() {\n return this.value.toString();\n }\n toJSON() {\n return this.toString();\n }\n}\nFloat.abiName = '__float';\nclass Float32 extends Float {\n toString() {\n return this.value.toFixed(7);\n }\n}\nFloat32.abiName = 'float32';\nFloat32.byteWidth = 4;\nclass Float64 extends Float {\n}\nFloat64.abiName = 'float64';\nFloat64.byteWidth = 8;\nclass Float128 {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'string' && value.startsWith('0x')) {\n value = value.slice(2);\n }\n return new this(Bytes.from(value));\n }\n static fromABI(decoder) {\n return new this(new Bytes(decoder.readArray(this.byteWidth)));\n }\n static random() {\n const bytes = secureRandom(16);\n const decoder = new ABIDecoder(bytes);\n return this.fromABI(decoder);\n }\n constructor(data) {\n if (data.array.length !== 16) {\n throw new Error('Invalid float128');\n }\n this.data = data;\n }\n equals(other) {\n const self = this.constructor;\n return this.data.equals(self.from(other).data);\n }\n toABI(encoder) {\n encoder.writeArray(this.data.array);\n }\n toString() {\n // float128 uses 0x prefixed hex strings as opposed to everywhere else in where there is no prefix ¯\\_(ツ)_/¯\n return '0x' + this.data.hexString;\n }\n toJSON() {\n return this.toString();\n }\n}\nFloat128.abiName = 'float128';\nFloat128.byteWidth = 16;\n\n/** Antelope/EOSIO Name */\nclass Name {\n /**\n * The raw representation of the name.\n * @deprecated Use value instead.\n */\n get rawValue() {\n return this.value;\n }\n /** Create a new Name instance from any of its representing types. */\n static from(value) {\n if (isInstanceOf(value, Name)) {\n return value;\n }\n else if (typeof value === 'string') {\n return new Name(stringToName(value));\n }\n else if (isInstanceOf(value, UInt64)) {\n return new Name(value);\n }\n else {\n throw new Error('Invalid name');\n }\n }\n static fromABI(decoder) {\n return new Name(UInt64.fromABI(decoder));\n }\n static abiDefault() {\n return new this(UInt64.from(0));\n }\n constructor(value) {\n this.value = value;\n }\n /** Return true if this name is equal to passed name. */\n equals(other) {\n return this.value.equals(Name.from(other).value);\n }\n /** Return string representation of this name. */\n toString() {\n return nameToString(this.value);\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nName.abiName = 'name';\n/** Regex pattern matching a Antelope/EOSIO name, case-sensitive. */\nName.pattern = /^[a-z1-5.]{0,13}$/;\nfunction stringToName(s) {\n function charToSymbol(c) {\n if (c >= 'a'.charCodeAt(0) && c <= 'z'.charCodeAt(0)) {\n return c - 'a'.charCodeAt(0) + 6;\n }\n if (c >= '1'.charCodeAt(0) && c <= '5'.charCodeAt(0)) {\n return c - '1'.charCodeAt(0) + 1;\n }\n return 0;\n }\n const a = new Uint8Array(8);\n let bit = 63;\n for (let i = 0; i < s.length; ++i) {\n let c = charToSymbol(s.charCodeAt(i));\n if (bit < 5) {\n c = c << 1;\n }\n for (let j = 4; j >= 0; --j) {\n if (bit >= 0) {\n a[Math.floor(bit / 8)] |= ((c >> j) & 1) << bit % 8;\n --bit;\n }\n }\n }\n return UInt64.from(a);\n}\nfunction nameToString(n) {\n const a = n.value.toArray('le', 8);\n let result = '';\n for (let bit = 63; bit >= 0;) {\n let c = 0;\n for (let i = 0; i < 5; ++i) {\n if (bit >= 0) {\n c = (c << 1) | ((a[Math.floor(bit / 8)] >> bit % 8) & 1);\n --bit;\n }\n }\n if (c >= 6) {\n result += String.fromCharCode(c + 'a'.charCodeAt(0) - 6);\n }\n else if (c >= 1) {\n result += String.fromCharCode(c + '1'.charCodeAt(0) - 1);\n }\n else {\n result += '.';\n }\n }\n while (result.endsWith('.')) {\n result = result.substr(0, result.length - 1);\n }\n return result;\n}\n\nclass TimePointBase {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (isInstanceOf(value, TimePointBase)) {\n // converting between types\n return this.fromMilliseconds(value.toMilliseconds());\n }\n if (isInstanceOf(value, Date)) {\n return this.fromDate(value);\n }\n if (typeof value === 'string') {\n return this.fromString(value);\n }\n return this.fromInteger(value);\n }\n static fromString(string) {\n const value = Date.parse(string + 'Z');\n if (!Number.isFinite(value)) {\n throw new Error('Invalid date string');\n }\n return this.fromMilliseconds(value);\n }\n static fromDate(date) {\n return this.fromMilliseconds(date.getTime());\n }\n static abiDefault() {\n return this.from(0);\n }\n toABI(encoder) {\n const self = this;\n self.value.toABI(encoder);\n }\n equals(other) {\n const self = this.constructor;\n return this.toMilliseconds() === self.from(other).toMilliseconds();\n }\n toMilliseconds() {\n throw new Error('Not implemented');\n }\n toDate() {\n return new Date(this.toMilliseconds());\n }\n toJSON() {\n return this.toString();\n }\n}\nTimePointBase.abiName = '__time_point_base';\n/** Timestamp with microsecond accuracy. */\nclass TimePoint extends TimePointBase {\n static fromMilliseconds(ms) {\n return new this(Int64.from(Math.round(ms * 1000)));\n }\n static fromInteger(value) {\n return new this(Int64.from(value));\n }\n static fromABI(decoder) {\n return new this(Int64.fromABI(decoder));\n }\n constructor(value) {\n super();\n this.value = value;\n }\n toString() {\n return this.toDate().toISOString().slice(0, -1);\n }\n toMilliseconds() {\n return Number(this.value.dividing(1000, 'round'));\n }\n}\nTimePoint.abiName = 'time_point';\n/** Timestamp with second accuracy. */\nclass TimePointSec extends TimePointBase {\n static fromMilliseconds(ms) {\n return new this(UInt32.from(Math.round(ms / 1000)));\n }\n static fromInteger(value) {\n return new this(UInt32.from(value));\n }\n static fromABI(decoder) {\n return new this(UInt32.fromABI(decoder));\n }\n constructor(value) {\n super();\n this.value = value;\n }\n toString() {\n return this.toDate().toISOString().slice(0, -5);\n }\n toMilliseconds() {\n return Number(this.value.cast(UInt64).multiplying(1000));\n }\n}\nTimePointSec.abiName = 'time_point_sec';\nclass BlockTimestamp extends TimePointBase {\n static fromMilliseconds(ms) {\n return new this(UInt32.from(Math.round((ms - 946684800000) / 500)));\n }\n static fromInteger(value) {\n return new this(UInt32.from(value));\n }\n static fromABI(decoder) {\n return new this(UInt32.fromABI(decoder));\n }\n constructor(value) {\n super();\n this.value = value;\n }\n toString() {\n return this.toDate().toISOString().slice(0, -1);\n }\n toMilliseconds() {\n return Number(this.value.cast(UInt64).multiplying(500).adding(946684800000));\n }\n}\nBlockTimestamp.abiName = 'block_timestamp_type';\n\nclass Asset {\n static from(value, symbol) {\n if (isInstanceOf(value, Asset)) {\n return value;\n }\n switch (typeof value) {\n case 'number':\n if (!symbol) {\n throw new Error('Symbol is required when creating Asset from number');\n }\n return this.fromFloat(value, symbol);\n case 'string':\n return this.fromString(value);\n default:\n throw new Error('Invalid asset');\n }\n }\n static fromString(value) {\n const parts = (typeof value === 'string' ? value : '').split(' ');\n if (parts.length !== 2) {\n throw new Error('Invalid asset string');\n }\n const amount = parts[0].replace('.', '');\n const precision = (parts[0].split('.')[1] || '').length;\n const symbol = Asset.Symbol.fromParts(parts[1], precision);\n return new Asset(Int64.from(amount), symbol);\n }\n static fromFloat(value, symbol) {\n const s = Asset.Symbol.from(symbol);\n return new Asset(s.convertFloat(value), s);\n }\n static fromUnits(value, symbol) {\n return new Asset(Int64.from(value), Asset.Symbol.from(symbol));\n }\n static fromABI(decoder) {\n const units = Int64.fromABI(decoder);\n const symbol = Asset.Symbol.fromABI(decoder);\n return new Asset(units, symbol);\n }\n static abiDefault() {\n return new this(Int64.from(0), Asset.Symbol.abiDefault());\n }\n static formatUnits(units, precision) {\n const digits = Int64.from(units).toString().split('');\n let negative = false;\n if (digits[0] === '-') {\n negative = true;\n digits.shift();\n }\n while (digits.length <= precision) {\n digits.unshift('0');\n }\n if (precision > 0) {\n digits.splice(digits.length - precision, 0, '.');\n }\n let rv = digits.join('');\n if (negative) {\n rv = '-' + rv;\n }\n return rv;\n }\n constructor(units, symbol) {\n this.units = units;\n this.symbol = symbol;\n }\n equals(other) {\n const { symbol, units } = Asset.from(other);\n return this.symbol.value.equals(symbol.value) && this.units.equals(units);\n }\n get value() {\n return this.symbol.convertUnits(this.units);\n }\n set value(newValue) {\n this.units = this.symbol.convertFloat(newValue);\n }\n get quantity() {\n return Asset.formatUnits(this.units, this.symbol.precision);\n }\n toABI(encoder) {\n this.units.toABI(encoder);\n this.symbol.toABI(encoder);\n }\n toString() {\n return this.quantity + ' ' + this.symbol.name;\n }\n toJSON() {\n return this.toString();\n }\n}\nAsset.abiName = 'asset';\n(function (Asset) {\n class Symbol {\n static from(value) {\n if (isInstanceOf(value, Symbol)) {\n return value;\n }\n if (isInstanceOf(value, UInt64)) {\n return new Symbol(value);\n }\n const parts = value.split(',');\n if (parts.length !== 2 && value !== '0,') {\n throw new Error('Invalid symbol string');\n }\n if (value === '0,') {\n parts.push('');\n }\n const precision = Number.parseInt(parts[0]);\n return Symbol.fromParts(parts[1], precision);\n }\n static fromParts(name, precision) {\n return new Symbol(toRawSymbol(name, precision));\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n static fromABI(decoder) {\n return new Symbol(UInt64.fromABI(decoder));\n }\n static abiDefault() {\n return this.from('4,SYS'); // CORE_SYMBOL = 4,CORE_SYMBOL_NAME\n }\n constructor(value) {\n if (toSymbolPrecision(value) > Symbol.maxPrecision) {\n throw new Error('Invalid asset symbol, precision too large');\n }\n if (!value.equals(0) && !SymbolCode.pattern.test(toSymbolName(value))) {\n throw new Error('Invalid asset symbol, name must be uppercase A-Z');\n }\n this.value = value;\n }\n equals(other) {\n return this.value.equals(Symbol.from(other).value);\n }\n get name() {\n return toSymbolName(this.value);\n }\n get precision() {\n return toSymbolPrecision(this.value);\n }\n get code() {\n return new SymbolCode(UInt64.from(this.value.value.clone().iushrn(8)));\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n /**\n * Convert units to floating point number according to symbol precision.\n * @throws If the given units can't be represented in 53 bits.\n **/\n convertUnits(units) {\n return units.value.toNumber() / Math.pow(10, this.precision);\n }\n /**\n * Convert floating point to units according to symbol precision.\n * Note that the value will be rounded to closest precision.\n **/\n convertFloat(float) {\n return Int64.from(float.toFixed(this.precision).replace('.', ''));\n }\n toString() {\n return `${this.precision},${this.name}`;\n }\n toJSON() {\n return this.toString();\n }\n }\n Symbol.abiName = 'symbol';\n Symbol.maxPrecision = 18;\n Asset.Symbol = Symbol;\n class SymbolCode {\n static from(value) {\n if (isInstanceOf(value, SymbolCode)) {\n return value;\n }\n if (typeof value === 'string') {\n value = UInt64.from(toRawSymbolCode(value));\n }\n return new this(UInt64.from(value));\n }\n static fromABI(decoder) {\n return new SymbolCode(UInt64.fromABI(decoder));\n }\n static abiDefault() {\n return this.from('SYS'); // CORE_SYMBOL_NAME\n }\n constructor(value) {\n if (!value.equals(0) && !SymbolCode.pattern.test(toSymbolName(value))) {\n throw new Error('Invalid asset symbol, name must be uppercase A-Z');\n }\n this.value = value;\n }\n equals(other) {\n return this.value.equals(SymbolCode.from(other).value);\n }\n toABI(encoder) {\n this.value.toABI(encoder);\n }\n toString() {\n return charsToSymbolName(this.value.value.toArray('be'));\n }\n toJSON() {\n return this.toString();\n }\n }\n SymbolCode.abiName = 'symbol_code';\n SymbolCode.pattern = /^[A-Z]{0,7}$/;\n Asset.SymbolCode = SymbolCode;\n})(Asset || (Asset = {}));\nclass ExtendedAsset {\n static from(value) {\n if (isInstanceOf(value, ExtendedAsset)) {\n return value;\n }\n return new this(Asset.from(value.quantity), Name.from(value.contract));\n }\n static fromABI(decoder) {\n return new ExtendedAsset(Asset.fromABI(decoder), Name.fromABI(decoder));\n }\n constructor(quantity, contract) {\n this.quantity = quantity;\n this.contract = contract;\n }\n equals(other) {\n return this.quantity.equals(other.quantity) && this.contract.equals(other.contract);\n }\n toABI(encoder) {\n this.quantity.toABI(encoder);\n this.contract.toABI(encoder);\n }\n toJSON() {\n return {\n quantity: this.quantity,\n contract: this.contract,\n };\n }\n}\nExtendedAsset.abiName = 'extended_asset';\nclass ExtendedSymbol {\n static from(value) {\n if (isInstanceOf(value, ExtendedSymbol)) {\n return value;\n }\n return new this(Asset.Symbol.from(value.sym), Name.from(value.contract));\n }\n static fromABI(decoder) {\n return new ExtendedSymbol(Asset.Symbol.fromABI(decoder), Name.fromABI(decoder));\n }\n constructor(sym, contract) {\n this.sym = sym;\n this.contract = contract;\n }\n equals(other) {\n return this.sym.equals(other.sym) && this.contract.equals(other.contract);\n }\n toABI(encoder) {\n this.sym.toABI(encoder);\n this.contract.toABI(encoder);\n }\n toJSON() {\n return {\n sym: this.sym,\n contract: this.contract,\n };\n }\n}\nExtendedSymbol.abiName = 'extended_symbol';\nfunction toSymbolPrecision(rawSymbol) {\n return rawSymbol.value.and(UInt64.from(0xff).value).toNumber();\n}\nfunction toSymbolName(rawSymbol) {\n const chars = rawSymbol.value.toArray('be').slice(0, -1);\n return charsToSymbolName(chars);\n}\nfunction charsToSymbolName(chars) {\n return chars\n .map((char) => String.fromCharCode(char))\n .reverse()\n .join('');\n}\nfunction toRawSymbol(name, precision) {\n const code = toRawSymbolCode(name);\n const bytes = new Uint8Array(code.length + 1);\n bytes[0] = precision;\n bytes.set(code, 1);\n return UInt64.from(bytes);\n}\nfunction toRawSymbolCode(name) {\n const length = Math.min(name.length, 7);\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = name.charCodeAt(i);\n }\n return bytes;\n}\n\nvar Base58;\n(function (Base58) {\n let ErrorCode;\n (function (ErrorCode) {\n ErrorCode[\"E_CHECKSUM\"] = \"E_CHECKSUM\";\n ErrorCode[\"E_INVALID\"] = \"E_INVALID\";\n })(ErrorCode = Base58.ErrorCode || (Base58.ErrorCode = {}));\n class DecodingError extends Error {\n constructor(message, code, info = {}) {\n super(message);\n this.code = code;\n this.info = info;\n }\n }\n DecodingError.__className = 'DecodingError';\n Base58.DecodingError = DecodingError;\n const chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n const charMap = new Int16Array(0xff).fill(-1);\n for (let i = 0; i < 58; ++i) {\n charMap[chars.charCodeAt(i)] = i;\n }\n /** Decode a Base58 encoded string. */\n function decode(s, size) {\n if (size == null) {\n return decodeVar(s);\n }\n const result = new Uint8Array(size);\n for (let i = 0; i < s.length; ++i) {\n let carry = charMap[s.charCodeAt(i)];\n if (carry < 0) {\n throw new DecodingError('Invalid Base58 character encountered', ErrorCode.E_INVALID, { char: s[i] });\n }\n for (let j = 0; j < size; ++j) {\n const x = result[j] * 58 + carry;\n result[j] = x;\n carry = x >> 8;\n }\n if (carry) {\n throw new DecodingError('Base58 value is out of range', ErrorCode.E_INVALID);\n }\n }\n result.reverse();\n return new Bytes(result);\n }\n Base58.decode = decode;\n /** Decode a Base58Check encoded string. */\n function decodeCheck(encoded, size) {\n const decoded = decode(encoded, size != null ? size + 4 : size);\n const data = decoded.array.subarray(0, -4);\n const expected = decoded.array.subarray(-4);\n const actual = dsha256Checksum(data);\n if (!arrayEquals(expected, actual)) {\n throw new DecodingError('Checksum mismatch', ErrorCode.E_CHECKSUM, {\n actual,\n expected,\n data,\n hash: 'double_sha256',\n });\n }\n return new Bytes(data);\n }\n Base58.decodeCheck = decodeCheck;\n /** Decode a Base58Check encoded string that uses ripemd160 instead of double sha256 for the digest. */\n function decodeRipemd160Check(encoded, size, suffix) {\n const decoded = decode(encoded, size != null ? size + 4 : size);\n const data = decoded.array.subarray(0, -4);\n const expected = decoded.array.subarray(-4);\n const actual = ripemd160Checksum(data, suffix);\n if (!arrayEquals(expected, actual)) {\n throw new DecodingError('Checksum mismatch', ErrorCode.E_CHECKSUM, {\n actual,\n expected,\n data,\n hash: 'ripemd160',\n });\n }\n return new Bytes(data);\n }\n Base58.decodeRipemd160Check = decodeRipemd160Check;\n /** Encode bytes to a Base58 string. */\n function encode(data) {\n data = Bytes.from(data);\n const result = [];\n for (const byte of data.array) {\n let carry = byte;\n for (let j = 0; j < result.length; ++j) {\n const x = (charMap[result[j]] << 8) + carry;\n result[j] = chars.charCodeAt(x % 58);\n carry = (x / 58) | 0;\n }\n while (carry) {\n result.push(chars.charCodeAt(carry % 58));\n carry = (carry / 58) | 0;\n }\n }\n for (const byte of data.array) {\n if (byte) {\n break;\n }\n else {\n result.push('1'.charCodeAt(0));\n }\n }\n result.reverse();\n return String.fromCharCode(...result);\n }\n Base58.encode = encode;\n function encodeCheck(data) {\n data = Bytes.from(data);\n data = data.appending(dsha256Checksum(data.array));\n return encode(data);\n }\n Base58.encodeCheck = encodeCheck;\n function encodeRipemd160Check(data, suffix) {\n data = Bytes.from(data);\n data = data.appending(ripemd160Checksum(data.array, suffix));\n return encode(data);\n }\n Base58.encodeRipemd160Check = encodeRipemd160Check;\n /** @internal */\n function decodeVar(s) {\n const result = [];\n for (let i = 0; i < s.length; ++i) {\n let carry = charMap[s.charCodeAt(i)];\n if (carry < 0) {\n throw new DecodingError('Invalid Base58 character encountered', ErrorCode.E_INVALID, { char: s[i] });\n }\n for (let j = 0; j < result.length; ++j) {\n const x = result[j] * 58 + carry;\n result[j] = x & 0xff;\n carry = x >> 8;\n }\n if (carry) {\n result.push(carry);\n }\n }\n for (const ch of s) {\n if (ch === '1') {\n result.push(0);\n }\n else {\n break;\n }\n }\n result.reverse();\n return Bytes.from(result);\n }\n /** @internal */\n function ripemd160Checksum(data, suffix) {\n const hash = ripemd160().update(data);\n if (suffix) {\n hash.update(suffix);\n }\n return new Uint8Array(hash.digest().slice(0, 4));\n }\n /** @internal */\n function dsha256Checksum(data) {\n const round1 = sha256().update(data).digest();\n const round2 = sha256().update(round1).digest();\n return new Uint8Array(round2.slice(0, 4));\n }\n})(Base58 || (Base58 = {}));\n\nclass PublicKey {\n /** Create PublicKey object from representing types. */\n static from(value) {\n if (isInstanceOf(value, PublicKey)) {\n return value;\n }\n if (typeof value === 'object' && value.type && value.compressed) {\n return new PublicKey(KeyType.from(value.type), new Bytes(value.compressed));\n }\n if (typeof value !== 'string') {\n throw new Error('Invalid public key');\n }\n if (value.startsWith('PUB_')) {\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid public key string');\n }\n const type = KeyType.from(parts[1]);\n const size = type === KeyType.K1 || type === KeyType.R1 ? 33 : undefined;\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return new PublicKey(type, data);\n }\n else if (value.length >= 50) {\n // Legacy EOS key\n const data = Base58.decodeRipemd160Check(value.slice(-50));\n return new PublicKey(KeyType.K1, data);\n }\n else {\n throw new Error('Invalid public key string');\n }\n }\n /** @internal */\n static fromABI(decoder) {\n const type = KeyType.from(decoder.readByte());\n if (type == KeyType.WA) {\n const startPos = decoder.getPosition();\n decoder.advance(33); // key_data\n decoder.advance(1); // user presence\n decoder.advance(decoder.readVaruint32()); // rpid\n const len = decoder.getPosition() - startPos;\n decoder.setPosition(startPos);\n const data = Bytes.from(decoder.readArray(len));\n return new PublicKey(KeyType.WA, data);\n }\n return new PublicKey(type, new Bytes(decoder.readArray(33)));\n }\n /** @internal */\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n equals(other) {\n const otherKey = PublicKey.from(other);\n return this.type === otherKey.type && this.data.equals(otherKey.data);\n }\n /**\n * Return Antelope/EOSIO legacy (`EOS`) formatted key.\n * @throws If the key type isn't `K1`\n */\n toLegacyString(prefix = 'EOS') {\n if (this.type !== KeyType.K1) {\n throw new Error('Unable to create legacy formatted string for non-K1 key');\n }\n return `${prefix}${Base58.encodeRipemd160Check(this.data)}`;\n }\n /** Return key in modern Antelope/EOSIO format (`PUB__`) */\n toString() {\n return `PUB_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n /** @internal */\n toABI(encoder) {\n encoder.writeByte(KeyType.indexFor(this.type));\n encoder.writeArray(this.data.array);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nPublicKey.abiName = 'public_key';\n\nconst curves = {};\n/**\n * Get curve for key type.\n * @internal\n */\nfunction getCurve(type) {\n let rv = curves[type];\n if (!rv) {\n if (type === 'K1') {\n rv = curves[type] = new ec('secp256k1');\n }\n else if (type === 'R1') {\n rv = curves[type] = new ec('p256');\n }\n else {\n throw new Error(`Unknown curve type: ${type}`);\n }\n }\n return rv;\n}\n\n/**\n * Recover public key from signature and recovery id.\n * @internal\n */\nfunction recover(signature, message, type) {\n const curve = getCurve(type);\n const recid = signature[0] - 31;\n const r = signature.subarray(1, 33);\n const s = signature.subarray(33);\n const point = curve.recoverPubKey(message, { r, s }, recid);\n return new Uint8Array(point.encodeCompressed());\n}\n\n/**\n * Verify signature using message and public key.\n * @internal\n */\nfunction verify(signature, message, pubkey, type) {\n const curve = getCurve(type);\n const r = signature.subarray(1, 33);\n const s = signature.subarray(33);\n return curve.verify(message, { r, s }, pubkey);\n}\n\nclass Signature {\n /** Create Signature object from representing types. */\n static from(value) {\n if (isInstanceOf(value, Signature)) {\n return value;\n }\n if (typeof value === 'object' && value.r && value.s) {\n const data = new Uint8Array(1 + 32 + 32);\n let recid = value.recid;\n const type = KeyType.from(value.type);\n if (value.type === KeyType.K1 || value.type === KeyType.R1) {\n recid += 31;\n }\n data[0] = recid;\n data.set(value.r, 1);\n data.set(value.s, 33);\n return new Signature(type, new Bytes(data));\n }\n if (typeof value !== 'string') {\n throw new Error('Invalid signature');\n }\n if (value.startsWith('SIG_')) {\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid signature string');\n }\n const type = KeyType.from(parts[1]);\n const size = type === KeyType.K1 || type === KeyType.R1 ? 65 : undefined;\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return new Signature(type, data);\n }\n else {\n throw new Error('Invalid signature string');\n }\n }\n /** @internal */\n static fromABI(decoder) {\n const type = KeyType.from(decoder.readByte());\n if (type === KeyType.WA) {\n const startPos = decoder.getPosition();\n decoder.advance(65); // compact_signature\n decoder.advance(decoder.readVaruint32()); // auth_data\n decoder.advance(decoder.readVaruint32()); // client_json\n const len = decoder.getPosition() - startPos;\n decoder.setPosition(startPos);\n const data = Bytes.from(decoder.readArray(len));\n return new Signature(KeyType.WA, data);\n }\n return new Signature(type, new Bytes(decoder.readArray(65)));\n }\n /** @internal */\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n equals(other) {\n const otherSig = Signature.from(other);\n return this.type === otherSig.type && this.data.equals(otherSig.data);\n }\n /** Recover public key from given message digest. */\n recoverDigest(digest) {\n digest = Checksum256.from(digest);\n const compressed = recover(this.data.array, digest.array, this.type);\n return PublicKey.from({ compressed, type: this.type });\n }\n /** Recover public key from given message. */\n recoverMessage(message) {\n return this.recoverDigest(Checksum256.hash(message));\n }\n /** Verify this signature with given message digest and public key. */\n verifyDigest(digest, publicKey) {\n digest = Checksum256.from(digest);\n return verify(this.data.array, digest.array, publicKey.data.array, this.type);\n }\n /** Verify this signature with given message and public key. */\n verifyMessage(message, publicKey) {\n return this.verifyDigest(Checksum256.hash(message), publicKey);\n }\n /** Base58check encoded string representation of this signature (`SIG__`). */\n toString() {\n return `SIG_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n /** @internal */\n toABI(encoder) {\n encoder.writeByte(KeyType.indexFor(this.type));\n encoder.writeArray(this.data.array);\n }\n /** @internal */\n toJSON() {\n return this.toString();\n }\n}\nSignature.abiName = 'signature';\n\n/**\n * Get public key corresponding to given private key.\n * @internal\n */\nfunction getPublic(privkey, type) {\n const curve = getCurve(type);\n const key = curve.keyFromPrivate(privkey);\n const point = key.getPublic();\n return new Uint8Array(point.encodeCompressed());\n}\n\n/**\n * Derive shared secret for key pair.\n * @internal\n */\nfunction sharedSecret(privkey, pubkey, type) {\n const curve = getCurve(type);\n const priv = curve.keyFromPrivate(privkey);\n const pub = curve.keyFromPublic(pubkey).getPublic();\n return priv.derive(pub).toArrayLike(Uint8Array, 'be');\n}\n\n/**\n * Sign digest using private key.\n * @internal\n */\nfunction sign(secret, message, type) {\n const curve = getCurve(type);\n const key = curve.keyFromPrivate(secret);\n let sig;\n let r;\n let s;\n if (type === 'K1') {\n let attempt = 1;\n do {\n sig = key.sign(message, { canonical: true, pers: [attempt++] });\n r = sig.r.toArrayLike(Uint8Array, 'be', 32);\n s = sig.s.toArrayLike(Uint8Array, 'be', 32);\n } while (!isCanonical(r, s));\n }\n else {\n sig = key.sign(message, { canonical: true });\n r = sig.r.toArrayLike(Uint8Array, 'be', 32);\n s = sig.s.toArrayLike(Uint8Array, 'be', 32);\n }\n return { type, r, s, recid: sig.recoveryParam || 0 };\n}\n/**\n * Here be dragons\n * - https://github.com/steemit/steem/issues/1944\n * - https://github.com/EOSIO/eos/issues/6699\n * @internal\n */\nfunction isCanonical(r, s) {\n return (!(r[0] & 0x80) &&\n !(r[0] === 0 && !(r[1] & 0x80)) &&\n !(s[0] & 0x80) &&\n !(s[0] === 0 && !(s[1] & 0x80)));\n}\n\n/**\n * Generate a new private key for given type.\n * @internal\n */\nfunction generate(type) {\n const curve = getCurve(type);\n const privkey = curve.genKeyPair().getPrivate();\n return privkey.toArrayLike(Uint8Array, 'be', 32);\n}\n\nclass PrivateKey {\n /** Create PrivateKey object from representing types. */\n static from(value) {\n if (isInstanceOf(value, PrivateKey)) {\n return value;\n }\n else {\n return this.fromString(value);\n }\n }\n /**\n * Create PrivateKey object from a string representation.\n * Accepts WIF (5...) and Antelope/EOSIO (PVT_...) style private keys.\n */\n static fromString(string, ignoreChecksumError = false) {\n try {\n const { type, data } = decodeKey(string);\n return new this(type, data);\n }\n catch (error) {\n error.message = `Invalid private key (${error.message})`;\n if (ignoreChecksumError &&\n isInstanceOf(error, Base58.DecodingError) &&\n error.code === Base58.ErrorCode.E_CHECKSUM) {\n const type = string.startsWith('PVT_R1') ? KeyType.R1 : KeyType.K1;\n const data = new Bytes(error.info.data);\n if (data.length === 33) {\n data.dropFirst();\n }\n data.zeropad(32, true);\n return new this(type, data);\n }\n throw error;\n }\n }\n /**\n * Generate new PrivateKey.\n * @throws If a secure random source isn't available.\n */\n static generate(type) {\n return new PrivateKey(KeyType.from(type), new Bytes(generate(type)));\n }\n /** @internal */\n constructor(type, data) {\n if ((type === KeyType.K1 || type === KeyType.R1) && data.length !== 32) {\n throw new Error('Invalid private key length');\n }\n this.type = type;\n this.data = data;\n }\n /**\n * Sign message digest using this key.\n * @throws If the key type isn't R1 or K1.\n */\n signDigest(digest) {\n digest = Checksum256.from(digest);\n return Signature.from(sign(this.data.array, digest.array, this.type));\n }\n /**\n * Sign message using this key.\n * @throws If the key type isn't R1 or K1.\n */\n signMessage(message) {\n return this.signDigest(Checksum256.hash(message));\n }\n /**\n * Derive the shared secret between this private key and given public key.\n * @throws If the key type isn't R1 or K1.\n */\n sharedSecret(publicKey) {\n const shared = sharedSecret(this.data.array, publicKey.data.array, this.type);\n return Checksum512.hash(shared);\n }\n /**\n * Get the corresponding public key.\n * @throws If the key type isn't R1 or K1.\n */\n toPublic() {\n const compressed = getPublic(this.data.array, this.type);\n return PublicKey.from({ compressed, type: this.type });\n }\n /**\n * Return WIF representation of this private key\n * @throws If the key type isn't K1.\n */\n toWif() {\n if (this.type !== KeyType.K1) {\n throw new Error('Unable to generate WIF for non-k1 key');\n }\n return Base58.encodeCheck(Bytes.from([0x80]).appending(this.data));\n }\n /**\n * Return the key in Antelope/EOSIO PVT__ format.\n */\n toString() {\n return `PVT_${this.type}_${Base58.encodeRipemd160Check(this.data, this.type)}`;\n }\n toJSON() {\n return this.toString();\n }\n}\n/** @internal */\nfunction decodeKey(value) {\n const type = typeof value;\n if (type !== 'string') {\n throw new Error(`Expected string, got ${type}`);\n }\n if (value.startsWith('PVT_')) {\n // Antelope/EOSIO format\n const parts = value.split('_');\n if (parts.length !== 3) {\n throw new Error('Invalid PVT format');\n }\n const type = KeyType.from(parts[1]);\n let size;\n switch (type) {\n case KeyType.K1:\n case KeyType.R1:\n size = 32;\n break;\n }\n const data = Base58.decodeRipemd160Check(parts[2], size, type);\n return { type, data };\n }\n else {\n // WIF format\n const type = KeyType.K1;\n const data = Base58.decodeCheck(value);\n if (data.array[0] !== 0x80) {\n throw new Error('Invalid WIF');\n }\n return { type, data: data.droppingFirst() };\n }\n}\n\nvar PermissionLevel_1;\n/** Antelope/EOSIO Permission Level, a.k.a \"auth\". */\nlet PermissionLevel = PermissionLevel_1 = class PermissionLevel extends Struct {\n /** Create new permission level from representing types. Can be expressed as a string in the format `@`. */\n static from(value) {\n if (typeof value === 'string') {\n const parts = value.split('@');\n if (parts.length !== 2 && parts[0].length > 0 && parts[1].length > 0) {\n throw new Error('Invalid permission level string, should be in the format @');\n }\n value = { actor: parts[0], permission: parts[1] };\n }\n return super.from(value);\n }\n /** Return true if this permission level equals other. */\n equals(other) {\n const otherPerm = PermissionLevel_1.from(other);\n return this.actor.equals(otherPerm.actor) && this.permission.equals(otherPerm.permission);\n }\n toString() {\n return `${this.actor}@${this.permission}`;\n }\n};\n__decorate([\n Struct.field('name')\n], PermissionLevel.prototype, \"actor\", void 0);\n__decorate([\n Struct.field('name')\n], PermissionLevel.prototype, \"permission\", void 0);\nPermissionLevel = PermissionLevel_1 = __decorate([\n Struct.type('permission_level')\n], PermissionLevel);\n\nvar Action_1;\nlet Action = Action_1 = class Action extends Struct {\n static from(anyAction, abi) {\n let object = { ...anyAction };\n const data = object.data;\n if (!Bytes.isBytes(data)) {\n let type;\n if (abi) {\n type = ABI.from(abi).getActionType(object.name);\n }\n else if (!data.constructor || data.constructor.abiName === undefined) {\n throw new Error('Missing ABI definition when creating action with untyped action data');\n }\n object = {\n ...object,\n data: abiEncode({ object: data, type, abi }),\n };\n }\n const action = super.from(object);\n if (abi) {\n action.abi = ABI.from(abi);\n }\n else {\n const type = getType(data);\n if (type) {\n action.abi = ABI.from({\n ...synthesizeABI(type).abi,\n actions: [\n {\n name: action.name,\n type: type.abiName,\n ricardian_contract: '',\n },\n ],\n });\n }\n }\n return action;\n }\n /** Return true if this Action is equal to given action. */\n equals(other) {\n const otherAction = Action_1.from(other, this.abi);\n return (this.account.equals(otherAction.account) &&\n this.name.equals(otherAction.name) &&\n arrayEquatableEquals(this.authorization, otherAction.authorization) &&\n this.data.equals(otherAction.data));\n }\n decodeData(typeOrAbi) {\n if (typeof typeOrAbi === 'string' || typeOrAbi.abiName) {\n return abiDecode({\n data: this.data,\n type: typeOrAbi,\n });\n }\n else {\n const abi = ABI.from(typeOrAbi);\n const type = abi.getActionType(this.name);\n if (!type) {\n throw new Error(`Action ${this.name} does not exist in provided ABI`);\n }\n return abiDecode({ data: this.data, type, abi });\n }\n }\n get decoded() {\n if (!this.abi) {\n throw new Error('Missing ABI definition when decoding action data');\n }\n return {\n ...this.toJSON(),\n data: this.decodeData(this.abi),\n };\n }\n};\n__decorate([\n Struct.field('name')\n], Action.prototype, \"account\", void 0);\n__decorate([\n Struct.field('name')\n], Action.prototype, \"name\", void 0);\n__decorate([\n Struct.field(PermissionLevel, { array: true })\n], Action.prototype, \"authorization\", void 0);\n__decorate([\n Struct.field('bytes')\n], Action.prototype, \"data\", void 0);\nAction = Action_1 = __decorate([\n Struct.type('action')\n], Action);\n\nvar Transaction_1;\nlet TransactionExtension = class TransactionExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], TransactionExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], TransactionExtension.prototype, \"data\", void 0);\nTransactionExtension = __decorate([\n Struct.type('transaction_extension')\n], TransactionExtension);\nlet TransactionHeader = class TransactionHeader extends Struct {\n static from(object) {\n return super.from({\n max_net_usage_words: 0,\n max_cpu_usage_ms: 0,\n delay_sec: 0,\n ...object,\n });\n }\n};\n__decorate([\n Struct.field('time_point_sec')\n], TransactionHeader.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field('uint16')\n], TransactionHeader.prototype, \"ref_block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionHeader.prototype, \"ref_block_prefix\", void 0);\n__decorate([\n Struct.field('varuint32')\n], TransactionHeader.prototype, \"max_net_usage_words\", void 0);\n__decorate([\n Struct.field('uint8')\n], TransactionHeader.prototype, \"max_cpu_usage_ms\", void 0);\n__decorate([\n Struct.field('varuint32')\n], TransactionHeader.prototype, \"delay_sec\", void 0);\nTransactionHeader = __decorate([\n Struct.type('transaction_header')\n], TransactionHeader);\nlet Transaction = Transaction_1 = class Transaction extends TransactionHeader {\n static from(object, abis) {\n const abiFor = (contract) => {\n if (!abis) {\n return;\n }\n else if (Array.isArray(abis)) {\n return abis\n .filter((abi) => Name.from(abi.contract).equals(contract))\n .map(({ abi }) => abi)[0];\n }\n else {\n return abis;\n }\n };\n const resolveAction = (action) => {\n if (action instanceof Action) {\n return action;\n }\n else {\n return Action.from(action, abiFor(action.account));\n }\n };\n const actions = (object.actions || []).map(resolveAction);\n const context_free_actions = (object.context_free_actions || []).map(resolveAction);\n const transaction = {\n transaction_extensions: [],\n ...object,\n context_free_actions,\n actions,\n };\n return super.from(transaction);\n }\n /** Return true if this transaction is equal to given transaction. */\n equals(other) {\n const tx = Transaction_1.from(other);\n return this.id.equals(tx.id);\n }\n get id() {\n return Checksum256.hash(abiEncode({ object: this }));\n }\n signingDigest(chainId) {\n const data = this.signingData(chainId);\n return Checksum256.hash(data);\n }\n signingData(chainId) {\n let data = Bytes.from(Checksum256.from(chainId).array);\n data = data.appending(abiEncode({ object: this }));\n data = data.appending(new Uint8Array(32));\n return data;\n }\n};\n__decorate([\n Struct.field(Action, { array: true })\n], Transaction.prototype, \"context_free_actions\", void 0);\n__decorate([\n Struct.field(Action, { array: true })\n], Transaction.prototype, \"actions\", void 0);\n__decorate([\n Struct.field(TransactionExtension, { array: true })\n], Transaction.prototype, \"transaction_extensions\", void 0);\nTransaction = Transaction_1 = __decorate([\n Struct.type('transaction')\n], Transaction);\nlet SignedTransaction = class SignedTransaction extends Transaction {\n /** The transaction without the signatures. */\n get transaction() {\n return Transaction.from({\n ...this,\n signatures: undefined,\n context_free_data: undefined,\n });\n }\n get id() {\n return this.transaction.id;\n }\n static from(object) {\n return super.from({\n signatures: [],\n context_free_data: [],\n ...object,\n });\n }\n};\n__decorate([\n Struct.field('signature[]')\n], SignedTransaction.prototype, \"signatures\", void 0);\n__decorate([\n Struct.field('bytes[]')\n], SignedTransaction.prototype, \"context_free_data\", void 0);\nSignedTransaction = __decorate([\n Struct.type('signed_transaction')\n], SignedTransaction);\n// reference: https://github.com/AntelopeIO/leap/blob/339d98eed107b9fd94736988996082c7002fa52a/libraries/chain/include/eosio/chain/transaction.hpp#L131-L134\nvar CompressionType;\n(function (CompressionType) {\n CompressionType[CompressionType[\"none\"] = 0] = \"none\";\n CompressionType[CompressionType[\"zlib\"] = 1] = \"zlib\";\n})(CompressionType || (CompressionType = {}));\nlet PackedTransaction = class PackedTransaction extends Struct {\n static from(object) {\n return super.from({\n signatures: [],\n packed_context_free_data: '',\n compression: 0,\n ...object,\n });\n }\n static fromSigned(signed, compression = 1) {\n // Encode data\n let packed_trx = abiEncode({ object: Transaction.from(signed) });\n let packed_context_free_data = abiEncode({\n object: signed.context_free_data,\n type: 'bytes[]',\n });\n switch (compression) {\n case CompressionType.zlib: {\n // compress data\n packed_trx = pako.deflate(packed_trx.array);\n packed_context_free_data = pako.deflate(packed_context_free_data.array);\n break;\n }\n case CompressionType.none: {\n break;\n }\n }\n return this.from({\n compression,\n signatures: signed.signatures,\n packed_context_free_data,\n packed_trx,\n });\n }\n getTransaction() {\n switch (Number(this.compression)) {\n // none\n case CompressionType.none: {\n return abiDecode({ data: this.packed_trx, type: Transaction });\n }\n // zlib compressed\n case CompressionType.zlib: {\n const inflated = pako.inflate(this.packed_trx.array);\n return abiDecode({ data: inflated, type: Transaction });\n }\n default: {\n throw new Error(`Unknown transaction compression ${this.compression}`);\n }\n }\n }\n getSignedTransaction() {\n const transaction = this.getTransaction();\n // TODO: decode context free data\n return SignedTransaction.from({\n ...transaction,\n signatures: this.signatures,\n });\n }\n};\n__decorate([\n Struct.field('signature[]')\n], PackedTransaction.prototype, \"signatures\", void 0);\n__decorate([\n Struct.field('uint8')\n], PackedTransaction.prototype, \"compression\", void 0);\n__decorate([\n Struct.field('bytes')\n], PackedTransaction.prototype, \"packed_context_free_data\", void 0);\n__decorate([\n Struct.field('bytes')\n], PackedTransaction.prototype, \"packed_trx\", void 0);\nPackedTransaction = __decorate([\n Struct.type('packed_transaction')\n], PackedTransaction);\nlet TransactionReceipt = class TransactionReceipt extends Struct {\n};\n__decorate([\n Struct.field('string')\n], TransactionReceipt.prototype, \"status\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionReceipt.prototype, \"cpu_usage_us\", void 0);\n__decorate([\n Struct.field('uint32')\n], TransactionReceipt.prototype, \"net_usage_words\", void 0);\nTransactionReceipt = __decorate([\n Struct.type('transaction_receipt')\n], TransactionReceipt);\n\nvar Authority_1;\nlet Weight = class Weight extends UInt16 {\n};\nWeight = __decorate([\n TypeAlias('weight_type')\n], Weight);\nlet KeyWeight = class KeyWeight extends Struct {\n};\n__decorate([\n Struct.field(PublicKey)\n], KeyWeight.prototype, \"key\", void 0);\n__decorate([\n Struct.field(Weight)\n], KeyWeight.prototype, \"weight\", void 0);\nKeyWeight = __decorate([\n Struct.type('key_weight')\n], KeyWeight);\nlet PermissionLevelWeight = class PermissionLevelWeight extends Struct {\n};\n__decorate([\n Struct.field(PermissionLevel)\n], PermissionLevelWeight.prototype, \"permission\", void 0);\n__decorate([\n Struct.field(Weight)\n], PermissionLevelWeight.prototype, \"weight\", void 0);\nPermissionLevelWeight = __decorate([\n Struct.type('permission_level_weight')\n], PermissionLevelWeight);\nlet WaitWeight = class WaitWeight extends Struct {\n};\n__decorate([\n Struct.field(UInt32)\n], WaitWeight.prototype, \"wait_sec\", void 0);\n__decorate([\n Struct.field(Weight)\n], WaitWeight.prototype, \"weight\", void 0);\nWaitWeight = __decorate([\n Struct.type('wait_weight')\n], WaitWeight);\nlet Authority = Authority_1 = class Authority extends Struct {\n static from(value) {\n if (isInstanceOf(value, Authority_1)) {\n return value;\n }\n const rv = super.from({\n keys: [],\n accounts: [],\n waits: [],\n ...value,\n });\n rv.sort();\n return rv;\n }\n /** Total weight of all waits. */\n get waitThreshold() {\n return this.waits.reduce((val, wait) => val + wait.weight.toNumber(), 0);\n }\n /** Weight a key needs to sign for this authority. */\n get keyThreshold() {\n return this.threshold.toNumber() - this.waitThreshold;\n }\n /** Return the weight for given public key, or zero if it is not included in this authority. */\n keyWeight(publicKey) {\n const weight = this.keys.find(({ key }) => key.equals(publicKey));\n return weight ? weight.weight.toNumber() : 0;\n }\n /**\n * Check if given public key has permission in this authority,\n * @attention Does not take indirect permissions for the key via account weights into account.\n * @param publicKey The key to check.\n * @param includePartial Whether to consider auths where the key is included but can't be reached alone (e.g. multisig).\n */\n hasPermission(publicKey, includePartial = false) {\n const threshold = includePartial ? 1 : this.keyThreshold;\n const weight = this.keyWeight(publicKey);\n return weight >= threshold;\n }\n /**\n * Sorts the authority weights in place, should be called before including the authority in a `updateauth` action or it might be rejected.\n */\n sort() {\n // This hack satisfies the constraints that authority weights, see: https://github.com/wharfkit/antelope/issues/8\n this.keys.sort((a, b) => String(a.key).localeCompare(String(b.key)));\n this.accounts.sort((a, b) => String(a.permission).localeCompare(String(b.permission)));\n this.waits.sort((a, b) => String(a.wait_sec).localeCompare(String(b.wait_sec)));\n }\n};\n__decorate([\n Struct.field(UInt32)\n], Authority.prototype, \"threshold\", void 0);\n__decorate([\n Struct.field(KeyWeight, { array: true })\n], Authority.prototype, \"keys\", void 0);\n__decorate([\n Struct.field(PermissionLevelWeight, { array: true })\n], Authority.prototype, \"accounts\", void 0);\n__decorate([\n Struct.field(WaitWeight, { array: true })\n], Authority.prototype, \"waits\", void 0);\nAuthority = Authority_1 = __decorate([\n Struct.type('authority')\n], Authority);\n\nclass BlockId {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (Bytes.isBytes(value)) {\n return new this(Bytes.from(value).array);\n }\n else {\n return this.fromBlockChecksum(value.checksum, value.blockNum);\n }\n }\n static fromABI(decoder) {\n return new this(decoder.readArray(32));\n }\n static fromBlockChecksum(checksum, blockNum) {\n const id = new BlockId(Checksum256.from(checksum).array);\n const numBuffer = new Uint8Array(4);\n numBuffer[0] = (Number(blockNum) >> 24) & 0xff;\n numBuffer[1] = (Number(blockNum) >> 16) & 0xff;\n numBuffer[2] = (Number(blockNum) >> 8) & 0xff;\n numBuffer[3] = Number(blockNum) & 0xff;\n id.array.set(numBuffer, 0);\n return id;\n }\n constructor(array) {\n if (array.byteLength !== 32) {\n throw new Error(`BlockId size mismatch, expected 32 bytes got ${array.byteLength}`);\n }\n this.array = array;\n }\n equals(other) {\n const self = this.constructor;\n try {\n return arrayEquals(this.array, self.from(other).array);\n }\n catch {\n return false;\n }\n }\n toABI(encoder) {\n encoder.writeArray(this.array);\n }\n toString() {\n return this.hexString;\n }\n toJSON() {\n return this.toString();\n }\n get hexString() {\n return arrayToHex(this.array);\n }\n get blockNum() {\n const bytes = this.array.slice(0, 4);\n let num = 0;\n for (let i = 0; i < 4; i++) {\n num = (num << 8) + bytes[i];\n }\n return UInt32.from(num);\n }\n}\nBlockId.abiName = 'block_id_type'; // eosio contract context defines this with a _type suffix for some reason\n\nvar Serializer;\n(function (Serializer) {\n Serializer.encode = abiEncode;\n Serializer.decode = abiDecode;\n /** Create an Antelope/EOSIO ABI definition for given core type. */\n function synthesize(type) {\n return synthesizeABI(type).abi;\n }\n Serializer.synthesize = synthesize;\n /** Create JSON representation of a core object. */\n function stringify(object) {\n return JSON.stringify(object);\n }\n Serializer.stringify = stringify;\n /** Create a vanilla js representation of a core object. */\n function objectify(object) {\n const walk = (v) => {\n switch (typeof v) {\n case 'boolean':\n case 'number':\n case 'string':\n return v;\n case 'object': {\n if (v === null) {\n return v;\n }\n if (typeof v.toJSON === 'function') {\n return walk(v.toJSON());\n }\n if (Array.isArray(v)) {\n return v.map(walk);\n }\n const rv = {};\n for (const key of Object.keys(v)) {\n rv[key] = walk(v[key]);\n }\n return rv;\n }\n }\n };\n return walk(object);\n }\n Serializer.objectify = objectify;\n})(Serializer || (Serializer = {}));\n\n/** Default provider that uses the Fetch API to call a single node. */\nclass FetchProvider {\n constructor(url, options = {}) {\n this.headers = {};\n url = url.trim();\n if (url.endsWith('/'))\n url = url.slice(0, -1);\n this.url = url;\n if (options.headers) {\n this.headers = options.headers;\n }\n if (!options.fetch) {\n if (typeof window !== 'undefined' && window.fetch) {\n this.fetch = window.fetch.bind(window);\n }\n else if (typeof global !== 'undefined' && global.fetch) {\n this.fetch = global.fetch.bind(global);\n }\n else {\n throw new Error('Missing fetch');\n }\n }\n else {\n this.fetch = options.fetch;\n }\n }\n async call(args) {\n const url = this.url + args.path;\n const reqBody = args.params !== undefined ? JSON.stringify(args.params) : undefined;\n const reqHeaders = {\n ...this.headers,\n ...args.headers,\n };\n const response = await this.fetch(url, {\n method: args.method || 'POST',\n body: reqBody,\n headers: reqHeaders,\n });\n const text = await response.text();\n let json;\n try {\n json = JSON.parse(text);\n }\n catch {\n // ignore json parse errors\n }\n const headers = {};\n for (const [key, value] of response.headers.entries()) {\n headers[key] = value;\n }\n return { headers, status: response.status, json, text };\n }\n}\n\nlet AccountLinkedAction = class AccountLinkedAction extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountLinkedAction.prototype, \"account\", void 0);\n__decorate([\n Struct.field('name', { optional: true })\n], AccountLinkedAction.prototype, \"action\", void 0);\nAccountLinkedAction = __decorate([\n Struct.type('account_linked_action')\n], AccountLinkedAction);\nlet AccountPermission = class AccountPermission extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountPermission.prototype, \"perm_name\", void 0);\n__decorate([\n Struct.field('name')\n], AccountPermission.prototype, \"parent\", void 0);\n__decorate([\n Struct.field(Authority)\n], AccountPermission.prototype, \"required_auth\", void 0);\n__decorate([\n Struct.field(AccountLinkedAction, { optional: true, array: true })\n], AccountPermission.prototype, \"linked_actions\", void 0);\nAccountPermission = __decorate([\n Struct.type('account_permission')\n], AccountPermission);\nlet AccountResourceLimit = class AccountResourceLimit extends Struct {\n};\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"used\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"available\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountResourceLimit.prototype, \"max\", void 0);\n__decorate([\n Struct.field('time_point', { optional: true })\n], AccountResourceLimit.prototype, \"last_usage_update_time\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountResourceLimit.prototype, \"current_used\", void 0);\nAccountResourceLimit = __decorate([\n Struct.type('account_resource_limit')\n], AccountResourceLimit);\nlet AccountTotalResources = class AccountTotalResources extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountTotalResources.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountTotalResources.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountTotalResources.prototype, \"cpu_weight\", void 0);\n__decorate([\n Struct.field('uint64')\n], AccountTotalResources.prototype, \"ram_bytes\", void 0);\nAccountTotalResources = __decorate([\n Struct.type('account_total_resources')\n], AccountTotalResources);\nlet AccountSelfDelegatedBandwidth = class AccountSelfDelegatedBandwidth extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountSelfDelegatedBandwidth.prototype, \"from\", void 0);\n__decorate([\n Struct.field('name')\n], AccountSelfDelegatedBandwidth.prototype, \"to\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountSelfDelegatedBandwidth.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountSelfDelegatedBandwidth.prototype, \"cpu_weight\", void 0);\nAccountSelfDelegatedBandwidth = __decorate([\n Struct.type('account_self_delegated_bandwidth')\n], AccountSelfDelegatedBandwidth);\nlet AccountRefundRequest = class AccountRefundRequest extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountRefundRequest.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountRefundRequest.prototype, \"request_time\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRefundRequest.prototype, \"net_amount\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRefundRequest.prototype, \"cpu_amount\", void 0);\nAccountRefundRequest = __decorate([\n Struct.type('account_refund_request')\n], AccountRefundRequest);\nlet AccountVoterInfo = class AccountVoterInfo extends Struct {\n};\n__decorate([\n Struct.field('name')\n], AccountVoterInfo.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('name')\n], AccountVoterInfo.prototype, \"proxy\", void 0);\n__decorate([\n Struct.field('name', { array: true })\n], AccountVoterInfo.prototype, \"producers\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountVoterInfo.prototype, \"staked\", void 0);\n__decorate([\n Struct.field('float64')\n], AccountVoterInfo.prototype, \"last_vote_weight\", void 0);\n__decorate([\n Struct.field('float64')\n], AccountVoterInfo.prototype, \"proxied_vote_weight\", void 0);\n__decorate([\n Struct.field('bool')\n], AccountVoterInfo.prototype, \"is_proxy\", void 0);\n__decorate([\n Struct.field('uint32', { optional: true })\n], AccountVoterInfo.prototype, \"flags1\", void 0);\n__decorate([\n Struct.field('uint32')\n], AccountVoterInfo.prototype, \"reserved2\", void 0);\n__decorate([\n Struct.field('string')\n], AccountVoterInfo.prototype, \"reserved3\", void 0);\nAccountVoterInfo = __decorate([\n Struct.type('account_voter_info')\n], AccountVoterInfo);\nlet AccountRexInfoMaturities = class AccountRexInfoMaturities extends Struct {\n};\n__decorate([\n Struct.field('time_point', { optional: true })\n], AccountRexInfoMaturities.prototype, \"key\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountRexInfoMaturities.prototype, \"value\", void 0);\n__decorate([\n Struct.field('time_point', { optional: true })\n], AccountRexInfoMaturities.prototype, \"first\", void 0);\n__decorate([\n Struct.field('int64', { optional: true })\n], AccountRexInfoMaturities.prototype, \"second\", void 0);\nAccountRexInfoMaturities = __decorate([\n Struct.type('account_rex_info_maturities')\n], AccountRexInfoMaturities);\nlet AccountRexInfo = class AccountRexInfo extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], AccountRexInfo.prototype, \"version\", void 0);\n__decorate([\n Struct.field('name')\n], AccountRexInfo.prototype, \"owner\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRexInfo.prototype, \"vote_stake\", void 0);\n__decorate([\n Struct.field('asset')\n], AccountRexInfo.prototype, \"rex_balance\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountRexInfo.prototype, \"matured_rex\", void 0);\n__decorate([\n Struct.field(AccountRexInfoMaturities, { array: true })\n], AccountRexInfo.prototype, \"rex_maturities\", void 0);\nAccountRexInfo = __decorate([\n Struct.type('account_rex_info')\n], AccountRexInfo);\nlet GetRawAbiResponse = class GetRawAbiResponse extends Struct {\n};\n__decorate([\n Struct.field('name')\n], GetRawAbiResponse.prototype, \"account_name\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetRawAbiResponse.prototype, \"code_hash\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetRawAbiResponse.prototype, \"abi_hash\", void 0);\n__decorate([\n Struct.field(Blob)\n], GetRawAbiResponse.prototype, \"abi\", void 0);\nGetRawAbiResponse = __decorate([\n Struct.type('get_raw_abi_response')\n], GetRawAbiResponse);\nlet AccountObject = class AccountObject extends Struct {\n getPermission(permission) {\n const name = Name.from(permission);\n const match = this.permissions.find((p) => p.perm_name.equals(name));\n if (!match) {\n throw new Error(`Unknown permission ${name} on account ${this.account_name}.`);\n }\n return match;\n }\n};\n__decorate([\n Struct.field('name')\n], AccountObject.prototype, \"account_name\", void 0);\n__decorate([\n Struct.field('uint32')\n], AccountObject.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"head_block_time\", void 0);\n__decorate([\n Struct.field('bool')\n], AccountObject.prototype, \"privileged\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"last_code_update\", void 0);\n__decorate([\n Struct.field('time_point')\n], AccountObject.prototype, \"created\", void 0);\n__decorate([\n Struct.field('asset?')\n], AccountObject.prototype, \"core_liquid_balance\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"ram_quota\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"net_weight\", void 0);\n__decorate([\n Struct.field('int64')\n], AccountObject.prototype, \"cpu_weight\", void 0);\n__decorate([\n Struct.field(AccountResourceLimit)\n], AccountObject.prototype, \"net_limit\", void 0);\n__decorate([\n Struct.field(AccountResourceLimit)\n], AccountObject.prototype, \"cpu_limit\", void 0);\n__decorate([\n Struct.field(AccountResourceLimit, { optional: true })\n], AccountObject.prototype, \"subjective_cpu_bill_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], AccountObject.prototype, \"ram_usage\", void 0);\n__decorate([\n Struct.field(AccountPermission, { array: true })\n], AccountObject.prototype, \"permissions\", void 0);\n__decorate([\n Struct.field(AccountTotalResources, { optional: true })\n], AccountObject.prototype, \"total_resources\", void 0);\n__decorate([\n Struct.field(AccountSelfDelegatedBandwidth, { optional: true })\n], AccountObject.prototype, \"self_delegated_bandwidth\", void 0);\n__decorate([\n Struct.field(AccountRefundRequest, { optional: true })\n], AccountObject.prototype, \"refund_request\", void 0);\n__decorate([\n Struct.field(AccountVoterInfo, { optional: true })\n], AccountObject.prototype, \"voter_info\", void 0);\n__decorate([\n Struct.field(AccountRexInfo, { optional: true })\n], AccountObject.prototype, \"rex_info\", void 0);\nAccountObject = __decorate([\n Struct.type('account_object')\n], AccountObject);\nlet AccountByAuthorizersRow = class AccountByAuthorizersRow extends Struct {\n};\n__decorate([\n Struct.field(Name)\n], AccountByAuthorizersRow.prototype, \"account_name\", void 0);\n__decorate([\n Struct.field(Name)\n], AccountByAuthorizersRow.prototype, \"permission_name\", void 0);\n__decorate([\n Struct.field(PublicKey, { optional: true })\n], AccountByAuthorizersRow.prototype, \"authorizing_key\", void 0);\n__decorate([\n Struct.field(PermissionLevel, { optional: true })\n], AccountByAuthorizersRow.prototype, \"authorizing_account\", void 0);\n__decorate([\n Struct.field(Weight)\n], AccountByAuthorizersRow.prototype, \"weight\", void 0);\n__decorate([\n Struct.field(UInt32)\n], AccountByAuthorizersRow.prototype, \"threshold\", void 0);\nAccountByAuthorizersRow = __decorate([\n Struct.type('account_by_authorizers_row')\n], AccountByAuthorizersRow);\nlet AccountsByAuthorizers = class AccountsByAuthorizers extends Struct {\n};\n__decorate([\n Struct.field(AccountByAuthorizersRow, { array: true })\n], AccountsByAuthorizers.prototype, \"accounts\", void 0);\nAccountsByAuthorizers = __decorate([\n Struct.type('account_by_authorizers')\n], AccountsByAuthorizers);\nlet NewProducersEntry$1 = class NewProducersEntry extends Struct {\n};\n__decorate([\n Struct.field('name')\n], NewProducersEntry$1.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], NewProducersEntry$1.prototype, \"block_signing_key\", void 0);\nNewProducersEntry$1 = __decorate([\n Struct.type('new_producers_entry')\n], NewProducersEntry$1);\nlet NewProducers$1 = class NewProducers extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], NewProducers$1.prototype, \"version\", void 0);\n__decorate([\n Struct.field(NewProducersEntry$1, { array: true })\n], NewProducers$1.prototype, \"producers\", void 0);\nNewProducers$1 = __decorate([\n Struct.type('new_producers')\n], NewProducers$1);\nlet BlockExtension$1 = class BlockExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], BlockExtension$1.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], BlockExtension$1.prototype, \"data\", void 0);\nBlockExtension$1 = __decorate([\n Struct.type('block_extension')\n], BlockExtension$1);\nlet HeaderExtension$1 = class HeaderExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], HeaderExtension$1.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], HeaderExtension$1.prototype, \"data\", void 0);\nHeaderExtension$1 = __decorate([\n Struct.type('header_extension')\n], HeaderExtension$1);\n// fc \"mutable variant\" returned by get_block api\nlet TrxVariant$1 = class TrxVariant {\n static from(data) {\n let id;\n let extra;\n if (typeof data === 'string') {\n id = Checksum256.from(data);\n extra = {};\n }\n else {\n id = Checksum256.from(data.id);\n extra = data;\n }\n return new this(id, extra);\n }\n constructor(id, extra) {\n this.id = id;\n this.extra = extra;\n }\n get transaction() {\n if (this.extra.packed_trx) {\n switch (this.extra.compression) {\n case 'zlib': {\n const inflated = pako.inflate(Bytes.from(this.extra.packed_trx, 'hex').array);\n return Serializer.decode({ data: inflated, type: Transaction });\n }\n case 'none': {\n return Serializer.decode({ data: this.extra.packed_trx, type: Transaction });\n }\n default: {\n throw new Error(`Unsupported compression type ${this.extra.compression}`);\n }\n }\n }\n }\n get signatures() {\n if (this.extra.signatures) {\n return this.extra.signatures.map(Signature.from);\n }\n }\n equals(other) {\n return this.id.equals(other.id);\n }\n toJSON() {\n return this.id;\n }\n};\nTrxVariant$1.abiName = 'trx_variant';\nlet GetBlockResponseTransactionReceipt = class GetBlockResponseTransactionReceipt extends TransactionReceipt {\n get id() {\n return this.trx.id;\n }\n};\n__decorate([\n Struct.field(TrxVariant$1)\n], GetBlockResponseTransactionReceipt.prototype, \"trx\", void 0);\nGetBlockResponseTransactionReceipt = __decorate([\n Struct.type('get_block_response_receipt')\n], GetBlockResponseTransactionReceipt);\nlet GetBlockResponse = class GetBlockResponse extends Struct {\n};\n__decorate([\n Struct.field('time_point')\n], GetBlockResponse.prototype, \"timestamp\", void 0);\n__decorate([\n Struct.field('name')\n], GetBlockResponse.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], GetBlockResponse.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetBlockResponse.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockResponse.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(NewProducers$1, { optional: true })\n], GetBlockResponse.prototype, \"new_producers\", void 0);\n__decorate([\n Struct.field('header_extension', { optional: true })\n], GetBlockResponse.prototype, \"header_extensions\", void 0);\n__decorate([\n Struct.field('any', { optional: true })\n], GetBlockResponse.prototype, \"new_protocol_features\", void 0);\n__decorate([\n Struct.field('signature')\n], GetBlockResponse.prototype, \"producer_signature\", void 0);\n__decorate([\n Struct.field(GetBlockResponseTransactionReceipt, { array: true })\n], GetBlockResponse.prototype, \"transactions\", void 0);\n__decorate([\n Struct.field('block_extension', { optional: true })\n], GetBlockResponse.prototype, \"block_extensions\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetBlockResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockResponse.prototype, \"ref_block_prefix\", void 0);\nGetBlockResponse = __decorate([\n Struct.type('get_block_response')\n], GetBlockResponse);\nlet GetBlockInfoResponse = class GetBlockInfoResponse extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], GetBlockInfoResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockInfoResponse.prototype, \"ref_block_num\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetBlockInfoResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetBlockInfoResponse.prototype, \"timestamp\", void 0);\n__decorate([\n Struct.field('name')\n], GetBlockInfoResponse.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], GetBlockInfoResponse.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetBlockInfoResponse.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockInfoResponse.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetBlockInfoResponse.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockInfoResponse.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field('signature')\n], GetBlockInfoResponse.prototype, \"producer_signature\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockInfoResponse.prototype, \"ref_block_prefix\", void 0);\nGetBlockInfoResponse = __decorate([\n Struct.type('get_block_response')\n], GetBlockInfoResponse);\nlet ActiveScheduleProducerAuthority = class ActiveScheduleProducerAuthority extends Struct {\n};\n__decorate([\n Struct.field('name')\n], ActiveScheduleProducerAuthority.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('any')\n], ActiveScheduleProducerAuthority.prototype, \"authority\", void 0);\nActiveScheduleProducerAuthority = __decorate([\n Struct.type('active_schedule_producer_authority')\n], ActiveScheduleProducerAuthority);\nlet ActiveScheduleProducer = class ActiveScheduleProducer extends Struct {\n};\n__decorate([\n Struct.field('name')\n], ActiveScheduleProducer.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field(ActiveScheduleProducerAuthority)\n], ActiveScheduleProducer.prototype, \"authority\", void 0);\nActiveScheduleProducer = __decorate([\n Struct.type('active_schedule_producer')\n], ActiveScheduleProducer);\nlet ActiveSchedule = class ActiveSchedule extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], ActiveSchedule.prototype, \"version\", void 0);\n__decorate([\n Struct.field(ActiveScheduleProducer, { array: true })\n], ActiveSchedule.prototype, \"producers\", void 0);\nActiveSchedule = __decorate([\n Struct.type('active_schedule')\n], ActiveSchedule);\nlet BlockStateHeader = class BlockStateHeader extends Struct {\n};\n__decorate([\n Struct.field('time_point')\n], BlockStateHeader.prototype, \"timestamp\", void 0);\n__decorate([\n Struct.field('name')\n], BlockStateHeader.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], BlockStateHeader.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field(BlockId)\n], BlockStateHeader.prototype, \"previous\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field('checksum256')\n], BlockStateHeader.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], BlockStateHeader.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(HeaderExtension$1, { array: true, optional: true })\n], BlockStateHeader.prototype, \"header_extensions\", void 0);\n__decorate([\n Struct.field('signature')\n], BlockStateHeader.prototype, \"producer_signature\", void 0);\nBlockStateHeader = __decorate([\n Struct.type('block_state_header')\n], BlockStateHeader);\nlet GetBlockHeaderStateResponse = class GetBlockHeaderStateResponse extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"dpos_proposed_irreversible_blocknum\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetBlockHeaderStateResponse.prototype, \"dpos_irreversible_blocknum\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetBlockHeaderStateResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field(BlockStateHeader)\n], GetBlockHeaderStateResponse.prototype, \"header\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"active_schedule\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"blockroot_merkle\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"producer_to_last_produced\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"producer_to_last_implied_irb\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"valid_block_signing_authority\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"confirm_count\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"pending_schedule\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"activated_protocol_features\", void 0);\n__decorate([\n Struct.field('any')\n], GetBlockHeaderStateResponse.prototype, \"additional_signatures\", void 0);\nGetBlockHeaderStateResponse = __decorate([\n Struct.type('get_block_header_state_response')\n], GetBlockHeaderStateResponse);\nlet GetInfoResponse = class GetInfoResponse extends Struct {\n getTransactionHeader(secondsAhead = 120) {\n const expiration = TimePointSec.fromMilliseconds(this.head_block_time.toMilliseconds() + secondsAhead * 1000);\n const id = this.last_irreversible_block_id;\n const prefixArray = id.array.subarray(8, 12);\n const prefix = new Uint32Array(prefixArray.buffer, prefixArray.byteOffset, 1)[0];\n return TransactionHeader.from({\n expiration,\n ref_block_num: Number(this.last_irreversible_block_num) & 0xffff,\n ref_block_prefix: prefix,\n });\n }\n};\n__decorate([\n Struct.field('string')\n], GetInfoResponse.prototype, \"server_version\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetInfoResponse.prototype, \"chain_id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetInfoResponse.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetInfoResponse.prototype, \"last_irreversible_block_num\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetInfoResponse.prototype, \"last_irreversible_block_id\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetInfoResponse.prototype, \"head_block_id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetInfoResponse.prototype, \"head_block_time\", void 0);\n__decorate([\n Struct.field('name')\n], GetInfoResponse.prototype, \"head_block_producer\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"virtual_block_cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"virtual_block_net_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"block_cpu_limit\", void 0);\n__decorate([\n Struct.field('uint64')\n], GetInfoResponse.prototype, \"block_net_limit\", void 0);\n__decorate([\n Struct.field('string?')\n], GetInfoResponse.prototype, \"server_version_string\", void 0);\n__decorate([\n Struct.field('uint32?')\n], GetInfoResponse.prototype, \"fork_db_head_block_num\", void 0);\n__decorate([\n Struct.field('block_id_type?')\n], GetInfoResponse.prototype, \"fork_db_head_block_id\", void 0);\nGetInfoResponse = __decorate([\n Struct.type('get_info_response')\n], GetInfoResponse);\nlet GetTableByScopeResponseRow = class GetTableByScopeResponseRow extends Struct {\n};\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"code\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"scope\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"table\", void 0);\n__decorate([\n Struct.field('name')\n], GetTableByScopeResponseRow.prototype, \"payer\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTableByScopeResponseRow.prototype, \"count\", void 0);\nGetTableByScopeResponseRow = __decorate([\n Struct.type('get_table_by_scope_response_row')\n], GetTableByScopeResponseRow);\nlet GetTableByScopeResponse = class GetTableByScopeResponse extends Struct {\n};\n__decorate([\n Struct.field(GetTableByScopeResponseRow, { array: true })\n], GetTableByScopeResponse.prototype, \"rows\", void 0);\n__decorate([\n Struct.field('string')\n], GetTableByScopeResponse.prototype, \"more\", void 0);\nGetTableByScopeResponse = __decorate([\n Struct.type('get_table_by_scope_response')\n], GetTableByScopeResponse);\nlet OrderedActionsResult = class OrderedActionsResult extends Struct {\n};\n__decorate([\n Struct.field(UInt64)\n], OrderedActionsResult.prototype, \"global_action_seq\", void 0);\n__decorate([\n Struct.field(Int64)\n], OrderedActionsResult.prototype, \"account_action_seq\", void 0);\n__decorate([\n Struct.field(UInt32)\n], OrderedActionsResult.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field(BlockTimestamp)\n], OrderedActionsResult.prototype, \"block_time\", void 0);\n__decorate([\n Struct.field('any')\n], OrderedActionsResult.prototype, \"action_trace\", void 0);\n__decorate([\n Struct.field('boolean?')\n], OrderedActionsResult.prototype, \"irrevirsible\", void 0);\nOrderedActionsResult = __decorate([\n Struct.type('ordered_action_result')\n], OrderedActionsResult);\nlet GetActionsResponse = class GetActionsResponse extends Struct {\n};\n__decorate([\n Struct.field(OrderedActionsResult, { array: true })\n], GetActionsResponse.prototype, \"actions\", void 0);\n__decorate([\n Struct.field(Int32)\n], GetActionsResponse.prototype, \"last_irreversible_block\", void 0);\n__decorate([\n Struct.field(Int32)\n], GetActionsResponse.prototype, \"head_block_num\", void 0);\n__decorate([\n Struct.field('boolean?')\n], GetActionsResponse.prototype, \"time_limit_exceeded_error\", void 0);\nGetActionsResponse = __decorate([\n Struct.type('get_actions_response')\n], GetActionsResponse);\nlet TransactionTrace = class TransactionTrace extends Struct {\n};\nTransactionTrace = __decorate([\n Struct.type('transaction_trace')\n], TransactionTrace);\nlet Trx = class Trx extends Struct {\n};\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"actions\", void 0);\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"context_free_actions\", void 0);\n__decorate([\n Struct.field('any')\n], Trx.prototype, \"context_free_data\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"delay_sec\", void 0);\n__decorate([\n Struct.field('string')\n], Trx.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"max_cpu_usage_ms\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"max_net_usage_words\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"ref_block_num\", void 0);\n__decorate([\n Struct.field('number')\n], Trx.prototype, \"ref_block_prefix\", void 0);\n__decorate([\n Struct.field('string', { array: true })\n], Trx.prototype, \"signatures\", void 0);\nTrx = __decorate([\n Struct.type('trx')\n], Trx);\nlet TransactionInfo = class TransactionInfo extends Struct {\n};\n__decorate([\n Struct.field(TransactionReceipt)\n], TransactionInfo.prototype, \"receipt\", void 0);\n__decorate([\n Struct.field('trx')\n], TransactionInfo.prototype, \"trx\", void 0);\nTransactionInfo = __decorate([\n Struct.type('transaction_info')\n], TransactionInfo);\nlet GetTransactionResponse = class GetTransactionResponse extends Struct {\n};\n__decorate([\n Struct.field(Checksum256)\n], GetTransactionResponse.prototype, \"id\", void 0);\n__decorate([\n Struct.field(UInt32)\n], GetTransactionResponse.prototype, \"block_num\", void 0);\n__decorate([\n Struct.field(BlockTimestamp)\n], GetTransactionResponse.prototype, \"block_time\", void 0);\n__decorate([\n Struct.field(UInt32)\n], GetTransactionResponse.prototype, \"last_irreversible_block\", void 0);\n__decorate([\n Struct.field('any?')\n], GetTransactionResponse.prototype, \"traces\", void 0);\n__decorate([\n Struct.field('any')\n], GetTransactionResponse.prototype, \"trx\", void 0);\nGetTransactionResponse = __decorate([\n Struct.type('get_transaction_response')\n], GetTransactionResponse);\nlet GetKeyAccountsResponse = class GetKeyAccountsResponse extends Struct {\n};\n__decorate([\n Struct.field('name', { array: true })\n], GetKeyAccountsResponse.prototype, \"account_names\", void 0);\nGetKeyAccountsResponse = __decorate([\n Struct.type('get_key_accounts_response')\n], GetKeyAccountsResponse);\nlet GetCodeResponse = class GetCodeResponse extends Struct {\n};\n__decorate([\n Struct.field(ABI)\n], GetCodeResponse.prototype, \"abi\", void 0);\n__decorate([\n Struct.field('name')\n], GetCodeResponse.prototype, \"account_name\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GetCodeResponse.prototype, \"code_hash\", void 0);\n__decorate([\n Struct.field('string')\n], GetCodeResponse.prototype, \"wast\", void 0);\n__decorate([\n Struct.field('string')\n], GetCodeResponse.prototype, \"wasm\", void 0);\nGetCodeResponse = __decorate([\n Struct.type('get_code_response')\n], GetCodeResponse);\nlet GetControlledAccountsResponse = class GetControlledAccountsResponse extends Struct {\n};\n__decorate([\n Struct.field('name', { array: true })\n], GetControlledAccountsResponse.prototype, \"controlled_accounts\", void 0);\nGetControlledAccountsResponse = __decorate([\n Struct.type('get_controlled_accounts_response')\n], GetControlledAccountsResponse);\nlet GetCurrencyStatsItemResponse = class GetCurrencyStatsItemResponse extends Struct {\n};\n__decorate([\n Struct.field('asset')\n], GetCurrencyStatsItemResponse.prototype, \"supply\", void 0);\n__decorate([\n Struct.field('asset')\n], GetCurrencyStatsItemResponse.prototype, \"max_supply\", void 0);\n__decorate([\n Struct.field('name')\n], GetCurrencyStatsItemResponse.prototype, \"issuer\", void 0);\nGetCurrencyStatsItemResponse = __decorate([\n Struct.type('get_currency_stats_item_response')\n], GetCurrencyStatsItemResponse);\nlet GetTransactionStatusResponse = class GetTransactionStatusResponse extends Struct {\n};\n__decorate([\n Struct.field('string')\n], GetTransactionStatusResponse.prototype, \"state\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTransactionStatusResponse.prototype, \"head_number\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetTransactionStatusResponse.prototype, \"head_id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetTransactionStatusResponse.prototype, \"head_timestamp\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTransactionStatusResponse.prototype, \"irreversible_number\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetTransactionStatusResponse.prototype, \"irreversible_id\", void 0);\n__decorate([\n Struct.field('time_point')\n], GetTransactionStatusResponse.prototype, \"irreversible_timestamp\", void 0);\n__decorate([\n Struct.field(BlockId)\n], GetTransactionStatusResponse.prototype, \"earliest_tracked_block_id\", void 0);\n__decorate([\n Struct.field('uint32')\n], GetTransactionStatusResponse.prototype, \"earliest_tracked_block_number\", void 0);\nGetTransactionStatusResponse = __decorate([\n Struct.type('get_transaction_status_response')\n], GetTransactionStatusResponse);\nlet ProducerAuthority = class ProducerAuthority extends Struct {\n};\n__decorate([\n Struct.field(UInt32)\n], ProducerAuthority.prototype, \"threshold\", void 0);\n__decorate([\n Struct.field(KeyWeight, { array: true })\n], ProducerAuthority.prototype, \"keys\", void 0);\nProducerAuthority = __decorate([\n Struct.type('producer_authority')\n], ProducerAuthority);\nlet Producer = class Producer extends Struct {\n static from(data) {\n return super.from({\n ...data,\n authority: [data.authority[0], ProducerAuthority.from(data.authority[1])],\n });\n }\n};\n__decorate([\n Struct.field('name')\n], Producer.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('any', { array: true })\n], Producer.prototype, \"authority\", void 0);\nProducer = __decorate([\n Struct.type('producer')\n], Producer);\nlet ProducerSchedule = class ProducerSchedule extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], ProducerSchedule.prototype, \"version\", void 0);\n__decorate([\n Struct.field(Producer, { array: true })\n], ProducerSchedule.prototype, \"producers\", void 0);\nProducerSchedule = __decorate([\n Struct.type('producer_schedule')\n], ProducerSchedule);\nlet GetProducerScheduleResponse = class GetProducerScheduleResponse extends Struct {\n};\n__decorate([\n Struct.field(ProducerSchedule, { optional: true })\n], GetProducerScheduleResponse.prototype, \"active\", void 0);\n__decorate([\n Struct.field(ProducerSchedule, { optional: true })\n], GetProducerScheduleResponse.prototype, \"pending\", void 0);\n__decorate([\n Struct.field(ProducerSchedule, { optional: true })\n], GetProducerScheduleResponse.prototype, \"proposed\", void 0);\nGetProducerScheduleResponse = __decorate([\n Struct.type('get_producer_schedule_response')\n], GetProducerScheduleResponse);\nlet ProtocolFeature = class ProtocolFeature extends Struct {\n};\n__decorate([\n Struct.field('checksum256')\n], ProtocolFeature.prototype, \"feature_digest\", void 0);\n__decorate([\n Struct.field('uint32')\n], ProtocolFeature.prototype, \"activation_ordinal\", void 0);\n__decorate([\n Struct.field('uint32')\n], ProtocolFeature.prototype, \"activation_block_num\", void 0);\n__decorate([\n Struct.field('checksum256')\n], ProtocolFeature.prototype, \"description_digest\", void 0);\n__decorate([\n Struct.field('string', { array: true })\n], ProtocolFeature.prototype, \"dependencies\", void 0);\n__decorate([\n Struct.field('string')\n], ProtocolFeature.prototype, \"protocol_feature_type\", void 0);\n__decorate([\n Struct.field('any', { array: true })\n], ProtocolFeature.prototype, \"specification\", void 0);\nProtocolFeature = __decorate([\n Struct.type('protocol_feature')\n], ProtocolFeature);\nlet GetProtocolFeaturesResponse = class GetProtocolFeaturesResponse extends Struct {\n};\n__decorate([\n Struct.field(ProtocolFeature, { array: true })\n], GetProtocolFeaturesResponse.prototype, \"activated_protocol_features\", void 0);\n__decorate([\n Struct.field('uint32', { optional: true })\n], GetProtocolFeaturesResponse.prototype, \"more\", void 0);\nGetProtocolFeaturesResponse = __decorate([\n Struct.type('get_protocol_features_response')\n], GetProtocolFeaturesResponse);\n\nvar types$2 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get AccountByAuthorizersRow () { return AccountByAuthorizersRow; },\n get AccountLinkedAction () { return AccountLinkedAction; },\n get AccountObject () { return AccountObject; },\n get AccountPermission () { return AccountPermission; },\n get AccountRefundRequest () { return AccountRefundRequest; },\n get AccountResourceLimit () { return AccountResourceLimit; },\n get AccountRexInfo () { return AccountRexInfo; },\n get AccountRexInfoMaturities () { return AccountRexInfoMaturities; },\n get AccountSelfDelegatedBandwidth () { return AccountSelfDelegatedBandwidth; },\n get AccountTotalResources () { return AccountTotalResources; },\n get AccountVoterInfo () { return AccountVoterInfo; },\n get AccountsByAuthorizers () { return AccountsByAuthorizers; },\n get ActiveSchedule () { return ActiveSchedule; },\n get ActiveScheduleProducer () { return ActiveScheduleProducer; },\n get ActiveScheduleProducerAuthority () { return ActiveScheduleProducerAuthority; },\n get BlockExtension () { return BlockExtension$1; },\n get BlockStateHeader () { return BlockStateHeader; },\n get GetActionsResponse () { return GetActionsResponse; },\n get GetBlockHeaderStateResponse () { return GetBlockHeaderStateResponse; },\n get GetBlockInfoResponse () { return GetBlockInfoResponse; },\n get GetBlockResponse () { return GetBlockResponse; },\n get GetBlockResponseTransactionReceipt () { return GetBlockResponseTransactionReceipt; },\n get GetCodeResponse () { return GetCodeResponse; },\n get GetControlledAccountsResponse () { return GetControlledAccountsResponse; },\n get GetCurrencyStatsItemResponse () { return GetCurrencyStatsItemResponse; },\n get GetInfoResponse () { return GetInfoResponse; },\n get GetKeyAccountsResponse () { return GetKeyAccountsResponse; },\n get GetProducerScheduleResponse () { return GetProducerScheduleResponse; },\n get GetProtocolFeaturesResponse () { return GetProtocolFeaturesResponse; },\n get GetRawAbiResponse () { return GetRawAbiResponse; },\n get GetTableByScopeResponse () { return GetTableByScopeResponse; },\n get GetTableByScopeResponseRow () { return GetTableByScopeResponseRow; },\n get GetTransactionResponse () { return GetTransactionResponse; },\n get GetTransactionStatusResponse () { return GetTransactionStatusResponse; },\n get HeaderExtension () { return HeaderExtension$1; },\n get NewProducers () { return NewProducers$1; },\n get NewProducersEntry () { return NewProducersEntry$1; },\n get OrderedActionsResult () { return OrderedActionsResult; },\n get Producer () { return Producer; },\n get ProducerAuthority () { return ProducerAuthority; },\n get ProducerSchedule () { return ProducerSchedule; },\n get ProtocolFeature () { return ProtocolFeature; },\n get TransactionInfo () { return TransactionInfo; },\n get TransactionTrace () { return TransactionTrace; },\n get Trx () { return Trx; },\n TrxVariant: TrxVariant$1\n});\n\nclass ChainAPI {\n constructor(client) {\n this.client = client;\n }\n async get_abi(accountName) {\n return this.client.call({\n path: '/v1/chain/get_abi',\n params: { account_name: Name.from(accountName) },\n });\n }\n async get_code(accountName) {\n return this.client.call({\n path: '/v1/chain/get_code',\n params: { account_name: Name.from(accountName) },\n responseType: GetCodeResponse,\n });\n }\n async get_raw_abi(accountName) {\n return this.client.call({\n path: '/v1/chain/get_raw_abi',\n params: { account_name: Name.from(accountName) },\n responseType: GetRawAbiResponse,\n });\n }\n async get_account(accountName, responseType = AccountObject) {\n return this.client.call({\n path: '/v1/chain/get_account',\n params: { account_name: Name.from(accountName) },\n responseType: responseType,\n });\n }\n async get_accounts_by_authorizers(params) {\n return this.client.call({\n path: '/v1/chain/get_accounts_by_authorizers',\n params,\n responseType: AccountsByAuthorizers,\n });\n }\n async get_activated_protocol_features(params) {\n return this.client.call({\n path: '/v1/chain/get_activated_protocol_features',\n params,\n responseType: GetProtocolFeaturesResponse,\n });\n }\n async get_block(block_num_or_id) {\n return this.client.call({\n path: '/v1/chain/get_block',\n params: { block_num_or_id },\n responseType: GetBlockResponse,\n });\n }\n async get_block_header_state(block_num_or_id) {\n return this.client.call({\n path: '/v1/chain/get_block_header_state',\n params: { block_num_or_id },\n responseType: GetBlockHeaderStateResponse,\n });\n }\n async get_block_info(block_num) {\n return this.client.call({\n path: '/v1/chain/get_block_info',\n params: { block_num },\n responseType: GetBlockInfoResponse,\n });\n }\n async get_currency_balance(contract, accountName, symbol) {\n const params = {\n account: Name.from(accountName),\n code: Name.from(contract),\n };\n if (symbol) {\n params.symbol = symbol;\n }\n return this.client.call({\n path: '/v1/chain/get_currency_balance',\n params,\n responseType: 'asset[]',\n });\n }\n async get_currency_stats(contract, symbol) {\n const params = {\n code: Name.from(contract),\n symbol,\n };\n const response = await this.client.call({\n path: '/v1/chain/get_currency_stats',\n params,\n });\n const result = {};\n Object.keys(response).forEach((r) => (result[r] = GetCurrencyStatsItemResponse.from(response[r])));\n return result;\n }\n async get_info() {\n return this.client.call({\n path: '/v1/chain/get_info',\n responseType: GetInfoResponse,\n method: 'GET',\n });\n }\n async get_producer_schedule() {\n return this.client.call({\n path: '/v1/chain/get_producer_schedule',\n responseType: GetProducerScheduleResponse,\n });\n }\n async compute_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/compute_transaction',\n params: {\n transaction: tx,\n },\n });\n }\n async send_read_only_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/send_read_only_transaction',\n params: {\n transaction: tx,\n },\n });\n }\n async push_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/push_transaction',\n params: tx,\n });\n }\n async send_transaction(tx) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/send_transaction',\n params: tx,\n });\n }\n async send_transaction2(tx, options) {\n if (!isInstanceOf(tx, PackedTransaction)) {\n tx = PackedTransaction.fromSigned(SignedTransaction.from(tx));\n }\n return this.client.call({\n path: '/v1/chain/send_transaction2',\n params: {\n return_failure_trace: true,\n retry_trx: false,\n retry_trx_num_blocks: 0,\n transaction: tx,\n ...options,\n },\n });\n }\n async get_table_rows(params) {\n const type = params.type;\n let key_type = params.key_type;\n const someBound = params.lower_bound || params.upper_bound;\n if (!key_type && someBound) {\n // determine key type from bounds type\n if (isInstanceOf(someBound, UInt64)) {\n key_type = 'i64';\n }\n else if (isInstanceOf(someBound, UInt128)) {\n key_type = 'i128';\n }\n else if (isInstanceOf(someBound, Checksum256)) {\n key_type = 'sha256';\n }\n else if (isInstanceOf(someBound, Checksum160)) {\n key_type = 'ripemd160';\n }\n }\n if (!key_type) {\n key_type = 'name';\n }\n let json = params.json;\n if (json === undefined) {\n // if we know the row type don't ask the node to perform abi decoding\n json = type === undefined;\n }\n let upper_bound = params.upper_bound;\n if (upper_bound && typeof upper_bound !== 'string') {\n upper_bound = String(upper_bound);\n }\n let lower_bound = params.lower_bound;\n if (lower_bound && typeof lower_bound !== 'string') {\n lower_bound = String(lower_bound);\n }\n let scope = params.scope;\n if (typeof scope === 'undefined') {\n scope = String(Name.from(params.code));\n }\n else if (typeof scope !== 'string') {\n scope = String(scope);\n }\n // eslint-disable-next-line prefer-const\n let { rows, more, next_key } = await this.client.call({\n path: '/v1/chain/get_table_rows',\n params: {\n ...params,\n code: Name.from(params.code),\n table: Name.from(params.table),\n limit: params.limit !== undefined ? UInt32.from(params.limit) : undefined,\n scope,\n key_type,\n json,\n upper_bound,\n lower_bound,\n },\n });\n let ram_payers;\n if (params.show_payer) {\n ram_payers = [];\n rows = rows.map(({ data, payer }) => {\n ram_payers.push(Name.from(payer));\n return data;\n });\n }\n if (type) {\n if (json) {\n rows = rows.map((value) => {\n if (typeof value === 'string' && Bytes.isBytes(value)) {\n // this handles the case where nodeos bails on abi decoding and just returns a hex string\n return Serializer.decode({ data: Bytes.from(value), type });\n }\n else {\n return Serializer.decode({ object: value, type });\n }\n });\n }\n else {\n rows = rows\n .map((hex) => Bytes.from(hex))\n .map((data) => Serializer.decode({ data, type }));\n }\n }\n if (next_key && next_key.length > 0) {\n let indexType;\n // set index type so we can decode next_key in the response if present\n switch (key_type) {\n case 'i64':\n indexType = UInt64;\n break;\n case 'i128':\n indexType = UInt128;\n break;\n case 'name':\n indexType = Name;\n break;\n case 'float64':\n indexType = Float64;\n break;\n case 'float128':\n indexType = Float128;\n break;\n case 'sha256':\n indexType = Checksum256;\n break;\n case 'ripemd160':\n indexType = Checksum160;\n break;\n default:\n throw new Error(`Unsupported key type: ${key_type}`);\n }\n if (indexType === Name) {\n // names are sent back as an uint64 string instead of a name string..\n next_key = Name.from(Serializer.decode({ object: next_key, type: UInt64 }));\n }\n else {\n next_key = Serializer.decode({ object: next_key, type: indexType });\n }\n }\n else {\n next_key = undefined;\n }\n return { rows, more, next_key, ram_payers };\n }\n async get_table_by_scope(params) {\n return this.client.call({\n path: '/v1/chain/get_table_by_scope',\n params,\n responseType: GetTableByScopeResponse,\n });\n }\n async get_transaction_status(id) {\n return this.client.call({\n path: '/v1/chain/get_transaction_status',\n params: {\n id: Checksum256.from(id),\n },\n responseType: GetTransactionStatusResponse,\n });\n }\n}\n\nclass HistoryAPI {\n constructor(client) {\n this.client = client;\n }\n async get_actions(accountName, pos, offset) {\n return this.client.call({\n path: '/v1/history/get_actions',\n params: {\n account_name: Name.from(accountName),\n pos: Int32.from(pos),\n offset: Int32.from(offset),\n },\n responseType: GetActionsResponse,\n });\n }\n async get_transaction(id, options = {}) {\n return this.client.call({\n path: '/v1/history/get_transaction',\n params: {\n id: Checksum256.from(id),\n block_num_hint: options.blockNumHint && UInt32.from(options.blockNumHint),\n traces: options.excludeTraces === true ? false : undefined,\n },\n responseType: GetTransactionResponse,\n });\n }\n async get_key_accounts(publicKey) {\n return this.client.call({\n path: '/v1/history/get_key_accounts',\n params: { public_key: PublicKey.from(publicKey) },\n responseType: GetKeyAccountsResponse,\n });\n }\n async get_controlled_accounts(controllingAccount) {\n return this.client.call({\n path: '/v1/history/get_controlled_accounts',\n params: { controlling_account: Name.from(controllingAccount) },\n responseType: GetControlledAccountsResponse,\n });\n }\n}\n\nclass APIError extends Error {\n static formatError(error) {\n if (error.what === 'unspecified' &&\n error.details[0].file &&\n error.details[0].file === 'http_plugin.cpp' &&\n error.details[0].message.slice(0, 11) === 'unknown key') {\n // fix cryptic error messages from nodeos for missing accounts\n return 'Account not found';\n }\n else if (error.what === 'unspecified' && error.details && error.details.length > 0) {\n return error.details[0].message;\n }\n else if (error.what && error.what.length > 0) {\n return error.what;\n }\n else {\n return 'Unknown API error';\n }\n }\n constructor(path, response) {\n let message;\n if (response.json && response.json.error) {\n message = `${APIError.formatError(response.json.error)} at ${path}`;\n }\n else {\n message = `HTTP ${response.status} at ${path}`;\n }\n super(message);\n this.path = path;\n this.response = response;\n }\n /** The nodeos error object. */\n get error() {\n const { json } = this.response;\n return (json ? json.error : undefined);\n }\n /** The nodeos error name, e.g. `tx_net_usage_exceeded` */\n get name() {\n const { error } = this;\n return error ? error.name : 'unspecified';\n }\n /** The nodeos error code, e.g. `3080002`. */\n get code() {\n const { error } = this;\n return error ? error.code : 0;\n }\n /** List of exceptions, if any. */\n get details() {\n const { error } = this;\n return error ? error.details : [];\n }\n}\nAPIError.__className = 'APIError';\nclass APIClient {\n constructor(options) {\n this.v1 = {\n chain: new ChainAPI(this),\n history: new HistoryAPI(this),\n };\n if (options.provider) {\n this.provider = options.provider;\n }\n else if (options.url) {\n this.provider = new FetchProvider(options.url, options);\n }\n else {\n throw new Error('Missing url or provider');\n }\n }\n async call(args) {\n const response = await this.provider.call(args);\n const { json } = response;\n if (Math.floor(response.status / 100) !== 2 || (json && typeof json.error === 'object')) {\n throw new APIError(args.path, response);\n }\n if (args.responseType) {\n return abiDecode({ type: args.responseType, object: response.json });\n }\n return response.json || response.text;\n }\n}\nAPIClient.__className = 'APIClient';\n\nvar types$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n v1: types$2\n});\n\nvar BlockHeader_1;\nlet HandshakeMessage = class HandshakeMessage extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], HandshakeMessage.prototype, \"networkVersion\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"chainId\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"nodeId\", void 0);\n__decorate([\n Struct.field('public_key')\n], HandshakeMessage.prototype, \"key\", void 0);\n__decorate([\n Struct.field('int64')\n], HandshakeMessage.prototype, \"time\", void 0);\n__decorate([\n Struct.field('checksum256')\n], HandshakeMessage.prototype, \"token\", void 0);\n__decorate([\n Struct.field('signature')\n], HandshakeMessage.prototype, \"sig\", void 0);\n__decorate([\n Struct.field('string')\n], HandshakeMessage.prototype, \"p2pAddress\", void 0);\n__decorate([\n Struct.field('uint32')\n], HandshakeMessage.prototype, \"lastIrreversibleBlockNumber\", void 0);\n__decorate([\n Struct.field(BlockId)\n], HandshakeMessage.prototype, \"lastIrreversibleBlockId\", void 0);\n__decorate([\n Struct.field('uint32')\n], HandshakeMessage.prototype, \"headNum\", void 0);\n__decorate([\n Struct.field(BlockId)\n], HandshakeMessage.prototype, \"headId\", void 0);\n__decorate([\n Struct.field('string')\n], HandshakeMessage.prototype, \"os\", void 0);\n__decorate([\n Struct.field('string')\n], HandshakeMessage.prototype, \"agent\", void 0);\n__decorate([\n Struct.field('int16')\n], HandshakeMessage.prototype, \"generation\", void 0);\nHandshakeMessage = __decorate([\n Struct.type('handshake_message')\n], HandshakeMessage);\nlet ChainSizeMessage = class ChainSizeMessage extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], ChainSizeMessage.prototype, \"lastIrreversibleBlockNumber\", void 0);\n__decorate([\n Struct.field(BlockId)\n], ChainSizeMessage.prototype, \"lastIrreversibleBlockId\", void 0);\n__decorate([\n Struct.field('uint32')\n], ChainSizeMessage.prototype, \"headNum\", void 0);\n__decorate([\n Struct.field(BlockId)\n], ChainSizeMessage.prototype, \"headId\", void 0);\nChainSizeMessage = __decorate([\n Struct.type('chain_size_message')\n], ChainSizeMessage);\nlet GoAwayMessage = class GoAwayMessage extends Struct {\n};\n__decorate([\n Struct.field('uint8')\n], GoAwayMessage.prototype, \"reason\", void 0);\n__decorate([\n Struct.field('checksum256')\n], GoAwayMessage.prototype, \"nodeId\", void 0);\nGoAwayMessage = __decorate([\n Struct.type('go_away_message')\n], GoAwayMessage);\nlet TimeMessage = class TimeMessage extends Struct {\n};\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"org\", void 0);\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"rec\", void 0);\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"xmt\", void 0);\n__decorate([\n Struct.field('int64')\n], TimeMessage.prototype, \"dst\", void 0);\nTimeMessage = __decorate([\n Struct.type('time_message')\n], TimeMessage);\nlet NoticeMessage = class NoticeMessage extends Struct {\n};\n__decorate([\n Struct.field('checksum256', { array: true })\n], NoticeMessage.prototype, \"knownTrx\", void 0);\n__decorate([\n Struct.field(BlockId, { array: true })\n], NoticeMessage.prototype, \"knownBlocks\", void 0);\nNoticeMessage = __decorate([\n Struct.type('notice_message')\n], NoticeMessage);\nlet RequestMessage = class RequestMessage extends Struct {\n};\n__decorate([\n Struct.field('checksum256', { array: true })\n], RequestMessage.prototype, \"reqTrx\", void 0);\n__decorate([\n Struct.field(BlockId, { array: true })\n], RequestMessage.prototype, \"reqBlocks\", void 0);\nRequestMessage = __decorate([\n Struct.type('request_message')\n], RequestMessage);\nlet SyncRequestMessage = class SyncRequestMessage extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], SyncRequestMessage.prototype, \"startBlock\", void 0);\n__decorate([\n Struct.field('uint32')\n], SyncRequestMessage.prototype, \"endBlock\", void 0);\nSyncRequestMessage = __decorate([\n Struct.type('sync_request_message')\n], SyncRequestMessage);\nlet NewProducersEntry = class NewProducersEntry extends Struct {\n};\n__decorate([\n Struct.field('name')\n], NewProducersEntry.prototype, \"producer_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], NewProducersEntry.prototype, \"block_signing_key\", void 0);\nNewProducersEntry = __decorate([\n Struct.type('new_producers_entry')\n], NewProducersEntry);\nlet NewProducers = class NewProducers extends Struct {\n};\n__decorate([\n Struct.field('uint32')\n], NewProducers.prototype, \"version\", void 0);\n__decorate([\n Struct.field(NewProducersEntry, { array: true })\n], NewProducers.prototype, \"producers\", void 0);\nNewProducers = __decorate([\n Struct.type('new_producers')\n], NewProducers);\nlet BlockExtension = class BlockExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], BlockExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], BlockExtension.prototype, \"data\", void 0);\nBlockExtension = __decorate([\n Struct.type('block_extension')\n], BlockExtension);\nlet HeaderExtension = class HeaderExtension extends Struct {\n};\n__decorate([\n Struct.field('uint16')\n], HeaderExtension.prototype, \"type\", void 0);\n__decorate([\n Struct.field('bytes')\n], HeaderExtension.prototype, \"data\", void 0);\nHeaderExtension = __decorate([\n Struct.type('header_extension')\n], HeaderExtension);\nlet TrxVariant = class TrxVariant extends Variant {\n};\nTrxVariant = __decorate([\n Variant.type('trx_variant', [Checksum256, PackedTransaction])\n], TrxVariant);\nlet FullTransactionReceipt = class FullTransactionReceipt extends Struct {\n};\n__decorate([\n Struct.field(UInt8)\n], FullTransactionReceipt.prototype, \"status\", void 0);\n__decorate([\n Struct.field(UInt32)\n], FullTransactionReceipt.prototype, \"cpu_usage_us\", void 0);\n__decorate([\n Struct.field(VarUInt)\n], FullTransactionReceipt.prototype, \"net_usage_words\", void 0);\n__decorate([\n Struct.field(TrxVariant)\n], FullTransactionReceipt.prototype, \"trx\", void 0);\nFullTransactionReceipt = __decorate([\n Struct.type('full_transaction_receipt')\n], FullTransactionReceipt);\nlet BlockHeader = BlockHeader_1 = class BlockHeader extends Struct {\n get blockNum() {\n return this.previous.blockNum.adding(1);\n }\n get id() {\n const id = Checksum256.hash(Serializer.encode({ object: this, type: BlockHeader_1 }));\n return BlockId.fromBlockChecksum(id, this.blockNum);\n }\n};\n__decorate([\n Struct.field('uint32')\n], BlockHeader.prototype, \"timeSlot\", void 0);\n__decorate([\n Struct.field('name')\n], BlockHeader.prototype, \"producer\", void 0);\n__decorate([\n Struct.field('uint16')\n], BlockHeader.prototype, \"confirmed\", void 0);\n__decorate([\n Struct.field(BlockId)\n], BlockHeader.prototype, \"previous\", void 0);\n__decorate([\n Struct.field(BlockId)\n], BlockHeader.prototype, \"transaction_mroot\", void 0);\n__decorate([\n Struct.field(BlockId)\n], BlockHeader.prototype, \"action_mroot\", void 0);\n__decorate([\n Struct.field('uint32')\n], BlockHeader.prototype, \"schedule_version\", void 0);\n__decorate([\n Struct.field(NewProducers, { optional: true })\n], BlockHeader.prototype, \"new_producers\", void 0);\n__decorate([\n Struct.field(HeaderExtension, { array: true })\n], BlockHeader.prototype, \"header_extensions\", void 0);\nBlockHeader = BlockHeader_1 = __decorate([\n Struct.type('block_header')\n], BlockHeader);\nlet SignedBlock = class SignedBlock extends BlockHeader {\n};\n__decorate([\n Struct.field('signature')\n], SignedBlock.prototype, \"producer_signature\", void 0);\n__decorate([\n Struct.field(FullTransactionReceipt, { array: true })\n], SignedBlock.prototype, \"transactions\", void 0);\n__decorate([\n Struct.field(BlockExtension, { array: true })\n], SignedBlock.prototype, \"block_extensions\", void 0);\nSignedBlock = __decorate([\n Struct.type('signed_block')\n], SignedBlock);\nlet NetMessage = class NetMessage extends Variant {\n};\nNetMessage = __decorate([\n Variant.type('net_message', [\n HandshakeMessage,\n ChainSizeMessage,\n GoAwayMessage,\n TimeMessage,\n NoticeMessage,\n RequestMessage,\n SyncRequestMessage,\n SignedBlock,\n PackedTransaction,\n ])\n], NetMessage);\n\nvar types = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get BlockExtension () { return BlockExtension; },\n get BlockHeader () { return BlockHeader; },\n get ChainSizeMessage () { return ChainSizeMessage; },\n get FullTransactionReceipt () { return FullTransactionReceipt; },\n get GoAwayMessage () { return GoAwayMessage; },\n get HandshakeMessage () { return HandshakeMessage; },\n get HeaderExtension () { return HeaderExtension; },\n get NetMessage () { return NetMessage; },\n get NewProducers () { return NewProducers; },\n get NewProducersEntry () { return NewProducersEntry; },\n get NoticeMessage () { return NoticeMessage; },\n get RequestMessage () { return RequestMessage; },\n get SignedBlock () { return SignedBlock; },\n get SyncRequestMessage () { return SyncRequestMessage; },\n get TimeMessage () { return TimeMessage; }\n});\n\nclass P2PClient {\n constructor(options) {\n if (options.provider) {\n this.provider = options.provider;\n }\n else {\n throw new Error('Missing provider');\n }\n if (options.setTimeoutImpl !== undefined) {\n this.setTimeoutImpl = options.setTimeoutImpl;\n }\n else {\n this.setTimeoutImpl = setTimeout;\n }\n if (options.heartbeatTimoutMs !== undefined) {\n this.heartbeatTimoutMs = options.heartbeatTimoutMs;\n this.resetHeartbeat();\n }\n this.provider.on('data', (data) => {\n this.handleData(data);\n });\n this.provider.on('error', (e) => {\n this.emit('error', [e]);\n });\n this.provider.on('close', () => {\n this.emit('close', []);\n });\n this.eventListeners = {};\n }\n send(message, done) {\n const wrappedMessage = NetMessage.from(message);\n const messageBuffer = Serializer.encode({ object: wrappedMessage });\n this.provider.write(messageBuffer.array, done);\n }\n end(cb) {\n this.endHeartbeat();\n this.provider.end(cb);\n }\n destroy(err) {\n this.endHeartbeat();\n this.provider.destroy(err);\n }\n handleData(data) {\n try {\n const message = Serializer.decode({ type: NetMessage, data });\n this.emit('message', [message]);\n }\n catch (e) {\n this.emit('error', [e]);\n }\n }\n endHeartbeat() {\n if (this.heartbeatTimoutId !== undefined) {\n clearTimeout(this.heartbeatTimoutId);\n this.heartbeatTimoutId = undefined;\n }\n }\n resetHeartbeat() {\n this.endHeartbeat();\n if (this.heartbeatTimoutMs !== undefined) {\n this.setTimeoutImpl(() => {\n this.handleHeartbeat();\n }, this.heartbeatTimoutMs);\n }\n }\n handleHeartbeat() {\n const now = Date.now();\n const timeMessage = TimeMessage.from({\n org: now,\n rec: 0,\n xmt: 0,\n dst: 0,\n });\n this.send(timeMessage, () => {\n this.resetHeartbeat();\n });\n }\n on(event, handler) {\n return this.addListenerInternal(event, handler, false, false);\n }\n once(event, handler) {\n return this.addListenerInternal(event, handler, true, false);\n }\n addListener(event, handler) {\n return this.addListenerInternal(event, handler, false, false);\n }\n prependListener(event, handler) {\n return this.addListenerInternal(event, handler, false, true);\n }\n removeListener(event, handler) {\n if (this.eventListeners[event] !== undefined) {\n this.eventListeners[event] = this.eventListeners[event].filter((e) => {\n return e.handler !== handler;\n });\n }\n return this;\n }\n addListenerInternal(event, handler, once, prepend) {\n if (this.eventListeners[event] === undefined) {\n this.eventListeners[event] = [];\n }\n if (!prepend) {\n this.eventListeners[event].push({ once, handler });\n }\n else {\n this.eventListeners[event].unshift({ once, handler });\n }\n return this;\n }\n emit(event, args) {\n if (this.eventListeners[event] === undefined) {\n return;\n }\n for (const { handler } of this.eventListeners[event]) {\n // typescript is loosing the specificity provided by T in the assignment above\n const erasedHandler = handler;\n erasedHandler(...args);\n }\n this.eventListeners[event] = this.eventListeners[event].filter((e) => {\n return e.once !== true;\n });\n }\n}\nP2PClient.__className = 'P2PClient';\n\nclass SimpleEnvelopeP2PProvider {\n constructor(nextProvider) {\n this.nextProvider = nextProvider;\n this.remainingData = new Uint8Array(0);\n this.dataHandlers = [];\n this.errorHandlers = [];\n // process nextProvider data\n this.nextProvider.on('data', (data) => {\n const newData = new Uint8Array(this.remainingData.byteLength + data.byteLength);\n newData.set(this.remainingData, 0);\n newData.set(data, this.remainingData.byteLength);\n this.remainingData = newData;\n while (this.remainingData.byteLength >= 4) {\n const view = new DataView(this.remainingData.buffer);\n const messageLength = view.getUint32(0, true);\n if (messageLength > SimpleEnvelopeP2PProvider.maxReadLength) {\n this.emitError(new Error('Incoming Message too long'));\n }\n if (this.remainingData.byteLength < 4 + messageLength) {\n // need more data\n break;\n }\n const messageBuffer = this.remainingData.subarray(4, 4 + messageLength);\n this.remainingData = this.remainingData.slice(4 + messageLength);\n this.emitData(messageBuffer);\n }\n });\n // proxy error\n this.nextProvider.on('error', (err) => {\n this.emitError(err);\n });\n }\n write(data, done) {\n const nextBuffer = new Uint8Array(4 + data.byteLength);\n const view = new DataView(nextBuffer.buffer);\n view.setUint32(0, data.byteLength, true);\n nextBuffer.set(data, 4);\n this.nextProvider.write(nextBuffer, done);\n }\n end(cb) {\n this.nextProvider.end(cb);\n }\n destroy(err) {\n this.nextProvider.destroy(err);\n }\n on(event, handler) {\n if (event === 'data') {\n this.dataHandlers.push(handler);\n }\n else if (event === 'error') {\n this.errorHandlers.push(handler);\n }\n else {\n this.nextProvider.on(event, handler);\n }\n return this;\n }\n emitData(messageBuffer) {\n for (const handler of this.dataHandlers) {\n // typescript is loosing the specificity provided by T in the assignment above\n handler(messageBuffer);\n }\n }\n emitError(err) {\n for (const handler of this.errorHandlers) {\n // typescript is loosing the specificity provided by T in the assignment above\n handler(err);\n }\n }\n}\nSimpleEnvelopeP2PProvider.maxReadLength = 8 * 1024 * 1024;\n\nexport { ABI, ABIDecoder, ABIEncoder, types$1 as API, APIClient, APIError, Action, Asset, Authority, Base58, Blob, BlockId, BlockTimestamp, Bytes, ChainAPI, Checksum160, Checksum256, Checksum512, CompressionType, ExtendedAsset, ExtendedSymbol, FetchProvider, Float128, Float32, Float64, HistoryAPI, Int, Int128, Int16, Int32, Int64, Int8, KeyType, KeyWeight, Name, types as P2P, P2PClient, PackedTransaction, PermissionLevel, PermissionLevelWeight, PrivateKey, PublicKey, Serializer, Signature, SignedTransaction, SimpleEnvelopeP2PProvider, Struct, TimePoint, TimePointSec, Transaction, TransactionExtension, TransactionHeader, TransactionReceipt, TypeAlias, UInt128, UInt16, UInt32, UInt64, UInt8, VarInt, VarUInt, Variant, WaitWeight, Weight, isInstanceOf };\n//# sourceMappingURL=antelope.m.js.map\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 if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\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","import { Struct, Checksum256, Name, Asset, API, Int64, Float64, TimePoint } from '@wharfkit/antelope';\n\nclass Canceled extends Error {\n constructor(reason, silent = false) {\n super(reason);\n this.silent = false;\n this.silent = silent;\n Object.setPrototypeOf(this, Canceled.prototype);\n }\n}\nfunction cancelable(promise, onCancel) {\n let cancel = null;\n const cancelable = new Promise((resolve, reject) => {\n cancel = (reason = '', silent = false) => {\n try {\n if (onCancel) {\n onCancel(new Canceled(reason, silent));\n }\n }\n catch (e) {\n reject(e);\n }\n return cancelable;\n };\n promise.then(resolve, reject);\n });\n if (cancel) {\n cancelable.cancel = cancel;\n }\n return cancelable;\n}\n\nfunction __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nlet ExplorerDefinition = class ExplorerDefinition extends Struct {\n url(id) {\n return `${this.prefix}${id}${this.suffix}`;\n }\n};\n__decorate([\n Struct.field('string')\n], ExplorerDefinition.prototype, \"prefix\", void 0);\n__decorate([\n Struct.field('string')\n], ExplorerDefinition.prototype, \"suffix\", void 0);\nExplorerDefinition = __decorate([\n Struct.type('explorer_definition')\n], ExplorerDefinition);\n\nvar Logo_1;\nlet Logo = Logo_1 = class Logo extends Struct {\n static from(data) {\n if (typeof data === 'string') {\n return new Logo_1({ light: data, dark: data });\n }\n return super.from(data);\n }\n getVariant(variant) {\n return this[variant];\n }\n toString() {\n return this.light;\n }\n};\n__decorate([\n Struct.field('string')\n], Logo.prototype, \"dark\", void 0);\n__decorate([\n Struct.field('string')\n], Logo.prototype, \"light\", void 0);\nLogo = Logo_1 = __decorate([\n Struct.type('logo')\n], Logo);\n\nlet TokenIdentifier = class TokenIdentifier extends Struct {\n};\n__decorate([\n Struct.field(Checksum256)\n], TokenIdentifier.prototype, \"chain\", void 0);\n__decorate([\n Struct.field(Name)\n], TokenIdentifier.prototype, \"contract\", void 0);\n__decorate([\n Struct.field(Asset.Symbol)\n], TokenIdentifier.prototype, \"symbol\", void 0);\nTokenIdentifier = __decorate([\n Struct.type('token_identifier')\n], TokenIdentifier);\nlet TokenMeta = class TokenMeta extends Struct {\n};\n__decorate([\n Struct.field(TokenIdentifier)\n], TokenMeta.prototype, \"id\", void 0);\n__decorate([\n Struct.field('string', { optional: true })\n], TokenMeta.prototype, \"logo\", void 0);\nTokenMeta = __decorate([\n Struct.type('token_meta')\n], TokenMeta);\nlet TokenBalance = class TokenBalance extends Struct {\n};\n__decorate([\n Struct.field(Asset)\n], TokenBalance.prototype, \"asset\", void 0);\n__decorate([\n Struct.field(Name)\n], TokenBalance.prototype, \"contract\", void 0);\n__decorate([\n Struct.field(TokenMeta)\n], TokenBalance.prototype, \"metadata\", void 0);\nTokenBalance = __decorate([\n Struct.type('token_balance')\n], TokenBalance);\n\nclass ChainDefinition {\n constructor(data) {\n this.id = Checksum256.from(data.id);\n this.url = data.url;\n this.logo = data.logo;\n this.explorer = data.explorer;\n this.accountDataType = data.accountDataType;\n this.coinType = data.coinType;\n if (data.systemTokenContract && data.systemTokenSymbol) {\n this.systemToken = TokenIdentifier.from({\n chain: this.id,\n contract: data.systemTokenContract,\n symbol: data.systemTokenSymbol,\n });\n }\n if (data.systemToken) {\n this.systemToken = data.systemToken;\n }\n }\n static from(data) {\n return new ChainDefinition({\n ...data,\n explorer: data.explorer ? ExplorerDefinition.from(data.explorer) : undefined,\n logo: data.logo ? Logo.from(data.logo) : undefined,\n });\n }\n get name() {\n const indice = chainIdsToIndices.get(String(this.id));\n if (!indice) {\n return 'Unknown blockchain';\n }\n return ChainNames[indice];\n }\n getLogo() {\n const id = String(this.id);\n if (this.logo) {\n return Logo.from(this.logo);\n }\n if (chainLogos.has(id)) {\n const logo = chainLogos.get(id);\n if (logo) {\n return Logo.from(logo);\n }\n }\n return undefined;\n }\n equals(def) {\n const other = ChainDefinition.from(def);\n return this.id.equals(other.id) && this.url === other.url;\n }\n}\nconst ChainNames = {\n EOS: 'EOS',\n FIO: 'FIO',\n FIOTestnet: 'FIO (Testnet)',\n Jungle4: 'Jungle 4 (Testnet)',\n KylinTestnet: 'Kylin (Testnet)',\n Libre: 'Libre',\n LibreTestnet: 'Libre (Testnet)',\n Proton: 'XPR Network',\n ProtonTestnet: 'XPR Network (Testnet)',\n Telos: 'Telos',\n TelosTestnet: 'Telos (Testnet)',\n UX: 'UX Network',\n WAX: 'WAX',\n WAXTestnet: 'WAX (Testnet)',\n XPR: 'XPR Network',\n XPRTestnet: 'XPR Network (Testnet)',\n};\nlet TelosAccountVoterInfo = class TelosAccountVoterInfo extends API.v1.AccountVoterInfo {\n};\n__decorate([\n Struct.field(Int64)\n], TelosAccountVoterInfo.prototype, \"last_stake\", void 0);\nTelosAccountVoterInfo = __decorate([\n Struct.type('telos_account_voter_info')\n], TelosAccountVoterInfo);\nlet TelosAccountObject = class TelosAccountObject extends API.v1.AccountObject {\n};\n__decorate([\n Struct.field(TelosAccountVoterInfo, { optional: true })\n], TelosAccountObject.prototype, \"voter_info\", void 0);\nTelosAccountObject = __decorate([\n Struct.type('telos_account_object')\n], TelosAccountObject);\nlet WAXAccountVoterInfo = class WAXAccountVoterInfo extends API.v1.AccountVoterInfo {\n};\n__decorate([\n Struct.field(Float64)\n], WAXAccountVoterInfo.prototype, \"unpaid_voteshare\", void 0);\n__decorate([\n Struct.field(TimePoint)\n], WAXAccountVoterInfo.prototype, \"unpaid_voteshare_last_updated\", void 0);\n__decorate([\n Struct.field(Float64)\n], WAXAccountVoterInfo.prototype, \"unpaid_voteshare_change_rate\", void 0);\n__decorate([\n Struct.field(TimePoint)\n], WAXAccountVoterInfo.prototype, \"last_claim_time\", void 0);\nWAXAccountVoterInfo = __decorate([\n Struct.type('wax_account_voter_info')\n], WAXAccountVoterInfo);\nlet WAXAccountObject = class WAXAccountObject extends API.v1.AccountObject {\n};\n__decorate([\n Struct.field(WAXAccountVoterInfo, { optional: true })\n], WAXAccountObject.prototype, \"voter_info\", void 0);\nWAXAccountObject = __decorate([\n Struct.type('wax_account_object')\n], WAXAccountObject);\nvar Chains;\n(function (Chains) {\n Chains.EOS = ChainDefinition.from({\n id: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',\n url: 'https://eos.greymass.com',\n coinType: 194,\n systemTokenSymbol: '4,EOS',\n systemTokenContract: 'eosio.token',\n });\n Chains.FIO = ChainDefinition.from({\n id: '21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c',\n url: 'https://fio.greymass.com',\n coinType: 235,\n systemTokenSymbol: '9,FIO',\n systemTokenContract: 'eosio.token',\n });\n Chains.FIOTestnet = ChainDefinition.from({\n id: 'b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e',\n url: 'https://fiotestnet.greymass.com',\n systemTokenSymbol: '9,FIO',\n systemTokenContract: 'fio.token',\n });\n Chains.Jungle4 = ChainDefinition.from({\n id: '73e4385a2708e6d7048834fbc1079f2fabb17b3c125b146af438971e90716c4d',\n url: 'https://jungle4.greymass.com',\n coinType: 194,\n systemTokenSymbol: '4,EOS',\n systemTokenContract: 'eosio.token',\n });\n Chains.KylinTestnet = ChainDefinition.from({\n id: '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191',\n url: 'https://kylintestnet.greymass.com',\n coinType: 194,\n systemTokenSymbol: '4,EOS',\n systemTokenContract: 'eosio.token',\n });\n Chains.Libre = ChainDefinition.from({\n id: '38b1d7815474d0c60683ecbea321d723e83f5da6ae5f1c1f9fecc69d9ba96465',\n url: 'https://libre.greymass.com',\n systemTokenSymbol: '4,LIBRE',\n systemTokenContract: 'eosio.token',\n });\n Chains.LibreTestnet = ChainDefinition.from({\n id: 'b64646740308df2ee06c6b72f34c0f7fa066d940e831f752db2006fcc2b78dee',\n url: 'https://libretestnet.greymass.com',\n systemTokenSymbol: '4,LIBRE',\n systemTokenContract: 'eosio.token',\n });\n Chains.Proton = ChainDefinition.from({\n id: '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0',\n url: 'https://proton.greymass.com',\n systemTokenSymbol: '4,XPR',\n systemTokenContract: 'eosio.token',\n });\n Chains.ProtonTestnet = ChainDefinition.from({\n id: '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd',\n url: 'https://proton-testnet.greymass.com',\n systemTokenSymbol: '4,XPR',\n systemTokenContract: 'eosio.token',\n });\n Chains.Telos = ChainDefinition.from({\n id: '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11',\n url: 'https://telos.greymass.com',\n accountDataType: TelosAccountObject,\n coinType: 977,\n systemTokenSymbol: '4,TLOS',\n systemTokenContract: 'eosio.token',\n });\n Chains.TelosTestnet = ChainDefinition.from({\n id: '1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f',\n url: 'https://telostestnet.greymass.com',\n accountDataType: TelosAccountObject,\n coinType: 977,\n systemTokenSymbol: '4,TLOS',\n systemTokenContract: 'eosio.token',\n });\n Chains.UX = ChainDefinition.from({\n id: '8fc6dce7942189f842170de953932b1f66693ad3788f766e777b6f9d22335c02',\n url: 'https://api.uxnetwork.io',\n systemTokenSymbol: '4,UTX',\n systemTokenContract: 'eosio.token',\n });\n Chains.WAX = ChainDefinition.from({\n id: '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4',\n url: 'https://wax.greymass.com',\n accountDataType: WAXAccountObject,\n coinType: 14001,\n systemTokenSymbol: '8,WAX',\n systemTokenContract: 'eosio.token',\n });\n Chains.WAXTestnet = ChainDefinition.from({\n id: 'f16b1833c747c43682f4386fca9cbb327929334a762755ebec17f6f23c9b8a12',\n url: 'https://waxtestnet.greymass.com',\n accountDataType: WAXAccountObject,\n coinType: 14001,\n systemTokenSymbol: '8,WAX',\n systemTokenContract: 'eosio.token',\n });\n Chains.XPR = ChainDefinition.from({\n id: '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0',\n url: 'https://proton.greymass.com',\n systemTokenSymbol: '4,XPR',\n systemTokenContract: 'eosio.token',\n });\n Chains.XPRTestnet = ChainDefinition.from({\n id: '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd',\n url: 'https://proton-testnet.greymass.com',\n systemTokenSymbol: '4,XPR',\n systemTokenContract: 'eosio.token',\n });\n})(Chains || (Chains = {}));\nconst chainIdsToIndices = new Map([\n ['aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906', 'EOS'],\n ['21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c', 'FIO'],\n ['b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e', 'FIOTestnet'],\n ['73e4385a2708e6d7048834fbc1079f2fabb17b3c125b146af438971e90716c4d', 'Jungle4'],\n ['5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191', 'KylinTestnet'],\n ['38b1d7815474d0c60683ecbea321d723e83f5da6ae5f1c1f9fecc69d9ba96465', 'Libre'],\n ['b64646740308df2ee06c6b72f34c0f7fa066d940e831f752db2006fcc2b78dee', 'LibreTestnet'],\n ['384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0', 'XPR'],\n ['71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd', 'XPRTestnet'],\n ['4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11', 'Telos'],\n ['1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f', 'TelosTestnet'],\n ['8fc6dce7942189f842170de953932b1f66693ad3788f766e777b6f9d22335c02', 'UX'],\n ['1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4', 'WAX'],\n ['f16b1833c747c43682f4386fca9cbb327929334a762755ebec17f6f23c9b8a12', 'WAXTestnet'],\n]);\nconst chainLogos = new Map([\n [\n 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',\n 'https://assets.wharfkit.com/chain/eos.png',\n ],\n [\n '21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c',\n 'https://assets.wharfkit.com/chain/fio.png',\n ],\n [\n 'b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e',\n 'https://assets.wharfkit.com/chain/fio.png',\n ],\n [\n '2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840',\n 'https://assets.wharfkit.com/chain/jungle.png',\n ],\n [\n '73e4385a2708e6d7048834fbc1079f2fabb17b3c125b146af438971e90716c4d',\n 'https://assets.wharfkit.com/chain/jungle.png',\n ],\n [\n '38b1d7815474d0c60683ecbea321d723e83f5da6ae5f1c1f9fecc69d9ba96465',\n 'https://assets.wharfkit.com/chain/libre.png',\n ],\n [\n 'b64646740308df2ee06c6b72f34c0f7fa066d940e831f752db2006fcc2b78dee',\n 'https://assets.wharfkit.com/chain/libre.png',\n ],\n [\n '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0',\n 'https://assets.wharfkit.com/chain/xprnetwork.png',\n ],\n [\n '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd',\n 'https://assets.wharfkit.com/chain/xprnetwork.png',\n ],\n [\n '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11',\n 'https://assets.wharfkit.com/chain/telos.png',\n ],\n [\n '1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f',\n 'https://assets.wharfkit.com/chain/telos.png',\n ],\n [\n '8fc6dce7942189f842170de953932b1f66693ad3788f766e777b6f9d22335c02',\n 'https://assets.wharfkit.com/chain/ux.png',\n ],\n [\n '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4',\n 'https://assets.wharfkit.com/chain/wax.png',\n ],\n [\n 'f16b1833c747c43682f4386fca9cbb327929334a762755ebec17f6f23c9b8a12',\n 'https://assets.wharfkit.com/chain/wax.png',\n ],\n]);\n\nexport { Canceled, ChainDefinition, ChainNames, Chains, ExplorerDefinition, Logo, TelosAccountObject, TelosAccountVoterInfo, TokenBalance, TokenIdentifier, TokenMeta, WAXAccountObject, WAXAccountVoterInfo, cancelable, chainIdsToIndices, chainLogos };\n//# sourceMappingURL=common.m.js.map\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 if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\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","\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED$1 = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN$1 = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1 = 3;\nconst MAX_MATCH$1 = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1 = 30;\n/* number of distance codes */\n\nconst BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Tracev((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n\n const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS$1; bits++) {\n code = (code + bl_count[bits - 1]) << 1;\n next_code[bits] = code;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES$1; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES$1; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES$1; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES$1; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let sx = 0; /* running index in sym_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.sym_next !== 0) {\n do {\n dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n lc = s.pending_buf[s.sym_buf + sx++];\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and sym_buf is ok: */\n //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n } while (sx < s.sym_next);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE$1;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"block list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* block_mask is the bit mask of block-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let block_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"block-listed\") bytes. */\n for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"allow-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS$1; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"block-listed\" or \"allow-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n bi_windup(s); /* align on byte boundary */\n put_short(s, stored_len);\n put_short(s, ~stored_len);\n if (stored_len) {\n s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n }\n s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN$1) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->sym_next / 3));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block$1(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) => {\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n return (s.sym_next === s.sym_end);\n};\n\nvar _tr_init_1 = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1 = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1,\n Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n Z_UNKNOWN,\n Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42; /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE = 57; /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE = 69; /* gzip extra block -> NAME_STATE */\nconst NAME_STATE = 73; /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE = 91; /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE = 103; /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE = 113; /* deflate -> FINISH_STATE */\nconst FINISH_STATE = 666; /* stream complete */\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = messages[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n let n, m;\n let p;\n let wsize = s.w_size;\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= wsize ? m - wsize : 0);\n } while (--n);\n n = wsize;\n//#ifndef FASTEST\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= wsize ? m - wsize : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32_1(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32_1(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let n, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n slide_hash(s);\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Smallest worthy block size when not flushing or finishing. By default\n * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n * large input and output buffers, the stored block size will be larger.\n */\n let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n /* Copy as many min_block or larger stored blocks directly to next_out as\n * possible. If flushing, copy the remaining available input to next_out as\n * stored blocks, if there is enough space.\n */\n let len, left, have, last = 0;\n let used = s.strm.avail_in;\n do {\n /* Set len to the maximum size block that we can copy directly with the\n * available input data and output space. Set left to how much of that\n * would be copied from what's left in the window.\n */\n len = 65535/* MAX_STORED */; /* maximum deflate stored block length */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n if (s.strm.avail_out < have) { /* need room for header */\n break;\n }\n /* maximum stored block length that will fit in avail_out: */\n have = s.strm.avail_out - have;\n left = s.strstart - s.block_start; /* bytes left in window */\n if (len > left + s.strm.avail_in) {\n len = left + s.strm.avail_in; /* limit len to the input */\n }\n if (len > have) {\n len = have; /* limit len to the output */\n }\n\n /* If the stored block would be less than min_block in length, or if\n * unable to copy all of the available input when flushing, then try\n * copying to the window and the pending buffer instead. Also don't\n * write an empty block when flushing -- deflate() does that.\n */\n if (len < min_block && ((len === 0 && flush !== Z_FINISH$3) ||\n flush === Z_NO_FLUSH$2 ||\n len !== left + s.strm.avail_in)) {\n break;\n }\n\n /* Make a dummy stored block in pending to get the header bytes,\n * including any pending bits. This also updates the debugging counts.\n */\n last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;\n _tr_stored_block(s, 0, 0, last);\n\n /* Replace the lengths in the dummy stored block with len. */\n s.pending_buf[s.pending - 4] = len;\n s.pending_buf[s.pending - 3] = len >> 8;\n s.pending_buf[s.pending - 2] = ~len;\n s.pending_buf[s.pending - 1] = ~len >> 8;\n\n /* Write the stored block header bytes. */\n flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n// /* Update debugging counts for the data about to be copied. */\n// s->compressed_len += len << 3;\n// s->bits_sent += len << 3;\n//#endif\n\n /* Copy uncompressed bytes from the window to next_out. */\n if (left) {\n if (left > len) {\n left = len;\n }\n //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n s.strm.next_out += left;\n s.strm.avail_out -= left;\n s.strm.total_out += left;\n s.block_start += left;\n len -= left;\n }\n\n /* Copy uncompressed bytes directly from next_in to next_out, updating\n * the check value.\n */\n if (len) {\n read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n s.strm.next_out += len;\n s.strm.avail_out -= len;\n s.strm.total_out += len;\n }\n } while (last === 0);\n\n /* Update the sliding window with the last s->w_size bytes of the copied\n * data, or append all of the copied data to the existing window if less\n * than s->w_size bytes were copied. Also update the number of bytes to\n * insert in the hash tables, in the event that deflateParams() switches to\n * a non-zero compression level.\n */\n used -= s.strm.avail_in; /* number of input bytes directly copied */\n if (used) {\n /* If any input was used, then no unused input remains in the window,\n * therefore s->block_start == s->strstart.\n */\n if (used >= s.w_size) { /* supplant the previous history */\n s.matches = 2; /* clear hash */\n //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n s.strstart = s.w_size;\n s.insert = s.strstart;\n }\n else {\n if (s.window_size - s.strstart <= used) {\n /* Slide the window down. */\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n s.strstart += used;\n s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n }\n s.block_start = s.strstart;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* If the last block was written to next_out, then done. */\n if (last) {\n return BS_FINISH_DONE;\n }\n\n /* If flushing and all input has been consumed, then done. */\n if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 &&\n s.strm.avail_in === 0 && s.strstart === s.block_start) {\n return BS_BLOCK_DONE;\n }\n\n /* Fill the window with any remaining input. */\n have = s.window_size - s.strstart;\n if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n /* Slide the window down. */\n s.block_start -= s.w_size;\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n have += s.w_size; /* more space now */\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n if (have > s.strm.avail_in) {\n have = s.strm.avail_in;\n }\n if (have) {\n read_buf(s.strm, s.window, s.strstart, have);\n s.strstart += have;\n s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* There was not enough avail_out to write a complete worthy or flushed\n * stored block to next_out. Write a stored block to pending instead, if we\n * have enough input for a worthy block, or if flushing and there is enough\n * room for the remaining input as a stored block in the pending buffer.\n */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n /* maximum stored block length that will fit in pending: */\n have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n min_block = have > s.w_size ? s.w_size : have;\n left = s.strstart - s.block_start;\n if (left >= min_block ||\n ((left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 &&\n s.strm.avail_in === 0 && left <= have)) {\n len = left > have ? have : left;\n last = flush === Z_FINISH$3 && s.strm.avail_in === 0 &&\n len === left ? 1 : 0;\n _tr_stored_block(s, s.block_start, len, last);\n s.block_start += len;\n flush_pending(s.strm);\n }\n\n /* We've done all we can with the available input and output. */\n return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH$2) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$3) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.sym_buf = 0; /* buffer for distances and literals/lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.sym_next = 0; /* running index in sym_buf */\n this.sym_end = 0; /* symbol table full when sym_next reaches this */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const s = strm.state;\n if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n s.status !== GZIP_STATE &&\n//#endif\n s.status !== EXTRA_STATE &&\n s.status !== NAME_STATE &&\n s.status !== COMMENT_STATE &&\n s.status !== HCRC_STATE &&\n s.status !== BUSY_STATE &&\n s.status !== FINISH_STATE)) {\n return 1;\n }\n return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status =\n//#ifdef GZIP\n s.wrap === 2 ? GZIP_STATE :\n//#endif\n s.wrap ? INIT_STATE : BUSY_STATE;\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = -2;\n _tr_init(s);\n return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK$3) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n return Z_STREAM_ERROR$2;\n }\n strm.state.gzhead = head;\n return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR$2;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION$1) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n return err(strm, Z_STREAM_ERROR$2);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n s.status = INIT_STATE; /* to pass state test in deflateReset() */\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n /* We overlay pending_buf and sym_buf. This works since the average size\n * for length/distance pairs over any compressed block is assured to be 31\n * bits or less.\n *\n * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n * possible fixed-codes length/distance pair is then 31 bits total.\n *\n * sym_buf starts one-fourth of the way into pending_buf. So there are\n * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n * in sym_buf is three bytes -- two for the distance and one for the\n * literal/length. As each symbol is consumed, the pointer to the next\n * sym_buf value to read moves forward three bytes. From that symbol, up to\n * 31 bits are written to pending_buf. The closest the written pending_buf\n * bits gets to the next sym_buf symbol to read is just before the last\n * code is written. At that time, 31*(n-2) bits have been written, just\n * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n * symbols are written.) The closest the writing gets to what is unread is\n * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n * can range from 128 to 32768.\n *\n * Therefore, at a minimum, there are 142 bits of space between what is\n * written and what is read in the overlain buffers, so the symbols cannot\n * be overwritten by the compressed data. That space is actually 139 bits,\n * due to the three-bit fixed-code block header.\n *\n * That covers the case where either Z_FIXED is specified, forcing fixed\n * codes, or when the use of fixed codes is chosen, because that choice\n * results in a smaller compressed block than dynamic codes. That latter\n * condition then assures that the above analysis also covers all dynamic\n * blocks. A dynamic-code block will only be chosen to be emitted if it has\n * fewer bits than a fixed-code block would for the same set of symbols.\n * Therefore its average symbol length is assured to be less than 31. So\n * the compressed data for a dynamic block also cannot overwrite the\n * symbols from which it is being constructed.\n */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->sym_buf = s->pending_buf + s->lit_bufsize;\n s.sym_buf = s.lit_bufsize;\n\n //s->sym_end = (s->lit_bufsize - 1) * 3;\n s.sym_end = (s.lit_bufsize - 1) * 3;\n /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\n/* ========================================================================= */\nconst deflate$2 = (strm, flush) => {\n\n if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (strm.avail_in !== 0 && !strm.input) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);\n }\n\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK$3;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH$3) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* Write the header */\n if (s.status === INIT_STATE && s.wrap === 0) {\n s.status = BUSY_STATE;\n }\n if (s.status === INIT_STATE) {\n /* zlib header */\n let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n//#ifdef GZIP\n if (s.status === GZIP_STATE) {\n /* gzip header */\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n while (s.pending + left > s.pending_buf_size) {\n let copy = s.pending_buf_size - s.pending;\n // zmemcpy(s.pending_buf + s.pending,\n // s.gzhead.extra + s.gzindex, copy);\n s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n s.pending = s.pending_buf_size;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex += copy;\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n left -= copy;\n }\n // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n // TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n let gzhead_extra = new Uint8Array(s.gzhead.extra);\n // zmemcpy(s->pending_buf + s->pending,\n // s->gzhead->extra + s->gzindex, left);\n s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n s.pending += left;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = NAME_STATE;\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = COMMENT_STATE;\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n }\n s.status = HCRC_STATE;\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n }\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK$3;\n }\n }\n//#endif\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n let bstate = s.level === 0 ? deflate_stored(s, flush) :\n s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush);\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK$3;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH$1) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK$3;\n }\n }\n }\n\n if (flush !== Z_FINISH$3) { return Z_OK$3; }\n if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR$2;\n }\n\n const status = strm.state.status;\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR$2;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR$2;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n this.options = common.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED$1,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = deflate_1$2.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n if (opt.header) {\n deflate_1$2.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK$2) {\n throw new Error(messages[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = deflate_1$2.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END$2) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = deflate_1$2.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK$2;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK$2) {\n this.result = common.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n const deflator = new Deflate$1(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 16209; /* got a data error -- remain here until reset */\nconst TYPE$1 = 16191; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE$1;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n// let shoextra; /* extra bits table to use */\n let match; /* use base and extra for symbol >= match */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES$1 || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES$1) {\n base = extra = work; /* dummy value--not used */\n match = 20;\n\n } else if (type === LENS$1) {\n base = lbase;\n extra = lext;\n match = 257;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n match = 0;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] + 1 < match) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] >= match) {\n here_op = extra[work[sym] - match];\n here_val = base[work[sym] - match];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR,\n Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 16180; /* i: waiting for magic header */\nconst FLAGS = 16181; /* i: waiting for method and flags (gzip) */\nconst TIME = 16182; /* i: waiting for modification time (gzip) */\nconst OS = 16183; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 16184; /* i: waiting for extra length (gzip) */\nconst EXTRA = 16185; /* i: waiting for extra bytes (gzip) */\nconst NAME = 16186; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 16187; /* i: waiting for end of comment (gzip) */\nconst HCRC = 16188; /* i: waiting for header crc (gzip) */\nconst DICTID = 16189; /* i: waiting for dictionary check value */\nconst DICT = 16190; /* waiting for inflateSetDictionary() call */\nconst TYPE = 16191; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 16192; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 16193; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 16194; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16195; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 16196; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 16197; /* i: waiting for code length code lengths */\nconst CODELENS = 16198; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 16199; /* i: same as LEN below, but only first time in */\nconst LEN = 16200; /* i: waiting for length/lit/eob code */\nconst LENEXT = 16201; /* i: waiting for length extra bits */\nconst DIST = 16202; /* i: waiting for distance code */\nconst DISTEXT = 16203; /* i: waiting for distance extra bits */\nconst MATCH = 16204; /* o: waiting for output space to copy string */\nconst LIT = 16205; /* o: waiting for output space to write literal */\nconst CHECK = 16206; /* i: waiting for 32-bit check value */\nconst LENGTH = 16207; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 16208; /* finished check, done -- remain here until reset */\nconst BAD = 16209; /* got a data error -- remain here until reset */\nconst MEM = 16210; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 16211; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip,\n bit 2 true to validate check value */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib), or\n -1 if raw or no header yet */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const state = strm.state;\n if (!state || state.strm !== strm ||\n state.mode < HEAD || state.mode > SYNC) {\n return 1;\n }\n return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.flags = -1;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 5;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.strm = strm;\n state.window = null/*Z_NULL*/;\n state.mode = HEAD; /* to pass state test in inflateReset2() */\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (inflateStateCheck(strm) || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n if (state.wbits === 0) {\n state.wbits = 15;\n }\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n if (len > 15 || len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n state.flags = 0; /* indicate zlib header */\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32_1(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inffast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check =\n /*UPDATE_CHECK(state.check, put - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR$1;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (inflateStateCheck(strm)) {\n return Z_STREAM_ERROR$1;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32_1(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR$1;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n this.options = common.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = inflate_1$2.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n\n this.header = new gzheader();\n\n inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(messages[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate_1$2.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = inflate_1$2.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n inflate_1$2.inflateReset(strm);\n status = inflate_1$2.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = inflate_1$2.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = common.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n const inflator = new Inflate$1(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n","//function add {\nfunction add(number1, number2) {\n var _a;\n if (number2 === void 0) { number2 = \"0\"; }\n var neg = 0, ind = -1;\n //check for negatives\n if (number1[0] == \"-\") {\n number1 = number1.substring(1);\n if (!testZero(number1)) {\n neg++;\n ind = 1;\n number1.length;\n }\n }\n if (number2[0] == \"-\") {\n number2 = number2.substring(1);\n if (!testZero(number2)) {\n neg++;\n ind = 2;\n number2.length;\n }\n }\n number1 = trim(number1);\n number2 = trim(number2);\n _a = pad(trim(number1), trim(number2)), number1 = _a[0], number2 = _a[1];\n if (neg == 1) {\n if (ind === 1)\n number1 = compliment(number1);\n else if (ind === 2)\n number2 = compliment(number2);\n }\n var res = addCore(number1, number2);\n if (!neg)\n return trim(res);\n else if (neg == 2)\n return \"-\" + trim(res);\n else {\n if (number1.length < res.length)\n return trim(res.substring(1));\n else\n return \"-\" + trim(compliment(res));\n }\n}\nfunction compliment(number) {\n if (testZero(number)) {\n return number;\n }\n var s = \"\", l = number.length, dec = number.split(\".\")[1], ld = dec ? dec.length : 0;\n for (var i = 0; i < l; i++) {\n if (number[i] >= \"0\" && number[i] <= \"9\")\n s += 9 - parseInt(number[i]);\n else\n s += number[i];\n }\n var one = ld > 0 ? \"0.\" + new Array(ld).join(\"0\") + \"1\" : \"1\";\n return addCore(s, one);\n}\nfunction trim(number) {\n var parts = number.split(\".\");\n if (!parts[0])\n parts[0] = \"0\";\n while (parts[0][0] == \"0\" && parts[0].length > 1)\n parts[0] = parts[0].substring(1);\n return parts[0] + (parts[1] ? \".\" + parts[1] : \"\");\n}\nfunction pad(number1, number2) {\n var parts1 = number1.split(\".\"), parts2 = number2.split(\".\");\n //pad integral part\n var length1 = parts1[0].length, length2 = parts2[0].length;\n if (length1 > length2) {\n parts2[0] =\n new Array(Math.abs(length1 - length2) + 1).join(\"0\") +\n (parts2[0] ? parts2[0] : \"\");\n }\n else {\n parts1[0] =\n new Array(Math.abs(length1 - length2) + 1).join(\"0\") +\n (parts1[0] ? parts1[0] : \"\");\n }\n //pad fractional part\n (length1 = parts1[1] ? parts1[1].length : 0),\n (length2 = parts2[1] ? parts2[1].length : 0);\n if (length1 || length2) {\n if (length1 > length2) {\n parts2[1] =\n (parts2[1] ? parts2[1] : \"\") +\n new Array(Math.abs(length1 - length2) + 1).join(\"0\");\n }\n else {\n parts1[1] =\n (parts1[1] ? parts1[1] : \"\") +\n new Array(Math.abs(length1 - length2) + 1).join(\"0\");\n }\n }\n number1 = parts1[0] + (parts1[1] ? \".\" + parts1[1] : \"\");\n number2 = parts2[0] + (parts2[1] ? \".\" + parts2[1] : \"\");\n return [number1, number2];\n}\nfunction addCore(number1, number2) {\n var _a;\n _a = pad(number1, number2), number1 = _a[0], number2 = _a[1];\n var sum = \"\", carry = 0;\n for (var i = number1.length - 1; i >= 0; i--) {\n if (number1[i] === \".\") {\n sum = \".\" + sum;\n continue;\n }\n var temp = parseInt(number1[i]) + parseInt(number2[i]) + carry;\n sum = (temp % 10) + sum;\n carry = Math.floor(temp / 10);\n }\n return carry ? carry.toString() + sum : sum;\n}\nfunction testZero(number) {\n return /^0[0]*[.]{0,1}[0]*$/.test(number);\n}\n\nfunction abs(n) {\n if (typeof n == \"number\" || typeof n == \"bigint\")\n n = n.toString();\n if (n[0] == \"-\")\n return n.substring(1);\n return n;\n}\n\nvar RoundingModes;\n(function (RoundingModes) {\n /**\n * Rounding mode to round towards positive infinity.\n */\n RoundingModes[RoundingModes[\"CEILING\"] = 0] = \"CEILING\";\n /**\n * Rounding mode to round towards zero.\n */\n RoundingModes[RoundingModes[\"DOWN\"] = 1] = \"DOWN\";\n /**\n * Rounding mode to round towards negative infinity.\n */\n RoundingModes[RoundingModes[\"FLOOR\"] = 2] = \"FLOOR\";\n /**\n * Rounding mode to round towards \"nearest neighbor\" unless both neighbors are equidistant,\n * in which case round down.\n */\n RoundingModes[RoundingModes[\"HALF_DOWN\"] = 3] = \"HALF_DOWN\";\n /**\n * Rounding mode to round towards the \"nearest neighbor\" unless both neighbors are equidistant,\n * in which case, round towards the even neighbor.\n */\n RoundingModes[RoundingModes[\"HALF_EVEN\"] = 4] = \"HALF_EVEN\";\n /**\n * Rounding mode to round towards \"nearest neighbor\" unless both neighbors are equidistant,\n * in which case round up.\n */\n RoundingModes[RoundingModes[\"HALF_UP\"] = 5] = \"HALF_UP\";\n /**\n * Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary.\n * UNIMPLEMENTED\n */\n RoundingModes[RoundingModes[\"UNNECESSARY\"] = 6] = \"UNNECESSARY\";\n /**\n * Rounding mode to round away from zero.\n */\n RoundingModes[RoundingModes[\"UP\"] = 7] = \"UP\";\n})(RoundingModes || (RoundingModes = {}));\n\n/**\n *\n * @param input the number to round\n * @param n precision\n * @param mode Rounding Mode\n */\nfunction roundOff(input, n, mode) {\n if (n === void 0) { n = 0; }\n if (mode === void 0) { mode = RoundingModes.HALF_EVEN; }\n if (mode === RoundingModes.UNNECESSARY) {\n throw new Error(\"UNNECESSARY Rounding Mode has not yet been implemented\");\n }\n if (typeof (input) == 'number' || typeof (input) == 'bigint')\n input = input.toString();\n var neg = false;\n if (input[0] === '-') {\n neg = true;\n input = input.substring(1);\n }\n var parts = input.split('.'), partInt = parts[0], partDec = parts[1];\n //handle case of -ve n: roundOff(12564,-2)=12600\n if (n < 0) {\n n = -n;\n if (partInt.length <= n)\n return '0';\n else {\n var prefix = partInt.substr(0, partInt.length - n);\n input = prefix + '.' + partInt.substr(partInt.length - n) + partDec;\n prefix = roundOff(input, 0, mode);\n return (neg ? '-' : '') + prefix + (new Array(n + 1).join('0'));\n }\n }\n // handle case when integer output is desired\n if (n == 0) {\n partInt.length;\n if (greaterThanFive(parts[1], partInt, neg, mode)) {\n partInt = increment(partInt);\n }\n return (neg && parseInt(partInt) ? '-' : '') + partInt;\n }\n // handle case when n>0\n if (!parts[1]) {\n return (neg ? '-' : '') + partInt + '.' + (new Array(n + 1).join('0'));\n }\n else if (parts[1].length < n) {\n return (neg ? '-' : '') + partInt + '.' + parts[1] + (new Array(n - parts[1].length + 1).join('0'));\n }\n partDec = parts[1].substring(0, n);\n var rem = parts[1].substring(n);\n if (rem && greaterThanFive(rem, partDec, neg, mode)) {\n partDec = increment(partDec);\n if (partDec.length > n) {\n return (neg ? '-' : '') + increment(partInt, parseInt(partDec[0])) + '.' + partDec.substring(1);\n }\n }\n return (neg && (parseInt(partInt) || parseInt(partDec)) ? '-' : '') + partInt + '.' + partDec;\n}\nfunction greaterThanFive(part, pre, neg, mode) {\n if (!part || part === new Array(part.length + 1).join('0'))\n return false;\n // #region UP, DOWN, CEILING, FLOOR \n if (mode === RoundingModes.DOWN || (!neg && mode === RoundingModes.FLOOR) ||\n (neg && mode === RoundingModes.CEILING))\n return false;\n if (mode === RoundingModes.UP || (neg && mode === RoundingModes.FLOOR) ||\n (!neg && mode === RoundingModes.CEILING))\n return true;\n // #endregion\n // case when part !== five\n var five = '5' + (new Array(part.length).join('0'));\n if (part > five)\n return true;\n else if (part < five)\n return false;\n // case when part === five\n switch (mode) {\n case RoundingModes.HALF_DOWN: return false;\n case RoundingModes.HALF_UP: return true;\n case RoundingModes.HALF_EVEN:\n default: return (parseInt(pre[pre.length - 1]) % 2 == 1);\n }\n}\nfunction increment(part, c) {\n if (c === void 0) { c = 0; }\n if (!c)\n c = 1;\n if (typeof (part) == 'number')\n part.toString();\n var l = part.length - 1, s = '';\n for (var i = l; i >= 0; i--) {\n var x = parseInt(part[i]) + c;\n if (x == 10) {\n c = 1;\n x = 0;\n }\n else {\n c = 0;\n }\n s += x;\n }\n if (c)\n s += c;\n return s.split('').reverse().join('');\n}\n\n/*\n* Removes zero from front and back*/\nfunction stripTrailingZero(number) {\n var isNegative = number[0] === '-';\n if (isNegative) {\n number = number.substr(1);\n }\n while (number[0] == '0') {\n number = number.substr(1);\n }\n if (number.indexOf('.') != -1) {\n while (number[number.length - 1] == '0') {\n number = number.substr(0, number.length - 1);\n }\n }\n if (number == \"\" || number == \".\") {\n number = '0';\n }\n else if (number[number.length - 1] == '.') {\n number = number.substr(0, number.length - 1);\n }\n if (number[0] == '.') {\n number = '0' + number;\n }\n if (isNegative && number != '0') {\n number = '-' + number;\n }\n return number;\n}\n\nfunction multiply(number1, number2) {\n number1 = number1.toString();\n number2 = number2.toString();\n /*Filter numbers*/\n var negative = 0;\n if (number1[0] == '-') {\n negative++;\n number1 = number1.substr(1);\n }\n if (number2[0] == '-') {\n negative++;\n number2 = number2.substr(1);\n }\n number1 = stripTrailingZero(number1);\n number2 = stripTrailingZero(number2);\n var decimalLength1 = 0;\n var decimalLength2 = 0;\n if (number1.indexOf('.') != -1) {\n decimalLength1 = number1.length - number1.indexOf('.') - 1;\n }\n if (number2.indexOf('.') != -1) {\n decimalLength2 = number2.length - number2.indexOf('.') - 1;\n }\n var decimalLength = decimalLength1 + decimalLength2;\n number1 = stripTrailingZero(number1.replace('.', ''));\n number2 = stripTrailingZero(number2.replace('.', ''));\n if (number1.length < number2.length) {\n var temp = number1;\n number1 = number2;\n number2 = temp;\n }\n if (number2 == '0') {\n return '0';\n }\n /*\n * Core multiplication\n */\n var length = number2.length;\n var carry = 0;\n var positionVector = [];\n var currentPosition = length - 1;\n var result = \"\";\n for (var i = 0; i < length; i++) {\n positionVector[i] = number1.length - 1;\n }\n for (var i = 0; i < 2 * number1.length; i++) {\n var sum = 0;\n for (var j = number2.length - 1; j >= currentPosition && j >= 0; j--) {\n if (positionVector[j] > -1 && positionVector[j] < number1.length) {\n sum += parseInt(number1[positionVector[j]--]) * parseInt(number2[j]);\n }\n }\n sum += carry;\n carry = Math.floor(sum / 10);\n result = sum % 10 + result;\n currentPosition--;\n }\n /*\n * Formatting result\n */\n result = stripTrailingZero(adjustDecimal(result, decimalLength));\n if (negative == 1) {\n result = '-' + result;\n }\n return result;\n}\n/*\n* Add decimal point\n*/\nfunction adjustDecimal(number, decimal) {\n if (decimal == 0)\n return number;\n else {\n number = (decimal >= number.length) ? ((new Array(decimal - number.length + 1)).join('0') + number) : number;\n return number.substr(0, number.length - decimal) + '.' + number.substr(number.length - decimal, decimal);\n }\n}\n\nfunction divide(dividend, divisor, precission, mode) {\n if (precission === void 0) { precission = 8; }\n if (mode === void 0) { mode = RoundingModes.HALF_EVEN; }\n if (divisor == 0) {\n throw new Error('Cannot divide by 0');\n }\n dividend = dividend.toString();\n divisor = divisor.toString();\n // remove trailing zeros in decimal ISSUE#18\n dividend = dividend.replace(/(\\.\\d*?[1-9])0+$/g, \"$1\").replace(/\\.0+$/, \"\");\n divisor = divisor.replace(/(\\.\\d*?[1-9])0+$/g, \"$1\").replace(/\\.0+$/, \"\");\n if (dividend == 0)\n return '0';\n var neg = 0;\n if (divisor[0] == '-') {\n divisor = divisor.substring(1);\n neg++;\n }\n if (dividend[0] == '-') {\n dividend = dividend.substring(1);\n neg++;\n }\n var pt_dvsr = divisor.indexOf('.') > 0 ? divisor.length - divisor.indexOf('.') - 1 : -1;\n divisor = trim(divisor.replace('.', ''));\n if (pt_dvsr >= 0) {\n var pt_dvnd = dividend.indexOf('.') > 0 ? dividend.length - dividend.indexOf('.') - 1 : -1;\n if (pt_dvnd == -1) {\n dividend = trim(dividend + (new Array(pt_dvsr + 1)).join('0'));\n }\n else {\n if (pt_dvsr > pt_dvnd) {\n dividend = dividend.replace('.', '');\n dividend = trim(dividend + (new Array(pt_dvsr - pt_dvnd + 1)).join('0'));\n }\n else if (pt_dvsr < pt_dvnd) {\n dividend = dividend.replace('.', '');\n var loc = dividend.length - pt_dvnd + pt_dvsr;\n dividend = trim(dividend.substring(0, loc) + '.' + dividend.substring(loc));\n }\n else if (pt_dvsr == pt_dvnd) {\n dividend = trim(dividend.replace('.', ''));\n }\n }\n }\n var prec = 0, dl = divisor.length, quotent = '';\n var dvnd = (dividend.indexOf('.') > -1 && dividend.indexOf('.') < dl) ? dividend.substring(0, dl + 1) : dividend.substring(0, dl);\n dividend = (dividend.indexOf('.') > -1 && dividend.indexOf('.') < dl) ? dividend.substring(dl + 1) : dividend.substring(dl);\n if (dvnd.indexOf('.') > -1) {\n var shift = dvnd.length - dvnd.indexOf('.') - 1;\n dvnd = dvnd.replace('.', '');\n if (dl > dvnd.length) {\n shift += dl - dvnd.length;\n dvnd = dvnd + (new Array(dl - dvnd.length + 1)).join('0');\n }\n prec = shift;\n quotent = '0.' + (new Array(shift)).join('0');\n }\n precission = precission + 2;\n while (prec <= precission) {\n var qt = 0;\n while (parseInt(dvnd) >= parseInt(divisor)) {\n dvnd = add(dvnd, '-' + divisor);\n qt++;\n }\n quotent += qt;\n if (!dividend) {\n if (!prec)\n quotent += '.';\n prec++;\n dvnd = dvnd + '0';\n }\n else {\n if (dividend[0] == '.') {\n quotent += '.';\n prec++;\n dividend = dividend.substring(1);\n }\n dvnd = dvnd + dividend.substring(0, 1);\n dividend = dividend.substring(1);\n }\n }\n return ((neg == 1) ? '-' : '') + trim(roundOff(quotent, precission - 2, mode));\n}\n\nfunction subtract(number1, number2) {\n number1 = number1.toString();\n number2 = number2.toString();\n number2 = negate(number2);\n return add(number1, number2);\n}\nfunction negate(number) {\n if (number[0] == '-') {\n number = number.substr(1);\n }\n else {\n number = '-' + number;\n }\n return number;\n}\n\nfunction modulus(dividend, divisor) {\n if (divisor == 0) {\n throw new Error('Cannot divide by 0');\n }\n dividend = dividend.toString();\n divisor = divisor.toString();\n validate(dividend);\n validate(divisor);\n var sign = '';\n if (dividend[0] == '-') {\n sign = '-';\n dividend = dividend.substr(1);\n }\n if (divisor[0] == '-') {\n divisor = divisor.substr(1);\n }\n var result = subtract(dividend, multiply(divisor, roundOff(divide(dividend, divisor), 0, RoundingModes.FLOOR)));\n return sign + result;\n}\nfunction validate(oparand) {\n if (oparand.indexOf('.') != -1) {\n throw new Error('Modulus of non-integers not supported');\n }\n}\n\nfunction compareTo(number1, number2) {\n var _a, _b;\n var negative = false;\n _a = [number1, number2].map(function (n) { return stripTrailingZero(n); }), number1 = _a[0], number2 = _a[1];\n if (number1[0] == '-' && number2[0] != \"-\") {\n return -1;\n }\n else if (number1[0] != '-' && number2[0] == '-') {\n return 1;\n }\n else if (number1[0] == '-' && number2[0] == '-') {\n number1 = number1.substr(1);\n number2 = number2.substr(1);\n negative = true;\n }\n _b = pad(number1, number2), number1 = _b[0], number2 = _b[1];\n if (number1.localeCompare(number2) == 0) {\n return 0;\n }\n for (var i = 0; i < number1.length; i++) {\n if (number1[i] == number2[i]) {\n continue;\n }\n else if (number1[i] > number2[i]) {\n if (negative) {\n return -1;\n }\n else {\n return 1;\n }\n }\n else {\n if (negative) {\n return 1;\n }\n else {\n return -1;\n }\n }\n }\n return 0;\n}\n\nvar bigDecimal = /** @class */ (function () {\n function bigDecimal(number) {\n if (number === void 0) { number = \"0\"; }\n this.value = bigDecimal.validate(number);\n }\n bigDecimal.validate = function (number) {\n if (number) {\n number = number.toString();\n if (isNaN(number))\n throw Error(\"Parameter is not a number: \" + number);\n if (number[0] == \"+\")\n number = number.substring(1);\n }\n else\n number = \"0\";\n //handle missing leading zero\n if (number.startsWith(\".\"))\n number = \"0\" + number;\n else if (number.startsWith(\"-.\"))\n number = \"-0\" + number.substr(1);\n //handle exponentiation\n if (/e/i.test(number)) {\n var _a = number.split(/[eE]/), mantisa = _a[0], exponent = _a[1];\n mantisa = trim(mantisa);\n var sign = \"\";\n if (mantisa[0] == \"-\") {\n sign = \"-\";\n mantisa = mantisa.substring(1);\n }\n if (mantisa.indexOf(\".\") >= 0) {\n exponent = parseInt(exponent) + mantisa.indexOf(\".\");\n mantisa = mantisa.replace(\".\", \"\");\n }\n else {\n exponent = parseInt(exponent) + mantisa.length;\n }\n if (mantisa.length < exponent) {\n number =\n sign + mantisa + new Array(exponent - mantisa.length + 1).join(\"0\");\n }\n else if (mantisa.length >= exponent && exponent > 0) {\n number =\n sign +\n trim(mantisa.substring(0, exponent)) +\n (mantisa.length > exponent ? \".\" + mantisa.substring(exponent) : \"\");\n }\n else {\n number = sign + \"0.\" + new Array(-exponent + 1).join(\"0\") + mantisa;\n }\n }\n return number;\n };\n bigDecimal.prototype.getValue = function () {\n return this.value;\n };\n bigDecimal.prototype.setValue = function (num) {\n this.value = bigDecimal.validate(num);\n };\n bigDecimal.getPrettyValue = function (number, digits, separator) {\n if (digits === void 0) { digits = 3; }\n if (separator === void 0) { separator = \",\"; }\n // if (!(digits || separator)) {\n // digits = 3;\n // separator = ',';\n // } else if (!(digits && separator)) {\n // throw Error('Illegal Arguments. Should pass both digits and separator or pass none');\n // }\n number = bigDecimal.validate(number);\n var neg = number.charAt(0) == \"-\";\n if (neg)\n number = number.substring(1);\n var len = number.indexOf(\".\");\n len = len > 0 ? len : number.length;\n var temp = \"\";\n for (var i = len; i > 0;) {\n if (i < digits) {\n digits = i;\n i = 0;\n }\n else\n i -= digits;\n temp =\n number.substring(i, i + digits) +\n (i < len - digits && i >= 0 ? separator : \"\") +\n temp;\n }\n return (neg ? \"-\" : \"\") + temp + number.substring(len);\n };\n bigDecimal.prototype.getPrettyValue = function (digits, separator) {\n if (digits === void 0) { digits = 3; }\n if (separator === void 0) { separator = \",\"; }\n return bigDecimal.getPrettyValue(this.value, digits, separator);\n };\n bigDecimal.round = function (number, precision, mode) {\n if (precision === void 0) { precision = 0; }\n if (mode === void 0) { mode = RoundingModes.HALF_EVEN; }\n number = bigDecimal.validate(number);\n // console.log(number)\n if (isNaN(precision))\n throw Error(\"Precision is not a number: \" + precision);\n return roundOff(number, precision, mode);\n };\n bigDecimal.prototype.round = function (precision, mode) {\n if (precision === void 0) { precision = 0; }\n if (mode === void 0) { mode = RoundingModes.HALF_EVEN; }\n if (isNaN(precision))\n throw Error(\"Precision is not a number: \" + precision);\n return new bigDecimal(roundOff(this.value, precision, mode));\n };\n bigDecimal.abs = function (number) {\n number = bigDecimal.validate(number);\n return abs(number);\n };\n bigDecimal.prototype.abs = function () {\n return new bigDecimal(abs(this.value));\n };\n bigDecimal.floor = function (number) {\n number = bigDecimal.validate(number);\n if (number.indexOf(\".\") === -1)\n return number;\n return bigDecimal.round(number, 0, RoundingModes.FLOOR);\n };\n bigDecimal.prototype.floor = function () {\n if (this.value.indexOf(\".\") === -1)\n return new bigDecimal(this.value);\n return new bigDecimal(this.value).round(0, RoundingModes.FLOOR);\n };\n bigDecimal.ceil = function (number) {\n number = bigDecimal.validate(number);\n if (number.indexOf(\".\") === -1)\n return number;\n return bigDecimal.round(number, 0, RoundingModes.CEILING);\n };\n bigDecimal.prototype.ceil = function () {\n if (this.value.indexOf(\".\") === -1)\n return new bigDecimal(this.value);\n return new bigDecimal(this.value).round(0, RoundingModes.CEILING);\n };\n bigDecimal.add = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return add(number1, number2);\n };\n bigDecimal.prototype.add = function (number) {\n return new bigDecimal(add(this.value, number.getValue()));\n };\n bigDecimal.subtract = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return subtract(number1, number2);\n };\n bigDecimal.prototype.subtract = function (number) {\n return new bigDecimal(subtract(this.value, number.getValue()));\n };\n bigDecimal.multiply = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return multiply(number1, number2);\n };\n bigDecimal.prototype.multiply = function (number) {\n return new bigDecimal(multiply(this.value, number.getValue()));\n };\n bigDecimal.divide = function (number1, number2, precision, mode) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return divide(number1, number2, precision, mode);\n };\n bigDecimal.prototype.divide = function (number, precision, mode) {\n return new bigDecimal(divide(this.value, number.getValue(), precision, mode));\n };\n bigDecimal.modulus = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return modulus(number1, number2);\n };\n bigDecimal.prototype.modulus = function (number) {\n return new bigDecimal(modulus(this.value, number.getValue()));\n };\n bigDecimal.compareTo = function (number1, number2) {\n number1 = bigDecimal.validate(number1);\n number2 = bigDecimal.validate(number2);\n return compareTo(number1, number2);\n };\n bigDecimal.prototype.compareTo = function (number) {\n return compareTo(this.value, number.getValue());\n };\n bigDecimal.negate = function (number) {\n number = bigDecimal.validate(number);\n return negate(number);\n };\n bigDecimal.prototype.negate = function () {\n return new bigDecimal(negate(this.value));\n };\n bigDecimal.stripTrailingZero = function (number) {\n number = bigDecimal.validate(number);\n return stripTrailingZero(number);\n };\n bigDecimal.prototype.stripTrailingZero = function () {\n return new bigDecimal(stripTrailingZero(this.value));\n };\n bigDecimal.RoundingModes = RoundingModes;\n return bigDecimal;\n}());\n\nexport { bigDecimal as default };\n//# sourceMappingURL=big-decimal.js.map\n","/**\n * @wharfkit/resources v1.3.0\n * https://github.com/wharfkit/resources\n *\n * @license\n * Copyright (c) 2021 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { Struct, UInt64, UInt128, TimePointSec, Asset, Int64, APIClient, FetchProvider } from '@wharfkit/antelope';\nimport BN from 'bn.js';\nimport { __decorate } from 'tslib';\nimport bigDecimal from 'js-big-decimal';\n\nclass PowerUpStateResource extends Struct {\n constructor() {\n super(...arguments);\n this.default_block_cpu_limit = UInt64.from(200000);\n this.default_block_net_limit = UInt64.from(1048576000);\n }\n // Get the current number of allocated units (shift from REX -> PowerUp)\n get allocated() {\n return 1 - Number(this.weight_ratio) / Number(this.target_weight_ratio) / 100;\n }\n // Get the current percentage of reserved units\n get reserved() {\n return new BN(String(this.utilization)) / new BN(String(this.weight));\n }\n // Get the symbol definition for the token\n get symbol() {\n return this.min_price.symbol;\n }\n // Common casting for typed values to numbers\n cast() {\n return {\n adjusted_utilization: Number(this.adjusted_utilization),\n decay_secs: Number(this.decay_secs.value),\n exponent: Number(this.exponent),\n utilization: Number(this.utilization),\n utilization_timestamp: Number(this.utilization_timestamp.value),\n weight: new BN(String(this.weight)),\n weight_ratio: Number(this.weight_ratio),\n };\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L358\n utilization_increase(sample, frac) {\n const { weight } = this;\n const frac128 = UInt128.from(frac);\n const utilization_increase = new BN(weight.value.mul(new BN(frac128.value))) / Math.pow(10, 15);\n return Math.ceil(utilization_increase);\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L284-L298\n price_function(utilization) {\n const { exponent, weight } = this.cast();\n const max_price = this.max_price.value;\n const min_price = this.min_price.value;\n let price = min_price;\n const new_exponent = exponent - 1.0;\n if (new_exponent <= 0.0) {\n return max_price;\n }\n else {\n const util_weight = new BN(utilization) / weight;\n price += (max_price - min_price) * Math.pow(util_weight, new_exponent);\n }\n return price;\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L274-L280\n price_integral_delta(start_utilization, end_utilization) {\n const { exponent, weight } = this.cast();\n const max_price = this.max_price.value;\n const min_price = this.min_price.value;\n const coefficient = (max_price - min_price) / exponent;\n const start_u = new BN(start_utilization) / weight;\n const end_u = new BN(end_utilization) / weight;\n const delta = min_price * end_u -\n min_price * start_u +\n coefficient * Math.pow(end_u, exponent) -\n coefficient * Math.pow(start_u, exponent);\n return delta;\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L262-L315\n fee(utilization_increase, adjusted_utilization) {\n const { utilization, weight } = this.cast();\n let start_utilization = utilization;\n const end_utilization = start_utilization + utilization_increase;\n let fee = 0;\n if (start_utilization < adjusted_utilization) {\n const min = Math.min(utilization_increase, adjusted_utilization - start_utilization);\n fee += Number(new bigDecimal(this.price_function(adjusted_utilization) * min)\n .divide(new bigDecimal(weight.toString()))\n .getValue());\n start_utilization = adjusted_utilization;\n }\n if (start_utilization < end_utilization) {\n fee += this.price_integral_delta(start_utilization, end_utilization);\n }\n return fee;\n }\n // Mimic: https://github.com/EOSIO/eosio.contracts/blob/d7bc0a5cc8c0c2edd4dc61b0126517d0cb46fd94/contracts/eosio.system/src/powerup.cpp#L105-L117\n determine_adjusted_utilization(options) {\n // Casting EOSIO types to usable formats for JS calculations\n const { decay_secs, utilization, utilization_timestamp } = this.cast();\n let { adjusted_utilization } = this.cast();\n // If utilization is less than adjusted, calculate real time value\n if (utilization < adjusted_utilization) {\n // Create now & adjust JS timestamp to match EOSIO timestamp values\n const ts = options && options.timestamp ? options.timestamp : new Date();\n const now = TimePointSec.from(ts).toMilliseconds() / 1000;\n const diff = adjusted_utilization - utilization;\n let delta = diff * Math.exp(-(now - utilization_timestamp) / decay_secs);\n delta = Math.min(Math.max(delta, 0), diff); // Clamp the delta\n adjusted_utilization = utilization + delta;\n }\n return adjusted_utilization;\n }\n}\n__decorate([\n Struct.field('uint8')\n], PowerUpStateResource.prototype, \"version\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"weight\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"weight_ratio\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"assumed_stake_weight\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"initial_weight_ratio\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"target_weight_ratio\", void 0);\n__decorate([\n Struct.field('time_point_sec')\n], PowerUpStateResource.prototype, \"initial_timestamp\", void 0);\n__decorate([\n Struct.field('time_point_sec')\n], PowerUpStateResource.prototype, \"target_timestamp\", void 0);\n__decorate([\n Struct.field('float64')\n], PowerUpStateResource.prototype, \"exponent\", void 0);\n__decorate([\n Struct.field('uint32')\n], PowerUpStateResource.prototype, \"decay_secs\", void 0);\n__decorate([\n Struct.field('asset')\n], PowerUpStateResource.prototype, \"min_price\", void 0);\n__decorate([\n Struct.field('asset')\n], PowerUpStateResource.prototype, \"max_price\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"utilization\", void 0);\n__decorate([\n Struct.field('int64')\n], PowerUpStateResource.prototype, \"adjusted_utilization\", void 0);\n__decorate([\n Struct.field('time_point_sec')\n], PowerUpStateResource.prototype, \"utilization_timestamp\", void 0);\n\nlet PowerUpStateResourceCPU = class PowerUpStateResourceCPU extends PowerUpStateResource {\n constructor() {\n super(...arguments);\n // Return smallest units per day, μs (microseconds)\n this.per_day = (options) => this.us_per_day(options);\n // Default frac generation by smallest unit type\n this.frac = (usage, us) => this.frac_by_us(usage, us);\n // Frac generation by ms (milliseconds)\n this.frac_by_ms = (usage, ms) => this.frac_by_us(usage, ms * 1000);\n // Price generation by smallest units, μs (microseconds)\n this.price_per = (usage, us = 1000, options) => this.price_per_us(usage, us, options);\n // Price generation by ms (milliseconds)\n this.price_per_ms = (usage, ms = 1, options) => this.price_per_us(usage, ms * 1000, options);\n }\n // Return ms (milliseconds) per day\n ms_per_day(options) {\n return this.us_per_day(options) / 1000;\n }\n // Return μs (microseconds) per day\n us_per_day(options) {\n const limit = options && options.virtual_block_cpu_limit\n ? options.virtual_block_cpu_limit\n : this.default_block_cpu_limit;\n return Number(limit) * 2 * 60 * 60 * 24;\n }\n // Convert weight to μs (microseconds)\n weight_to_us(sample, weight) {\n return Math.ceil((weight * Number(sample)) / BNPrecision);\n }\n // Convert μs (microseconds) to weight\n us_to_weight(sample, us) {\n return Math.floor((us / Number(sample)) * BNPrecision);\n }\n // Frac generation by μs (microseconds)\n frac_by_us(usage, us) {\n const { weight } = this.cast();\n const frac = new BN(this.us_to_weight(usage.cpu, us)) / weight;\n return Math.floor(frac * Math.pow(10, 15));\n }\n // Price generation by μs (microseconds)\n price_per_us(usage, us = 1000, options) {\n // Determine the utilization increase by this action\n const frac = UInt128.from(this.frac(usage, us));\n const utilization_increase = this.utilization_increase(usage.cpu, frac);\n // Determine the adjusted utilization if needed\n const adjusted_utilization = this.determine_adjusted_utilization(options);\n // Derive the fee from the increase and utilization\n const fee = this.fee(utilization_increase, adjusted_utilization);\n // Force the fee up to the next highest value of precision\n const precision = Math.pow(10, this.max_price.symbol.precision);\n const value = Math.ceil(fee * precision) / precision;\n // Return the modified fee\n return value;\n }\n};\nPowerUpStateResourceCPU = __decorate([\n Struct.type('powerupstateresourcecpu')\n], PowerUpStateResourceCPU);\n\nlet PowerUpStateResourceNET = class PowerUpStateResourceNET extends PowerUpStateResource {\n constructor() {\n super(...arguments);\n // Return smallest units per day, bytes\n this.per_day = (options) => this.bytes_per_day(options);\n // Default frac generation by smallest unit type\n this.frac = (usage, bytes) => this.frac_by_bytes(usage, bytes);\n // Frac generation by kb\n this.frac_by_kb = (usage, kilobytes) => this.frac_by_bytes(usage, kilobytes * 1000);\n // Price generation by smallest units, bytes\n this.price_per = (usage, bytes = 1000, options) => this.price_per_byte(usage, bytes, options);\n // Price generation by kb\n this.price_per_kb = (usage, kilobytes = 1, options) => this.price_per_byte(usage, kilobytes * 1000, options);\n }\n // Return kb per day\n kb_per_day(options) {\n return this.bytes_per_day(options) / 1000;\n }\n // Return bytes per day\n bytes_per_day(options) {\n const limit = options && options.virtual_block_net_limit\n ? options.virtual_block_net_limit\n : this.default_block_net_limit;\n return Number(limit) * 2 * 60 * 60 * 24;\n }\n // Convert weight to bytes\n weight_to_bytes(sample, weight) {\n return Math.ceil((weight * Number(sample)) / BNPrecision);\n }\n // Convert bytes to weight\n bytes_to_weight(sample, bytes) {\n return Math.floor((bytes / Number(sample)) * BNPrecision);\n }\n // Frac generation by bytes\n frac_by_bytes(usage, bytes) {\n const { weight } = this.cast();\n const frac = new BN(this.bytes_to_weight(usage.net, bytes)) / weight;\n return Math.floor(frac * Math.pow(10, 15));\n }\n // Price generation by bytes\n price_per_byte(usage, bytes = 1000, options) {\n // Determine the utilization increase by this action\n const frac = UInt128.from(this.frac(usage, bytes));\n const utilization_increase = this.utilization_increase(usage.net, frac);\n // Determine the adjusted utilization if needed\n const adjusted_utilization = this.determine_adjusted_utilization(options);\n // Derive the fee from the increase and utilization\n const fee = this.fee(utilization_increase, adjusted_utilization);\n // Force the fee up to the next highest value of precision\n const precision = Math.pow(10, this.max_price.symbol.precision);\n const value = Math.ceil(fee * precision) / precision;\n // Return the modified fee\n return value;\n }\n};\nPowerUpStateResourceNET = __decorate([\n Struct.type('powerupstateresourcenet')\n], PowerUpStateResourceNET);\n\nlet PowerUpState = class PowerUpState extends Struct {\n};\n__decorate([\n Struct.field('uint8')\n], PowerUpState.prototype, \"version\", void 0);\n__decorate([\n Struct.field(PowerUpStateResourceNET)\n], PowerUpState.prototype, \"net\", void 0);\n__decorate([\n Struct.field(PowerUpStateResourceCPU)\n], PowerUpState.prototype, \"cpu\", void 0);\n__decorate([\n Struct.field('uint32')\n], PowerUpState.prototype, \"powerup_days\", void 0);\n__decorate([\n Struct.field('asset')\n], PowerUpState.prototype, \"min_powerup_fee\", void 0);\nPowerUpState = __decorate([\n Struct.type('powerupstate')\n], PowerUpState);\nclass PowerUpAPI {\n constructor(parent) {\n this.parent = parent;\n }\n async get_state() {\n const response = await this.parent.api.v1.chain.get_table_rows({\n code: 'eosio',\n scope: '',\n table: 'powup.state',\n type: PowerUpState,\n });\n return response.rows[0];\n }\n}\n\nlet Connector = class Connector extends Struct {\n};\n__decorate([\n Struct.field('asset')\n], Connector.prototype, \"balance\", void 0);\n__decorate([\n Struct.field('float64')\n], Connector.prototype, \"weight\", void 0);\nConnector = __decorate([\n Struct.type('connector')\n], Connector);\nlet ExchangeState = class ExchangeState extends Struct {\n};\n__decorate([\n Struct.field('asset')\n], ExchangeState.prototype, \"supply\", void 0);\n__decorate([\n Struct.field(Connector)\n], ExchangeState.prototype, \"base\", void 0);\n__decorate([\n Struct.field(Connector)\n], ExchangeState.prototype, \"quote\", void 0);\nExchangeState = __decorate([\n Struct.type('exchange_state')\n], ExchangeState);\nlet RAMState = class RAMState extends ExchangeState {\n price_per(bytes) {\n const base = this.base.balance.units;\n const quote = this.quote.balance.units;\n return Asset.fromUnits(this.get_input(base, quote, Int64.from(bytes)), this.quote.balance.symbol);\n }\n price_per_kb(kilobytes) {\n return this.price_per(kilobytes * 1000);\n }\n // Derived from https://github.com/EOSIO/eosio.contracts/blob/f6578c45c83ec60826e6a1eeb9ee71de85abe976/contracts/eosio.system/src/exchange_state.cpp#L96\n get_input(base, quote, value) {\n // (quote * value) / (base - value), using 'ceil' to round up\n return quote.multiplying(value).dividing(base.subtracting(value), 'ceil');\n }\n};\nRAMState = __decorate([\n Struct.type('ramstate')\n], RAMState);\nclass RAMAPI {\n constructor(parent) {\n this.parent = parent;\n }\n async get_state() {\n const response = await this.parent.api.v1.chain.get_table_rows({\n code: 'eosio',\n scope: 'eosio',\n table: 'rammarket',\n type: RAMState,\n });\n return response.rows[0];\n }\n}\n\nlet REXState = class REXState extends Struct {\n get reserved() {\n return Number(this.total_lent.units) / Number(this.total_lendable.units);\n }\n get symbol() {\n return this.total_lent.symbol;\n }\n get precision() {\n return this.total_lent.symbol.precision;\n }\n get value() {\n return ((Number(this.total_lent.units) + Number(this.total_unlent.units)) /\n Number(this.total_rex.units));\n }\n exchange(amount) {\n return Asset.from((amount.value * this.total_lendable.value) / this.total_rex.value, this.symbol);\n }\n cpu_price_per_ms(sample, ms = 1) {\n return this.cpu_price_per_us(sample, ms * 1000);\n }\n cpu_price_per_us(sample, us = 1000) {\n return this.price_per(sample, us, sample.cpu);\n }\n net_price_per_kb(sample, kilobytes = 1) {\n return this.net_price_per_kb(sample, kilobytes * 1000);\n }\n net_price_per_byte(sample, bytes = 1000) {\n return this.price_per(sample, bytes, sample.net);\n }\n price_per(sample, unit = 1000, usage = sample.cpu) {\n // Sample token units\n const tokens = Asset.fromUnits(10000, this.symbol);\n // Spending 1 EOS (10000 units) on REX gives this many tokens\n const bancor = Number(tokens.units) / (this.total_rent.value / this.total_unlent.value);\n // The ratio of the number of tokens received vs the sampled values\n const unitPrice = bancor * (Number(usage) / BNPrecision);\n // The token units spent per unit\n const perunit = Number(tokens.units) / unitPrice;\n // Multiply the per unit cost by the units requested\n const cost = perunit * unit;\n // Converting to an Asset\n return cost / Math.pow(10, this.precision);\n }\n};\n__decorate([\n Struct.field('uint8')\n], REXState.prototype, \"version\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_lent\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_unlent\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_rent\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_lendable\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"total_rex\", void 0);\n__decorate([\n Struct.field('asset')\n], REXState.prototype, \"namebid_proceeds\", void 0);\n__decorate([\n Struct.field('uint64')\n], REXState.prototype, \"loan_num\", void 0);\nREXState = __decorate([\n Struct.type('rexstate')\n], REXState);\nclass REXAPI {\n constructor(parent) {\n this.parent = parent;\n }\n async get_state() {\n const response = await this.parent.api.v1.chain.get_table_rows({\n code: 'eosio',\n scope: 'eosio',\n table: 'rexpool',\n type: REXState,\n });\n return response.rows[0];\n }\n}\n\nconst BNPrecision = new BN(100 * 1000 * 1000);\nclass Resources {\n constructor(options) {\n // the account to use when sampling usage\n this.sampleAccount = 'greymassfuel';\n // token precision/symbol\n this.symbol = '4,EOS';\n this.v1 = {\n powerup: new PowerUpAPI(this),\n ram: new RAMAPI(this),\n rex: new REXAPI(this),\n };\n // Allow overriding of the sample account name\n if (options.sampleAccount) {\n this.sampleAccount = options.sampleAccount;\n }\n // Allow overriding of the system token symbol\n if (options.symbol) {\n this.symbol = options.symbol;\n }\n // Allow variations on how to specify the API configuration\n if (options.api) {\n this.api = options.api;\n }\n else if (options.url) {\n this.api = new APIClient({ provider: new FetchProvider(options.url, options) });\n }\n else {\n throw new Error('Missing url or api client');\n }\n }\n async getSampledUsage() {\n const account = await this.api.v1.chain.get_account(this.sampleAccount);\n const us = UInt128.from(account.cpu_limit.max.value.mul(BNPrecision));\n const byte = UInt128.from(account.net_limit.max.value.mul(BNPrecision));\n const cpu_weight = UInt128.from(account.cpu_weight.value);\n const net_weight = UInt128.from(account.net_weight.value);\n return {\n account,\n cpu: divCeil(us.value, cpu_weight.value),\n net: divCeil(byte.value, net_weight.value),\n };\n }\n}\nResources.__className = 'Resources';\nfunction divCeil(num, den) {\n let v = num.div(den);\n const zero = new BN(0);\n const one = new BN(1);\n if (num.mod(den).gt(zero) && v.gt(one)) {\n v = v.sub(one);\n }\n return UInt128.from(v);\n}\n\nexport { BNPrecision, Connector, ExchangeState, PowerUpAPI, PowerUpState, RAMAPI, RAMState, REXAPI, REXState, Resources };\n//# sourceMappingURL=wharfkit-resources.m.js.map\n","import { ABI } from '@wharfkit/antelope';\n\nclass ABICache {\n constructor(client) {\n this.client = client;\n this.cache = new Map();\n this.pending = new Map();\n }\n async getAbi(account) {\n const key = String(account);\n let record = this.cache.get(key);\n if (!record) {\n let getAbi = this.pending.get(key);\n if (!getAbi) {\n getAbi = this.client.v1.chain.get_raw_abi(account);\n this.pending.set(key, getAbi);\n }\n const response = await getAbi;\n this.pending.delete(key);\n if (response.abi) {\n record = ABI.from(response.abi);\n this.cache.set(key, record);\n }\n else {\n throw new Error(`ABI for ${key} could not be loaded.`);\n }\n }\n return record;\n }\n setAbi(account, abiDef, merge = false) {\n const key = String(account);\n const abi = ABI.from(abiDef);\n const existing = this.cache.get(key);\n if (merge && existing) {\n this.cache.set(key, ABI.from({\n action_results: mergeAndDeduplicate(existing.action_results, abi.action_results),\n types: mergeAndDeduplicate(existing.types, abi.types, 'new_type_name'),\n structs: mergeAndDeduplicate(existing.structs, abi.structs),\n actions: mergeAndDeduplicate(existing.actions, abi.actions),\n tables: mergeAndDeduplicate(existing.tables, abi.tables),\n ricardian_clauses: mergeAndDeduplicate(existing.ricardian_clauses, abi.ricardian_clauses, 'id'),\n variants: mergeAndDeduplicate(existing.variants, abi.variants),\n version: abi.version,\n }));\n }\n else {\n this.cache.set(key, abi);\n }\n }\n}\nfunction mergeAndDeduplicate(array1, array2, byField = 'name') {\n return array2.reduce((acc, current) => {\n if (!acc.some((obj) => String(obj[byField]) === String(current[byField]))) {\n acc.push(current);\n }\n return acc;\n }, array1.slice());\n}\n\nexport { ABICache, ABICache as default };\n//# sourceMappingURL=abicache.m.js.map\n","import { isInstanceOf, UInt128, UInt64, Float64, Checksum256, Checksum160, Name, Serializer, ABI, Blob, PermissionLevel, Action, Transaction } from '@wharfkit/antelope';\nimport { PlaceholderAuth } from '@wharfkit/signing-request';\nimport { ABICache } from '@wharfkit/abicache';\n\nfunction pascalCase(value) {\n return value\n .split(/_| /)\n .map((w) => {\n return w[0].toUpperCase() + w.slice(1).toLowerCase();\n })\n .join('');\n}\nfunction capitalize(string) {\n if (typeof string !== 'string' || string.length === 0) {\n return '';\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction singularize(word) {\n if (word.endsWith('ies')) {\n return word.slice(0, -3) + 'y';\n }\n else if (word.endsWith('ches') || word.endsWith('ses')) {\n return word.slice(0, -2);\n }\n else if (word.endsWith('s') && word.length > 1 && word[word.length - 2] !== 's') {\n return word.slice(0, -1);\n }\n else {\n return word;\n }\n}\nfunction indexPositionInWords(index) {\n return [\n 'primary',\n 'secondary',\n 'tertiary',\n 'fourth',\n 'fifth',\n 'sixth',\n 'seventh',\n 'eighth',\n 'ninth',\n 'tenth',\n ][index];\n}\nfunction wrapIndexValue(value) {\n if (!value) {\n return;\n }\n if (isInstanceOf(value, UInt128) ||\n isInstanceOf(value, UInt64) ||\n isInstanceOf(value, Float64) ||\n isInstanceOf(value, Checksum256) ||\n isInstanceOf(value, Checksum160)) {\n return value;\n }\n if (typeof value === 'number') {\n return UInt64.from(value);\n }\n return Name.from(value);\n}\nfunction abiToBlob(abi) {\n const serializedABI = Serializer.encode({ object: abi, type: ABI });\n return new Blob(serializedABI.array);\n}\nfunction blobStringToAbi(blobString) {\n const blob = Blob.from(blobString);\n return ABI.from(blob);\n}\n\nconst defaultParams = {\n json: false,\n limit: 1000,\n};\nclass TableCursor {\n constructor(args) {\n this.endReached = false;\n this.rowsCount = 0;\n this.maxRows = Number.MAX_SAFE_INTEGER;\n this.abi = ABI.from(args.abi);\n this.client = args.client;\n this.params = {\n ...defaultParams,\n ...args.params,\n };\n if (args.maxRows) {\n this.maxRows = args.maxRows;\n }\n const table = this.abi.tables.find((t) => Name.from(t.name).equals(this.params.table));\n if (!table) {\n throw new Error('Table not found');\n }\n this.type = table.type;\n }\n async *[Symbol.asyncIterator]() {\n while (true) {\n const rows = await this.next();\n for (const row of rows) {\n yield row;\n }\n if (rows.length === 0 || !this.next_key) {\n return;\n }\n }\n }\n async reset() {\n this.next_key = undefined;\n this.endReached = false;\n this.rowsCount = 0;\n }\n async all() {\n const rows = [];\n for await (const row of this) {\n rows.push(row);\n }\n return rows;\n }\n}\n\nclass TableRowCursor extends TableCursor {\n async next(rowsPerAPIRequest = Number.MAX_SAFE_INTEGER) {\n if (this.endReached) {\n return [];\n }\n let lower_bound = this.params.lower_bound;\n if (this.next_key) {\n lower_bound = this.next_key;\n }\n const rowsRemaining = this.maxRows - this.rowsCount;\n const limit = Math.min(rowsRemaining, rowsPerAPIRequest, this.params.limit);\n const query = {\n ...this.params,\n limit,\n lower_bound: wrapIndexValue(lower_bound),\n upper_bound: wrapIndexValue(this.params.upper_bound),\n };\n const result = await this.client.v1.chain.get_table_rows(query);\n const requiresDecoding = this.params.json === false && !query.type;\n const rows = requiresDecoding\n ? result.rows.map((data) => Serializer.decode({\n data,\n abi: this.abi,\n type: this.type,\n }))\n : result.rows;\n this.next_key = result.next_key;\n this.rowsCount += rows.length;\n if (!result.next_key || rows.length === 0 || this.rowsCount === this.maxRows) {\n this.endReached = true;\n }\n return rows;\n }\n}\n\nclass TableScopeCursor extends TableCursor {\n async next(rowsPerAPIRequest = Number.MAX_SAFE_INTEGER) {\n if (this.endReached) {\n return [];\n }\n let lower_bound = this.params.lower_bound;\n if (this.next_key) {\n lower_bound = this.next_key;\n }\n const rowsRemaining = this.maxRows - this.rowsCount;\n const limit = Math.min(rowsRemaining, rowsPerAPIRequest, this.params.limit);\n const query = {\n code: this.params.code,\n table: this.params.table,\n limit,\n lower_bound: lower_bound ? String(lower_bound) : undefined,\n upper_bound: this.params.upper_bound ? String(this.params.upper_bound) : undefined,\n };\n const result = await this.client.v1.chain.get_table_by_scope(query);\n const rows = result.rows;\n this.next_key = result.more;\n this.rowsCount += rows.length;\n if (!result.more || rows.length === 0 || this.rowsCount === this.maxRows) {\n this.endReached = true;\n }\n return rows;\n }\n}\n\nclass Table {\n constructor(args) {\n this.defaultRowLimit = 1000;\n this.abi = ABI.from(args.abi);\n this.account = Name.from(args.account);\n this.name = Name.from(args.name);\n this.client = args.client;\n this.rowType = args.rowType;\n this.fieldToIndex = args.fieldToIndex;\n const tableABI = this.abi.tables.find((table) => this.name.equals(table.name));\n if (!tableABI) {\n throw new Error(`Table ${this.name} not found in ABI`);\n }\n this.tableABI = tableABI;\n this.defaultScope = args.defaultScope;\n }\n static from(tableParams) {\n return new Table(tableParams);\n }\n query(params = {}) {\n const tableRowsParams = {\n table: this.name,\n code: this.account,\n scope: params.scope !== undefined\n ? String(params.scope)\n : this.defaultScope || this.account,\n type: this.rowType,\n index_position: params.index_position,\n key_type: params.key_type,\n lower_bound: wrapIndexValue(params.from),\n upper_bound: wrapIndexValue(params.to),\n limit: params.rowsPerAPIRequest || this.defaultRowLimit,\n reverse: params.reverse,\n };\n if (params.index) {\n const fieldToIndexMapping = this.getFieldToIndex();\n if (!fieldToIndexMapping[params.index]) {\n throw new Error(`Field ${params.index} is not listed in the ABI under key_names/key_types. Try using 'index_position' instead.`);\n }\n tableRowsParams.index_position = fieldToIndexMapping[params.index].index_position;\n }\n return new TableRowCursor({\n abi: this.abi,\n client: this.client,\n maxRows: params.maxRows,\n params: tableRowsParams,\n });\n }\n async get(value, params = {}) {\n const tableRowsParams = {\n table: this.name,\n code: this.account,\n scope: params.scope !== undefined\n ? String(params.scope)\n : this.defaultScope || this.account,\n type: this.rowType,\n limit: 1,\n lower_bound: wrapIndexValue(value),\n upper_bound: wrapIndexValue(value),\n index_position: params.index_position,\n key_type: params.key_type,\n json: false,\n reverse: params.reverse,\n };\n if (params.index) {\n const fieldToIndexMapping = this.getFieldToIndex();\n if (!fieldToIndexMapping[params.index]) {\n throw new Error(`Field ${params.index} is not listed in the ABI under key_names/key_types. Try using 'index_position' instead.`);\n }\n tableRowsParams.index_position = fieldToIndexMapping[params.index].index_position;\n }\n const { rows } = await this.client.v1.chain.get_table_rows(tableRowsParams);\n if (rows.length === 0) {\n return undefined;\n }\n let [row] = rows;\n if (!this.rowType) {\n row = Serializer.decode({\n data: row,\n abi: this.abi,\n type: this.tableABI.type,\n });\n }\n if (params.json) {\n row = Serializer.objectify(row);\n }\n return row;\n }\n first(maxRows, params = {}) {\n return this.query({\n ...params,\n maxRows,\n });\n }\n async all(params = {}) {\n return this.query(params).all();\n }\n getFieldToIndex() {\n if (this.fieldToIndex) {\n return this.fieldToIndex;\n }\n const fieldToIndex = {};\n for (let i = 0; i < this.tableABI.key_names.length; i++) {\n fieldToIndex[this.tableABI.key_names[i]] = {\n type: this.tableABI.key_types[i],\n index_position: indexPositionInWords(i),\n };\n }\n return fieldToIndex;\n }\n scopes(params = {}) {\n const tableRowsParams = {\n code: this.account,\n table: this.name,\n lower_bound: wrapIndexValue(params.from),\n upper_bound: wrapIndexValue(params.to),\n limit: params.rowsPerAPIRequest || this.defaultRowLimit,\n reverse: params.reverse,\n };\n return new TableScopeCursor({\n abi: this.abi,\n client: this.client,\n maxRows: params.maxRows,\n params: tableRowsParams,\n });\n }\n}\n\nclass Contract {\n constructor(args) {\n if (!args.abi) {\n throw new Error('Contract requires an ABI');\n }\n this.abi = ABI.from(args.abi);\n if (!args.account) {\n throw new Error('Contract requires an account name');\n }\n this.account = Name.from(args.account);\n if (!args.client) {\n throw new Error('Contract requires an APIClient');\n }\n this.client = args.client;\n }\n get tableNames() {\n return this.abi.tables.map((table) => String(table.name));\n }\n hasTable(name) {\n return this.tableNames.includes(String(name));\n }\n table(name, scope, rowType) {\n if (!this.hasTable(name)) {\n throw new Error(`Contract (${this.account}) does not have a table named (${name})`);\n }\n return Table.from({\n abi: this.abi,\n account: this.account,\n client: this.client,\n defaultScope: scope,\n name,\n rowType,\n });\n }\n get actionNames() {\n return this.abi.actions.map((action) => String(action.name));\n }\n hasAction(name) {\n return this.actionNames.includes(String(name));\n }\n action(name, data, options) {\n if (!this.hasAction(name)) {\n throw new Error(`Contract (${this.account}) does not have an action named (${name})`);\n }\n let authorization = [PlaceholderAuth];\n if (options && options.authorization) {\n authorization = options.authorization.map((auth) => PermissionLevel.from(auth));\n }\n return Action.from({\n account: this.account,\n name,\n authorization,\n data,\n }, this.abi);\n }\n async readonly(name, data) {\n if (!data) {\n data = {};\n }\n const action = this.action(name, data);\n action.authorization = [];\n const transaction = Transaction.from({\n ref_block_num: 0,\n ref_block_prefix: 0,\n expiration: 0,\n actions: [action],\n });\n const response = await this.client.v1.chain.send_read_only_transaction(transaction);\n const hexData = response.processed.action_traces[0].return_value_hex_data;\n const returnType = this.abi.action_results.find((a) => Name.from(a.name).equals(name));\n if (!returnType) {\n throw new Error(`Return type for ${name} not defined in the ABI.`);\n }\n return Serializer.decode({\n data: hexData,\n type: returnType.result_type,\n abi: this.abi,\n });\n }\n actions(actions, options) {\n return actions.map((action) => this.action(action.name, action.data, {\n authorization: action.authorization || options?.authorization,\n }));\n }\n ricardian(name) {\n if (!this.hasAction(name)) {\n throw new Error(`Contract (${this.account}) does not have an action named (${name})`);\n }\n const action = this.abi.actions.find((action) => Name.from(action.name).equals(name));\n if (!action || !action.ricardian_contract) {\n throw new Error(`Contract (${this.account}) action named (${name}) does not have a defined ricardian contract`);\n }\n return action.ricardian_contract;\n }\n}\n\nconst defaultContractKitOptions = {};\nclass ContractKit {\n constructor(args, options = defaultContractKitOptions) {\n if (args.client) {\n this.client = args.client;\n }\n else {\n throw new Error('A `client` must be passed when initializing the ContractKit.');\n }\n if (options.abiCache) {\n this.abiCache = options.abiCache;\n }\n else {\n this.abiCache = new ABICache(this.client);\n }\n if (options.abis) {\n options.abis.forEach(({ name, abi }) => this.abiCache.setAbi(Name.from(name), ABI.from(abi)));\n }\n }\n async load(contract) {\n const account = Name.from(contract);\n const abiDef = await this.abiCache.getAbi(account);\n return new Contract({\n abi: ABI.from(abiDef),\n account,\n client: this.client,\n });\n }\n}\n\nexport { Contract, ContractKit, Table, TableRowCursor, TableScopeCursor, abiToBlob, blobStringToAbi, capitalize, ContractKit as default, indexPositionInWords, pascalCase, singularize, wrapIndexValue };\n//# sourceMappingURL=contract.m.js.map\n","/**\n * @wharfkit/token v1.1.2\n * https://github.com/wharfkit/token\n *\n * @license\n * Copyright (c) 2021 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { Blob, ABI, Struct, Asset, Name } from '@wharfkit/antelope';\nimport { Contract as Contract$1, ContractKit } from '@wharfkit/contract';\nimport { __decorate } from 'tslib';\n\nconst abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4xAAgHYWNjb3VudAABB2JhbGFuY2UFYXNzZXQFY2xvc2UAAgVvd25lcgRuYW1lBnN5bWJvbAZzeW1ib2wGY3JlYXRlAAIGaXNzdWVyBG5hbWUObWF4aW11bV9zdXBwbHkFYXNzZXQOY3VycmVuY3lfc3RhdHMAAwZzdXBwbHkFYXNzZXQKbWF4X3N1cHBseQVhc3NldAZpc3N1ZXIEbmFtZQVpc3N1ZQADAnRvBG5hbWUIcXVhbnRpdHkFYXNzZXQEbWVtbwZzdHJpbmcEb3BlbgADBW93bmVyBG5hbWUGc3ltYm9sBnN5bWJvbAlyYW1fcGF5ZXIEbmFtZQZyZXRpcmUAAghxdWFudGl0eQVhc3NldARtZW1vBnN0cmluZwh0cmFuc2ZlcgAEBGZyb20EbmFtZQJ0bwRuYW1lCHF1YW50aXR5BWFzc2V0BG1lbW8Gc3RyaW5nBgAAAAAAhWlEBWNsb3Nl7QMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBDbG9zZSBUb2tlbiBCYWxhbmNlCnN1bW1hcnk6ICdDbG9zZSB7e25vd3JhcCBvd25lcn194oCZcyB6ZXJvIHF1YW50aXR5IGJhbGFuY2UnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcnlwdG9reWxpbi9lb3Npby5jb250cmFjdHMvdjEuNy4wL2NvbnRyYWN0cy9pY29ucy90b2tlbi5wbmcjMjA3ZmY2OGIwNDA2ZWFhNTY2MThiMDhiZGE4MWQ2YTA5NTQ1NDNmMzZhZGMzMjhhYjMwNjVmMzFhNWM1ZDY1NAotLS0KCnt7b3duZXJ9fSBhZ3JlZXMgdG8gY2xvc2UgdGhlaXIgemVybyBxdWFudGl0eSBiYWxhbmNlIGZvciB0aGUge3tzeW1ib2xfdG9fc3ltYm9sX2NvZGUgc3ltYm9sfX0gdG9rZW4uCgpSQU0gd2lsbCBiZSByZWZ1bmRlZCB0byB0aGUgUkFNIHBheWVyIG9mIHRoZSB7e3N5bWJvbF90b19zeW1ib2xfY29kZSBzeW1ib2x9fSB0b2tlbiBiYWxhbmNlIGZvciB7e293bmVyfX0uAAAAAKhs1EUGY3JlYXRljgUtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBDcmVhdGUgTmV3IFRva2VuCnN1bW1hcnk6ICdDcmVhdGUgYSBuZXcgdG9rZW4nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcnlwdG9reWxpbi9lb3Npby5jb250cmFjdHMvdjEuNy4wL2NvbnRyYWN0cy9pY29ucy90b2tlbi5wbmcjMjA3ZmY2OGIwNDA2ZWFhNTY2MThiMDhiZGE4MWQ2YTA5NTQ1NDNmMzZhZGMzMjhhYjMwNjVmMzFhNWM1ZDY1NAotLS0KCnt7JGFjdGlvbi5hY2NvdW50fX0gYWdyZWVzIHRvIGNyZWF0ZSBhIG5ldyB0b2tlbiB3aXRoIHN5bWJvbCB7e2Fzc2V0X3RvX3N5bWJvbF9jb2RlIG1heGltdW1fc3VwcGx5fX0gdG8gYmUgbWFuYWdlZCBieSB7e2lzc3Vlcn19LgoKVGhpcyBhY3Rpb24gd2lsbCBub3QgcmVzdWx0IGFueSBhbnkgdG9rZW5zIGJlaW5nIGlzc3VlZCBpbnRvIGNpcmN1bGF0aW9uLgoKe3tpc3N1ZXJ9fSB3aWxsIGJlIGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIGludG8gY2lyY3VsYXRpb24sIHVwIHRvIGEgbWF4aW11bSBzdXBwbHkgb2Yge3ttYXhpbXVtX3N1cHBseX19LgoKUkFNIHdpbGwgZGVkdWN0ZWQgZnJvbSB7eyRhY3Rpb24uYWNjb3VudH194oCZcyByZXNvdXJjZXMgdG8gY3JlYXRlIHRoZSBuZWNlc3NhcnkgcmVjb3Jkcy4AAAAAAKUxdgVpc3N1ZeIHLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogSXNzdWUgVG9rZW5zIGludG8gQ2lyY3VsYXRpb24Kc3VtbWFyeTogJ0lzc3VlIHt7bm93cmFwIHF1YW50aXR5fX0gaW50byBjaXJjdWxhdGlvbiBhbmQgdHJhbnNmZXIgaW50byB7e25vd3JhcCB0b3194oCZcyBhY2NvdW50JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3J5cHRva3lsaW4vZW9zaW8uY29udHJhY3RzL3YxLjcuMC9jb250cmFjdHMvaWNvbnMvdG9rZW4ucG5nIzIwN2ZmNjhiMDQwNmVhYTU2NjE4YjA4YmRhODFkNmEwOTU0NTQzZjM2YWRjMzI4YWIzMDY1ZjMxYTVjNWQ2NTQKLS0tCgpUaGUgdG9rZW4gbWFuYWdlciBhZ3JlZXMgdG8gaXNzdWUge3txdWFudGl0eX19IGludG8gY2lyY3VsYXRpb24sIGFuZCB0cmFuc2ZlciBpdCBpbnRvIHt7dG99feKAmXMgYWNjb3VudC4KCnt7I2lmIG1lbW99fVRoZXJlIGlzIGEgbWVtbyBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIgc3RhdGluZzoKe3ttZW1vfX0Ke3svaWZ9fQoKSWYge3t0b319IGRvZXMgbm90IGhhdmUgYSBiYWxhbmNlIGZvciB7e2Fzc2V0X3RvX3N5bWJvbF9jb2RlIHF1YW50aXR5fX0sIG9yIHRoZSB0b2tlbiBtYW5hZ2VyIGRvZXMgbm90IGhhdmUgYSBiYWxhbmNlIGZvciB7e2Fzc2V0X3RvX3N5bWJvbF9jb2RlIHF1YW50aXR5fX0sIHRoZSB0b2tlbiBtYW5hZ2VyIHdpbGwgYmUgZGVzaWduYXRlZCBhcyB0aGUgUkFNIHBheWVyIG9mIHRoZSB7e2Fzc2V0X3RvX3N5bWJvbF9jb2RlIHF1YW50aXR5fX0gdG9rZW4gYmFsYW5jZSBmb3Ige3t0b319LiBBcyBhIHJlc3VsdCwgUkFNIHdpbGwgYmUgZGVkdWN0ZWQgZnJvbSB0aGUgdG9rZW4gbWFuYWdlcuKAmXMgcmVzb3VyY2VzIHRvIGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IHJlY29yZHMuCgpUaGlzIGFjdGlvbiBkb2VzIG5vdCBhbGxvdyB0aGUgdG90YWwgcXVhbnRpdHkgdG8gZXhjZWVkIHRoZSBtYXggYWxsb3dlZCBzdXBwbHkgb2YgdGhlIHRva2VuLgAAAAAAMFWlBG9wZW66BS0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IE9wZW4gVG9rZW4gQmFsYW5jZQpzdW1tYXJ5OiAnT3BlbiBhIHplcm8gcXVhbnRpdHkgYmFsYW5jZSBmb3Ige3tub3dyYXAgb3duZXJ9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2NyeXB0b2t5bGluL2Vvc2lvLmNvbnRyYWN0cy92MS43LjAvY29udHJhY3RzL2ljb25zL3Rva2VuLnBuZyMyMDdmZjY4YjA0MDZlYWE1NjYxOGIwOGJkYTgxZDZhMDk1NDU0M2YzNmFkYzMyOGFiMzA2NWYzMWE1YzVkNjU0Ci0tLQoKe3tyYW1fcGF5ZXJ9fSBhZ3JlZXMgdG8gZXN0YWJsaXNoIGEgemVybyBxdWFudGl0eSBiYWxhbmNlIGZvciB7e293bmVyfX0gZm9yIHRoZSB7e3N5bWJvbF90b19zeW1ib2xfY29kZSBzeW1ib2x9fSB0b2tlbi4KCklmIHt7b3duZXJ9fSBkb2VzIG5vdCBoYXZlIGEgYmFsYW5jZSBmb3Ige3tzeW1ib2xfdG9fc3ltYm9sX2NvZGUgc3ltYm9sfX0sIHt7cmFtX3BheWVyfX0gd2lsbCBiZSBkZXNpZ25hdGVkIGFzIHRoZSBSQU0gcGF5ZXIgb2YgdGhlIHt7c3ltYm9sX3RvX3N5bWJvbF9jb2RlIHN5bWJvbH19IHRva2VuIGJhbGFuY2UgZm9yIHt7b3duZXJ9fS4gQXMgYSByZXN1bHQsIFJBTSB3aWxsIGJlIGRlZHVjdGVkIGZyb20ge3tyYW1fcGF5ZXJ9feKAmXMgcmVzb3VyY2VzIHRvIGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IHJlY29yZHMuAAAAAKjrsroGcmV0aXJl0AMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBSZW1vdmUgVG9rZW5zIGZyb20gQ2lyY3VsYXRpb24Kc3VtbWFyeTogJ1JlbW92ZSB7e25vd3JhcCBxdWFudGl0eX19IGZyb20gY2lyY3VsYXRpb24nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jcnlwdG9reWxpbi9lb3Npby5jb250cmFjdHMvdjEuNy4wL2NvbnRyYWN0cy9pY29ucy90b2tlbi5wbmcjMjA3ZmY2OGIwNDA2ZWFhNTY2MThiMDhiZGE4MWQ2YTA5NTQ1NDNmMzZhZGMzMjhhYjMwNjVmMzFhNWM1ZDY1NAotLS0KClRoZSB0b2tlbiBtYW5hZ2VyIGFncmVlcyB0byByZW1vdmUge3txdWFudGl0eX19IGZyb20gY2lyY3VsYXRpb24sIHRha2VuIGZyb20gdGhlaXIgb3duIGFjY291bnQuCgp7eyNpZiBtZW1vfX0gVGhlcmUgaXMgYSBtZW1vIGF0dGFjaGVkIHRvIHRoZSBhY3Rpb24gc3RhdGluZzoKe3ttZW1vfX0Ke3svaWZ9fQAAAFctPM3NCHRyYW5zZmVyqgctLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBUcmFuc2ZlciBUb2tlbnMKc3VtbWFyeTogJ1NlbmQge3tub3dyYXAgcXVhbnRpdHl9fSBmcm9tIHt7bm93cmFwIGZyb219fSB0byB7e25vd3JhcCB0b319JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3J5cHRva3lsaW4vZW9zaW8uY29udHJhY3RzL3YxLjcuMC9jb250cmFjdHMvaWNvbnMvdHJhbnNmZXIucG5nIzVkZmFkMGRmNzI3NzJlZTFjY2MxNTVlNjcwYzFkMTI0ZjVjNTEyMmYxZDUwMjc1NjVkZjM4YjQxODA0MmQxZGQKLS0tCgp7e2Zyb219fSBhZ3JlZXMgdG8gc2VuZCB7e3F1YW50aXR5fX0gdG8ge3t0b319LgoKe3sjaWYgbWVtb319VGhlcmUgaXMgYSBtZW1vIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2ZlciBzdGF0aW5nOgp7e21lbW99fQp7ey9pZn19CgpJZiB7e2Zyb219fSBpcyBub3QgYWxyZWFkeSB0aGUgUkFNIHBheWVyIG9mIHRoZWlyIHt7YXNzZXRfdG9fc3ltYm9sX2NvZGUgcXVhbnRpdHl9fSB0b2tlbiBiYWxhbmNlLCB7e2Zyb219fSB3aWxsIGJlIGRlc2lnbmF0ZWQgYXMgc3VjaC4gQXMgYSByZXN1bHQsIFJBTSB3aWxsIGJlIGRlZHVjdGVkIGZyb20ge3tmcm9tfX3igJlzIHJlc291cmNlcyB0byByZWZ1bmQgdGhlIG9yaWdpbmFsIFJBTSBwYXllci4KCklmIHt7dG99fSBkb2VzIG5vdCBoYXZlIGEgYmFsYW5jZSBmb3Ige3thc3NldF90b19zeW1ib2xfY29kZSBxdWFudGl0eX19LCB7e2Zyb219fSB3aWxsIGJlIGRlc2lnbmF0ZWQgYXMgdGhlIFJBTSBwYXllciBvZiB0aGUge3thc3NldF90b19zeW1ib2xfY29kZSBxdWFudGl0eX19IHRva2VuIGJhbGFuY2UgZm9yIHt7dG99fS4gQXMgYSByZXN1bHQsIFJBTSB3aWxsIGJlIGRlZHVjdGVkIGZyb20ge3tmcm9tfX3igJlzIHJlc291cmNlcyB0byBjcmVhdGUgdGhlIG5lY2Vzc2FyeSByZWNvcmRzLgIAAAA4T00RMgNpNjQAAAdhY2NvdW50AAAAAACQTcYDaTY0AAAOY3VycmVuY3lfc3RhdHMAAAAAAA==');\nconst abi = ABI.from(abiBlob);\nvar Types;\n(function (Types) {\n let account = class account extends Struct {\n };\n __decorate([\n Struct.field(Asset)\n ], account.prototype, \"balance\", void 0);\n account = __decorate([\n Struct.type('account')\n ], account);\n Types.account = account;\n let close = class close extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], close.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset.Symbol)\n ], close.prototype, \"symbol\", void 0);\n close = __decorate([\n Struct.type('close')\n ], close);\n Types.close = close;\n let create = class create extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], create.prototype, \"issuer\", void 0);\n __decorate([\n Struct.field(Asset)\n ], create.prototype, \"maximum_supply\", void 0);\n create = __decorate([\n Struct.type('create')\n ], create);\n Types.create = create;\n let currency_stats = class currency_stats extends Struct {\n };\n __decorate([\n Struct.field(Asset)\n ], currency_stats.prototype, \"supply\", void 0);\n __decorate([\n Struct.field(Asset)\n ], currency_stats.prototype, \"max_supply\", void 0);\n __decorate([\n Struct.field(Name)\n ], currency_stats.prototype, \"issuer\", void 0);\n currency_stats = __decorate([\n Struct.type('currency_stats')\n ], currency_stats);\n Types.currency_stats = currency_stats;\n let issue = class issue extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], issue.prototype, \"to\", void 0);\n __decorate([\n Struct.field(Asset)\n ], issue.prototype, \"quantity\", void 0);\n __decorate([\n Struct.field('string')\n ], issue.prototype, \"memo\", void 0);\n issue = __decorate([\n Struct.type('issue')\n ], issue);\n Types.issue = issue;\n let open = class open extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], open.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset.Symbol)\n ], open.prototype, \"symbol\", void 0);\n __decorate([\n Struct.field(Name)\n ], open.prototype, \"ram_payer\", void 0);\n open = __decorate([\n Struct.type('open')\n ], open);\n Types.open = open;\n let retire = class retire extends Struct {\n };\n __decorate([\n Struct.field(Asset)\n ], retire.prototype, \"quantity\", void 0);\n __decorate([\n Struct.field('string')\n ], retire.prototype, \"memo\", void 0);\n retire = __decorate([\n Struct.type('retire')\n ], retire);\n Types.retire = retire;\n let transfer = class transfer extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], transfer.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Name)\n ], transfer.prototype, \"to\", void 0);\n __decorate([\n Struct.field(Asset)\n ], transfer.prototype, \"quantity\", void 0);\n __decorate([\n Struct.field('string')\n ], transfer.prototype, \"memo\", void 0);\n transfer = __decorate([\n Struct.type('transfer')\n ], transfer);\n Types.transfer = transfer;\n})(Types || (Types = {}));\nconst TableMap = {\n accounts: Types.account,\n stat: Types.currency_stats,\n};\nclass Contract extends Contract$1 {\n constructor(args) {\n super({\n client: args.client,\n abi: abi,\n account: args.account || Name.from('eosio.token'),\n });\n }\n action(name, data, options) {\n return super.action(name, data, options);\n }\n table(name, scope) {\n return super.table(name, scope, TableMap[name]);\n }\n}\n\nclass Token {\n constructor({ client, contract }) {\n this.client = client;\n this.contract = contract || new Contract({ client });\n this.contractKit = new ContractKit({\n client: client,\n });\n }\n async getContract(contractName) {\n if (contractName) {\n return this.contractKit.load(contractName);\n }\n return this.contract;\n }\n async transfer(from, to, amount, memo = '') {\n const quantity = Asset.from(amount);\n const contract = await this.getContract();\n return contract.action('transfer', {\n from: Name.from(from),\n to: Name.from(to),\n quantity,\n memo,\n });\n }\n async balance(accountName, symbolCode, contractName) {\n const contract = await this.getContract(contractName);\n const table = contract.table('accounts', accountName);\n let tableQuery;\n if (symbolCode) {\n tableQuery = table.get(String(symbolCode), { index_position: 'primary' });\n }\n else {\n tableQuery = table.get();\n }\n return tableQuery\n .then((accountBalance) => {\n if (!accountBalance) {\n throw new Error(`Account ${accountName} does not exist.`);\n }\n if (symbolCode && !accountBalance.balance.symbol.code.equals(symbolCode)) {\n throw new Error(`Symbol '${symbolCode}' does not exist.`);\n }\n return accountBalance?.balance;\n })\n .catch((err) => {\n throw new Error(`Failed to fetch balance for ${accountName}: ${err}`);\n });\n }\n}\n\nexport { Token };\n//# sourceMappingURL=wharfkit-token.m.js.map\n","import { Struct, Authority, isInstanceOf, PublicKey, KeyWeight, PermissionLevel, PermissionLevelWeight, WaitWeight, Blob, ABI, Name, Checksum256, UInt16, UInt32, Asset, UInt8, TimePoint, UInt64, Int64, TimePointSec, Float64, BlockTimestamp, VarUInt, UInt128, Bytes, APIClient } from '@wharfkit/antelope';\nimport { Resources } from '@wharfkit/resources';\nimport { Token } from '@wharfkit/token';\nimport { __decorate } from 'tslib';\nimport { Contract as Contract$1 } from '@wharfkit/contract';\n\nvar Permission_1;\nlet LinkedAction = class LinkedAction extends Struct {\n};\n__decorate([\n Struct.field('name')\n], LinkedAction.prototype, \"account\", void 0);\n__decorate([\n Struct.field('name', { optional: true })\n], LinkedAction.prototype, \"action\", void 0);\nLinkedAction = __decorate([\n Struct.type('linked_actions')\n], LinkedAction);\nlet Permission = Permission_1 = class Permission extends Struct {\n static from(value) {\n if (isInstanceOf(value, Permission_1)) {\n return value;\n }\n return super.from(value);\n }\n get name() {\n return this.perm_name;\n }\n addKey(key, weight = 1) {\n const exists = this.required_auth.keys.find((k) => PublicKey.from(key).equals(k.key));\n if (exists) {\n throw new Error(`The provided key (${String(key)}) already exists on the \"${this.perm_name}\" permission.`);\n }\n this.required_auth.keys.push(KeyWeight.from({\n key: key,\n weight: weight,\n }));\n // Always sort authorities, required by antelopeio/leap\n this.required_auth.sort();\n }\n removeKey(key) {\n const index = this.required_auth.keys.findIndex((k) => PublicKey.from(key).equals(k.key));\n if (index === -1) {\n throw new Error(`The provided key (${String(key)}) does not exist on the \"${this.perm_name}\" permission.`);\n }\n this.required_auth.keys.splice(index, 1);\n }\n addAccount(permissionLevel, weight = 1) {\n const exists = this.required_auth.accounts.find((k) => PermissionLevel.from(permissionLevel).equals(k.permission));\n if (exists) {\n throw new Error(`The provided account (${String(PermissionLevel.from(permissionLevel))}) already exists on the \"${this.perm_name}\" permission.`);\n }\n this.required_auth.accounts.push(PermissionLevelWeight.from({\n permission: PermissionLevel.from(permissionLevel),\n weight: weight,\n }));\n // Always sort authorities, required by antelopeio/leap\n this.required_auth.sort();\n }\n removeAccount(permissionLevel) {\n const index = this.required_auth.accounts.findIndex((a) => PermissionLevel.from(permissionLevel).equals(a.permission));\n if (index === -1) {\n throw new Error(`The provided permission (${String(permissionLevel)}) does not exist on the \"${this.perm_name}\" permission.`);\n }\n this.required_auth.accounts.splice(index, 1);\n }\n addWait(wait) {\n this.required_auth.waits.push(WaitWeight.from(wait));\n // Always sort authorities, required by antelopeio/leap\n this.required_auth.sort();\n }\n removeWait(wait) {\n this.required_auth.waits = this.required_auth.waits.filter((w) => !WaitWeight.from(wait).equals(w));\n }\n};\n__decorate([\n Struct.field('name')\n], Permission.prototype, \"perm_name\", void 0);\n__decorate([\n Struct.field('name')\n], Permission.prototype, \"parent\", void 0);\n__decorate([\n Struct.field(Authority)\n], Permission.prototype, \"required_auth\", void 0);\n__decorate([\n Struct.field(LinkedAction, { array: true, optional: true })\n], Permission.prototype, \"linked_actions\", void 0);\nPermission = Permission_1 = __decorate([\n Struct.type('permission')\n], Permission);\n\nconst abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhdibG9ja19zaWduaW5nX2F1dGhvcml0eSJ2YXJpYW50X2Jsb2NrX3NpZ25pbmdfYXV0aG9yaXR5X3YwF2Jsb2NrY2hhaW5fcGFyYW1ldGVyc190GGJsb2NrY2hhaW5fcGFyYW1ldGVyc192MWcIYWJpX2hhc2gAAgVvd25lcgRuYW1lBGhhc2gLY2hlY2tzdW0yNTYIYWN0aXZhdGUAAQ5mZWF0dXJlX2RpZ2VzdAtjaGVja3N1bTI1NglhdXRob3JpdHkABAl0aHJlc2hvbGQGdWludDMyBGtleXMMa2V5X3dlaWdodFtdCGFjY291bnRzGXBlcm1pc3Npb25fbGV2ZWxfd2VpZ2h0W10Fd2FpdHMNd2FpdF93ZWlnaHRbXQpiaWRfcmVmdW5kAAIGYmlkZGVyBG5hbWUGYW1vdW50BWFzc2V0B2JpZG5hbWUAAwZiaWRkZXIEbmFtZQduZXduYW1lBG5hbWUDYmlkBWFzc2V0CWJpZHJlZnVuZAACBmJpZGRlcgRuYW1lB25ld25hbWUEbmFtZQxibG9ja19oZWFkZXIACAl0aW1lc3RhbXAGdWludDMyCHByb2R1Y2VyBG5hbWUJY29uZmlybWVkBnVpbnQxNghwcmV2aW91cwtjaGVja3N1bTI1NhF0cmFuc2FjdGlvbl9tcm9vdAtjaGVja3N1bTI1NgxhY3Rpb25fbXJvb3QLY2hlY2tzdW0yNTYQc2NoZWR1bGVfdmVyc2lvbgZ1aW50MzINbmV3X3Byb2R1Y2VycxJwcm9kdWNlcl9zY2hlZHVsZT8RYmxvY2tfaW5mb19yZWNvcmQAAwd2ZXJzaW9uBXVpbnQ4DGJsb2NrX2hlaWdodAZ1aW50MzIPYmxvY2tfdGltZXN0YW1wCnRpbWVfcG9pbnQaYmxvY2tfc2lnbmluZ19hdXRob3JpdHlfdjAAAgl0aHJlc2hvbGQGdWludDMyBGtleXMMa2V5X3dlaWdodFtdFWJsb2NrY2hhaW5fcGFyYW1ldGVycwARE21heF9ibG9ja19uZXRfdXNhZ2UGdWludDY0GnRhcmdldF9ibG9ja19uZXRfdXNhZ2VfcGN0BnVpbnQzMhltYXhfdHJhbnNhY3Rpb25fbmV0X3VzYWdlBnVpbnQzMh5iYXNlX3Blcl90cmFuc2FjdGlvbl9uZXRfdXNhZ2UGdWludDMyEG5ldF91c2FnZV9sZWV3YXkGdWludDMyI2NvbnRleHRfZnJlZV9kaXNjb3VudF9uZXRfdXNhZ2VfbnVtBnVpbnQzMiNjb250ZXh0X2ZyZWVfZGlzY291bnRfbmV0X3VzYWdlX2RlbgZ1aW50MzITbWF4X2Jsb2NrX2NwdV91c2FnZQZ1aW50MzIadGFyZ2V0X2Jsb2NrX2NwdV91c2FnZV9wY3QGdWludDMyGW1heF90cmFuc2FjdGlvbl9jcHVfdXNhZ2UGdWludDMyGW1pbl90cmFuc2FjdGlvbl9jcHVfdXNhZ2UGdWludDMyGG1heF90cmFuc2FjdGlvbl9saWZldGltZQZ1aW50MzIeZGVmZXJyZWRfdHJ4X2V4cGlyYXRpb25fd2luZG93BnVpbnQzMhVtYXhfdHJhbnNhY3Rpb25fZGVsYXkGdWludDMyFm1heF9pbmxpbmVfYWN0aW9uX3NpemUGdWludDMyF21heF9pbmxpbmVfYWN0aW9uX2RlcHRoBnVpbnQxNhNtYXhfYXV0aG9yaXR5X2RlcHRoBnVpbnQxNhhibG9ja2NoYWluX3BhcmFtZXRlcnNfdjEVYmxvY2tjaGFpbl9wYXJhbWV0ZXJzARxtYXhfYWN0aW9uX3JldHVybl92YWx1ZV9zaXplB3VpbnQzMiQGYnV5cmFtAAMFcGF5ZXIEbmFtZQhyZWNlaXZlcgRuYW1lBXF1YW50BWFzc2V0C2J1eXJhbWJ5dGVzAAMFcGF5ZXIEbmFtZQhyZWNlaXZlcgRuYW1lBWJ5dGVzBnVpbnQzMgZidXlyZXgAAgRmcm9tBG5hbWUGYW1vdW50BWFzc2V0C2NhbmNlbGRlbGF5AAIOY2FuY2VsaW5nX2F1dGgQcGVybWlzc2lvbl9sZXZlbAZ0cnhfaWQLY2hlY2tzdW0yNTYKY2ZncG93ZXJ1cAABBGFyZ3MOcG93ZXJ1cF9jb25maWcMY2xhaW1yZXdhcmRzAAEFb3duZXIEbmFtZQhjbG9zZXJleAABBW93bmVyBG5hbWUMY25jbHJleG9yZGVyAAEFb3duZXIEbmFtZQljb25uZWN0b3IAAgdiYWxhbmNlBWFzc2V0BndlaWdodAdmbG9hdDY0C2NvbnNvbGlkYXRlAAEFb3duZXIEbmFtZQpkZWZjcHVsb2FuAAMEZnJvbQRuYW1lCGxvYW5fbnVtBnVpbnQ2NAZhbW91bnQFYXNzZXQKZGVmbmV0bG9hbgADBGZyb20EbmFtZQhsb2FuX251bQZ1aW50NjQGYW1vdW50BWFzc2V0CmRlbGVnYXRlYncABQRmcm9tBG5hbWUIcmVjZWl2ZXIEbmFtZRJzdGFrZV9uZXRfcXVhbnRpdHkFYXNzZXQSc3Rha2VfY3B1X3F1YW50aXR5BWFzc2V0CHRyYW5zZmVyBGJvb2wTZGVsZWdhdGVkX2JhbmR3aWR0aAAEBGZyb20EbmFtZQJ0bwRuYW1lCm5ldF93ZWlnaHQFYXNzZXQKY3B1X3dlaWdodAVhc3NldApkZWxldGVhdXRoAAMHYWNjb3VudARuYW1lCnBlcm1pc3Npb24EbmFtZQ1hdXRob3JpemVkX2J5BW5hbWUkB2RlcG9zaXQAAgVvd25lcgRuYW1lBmFtb3VudAVhc3NldBJlb3Npb19nbG9iYWxfc3RhdGUVYmxvY2tjaGFpbl9wYXJhbWV0ZXJzDQxtYXhfcmFtX3NpemUGdWludDY0GHRvdGFsX3JhbV9ieXRlc19yZXNlcnZlZAZ1aW50NjQPdG90YWxfcmFtX3N0YWtlBWludDY0HWxhc3RfcHJvZHVjZXJfc2NoZWR1bGVfdXBkYXRlFGJsb2NrX3RpbWVzdGFtcF90eXBlGGxhc3RfcGVydm90ZV9idWNrZXRfZmlsbAp0aW1lX3BvaW50DnBlcnZvdGVfYnVja2V0BWludDY0D3BlcmJsb2NrX2J1Y2tldAVpbnQ2NBN0b3RhbF91bnBhaWRfYmxvY2tzBnVpbnQzMhV0b3RhbF9hY3RpdmF0ZWRfc3Rha2UFaW50NjQbdGhyZXNoX2FjdGl2YXRlZF9zdGFrZV90aW1lCnRpbWVfcG9pbnQbbGFzdF9wcm9kdWNlcl9zY2hlZHVsZV9zaXplBnVpbnQxNhp0b3RhbF9wcm9kdWNlcl92b3RlX3dlaWdodAdmbG9hdDY0D2xhc3RfbmFtZV9jbG9zZRRibG9ja190aW1lc3RhbXBfdHlwZRNlb3Npb19nbG9iYWxfc3RhdGUyAAURbmV3X3JhbV9wZXJfYmxvY2sGdWludDE2EWxhc3RfcmFtX2luY3JlYXNlFGJsb2NrX3RpbWVzdGFtcF90eXBlDmxhc3RfYmxvY2tfbnVtFGJsb2NrX3RpbWVzdGFtcF90eXBlHHRvdGFsX3Byb2R1Y2VyX3ZvdGVwYXlfc2hhcmUHZmxvYXQ2NAhyZXZpc2lvbgV1aW50OBNlb3Npb19nbG9iYWxfc3RhdGUzAAIWbGFzdF92cGF5X3N0YXRlX3VwZGF0ZQp0aW1lX3BvaW50HHRvdGFsX3ZwYXlfc2hhcmVfY2hhbmdlX3JhdGUHZmxvYXQ2NBNlb3Npb19nbG9iYWxfc3RhdGU0AAMPY29udGludW91c19yYXRlB2Zsb2F0NjQUaW5mbGF0aW9uX3BheV9mYWN0b3IFaW50NjQOdm90ZXBheV9mYWN0b3IFaW50NjQOZXhjaGFuZ2Vfc3RhdGUAAwZzdXBwbHkFYXNzZXQEYmFzZQljb25uZWN0b3IFcXVvdGUJY29ubmVjdG9yC2Z1bmRjcHVsb2FuAAMEZnJvbQRuYW1lCGxvYW5fbnVtBnVpbnQ2NAdwYXltZW50BWFzc2V0C2Z1bmRuZXRsb2FuAAMEZnJvbQRuYW1lCGxvYW5fbnVtBnVpbnQ2NAdwYXltZW50BWFzc2V0BGluaXQAAgd2ZXJzaW9uCXZhcnVpbnQzMgRjb3JlBnN5bWJvbAprZXlfd2VpZ2h0AAIDa2V5CnB1YmxpY19rZXkGd2VpZ2h0BnVpbnQxNgxsaW1pdGF1dGhjaGcAAwdhY2NvdW50BG5hbWULYWxsb3dfcGVybXMGbmFtZVtdDmRpc2FsbG93X3Blcm1zBm5hbWVbXQhsaW5rYXV0aAAFB2FjY291bnQEbmFtZQRjb2RlBG5hbWUEdHlwZQRuYW1lC3JlcXVpcmVtZW50BG5hbWUNYXV0aG9yaXplZF9ieQVuYW1lJAttdmZyc2F2aW5ncwACBW93bmVyBG5hbWUDcmV4BWFzc2V0C212dG9zYXZpbmdzAAIFb3duZXIEbmFtZQNyZXgFYXNzZXQIbmFtZV9iaWQABAduZXduYW1lBG5hbWULaGlnaF9iaWRkZXIEbmFtZQhoaWdoX2JpZAVpbnQ2NA1sYXN0X2JpZF90aW1lCnRpbWVfcG9pbnQKbmV3YWNjb3VudAAEB2NyZWF0b3IEbmFtZQRuYW1lBG5hbWUFb3duZXIJYXV0aG9yaXR5BmFjdGl2ZQlhdXRob3JpdHkHb25ibG9jawABBmhlYWRlcgxibG9ja19oZWFkZXIHb25lcnJvcgACCXNlbmRlcl9pZAd1aW50MTI4CHNlbnRfdHJ4BWJ5dGVzGXBhaXJfdGltZV9wb2ludF9zZWNfaW50NjQAAgVmaXJzdA50aW1lX3BvaW50X3NlYwZzZWNvbmQFaW50NjQQcGVybWlzc2lvbl9sZXZlbAACBWFjdG9yBG5hbWUKcGVybWlzc2lvbgRuYW1lF3Blcm1pc3Npb25fbGV2ZWxfd2VpZ2h0AAIKcGVybWlzc2lvbhBwZXJtaXNzaW9uX2xldmVsBndlaWdodAZ1aW50MTYHcG93ZXJ1cAAGBXBheWVyBG5hbWUIcmVjZWl2ZXIEbmFtZQRkYXlzBnVpbnQzMghuZXRfZnJhYwVpbnQ2NAhjcHVfZnJhYwVpbnQ2NAttYXhfcGF5bWVudAVhc3NldA5wb3dlcnVwX2NvbmZpZwAEA25ldBdwb3dlcnVwX2NvbmZpZ19yZXNvdXJjZQNjcHUXcG93ZXJ1cF9jb25maWdfcmVzb3VyY2UMcG93ZXJ1cF9kYXlzB3VpbnQzMj8PbWluX3Bvd2VydXBfZmVlBmFzc2V0Pxdwb3dlcnVwX2NvbmZpZ19yZXNvdXJjZQAIFGN1cnJlbnRfd2VpZ2h0X3JhdGlvBmludDY0PxN0YXJnZXRfd2VpZ2h0X3JhdGlvBmludDY0PxRhc3N1bWVkX3N0YWtlX3dlaWdodAZpbnQ2ND8QdGFyZ2V0X3RpbWVzdGFtcA90aW1lX3BvaW50X3NlYz8IZXhwb25lbnQIZmxvYXQ2ND8KZGVjYXlfc2Vjcwd1aW50MzI/CW1pbl9wcmljZQZhc3NldD8JbWF4X3ByaWNlBmFzc2V0Pw1wb3dlcnVwX29yZGVyAAYHdmVyc2lvbgV1aW50OAJpZAZ1aW50NjQFb3duZXIEbmFtZQpuZXRfd2VpZ2h0BWludDY0CmNwdV93ZWlnaHQFaW50NjQHZXhwaXJlcw50aW1lX3BvaW50X3NlYw1wb3dlcnVwX3N0YXRlAAUHdmVyc2lvbgV1aW50OANuZXQWcG93ZXJ1cF9zdGF0ZV9yZXNvdXJjZQNjcHUWcG93ZXJ1cF9zdGF0ZV9yZXNvdXJjZQxwb3dlcnVwX2RheXMGdWludDMyD21pbl9wb3dlcnVwX2ZlZQVhc3NldBZwb3dlcnVwX3N0YXRlX3Jlc291cmNlAA8HdmVyc2lvbgV1aW50OAZ3ZWlnaHQFaW50NjQMd2VpZ2h0X3JhdGlvBWludDY0FGFzc3VtZWRfc3Rha2Vfd2VpZ2h0BWludDY0FGluaXRpYWxfd2VpZ2h0X3JhdGlvBWludDY0E3RhcmdldF93ZWlnaHRfcmF0aW8FaW50NjQRaW5pdGlhbF90aW1lc3RhbXAOdGltZV9wb2ludF9zZWMQdGFyZ2V0X3RpbWVzdGFtcA50aW1lX3BvaW50X3NlYwhleHBvbmVudAdmbG9hdDY0CmRlY2F5X3NlY3MGdWludDMyCW1pbl9wcmljZQVhc3NldAltYXhfcHJpY2UFYXNzZXQLdXRpbGl6YXRpb24FaW50NjQUYWRqdXN0ZWRfdXRpbGl6YXRpb24FaW50NjQVdXRpbGl6YXRpb25fdGltZXN0YW1wDnRpbWVfcG9pbnRfc2VjC3Bvd2VydXBleGVjAAIEdXNlcgRuYW1lA21heAZ1aW50MTYNcHJvZHVjZXJfaW5mbwAJBW93bmVyBG5hbWULdG90YWxfdm90ZXMHZmxvYXQ2NAxwcm9kdWNlcl9rZXkKcHVibGljX2tleQlpc19hY3RpdmUEYm9vbAN1cmwGc3RyaW5nDXVucGFpZF9ibG9ja3MGdWludDMyD2xhc3RfY2xhaW1fdGltZQp0aW1lX3BvaW50CGxvY2F0aW9uBnVpbnQxNhJwcm9kdWNlcl9hdXRob3JpdHkYYmxvY2tfc2lnbmluZ19hdXRob3JpdHkkDnByb2R1Y2VyX2luZm8yAAMFb3duZXIEbmFtZQ12b3RlcGF5X3NoYXJlB2Zsb2F0NjQZbGFzdF92b3RlcGF5X3NoYXJlX3VwZGF0ZQp0aW1lX3BvaW50DHByb2R1Y2VyX2tleQACDXByb2R1Y2VyX25hbWUEbmFtZRFibG9ja19zaWduaW5nX2tleQpwdWJsaWNfa2V5EXByb2R1Y2VyX3NjaGVkdWxlAAIHdmVyc2lvbgZ1aW50MzIJcHJvZHVjZXJzDnByb2R1Y2VyX2tleVtdBnJlZnVuZAABBW93bmVyBG5hbWUOcmVmdW5kX3JlcXVlc3QABAVvd25lcgRuYW1lDHJlcXVlc3RfdGltZQ50aW1lX3BvaW50X3NlYwpuZXRfYW1vdW50BWFzc2V0CmNwdV9hbW91bnQFYXNzZXQLcmVncHJvZHVjZXIABAhwcm9kdWNlcgRuYW1lDHByb2R1Y2VyX2tleQpwdWJsaWNfa2V5A3VybAZzdHJpbmcIbG9jYXRpb24GdWludDE2DHJlZ3Byb2R1Y2VyMgAECHByb2R1Y2VyBG5hbWUScHJvZHVjZXJfYXV0aG9yaXR5F2Jsb2NrX3NpZ25pbmdfYXV0aG9yaXR5A3VybAZzdHJpbmcIbG9jYXRpb24GdWludDE2CHJlZ3Byb3h5AAIFcHJveHkEbmFtZQdpc3Byb3h5BGJvb2wHcmVudGNwdQAEBGZyb20EbmFtZQhyZWNlaXZlcgRuYW1lDGxvYW5fcGF5bWVudAVhc3NldAlsb2FuX2Z1bmQFYXNzZXQHcmVudG5ldAAEBGZyb20EbmFtZQhyZWNlaXZlcgRuYW1lDGxvYW5fcGF5bWVudAVhc3NldAlsb2FuX2Z1bmQFYXNzZXQLcmV4X2JhbGFuY2UABgd2ZXJzaW9uBXVpbnQ4BW93bmVyBG5hbWUKdm90ZV9zdGFrZQVhc3NldAtyZXhfYmFsYW5jZQVhc3NldAttYXR1cmVkX3JleAVpbnQ2NA5yZXhfbWF0dXJpdGllcxtwYWlyX3RpbWVfcG9pbnRfc2VjX2ludDY0W10IcmV4X2Z1bmQAAwd2ZXJzaW9uBXVpbnQ4BW93bmVyBG5hbWUHYmFsYW5jZQVhc3NldAhyZXhfbG9hbgAIB3ZlcnNpb24FdWludDgEZnJvbQRuYW1lCHJlY2VpdmVyBG5hbWUHcGF5bWVudAVhc3NldAdiYWxhbmNlBWFzc2V0DHRvdGFsX3N0YWtlZAVhc3NldAhsb2FuX251bQZ1aW50NjQKZXhwaXJhdGlvbgp0aW1lX3BvaW50CXJleF9vcmRlcgAHB3ZlcnNpb24FdWludDgFb3duZXIEbmFtZQ1yZXhfcmVxdWVzdGVkBWFzc2V0CHByb2NlZWRzBWFzc2V0DHN0YWtlX2NoYW5nZQVhc3NldApvcmRlcl90aW1lCnRpbWVfcG9pbnQHaXNfb3BlbgRib29sCHJleF9wb29sAAgHdmVyc2lvbgV1aW50OAp0b3RhbF9sZW50BWFzc2V0DHRvdGFsX3VubGVudAVhc3NldAp0b3RhbF9yZW50BWFzc2V0DnRvdGFsX2xlbmRhYmxlBWFzc2V0CXRvdGFsX3JleAVhc3NldBBuYW1lYmlkX3Byb2NlZWRzBWFzc2V0CGxvYW5fbnVtBnVpbnQ2NBJyZXhfcmV0dXJuX2J1Y2tldHMAAgd2ZXJzaW9uBXVpbnQ4DnJldHVybl9idWNrZXRzG3BhaXJfdGltZV9wb2ludF9zZWNfaW50NjRbXQ9yZXhfcmV0dXJuX3Bvb2wABwd2ZXJzaW9uBXVpbnQ4Dmxhc3RfZGlzdF90aW1lDnRpbWVfcG9pbnRfc2VjE3BlbmRpbmdfYnVja2V0X3RpbWUOdGltZV9wb2ludF9zZWMSb2xkZXN0X2J1Y2tldF90aW1lDnRpbWVfcG9pbnRfc2VjF3BlbmRpbmdfYnVja2V0X3Byb2NlZWRzBWludDY0GGN1cnJlbnRfcmF0ZV9vZl9pbmNyZWFzZQVpbnQ2NAhwcm9jZWVkcwVpbnQ2NAdyZXhleGVjAAIEdXNlcgRuYW1lA21heAZ1aW50MTYLcm12cHJvZHVjZXIAAQhwcm9kdWNlcgRuYW1lB3NlbGxyYW0AAgdhY2NvdW50BG5hbWUFYnl0ZXMFaW50NjQHc2VsbHJleAACBGZyb20EbmFtZQNyZXgFYXNzZXQGc2V0YWJpAAMHYWNjb3VudARuYW1lA2FiaQVieXRlcwRtZW1vB3N0cmluZyQKc2V0YWNjdGNwdQACB2FjY291bnQEbmFtZQpjcHVfd2VpZ2h0BmludDY0PwpzZXRhY2N0bmV0AAIHYWNjb3VudARuYW1lCm5ldF93ZWlnaHQGaW50NjQ/CnNldGFjY3RyYW0AAgdhY2NvdW50BG5hbWUJcmFtX2J5dGVzBmludDY0PwpzZXRhbGltaXRzAAQHYWNjb3VudARuYW1lCXJhbV9ieXRlcwVpbnQ2NApuZXRfd2VpZ2h0BWludDY0CmNwdV93ZWlnaHQFaW50NjQHc2V0Y29kZQAFB2FjY291bnQEbmFtZQZ2bXR5cGUFdWludDgJdm12ZXJzaW9uBXVpbnQ4BGNvZGUFYnl0ZXMEbWVtbwdzdHJpbmckDHNldGluZmxhdGlvbgADC2FubnVhbF9yYXRlBWludDY0FGluZmxhdGlvbl9wYXlfZmFjdG9yBWludDY0DnZvdGVwYXlfZmFjdG9yBWludDY0CXNldHBhcmFtcwABBnBhcmFtcxdibG9ja2NoYWluX3BhcmFtZXRlcnNfdAdzZXRwcml2AAIHYWNjb3VudARuYW1lB2lzX3ByaXYFdWludDgGc2V0cmFtAAEMbWF4X3JhbV9zaXplBnVpbnQ2NApzZXRyYW1yYXRlAAEPYnl0ZXNfcGVyX2Jsb2NrBnVpbnQxNgZzZXRyZXgAAQdiYWxhbmNlBWFzc2V0DHVuZGVsZWdhdGVidwAEBGZyb20EbmFtZQhyZWNlaXZlcgRuYW1lFHVuc3Rha2VfbmV0X3F1YW50aXR5BWFzc2V0FHVuc3Rha2VfY3B1X3F1YW50aXR5BWFzc2V0CnVubGlua2F1dGgABAdhY2NvdW50BG5hbWUEY29kZQRuYW1lBHR5cGUEbmFtZQ1hdXRob3JpemVkX2J5BW5hbWUkCXVucmVncHJvZAABCHByb2R1Y2VyBG5hbWUMdW5zdGFrZXRvcmV4AAQFb3duZXIEbmFtZQhyZWNlaXZlcgRuYW1lCGZyb21fbmV0BWFzc2V0CGZyb21fY3B1BWFzc2V0CnVwZGF0ZWF1dGgABQdhY2NvdW50BG5hbWUKcGVybWlzc2lvbgRuYW1lBnBhcmVudARuYW1lBGF1dGgJYXV0aG9yaXR5DWF1dGhvcml6ZWRfYnkFbmFtZSQJdXBkYXRlcmV4AAEFb3duZXIEbmFtZQx1cGR0cmV2aXNpb24AAQhyZXZpc2lvbgV1aW50OA51c2VyX3Jlc291cmNlcwAEBW93bmVyBG5hbWUKbmV0X3dlaWdodAVhc3NldApjcHVfd2VpZ2h0BWFzc2V0CXJhbV9ieXRlcwVpbnQ2NAx2b3RlcHJvZHVjZXIAAwV2b3RlcgRuYW1lBXByb3h5BG5hbWUJcHJvZHVjZXJzBm5hbWVbXQp2b3Rlcl9pbmZvAAoFb3duZXIEbmFtZQVwcm94eQRuYW1lCXByb2R1Y2VycwZuYW1lW10Gc3Rha2VkBWludDY0EGxhc3Rfdm90ZV93ZWlnaHQHZmxvYXQ2NBNwcm94aWVkX3ZvdGVfd2VpZ2h0B2Zsb2F0NjQIaXNfcHJveHkEYm9vbAZmbGFnczEGdWludDMyCXJlc2VydmVkMgZ1aW50MzIJcmVzZXJ2ZWQzBWFzc2V0CnZvdGV1cGRhdGUAAQp2b3Rlcl9uYW1lBG5hbWULd2FpdF93ZWlnaHQAAgh3YWl0X3NlYwZ1aW50MzIGd2VpZ2h0BnVpbnQxNgd3YXNtY2ZnAAEIc2V0dGluZ3MEbmFtZQh3aXRoZHJhdwACBW93bmVyBG5hbWUGYW1vdW50BWFzc2V0EWxpbWl0X2F1dGhfY2hhbmdlAAQHdmVyc2lvbgV1aW50OAdhY2NvdW50BG5hbWULYWxsb3dfcGVybXMGbmFtZVtdDmRpc2FsbG93X3Blcm1zBm5hbWVbXT4AAAAqm+0yMghhY3RpdmF0ZYgDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQWN0aXZhdGUgUHJvdG9jb2wgRmVhdHVyZQpzdW1tYXJ5OiAnQWN0aXZhdGUgcHJvdG9jb2wgZmVhdHVyZSB7e25vd3JhcCBmZWF0dXJlX2RpZ2VzdH19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvYWRtaW4ucG5nIzliZjFjZWM2NjQ4NjNiZDZhYWFjMGY4MTRiMjM1Zjg3OTlmYjAyYzg1MGU5YWE1ZGEzNGU4YTAwNGJkNjUxOGUKLS0tCgp7eyRhY3Rpb24uYWNjb3VudH19IGFjdGl2YXRlcyB0aGUgcHJvdG9jb2wgZmVhdHVyZSB3aXRoIGEgZGlnZXN0IG9mIHt7ZmVhdHVyZV9kaWdlc3R9fS4AAABASTOTOwdiaWRuYW1lqQ4tLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBCaWQgT24gYSBQcmVtaXVtIEFjY291bnQgTmFtZQpzdW1tYXJ5OiAne3tub3dyYXAgYmlkZGVyfX0gYmlkcyBvbiB0aGUgcHJlbWl1bSBhY2NvdW50IG5hbWUge3tub3dyYXAgbmV3bmFtZX19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvYWNjb3VudC5wbmcjM2Q1NWEyZmMzYTVjMjBiNDU2ZjU2NTdmYWY2NjZiYzI1ZmZkMDZmNDgzNmM1ZTgyNTZmNzQxMTQ5YjBiMjk0ZgotLS0KCnt7YmlkZGVyfX0gYmlkcyB7e2JpZH19IG9uIGFuIGF1Y3Rpb24gdG8gb3duIHRoZSBwcmVtaXVtIGFjY291bnQgbmFtZSB7e25ld25hbWV9fS4KCnt7YmlkZGVyfX0gdHJhbnNmZXJzIHt7YmlkfX0gdG8gdGhlIHN5c3RlbSB0byBjb3ZlciB0aGUgY29zdCBvZiB0aGUgYmlkLCB3aGljaCB3aWxsIGJlIHJldHVybmVkIHRvIHt7YmlkZGVyfX0gb25seSBpZiB7e2JpZGRlcn19IGlzIGxhdGVyIG91dGJpZCBpbiB0aGUgYXVjdGlvbiBmb3Ige3tuZXduYW1lfX0gYnkgYW5vdGhlciBhY2NvdW50LgoKSWYgdGhlIGF1Y3Rpb24gZm9yIHt7bmV3bmFtZX19IGNsb3NlcyB3aXRoIHt7YmlkZGVyfX0gcmVtYWluaW5nIGFzIHRoZSBoaWdoZXN0IGJpZGRlciwge3tiaWRkZXJ9fSB3aWxsIGJlIGF1dGhvcml6ZWQgdG8gY3JlYXRlIHRoZSBhY2NvdW50IHdpdGggbmFtZSB7e25ld25hbWV9fS4KCiMjIEJpZCByZWZ1bmQgYmVoYXZpb3IKCklmIHt7YmlkZGVyfX3igJlzIGJpZCBvbiB7e25ld25hbWV9fSBpcyBsYXRlciBvdXRiaWQgYnkgYW5vdGhlciBhY2NvdW50LCB7e2JpZGRlcn19IHdpbGwgYmUgYWJsZSB0byBjbGFpbSBiYWNrIHRoZSB0cmFuc2ZlcnJlZCBhbW91bnQgb2Yge3tiaWR9fS4gVGhlIHN5c3RlbSB3aWxsIGF0dGVtcHQgdG8gYXV0b21hdGljYWxseSBkbyB0aGlzIG9uIGJlaGFsZiBvZiB7e2JpZGRlcn19LCBidXQgdGhlIGF1dG9tYXRpYyByZWZ1bmQgbWF5IG9jY2FzaW9uYWxseSBmYWlsIHdoaWNoIHdpbGwgdGhlbiByZXF1aXJlIHt7YmlkZGVyfX0gdG8gbWFudWFsbHkgY2xhaW0gdGhlIHJlZnVuZCB3aXRoIHRoZSBiaWRyZWZ1bmQgYWN0aW9uLgoKIyMgQXVjdGlvbiBjbG9zZSBjcml0ZXJpYQoKVGhlIHN5c3RlbSBzaG91bGQgYXV0b21hdGljYWxseSBjbG9zZSB0aGUgYXVjdGlvbiBmb3Ige3tuZXduYW1lfX0gaWYgaXQgc2F0aXNmaWVzIHRoZSBjb25kaXRpb24gdGhhdCBvdmVyIGEgcGVyaW9kIG9mIHR3byBtaW51dGVzIHRoZSBmb2xsb3dpbmcgdHdvIHByb3BlcnRpZXMgY29udGludW91c2x5IGhvbGQ6CgotIG5vIG9uZSBoYXMgYmlkIG9uIHt7bmV3bmFtZX19IHdpdGhpbiB0aGUgbGFzdCAyNCBob3VyczsKLSBhbmQsIHRoZSB2YWx1ZSBvZiB0aGUgbGF0ZXN0IGJpZCBvbiB7e25ld25hbWV9fSBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIHRoZSBiaWRzIG9uIGVhY2ggb2YgdGhlIG90aGVyIG9wZW4gYXVjdGlvbnMuCgpCZSBhd2FyZSB0aGF0IHRoZSBjb25kaXRpb24gdG8gY2xvc2UgdGhlIGF1Y3Rpb24gZGVzY3JpYmVkIGFib3ZlIGFyZSBzdWZmaWNpZW50IGJ1dCBub3QgbmVjZXNzYXJ5LiBUaGUgYXVjdGlvbiBmb3Ige3tuZXduYW1lfX0gY2Fubm90IGNsb3NlIHVubGVzcyBib3RoIG9mIHRoZSBwcm9wZXJ0aWVzIGFyZSBzaW11bHRhbmVvdXNseSBzYXRpc2ZpZWQsIGJ1dCBpdCBtYXkgYmUgY2xvc2VkIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSBwcm9wZXJ0aWVzIHRvIGhvbGQgZm9yIGEgcGVyaW9kIG9mIDIgbWludXRlcy4AAEhTL3WTOwliaWRyZWZ1bmT0Ai0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IENsYWltIFJlZnVuZCBvbiBOYW1lIEJpZApzdW1tYXJ5OiAnQ2xhaW0gcmVmdW5kIG9uIHt7bm93cmFwIG5ld25hbWV9fSBiaWQnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hY2NvdW50LnBuZyMzZDU1YTJmYzNhNWMyMGI0NTZmNTY1N2ZhZjY2NmJjMjVmZmQwNmY0ODM2YzVlODI1NmY3NDExNDliMGIyOTRmCi0tLQoKe3tiaWRkZXJ9fSBjbGFpbXMgcmVmdW5kIG9uIHt7bmV3bmFtZX19IGJpZCBhZnRlciBiZWluZyBvdXRiaWQgYnkgc29tZW9uZSBlbHNlLgAAAABIc70+BmJ1eXJhbfoDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQnV5IFJBTQpzdW1tYXJ5OiAne3tub3dyYXAgcGF5ZXJ9fSBidXlzIFJBTSBvbiBiZWhhbGYgb2Yge3tub3dyYXAgcmVjZWl2ZXJ9fSBieSBwYXlpbmcge3tub3dyYXAgcXVhbnR9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3Jlc291cmNlLnBuZyMzODMwZjFjZThjYjA3Zjc3NTdkYmNmMzgzYjFlYzFiMTE5MTRhYzM0YTFmOWQ4YjA2NWYwNzYwMGZhOWRhYzE5Ci0tLQoKe3twYXllcn19IGJ1eXMgUkFNIG9uIGJlaGFsZiBvZiB7e3JlY2VpdmVyfX0gYnkgcGF5aW5nIHt7cXVhbnR9fS4gVGhpcyB0cmFuc2FjdGlvbiB3aWxsIGluY3VyIGEgMC41JSBmZWUgb3V0IG9mIHt7cXVhbnR9fSBhbmQgdGhlIGFtb3VudCBvZiBSQU0gZGVsaXZlcmVkIHdpbGwgZGVwZW5kIG9uIG1hcmtldCByYXRlcy4AsMr+SHO9PgtidXlyYW1ieXRlc4EELS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQnV5IFJBTQpzdW1tYXJ5OiAne3tub3dyYXAgcGF5ZXJ9fSBidXlzIHt7bm93cmFwIGJ5dGVzfX0gYnl0ZXMgb2YgUkFNIG9uIGJlaGFsZiBvZiB7e25vd3JhcCByZWNlaXZlcn19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmVzb3VyY2UucG5nIzM4MzBmMWNlOGNiMDdmNzc1N2RiY2YzODNiMWVjMWIxMTkxNGFjMzRhMWY5ZDhiMDY1ZjA3NjAwZmE5ZGFjMTkKLS0tCgp7e3BheWVyfX0gYnV5cyBhcHByb3hpbWF0ZWx5IHt7Ynl0ZXN9fSBieXRlcyBvZiBSQU0gb24gYmVoYWxmIG9mIHt7cmVjZWl2ZXJ9fSBieSBwYXlpbmcgbWFya2V0IHJhdGVzIGZvciBSQU0uIFRoaXMgdHJhbnNhY3Rpb24gd2lsbCBpbmN1ciBhIDAuNSUgZmVlIGFuZCB0aGUgY29zdCB3aWxsIGRlcGVuZCBvbiBtYXJrZXQgcmF0ZXMuAAAAAHR1vT4GYnV5cmV41wYtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBCdXkgUkVYIFRva2VucwpzdW1tYXJ5OiAne3tub3dyYXAgZnJvbX19IGJ1eXMgUkVYIHRva2VucyBpbiBleGNoYW5nZSBmb3Ige3tub3dyYXAgYW1vdW50fX0gYW5kIHRoZWlyIHZvdGUgc3Rha2UgaW5jcmVhc2VzIGJ5IHt7bm93cmFwIGFtb3VudH19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmV4LnBuZyNkMjI5ODM3ZmE2MmE0NjRiOWM3MWUwNjA2MGFhODYxNzlhZGYwYjNmNGUzYjhjNGY5NzAyZjRmNGIwYzM0MGE4Ci0tLQoKe3thbW91bnR9fSBpcyB0YWtlbiBvdXQgb2Yge3tmcm9tfX3igJlzIFJFWCBmdW5kIGFuZCB1c2VkIHRvIHB1cmNoYXNlIFJFWCB0b2tlbnMgYXQgdGhlIGN1cnJlbnQgbWFya2V0IGV4Y2hhbmdlIHJhdGUuIEluIG9yZGVyIGZvciB0aGUgYWN0aW9uIHRvIHN1Y2NlZWQsIHt7ZnJvbX19IG11c3QgaGF2ZSB2b3RlZCBmb3IgYSBwcm94eSBvciBhdCBsZWFzdCAyMSBibG9jayBwcm9kdWNlcnMuIHt7YW1vdW50fX0gaXMgYWRkZWQgdG8ge3tmcm9tfX3igJlzIHZvdGUgc3Rha2UuCgpBIHNlbGwgb3JkZXIgb2YgdGhlIHB1cmNoYXNlZCBhbW91bnQgY2FuIG9ubHkgYmUgaW5pdGlhdGVkIGFmdGVyIHdhaXRpbmcgZm9yIHRoZSBtYXR1cml0eSBwZXJpb2Qgb2YgNCB0byA1IGRheXMgdG8gcGFzcy4gRXZlbiB0aGVuLCBkZXBlbmRpbmcgb24gdGhlIG1hcmtldCBjb25kaXRpb25zLCB0aGUgaW5pdGlhdGVkIHNlbGwgb3JkZXIgbWF5IG5vdCBiZSBleGVjdXRlZCBpbW1lZGlhdGVseS4AvIkqRYWmQQtjYW5jZWxkZWxheYoDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQ2FuY2VsIERlbGF5ZWQgVHJhbnNhY3Rpb24Kc3VtbWFyeTogJ3t7bm93cmFwIGNhbmNlbGluZ19hdXRoLmFjdG9yfX0gY2FuY2VscyBhIGRlbGF5ZWQgdHJhbnNhY3Rpb24nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hY2NvdW50LnBuZyMzZDU1YTJmYzNhNWMyMGI0NTZmNTY1N2ZhZjY2NmJjMjVmZmQwNmY0ODM2YzVlODI1NmY3NDExNDliMGIyOTRmCi0tLQoKe3tjYW5jZWxpbmdfYXV0aC5hY3Rvcn19IGNhbmNlbHMgdGhlIGRlbGF5ZWQgdHJhbnNhY3Rpb24gd2l0aCBpZCB7e3RyeF9pZH19LgBA1VdxWtlCCmNmZ3Bvd2VydXAAgNM1XF3pTEQMY2xhaW1yZXdhcmRz5wItLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBDbGFpbSBCbG9jayBQcm9kdWNlciBSZXdhcmRzCnN1bW1hcnk6ICd7e25vd3JhcCBvd25lcn19IGNsYWltcyBibG9jayBhbmQgdm90ZSByZXdhcmRzJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvYWRtaW4ucG5nIzliZjFjZWM2NjQ4NjNiZDZhYWFjMGY4MTRiMjM1Zjg3OTlmYjAyYzg1MGU5YWE1ZGEzNGU4YTAwNGJkNjUxOGUKLS0tCgp7e293bmVyfX0gY2xhaW1zIGJsb2NrIGFuZCB2b3RlIHJld2FyZHMgZnJvbSB0aGUgc3lzdGVtLgAAAF1dhWlECGNsb3NlcmV4lAQtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBDbGVhbnVwIFVudXNlZCBSRVggRGF0YQpzdW1tYXJ5OiAnRGVsZXRlIFJFWCByZWxhdGVkIERCIGVudHJpZXMgYW5kIGZyZWUgYXNzb2NpYXRlZCBSQU0nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9yZXgucG5nI2QyMjk4MzdmYTYyYTQ2NGI5YzcxZTA2MDYwYWE4NjE3OWFkZjBiM2Y0ZTNiOGM0Zjk3MDJmNGY0YjBjMzQwYTgKLS0tCgpEZWxldGUgUkVYIHJlbGF0ZWQgREIgZW50cmllcyBhbmQgZnJlZSBhc3NvY2lhdGVkIFJBTSBmb3Ige3tvd25lcn19LgoKVG8gZnVsbHkgZGVsZXRlIGFsbCBSRVggcmVsYXRlZCBEQiBlbnRyaWVzLCB7e293bmVyfX0gbXVzdCBlbnN1cmUgdGhhdCB0aGVpciBSRVggYmFsYW5jZSBhbmQgUkVYIGZ1bmQgYW1vdW50cyBhcmUgYm90aCB6ZXJvIGFuZCB0aGV5IGhhdmUgbm8gb3V0c3RhbmRpbmcgbG9hbnMucFW6tKsb0UQMY25jbHJleG9yZGVy6wItLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBDYW5jZWwgU2NoZWR1bGVkIFJFWCBTZWxsIE9yZGVyCnN1bW1hcnk6ICd7e25vd3JhcCBvd25lcn19IGNhbmNlbHMgYSBzY2hlZHVsZWQgc2VsbCBvcmRlciBpZiBub3QgeWV0IGZpbGxlZCcKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3JleC5wbmcjZDIyOTgzN2ZhNjJhNDY0YjljNzFlMDYwNjBhYTg2MTc5YWRmMGIzZjRlM2I4YzRmOTcwMmY0ZjRiMGMzNDBhOAotLS0KCnt7b3duZXJ9fSBjYW5jZWxzIHRoZWlyIG9wZW4gc2VsbCBvcmRlci4AVDbJRYonRQtjb25zb2xpZGF0ZaYDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQ29uc29saWRhdGUgUkVYIE1hdHVyaXR5IEJ1Y2tldHMgSW50byBPbmUKc3VtbWFyeTogJ0NvbnNvbGlkYXRlIFJFWCBtYXR1cml0eSBidWNrZXRzIGludG8gb25lJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmV4LnBuZyNkMjI5ODM3ZmE2MmE0NjRiOWM3MWUwNjA2MGFhODYxNzlhZGYwYjNmNGUzYjhjNGY5NzAyZjRmNGIwYzM0MGE4Ci0tLQoKQ29uc29saWRhdGUgUkVYIG1hdHVyaXR5IGJ1Y2tldHMgaW50byBvbmUgYnVja2V0IHRoYXQge3tvd25lcn19IHdpbGwgbm90IGJlIGFibGUgdG8gc2VsbCB1bnRpbCA0IHRvIDUgZGF5cyBsYXRlci4AwDQ06oqWSgpkZWZjcHVsb2Fu3gMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBXaXRoZHJhdyBmcm9tIHRoZSBGdW5kIG9mIGEgU3BlY2lmaWMgQ1BVIExvYW4Kc3VtbWFyeTogJ3t7bm93cmFwIGZyb219fSB0cmFuc2ZlcnMge3tub3dyYXAgYW1vdW50fX0gZnJvbSB0aGUgZnVuZCBvZiBDUFUgbG9hbiBudW1iZXIge3tub3dyYXAgbG9hbl9udW19fSBiYWNrIHRvIFJFWCBmdW5kJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmV4LnBuZyNkMjI5ODM3ZmE2MmE0NjRiOWM3MWUwNjA2MGFhODYxNzlhZGYwYjNmNGUzYjhjNGY5NzAyZjRmNGIwYzM0MGE4Ci0tLQoKe3tmcm9tfX0gdHJhbnNmZXJzIHt7YW1vdW50fX0gZnJvbSB0aGUgZnVuZCBvZiBDUFUgbG9hbiBudW1iZXIge3tsb2FuX251bX19IGJhY2sgdG8gUkVYIGZ1bmQuAMA0NGY1l0oKZGVmbmV0bG9hbt4DLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogV2l0aGRyYXcgZnJvbSB0aGUgRnVuZCBvZiBhIFNwZWNpZmljIE5FVCBMb2FuCnN1bW1hcnk6ICd7e25vd3JhcCBmcm9tfX0gdHJhbnNmZXJzIHt7bm93cmFwIGFtb3VudH19IGZyb20gdGhlIGZ1bmQgb2YgTkVUIGxvYW4gbnVtYmVyIHt7bm93cmFwIGxvYW5fbnVtfX0gYmFjayB0byBSRVggZnVuZCcKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3JleC5wbmcjZDIyOTgzN2ZhNjJhNDY0YjljNzFlMDYwNjBhYTg2MTc5YWRmMGIzZjRlM2I4YzRmOTcwMmY0ZjRiMGMzNDBhOAotLS0KCnt7ZnJvbX19IHRyYW5zZmVycyB7e2Ftb3VudH19IGZyb20gdGhlIGZ1bmQgb2YgTkVUIGxvYW4gbnVtYmVyIHt7bG9hbl9udW19fSBiYWNrIHRvIFJFWCBmdW5kLgAAPyobpqJKCmRlbGVnYXRlYnfzBi0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IFN0YWtlIFRva2VucyBmb3IgTkVUIGFuZC9vciBDUFUKc3VtbWFyeTogJ1N0YWtlIHRva2VucyBmb3IgTkVUIGFuZC9vciBDUFUgYW5kIG9wdGlvbmFsbHkgdHJhbnNmZXIgb3duZXJzaGlwJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmVzb3VyY2UucG5nIzM4MzBmMWNlOGNiMDdmNzc1N2RiY2YzODNiMWVjMWIxMTkxNGFjMzRhMWY5ZDhiMDY1ZjA3NjAwZmE5ZGFjMTkKLS0tCgp7eyNpZiB0cmFuc2Zlcn19IHt7ZnJvbX19IHN0YWtlcyBvbiBiZWhhbGYgb2Yge3tyZWNlaXZlcn19IHt7c3Rha2VfbmV0X3F1YW50aXR5fX0gZm9yIE5FVCBiYW5kd2lkdGggYW5kIHt7c3Rha2VfY3B1X3F1YW50aXR5fX0gZm9yIENQVSBiYW5kd2lkdGguCgpTdGFrZWQgdG9rZW5zIHdpbGwgYWxzbyBiZSB0cmFuc2ZlcnJlZCB0byB7e3JlY2VpdmVyfX0uIFRoZSBzdW0gb2YgdGhlc2UgdHdvIHF1YW50aXRpZXMgd2lsbCBiZSBkZWR1Y3RlZCBmcm9tIHt7ZnJvbX194oCZcyBsaXF1aWQgYmFsYW5jZSBhbmQgYWRkIHRvIHRoZSB2b3RlIHdlaWdodCBvZiB7e3JlY2VpdmVyfX0uCnt7ZWxzZX19Cnt7ZnJvbX19IHN0YWtlcyB0byBzZWxmIGFuZCBkZWxlZ2F0ZXMgdG8ge3tyZWNlaXZlcn19IHt7c3Rha2VfbmV0X3F1YW50aXR5fX0gZm9yIE5FVCBiYW5kd2lkdGggYW5kIHt7c3Rha2VfY3B1X3F1YW50aXR5fX0gZm9yIENQVSBiYW5kd2lkdGguCgpUaGUgc3VtIG9mIHRoZXNlIHR3byBxdWFudGl0aWVzIGFkZCB0byB0aGUgdm90ZSB3ZWlnaHQgb2Yge3tmcm9tfX0uCnt7L2lmfX0AQMvaqKyiSgpkZWxldGVhdXRo9QItLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBEZWxldGUgQWNjb3VudCBQZXJtaXNzaW9uCnN1bW1hcnk6ICdEZWxldGUgdGhlIHt7bm93cmFwIHBlcm1pc3Npb259fSBwZXJtaXNzaW9uIG9mIHt7bm93cmFwIGFjY291bnR9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL2FjY291bnQucG5nIzNkNTVhMmZjM2E1YzIwYjQ1NmY1NjU3ZmFmNjY2YmMyNWZmZDA2ZjQ4MzZjNWU4MjU2Zjc0MTE0OWIwYjI5NGYKLS0tCgpEZWxldGUgdGhlIHt7cGVybWlzc2lvbn19IHBlcm1pc3Npb24gb2Yge3thY2NvdW50fX0uAAAAIDtMq0oHZGVwb3NpdIgELS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogRGVwb3NpdCBJbnRvIFJFWCBGdW5kCnN1bW1hcnk6ICdBZGQgdG8ge3tub3dyYXAgb3duZXJ9feKAmXMgUkVYIGZ1bmQgYnkgdHJhbnNmZXJyaW5nIHt7bm93cmFwIGFtb3VudH19IGZyb20ge3tub3dyYXAgb3duZXJ9feKAmXMgbGlxdWlkIGJhbGFuY2UnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9yZXgucG5nI2QyMjk4MzdmYTYyYTQ2NGI5YzcxZTA2MDYwYWE4NjE3OWFkZjBiM2Y0ZTNiOGM0Zjk3MDJmNGY0YjBjMzQwYTgKLS0tCgpUcmFuc2ZlciB7e2Ftb3VudH19IGZyb20ge3tvd25lcn194oCZcyBsaXF1aWQgYmFsYW5jZSB0byB7e293bmVyfX3igJlzIFJFWCBmdW5kLiBBbGwgcHJvY2VlZHMgYW5kIGV4cGVuc2VzIHJlbGF0ZWQgdG8gUkVYIGFyZSBhZGRlZCB0byBvciB0YWtlbiBvdXQgb2YgdGhpcyBmdW5kLgCmoVFXlKZeC2Z1bmRjcHVsb2Fu/AMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBEZXBvc2l0IGludG8gdGhlIEZ1bmQgb2YgYSBTcGVjaWZpYyBDUFUgTG9hbgpzdW1tYXJ5OiAne3tub3dyYXAgZnJvbX19IGZ1bmRzIGEgQ1BVIGxvYW4nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9yZXgucG5nI2QyMjk4MzdmYTYyYTQ2NGI5YzcxZTA2MDYwYWE4NjE3OWFkZjBiM2Y0ZTNiOGM0Zjk3MDJmNGY0YjBjMzQwYTgKLS0tCgp7e2Zyb219fSB0cmFuc2ZlcnMge3twYXltZW50fX0gZnJvbSBSRVggZnVuZCB0byB0aGUgZnVuZCBvZiBDUFUgbG9hbiBudW1iZXIge3tsb2FuX251bX19IGluIG9yZGVyIHRvIGJlIHVzZWQgaW4gbG9hbiByZW5ld2FsIGF0IGV4cGlyeS4ge3tmcm9tfX0gY2FuIHdpdGhkcmF3IHRoZSB0b3RhbCBiYWxhbmNlIG9mIHRoZSBsb2FuIGZ1bmQgYXQgYW55IHRpbWUuAKahMauZpl4LZnVuZG5ldGxvYW78Ay0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IERlcG9zaXQgaW50byB0aGUgRnVuZCBvZiBhIFNwZWNpZmljIE5FVCBMb2FuCnN1bW1hcnk6ICd7e25vd3JhcCBmcm9tfX0gZnVuZHMgYSBORVQgbG9hbicKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3JleC5wbmcjZDIyOTgzN2ZhNjJhNDY0YjljNzFlMDYwNjBhYTg2MTc5YWRmMGIzZjRlM2I4YzRmOTcwMmY0ZjRiMGMzNDBhOAotLS0KCnt7ZnJvbX19IHRyYW5zZmVycyB7e3BheW1lbnR9fSBmcm9tIFJFWCBmdW5kIHRvIHRoZSBmdW5kIG9mIE5FVCBsb2FuIG51bWJlciB7e2xvYW5fbnVtfX0gaW4gb3JkZXIgdG8gYmUgdXNlZCBpbiBsb2FuIHJlbmV3YWwgYXQgZXhwaXJ5LiB7e2Zyb219fSBjYW4gd2l0aGRyYXcgdGhlIHRvdGFsIGJhbGFuY2Ugb2YgdGhlIGxvYW4gZnVuZCBhdCBhbnkgdGltZS4AAAAAAJDddARpbml04wItLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBJbml0aWFsaXplIFN5c3RlbSBDb250cmFjdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBzeXN0ZW0gY29udHJhY3QnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCkluaXRpYWxpemUgc3lzdGVtIGNvbnRyYWN0LiBUaGUgY29yZSB0b2tlbiBzeW1ib2wgd2lsbCBiZSBzZXQgdG8ge3tjb3JlfX0uwBpqWZvspIsMbGltaXRhdXRoY2hnAAAAAC1rA6eLCGxpbmthdXRonQUtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBMaW5rIEFjdGlvbiB0byBQZXJtaXNzaW9uCnN1bW1hcnk6ICd7e25vd3JhcCBhY2NvdW50fX0gc2V0cyB0aGUgbWluaW11bSByZXF1aXJlZCBwZXJtaXNzaW9uIGZvciB0aGUge3sjaWYgdHlwZX19e3tub3dyYXAgdHlwZX19IGFjdGlvbiBvZiB0aGV7ey9pZn19IHt7bm93cmFwIGNvZGV9fSBjb250cmFjdCB0byB7e25vd3JhcCByZXF1aXJlbWVudH19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvYWNjb3VudC5wbmcjM2Q1NWEyZmMzYTVjMjBiNDU2ZjU2NTdmYWY2NjZiYzI1ZmZkMDZmNDgzNmM1ZTgyNTZmNzQxMTQ5YjBiMjk0ZgotLS0KCnt7YWNjb3VudH19IHNldHMgdGhlIG1pbmltdW0gcmVxdWlyZWQgcGVybWlzc2lvbiBmb3IgdGhlIHt7I2lmIHR5cGV9fXt7dHlwZX19IGFjdGlvbiBvZiB0aGV7ey9pZn19IHt7Y29kZX19IGNvbnRyYWN0IHRvIHt7cmVxdWlyZW1lbnR9fS4KCnt7I2lmIHR5cGV9fXt7ZWxzZX19QW55IGxpbmtzIGV4cGxpY2l0bHkgYXNzb2NpYXRlZCB0byBzcGVjaWZpYyBhY3Rpb25zIG9mIHt7Y29kZX19IHdpbGwgdGFrZSBwcmVjZWRlbmNlLnt7L2lmfX0AMJtuG3zXlgttdmZyc2F2aW5nc5wDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogVW5sb2NrIFJFWCBUb2tlbnMKc3VtbWFyeTogJ3t7bm93cmFwIG93bmVyfX0gdW5sb2NrcyBSRVggVG9rZW5zJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmV4LnBuZyNkMjI5ODM3ZmE2MmE0NjRiOWM3MWUwNjA2MGFhODYxNzlhZGYwYjNmNGUzYjhjNGY5NzAyZjRmNGIwYzM0MGE4Ci0tLQoKe3tvd25lcn19IHVubG9ja3Mge3tyZXh9fSBieSBtb3ZpbmcgaXQgb3V0IG9mIHRoZSBSRVggc2F2aW5ncyBidWNrZXQuIFRoZSB1bmxvY2tlZCBSRVggdG9rZW5zIGNhbm5vdCBiZSBzb2xkIHVudGlsIDQgdG8gNSBkYXlzIGxhdGVyLgAwm24bTPOWC212dG9zYXZpbmdzugMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBMb2NrIFJFWCBUb2tlbnMKc3VtbWFyeTogJ3t7bm93cmFwIG93bmVyfX0gbG9ja3MgUkVYIFRva2VucycKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3JleC5wbmcjZDIyOTgzN2ZhNjJhNDY0YjljNzFlMDYwNjBhYTg2MTc5YWRmMGIzZjRlM2I4YzRmOTcwMmY0ZjRiMGMzNDBhOAotLS0KCnt7b3duZXJ9fSBsb2NrcyB7e3JleH19IGJ5IG1vdmluZyBpdCBpbnRvIHRoZSBSRVggc2F2aW5ncyBidWNrZXQuIFRoZSBsb2NrZWQgUkVYIHRva2VucyBjYW5ub3QgYmUgc29sZCBkaXJlY3RseSBhbmQgd2lsbCBoYXZlIHRvIGJlIHVubG9ja2VkIGV4cGxpY2l0bHkgYmVmb3JlIHNlbGxpbmcuAECemiJkuJoKbmV3YWNjb3VudIAELS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQ3JlYXRlIE5ldyBBY2NvdW50CnN1bW1hcnk6ICd7e25vd3JhcCBjcmVhdG9yfX0gY3JlYXRlcyBhIG5ldyBhY2NvdW50IHdpdGggdGhlIG5hbWUge3tub3dyYXAgbmFtZX19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvYWNjb3VudC5wbmcjM2Q1NWEyZmMzYTVjMjBiNDU2ZjU2NTdmYWY2NjZiYzI1ZmZkMDZmNDgzNmM1ZTgyNTZmNzQxMTQ5YjBiMjk0ZgotLS0KCnt7Y3JlYXRvcn19IGNyZWF0ZXMgYSBuZXcgYWNjb3VudCB3aXRoIHRoZSBuYW1lIHt7bmFtZX19IGFuZCB0aGUgZm9sbG93aW5nIHBlcm1pc3Npb25zOgoKb3duZXIgcGVybWlzc2lvbiB3aXRoIGF1dGhvcml0eToKe3t0b19qc29uIG93bmVyfX0KCmFjdGl2ZSBwZXJtaXNzaW9uIHdpdGggYXV0aG9yaXR5Ogp7e3RvX2pzb24gYWN0aXZlfX0AAAAAIhrPpAdvbmJsb2NrAAAAAODSe9WkB29uZXJyb3IAAAAAoOqrOK0HcG93ZXJ1cNQCLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogUG93ZXJ1cCByZXNvdXJjZXMKc3VtbWFyeTogJ1VzZXIgbWF5IHBvd2VydXAgdG8gcmVzZXJ2ZSByZXNvdXJjZXMnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9yZXNvdXJjZS5wbmcjMzgzMGYxY2U4Y2IwN2Y3NzU3ZGJjZjM4M2IxZWMxYjExOTE0YWMzNGExZjlkOGIwNjVmMDc2MDBmYTlkYWMxOQotLS0KClVzZXJzIG1heSB1c2UgdGhlIHBvd2VydXAgYWN0aW9uIHRvIHJlc2VydmUgcmVzb3VyY2VzLgCQ6qrqqzitC3Bvd2VydXBleGVjAAAAAACkqZe6BnJlZnVuZIcDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQ2xhaW0gVW5zdGFrZWQgVG9rZW5zCnN1bW1hcnk6ICdSZXR1cm4gcHJldmlvdXNseSB1bnN0YWtlZCB0b2tlbnMgdG8ge3tub3dyYXAgb3duZXJ9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL2FjY291bnQucG5nIzNkNTVhMmZjM2E1YzIwYjQ1NmY1NjU3ZmFmNjY2YmMyNWZmZDA2ZjQ4MzZjNWU4MjU2Zjc0MTE0OWIwYjI5NGYKLS0tCgpSZXR1cm4gcHJldmlvdXNseSB1bnN0YWtlZCB0b2tlbnMgdG8ge3tvd25lcn19IGFmdGVyIHRoZSB1bnN0YWtpbmcgcGVyaW9kIGhhcyBlbGFwc2VkLgCuQjrRW5m6C3JlZ3Byb2R1Y2VymQQtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBSZWdpc3RlciBhcyBhIEJsb2NrIFByb2R1Y2VyIENhbmRpZGF0ZQpzdW1tYXJ5OiAnUmVnaXN0ZXIge3tub3dyYXAgcHJvZHVjZXJ9fSBhY2NvdW50IGFzIGEgYmxvY2sgcHJvZHVjZXIgY2FuZGlkYXRlJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvdm90aW5nLnBuZyNkYjI4Y2QzZGI2ZTYyZDQ1MDlhZjM2NDRjZTdkMzc3MzI5NDgyYTE0YmI0YmZhY2EyYWE1ZjE0MDBkOGU4YTg0Ci0tLQoKUmVnaXN0ZXIge3twcm9kdWNlcn19IGFjY291bnQgYXMgYSBibG9jayBwcm9kdWNlciBjYW5kaWRhdGUuCgpVUkw6IHt7dXJsfX0KTG9jYXRpb24gY29kZToge3tsb2NhdGlvbn19CkJsb2NrIHNpZ25pbmcga2V5OiB7e3Byb2R1Y2VyX2tleX19CgojIyBCbG9jayBQcm9kdWNlciBBZ3JlZW1lbnQKe3skY2xhdXNlcy5CbG9ja1Byb2R1Y2VyQWdyZWVtZW50fX0grkI60VuZugxyZWdwcm9kdWNlcjKtBC0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IFJlZ2lzdGVyIGFzIGEgQmxvY2sgUHJvZHVjZXIgQ2FuZGlkYXRlCnN1bW1hcnk6ICdSZWdpc3RlciB7e25vd3JhcCBwcm9kdWNlcn19IGFjY291bnQgYXMgYSBibG9jayBwcm9kdWNlciBjYW5kaWRhdGUnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy92b3RpbmcucG5nI2RiMjhjZDNkYjZlNjJkNDUwOWFmMzY0NGNlN2QzNzczMjk0ODJhMTRiYjRiZmFjYTJhYTVmMTQwMGQ4ZThhODQKLS0tCgpSZWdpc3RlciB7e3Byb2R1Y2VyfX0gYWNjb3VudCBhcyBhIGJsb2NrIHByb2R1Y2VyIGNhbmRpZGF0ZS4KClVSTDoge3t1cmx9fQpMb2NhdGlvbiBjb2RlOiB7e2xvY2F0aW9ufX0KQmxvY2sgc2lnbmluZyBhdXRob3JpdHk6Cnt7dG9fanNvbiBwcm9kdWNlcl9hdXRob3JpdHl9fQoKIyMgQmxvY2sgUHJvZHVjZXIgQWdyZWVtZW50Cnt7JGNsYXVzZXMuQmxvY2tQcm9kdWNlckFncmVlbWVudH19AAAAvtNbmboIcmVncHJveHmjBC0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IFJlZ2lzdGVyL3VucmVnaXN0ZXIgYXMgYSBQcm94eQpzdW1tYXJ5OiAnUmVnaXN0ZXIvdW5yZWdpc3RlciB7e25vd3JhcCBwcm94eX19IGFzIGEgcHJveHkgYWNjb3VudCcKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3ZvdGluZy5wbmcjZGIyOGNkM2RiNmU2MmQ0NTA5YWYzNjQ0Y2U3ZDM3NzMyOTQ4MmExNGJiNGJmYWNhMmFhNWYxNDAwZDhlOGE4NAotLS0KCnt7I2lmIGlzcHJveHl9fQp7e3Byb3h5fX0gcmVnaXN0ZXJzIGFzIGEgcHJveHkgdGhhdCBjYW4gdm90ZSBvbiBiZWhhbGYgb2YgYWNjb3VudHMgdGhhdCBhcHBvaW50IGl0IGFzIHRoZWlyIHByb3h5Lgp7e2Vsc2V9fQp7e3Byb3h5fX0gdW5yZWdpc3RlcnMgYXMgYSBwcm94eSB0aGF0IGNhbiB2b3RlIG9uIGJlaGFsZiBvZiBhY2NvdW50cyB0aGF0IGFwcG9pbnQgaXQgYXMgdGhlaXIgcHJveHkuCnt7L2lmfX0AAABAV5SnugdyZW50Y3B13AktLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBSZW50IENQVSBCYW5kd2lkdGggZm9yIDMwIERheXMKc3VtbWFyeTogJ3t7bm93cmFwIGZyb219fSBwYXlzIHt7bm93cmFwIGxvYW5fcGF5bWVudH19IHRvIHJlbnQgQ1BVIGJhbmR3aWR0aCBmb3Ige3tub3dyYXAgcmVjZWl2ZXJ9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3JleC5wbmcjZDIyOTgzN2ZhNjJhNDY0YjljNzFlMDYwNjBhYTg2MTc5YWRmMGIzZjRlM2I4YzRmOTcwMmY0ZjRiMGMzNDBhOAotLS0KCnt7ZnJvbX19IHBheXMge3tsb2FuX3BheW1lbnR9fSB0byByZW50IENQVSBiYW5kd2lkdGggb24gYmVoYWxmIG9mIHt7cmVjZWl2ZXJ9fSBmb3IgYSBwZXJpb2Qgb2YgMzAgZGF5cy4KCnt7bG9hbl9wYXltZW50fX0gaXMgdGFrZW4gb3V0IG9mIHt7ZnJvbX194oCZcyBSRVggZnVuZC4gVGhlIG1hcmtldCBwcmljZSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgdG9rZW5zIHRvIGJlIHN0YWtlZCB0byB7e3JlY2VpdmVyfX3igJlzIENQVSByZXNvdXJjZXMuIEluIGFkZGl0aW9uLCB7e2Zyb219fSBwcm92aWRlcyB7e2xvYW5fZnVuZH19LCB3aGljaCBpcyBhbHNvIHRha2VuIG91dCBvZiB7e2Zyb219feKAmXMgUkVYIGZ1bmQsIHRvIGJlIHVzZWQgZm9yIGF1dG9tYXRpYyByZW5ld2FsIG9mIHRoZSBsb2FuLgoKQXQgZXhwaXJhdGlvbiwgaWYgdGhlIGxvYW4gaGFzIGxlc3MgZnVuZHMgdGhhbiB7e2xvYW5fcGF5bWVudH19LCBpdCBpcyBjbG9zZWQgYW5kIGxlbnQgdG9rZW5zIHRoYXQgaGF2ZSBiZWVuIHN0YWtlZCBhcmUgdGFrZW4gb3V0IG9mIHt7cmVjZWl2ZXJ9feKAmXMgQ1BVIGJhbmR3aWR0aC4gT3RoZXJ3aXNlLCBpdCBpcyByZW5ld2VkIGF0IHRoZSBtYXJrZXQgcHJpY2UgYXQgdGhlIHRpbWUgb2YgcmVuZXdhbCwgdGhhdCBpcywgdGhlIG51bWJlciBvZiBzdGFrZWQgdG9rZW5zIGlzIHJlY2FsY3VsYXRlZCBhbmQge3tyZWNlaXZlcn194oCZcyBDUFUgYmFuZHdpZHRoIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuIHt7ZnJvbX19IGNhbiBmdW5kIG9yIGRlZnVuZCBhIGxvYW4gYXQgYW55IHRpbWUgYmVmb3JlIGV4cGlyYXRpb24uIFdoZW4gdGhlIGxvYW4gaXMgY2xvc2VkLCB7e2Zyb219fSBpcyByZWZ1bmRlZCBhbnkgdG9rZW5zIHJlbWFpbmluZyBpbiB0aGUgbG9hbiBmdW5kLgAAACCrmae6B3JlbnRuZXToCS0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IFJlbnQgTkVUIEJhbmR3aWR0aCBmb3IgMzAgRGF5cwpzdW1tYXJ5OiAne3tub3dyYXAgZnJvbX19IHBheXMge3tub3dyYXAgbG9hbl9wYXltZW50fX0gdG8gcmVudCBORVQgYmFuZHdpZHRoIGZvciB7e25vd3JhcCByZWNlaXZlcn19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmV4LnBuZyNkMjI5ODM3ZmE2MmE0NjRiOWM3MWUwNjA2MGFhODYxNzlhZGYwYjNmNGUzYjhjNGY5NzAyZjRmNGIwYzM0MGE4Ci0tLQoKe3tmcm9tfX0gcGF5cyB7e2xvYW5fcGF5bWVudH19IHRvIHJlbnQgTkVUIGJhbmR3aWR0aCBvbiBiZWhhbGYgb2Yge3tyZWNlaXZlcn19IGZvciBhIHBlcmlvZCBvZiAzMCBkYXlzLgoKe3tsb2FuX3BheW1lbnR9fSBpcyB0YWtlbiBvdXQgb2Yge3tmcm9tfX3igJlzIFJFWCBmdW5kLiBUaGUgbWFya2V0IHByaWNlIGRldGVybWluZXMgdGhlIG51bWJlciBvZiB0b2tlbnMgdG8gYmUgc3Rha2VkIHRvIHt7cmVjZWl2ZXJ9feKAmXMgTkVUIHJlc291cmNlcyBmb3IgMzAgZGF5cy4gSW4gYWRkaXRpb24sIHt7ZnJvbX19IHByb3ZpZGVzIHt7bG9hbl9mdW5kfX0sIHdoaWNoIGlzIGFsc28gdGFrZW4gb3V0IG9mIHt7ZnJvbX194oCZcyBSRVggZnVuZCwgdG8gYmUgdXNlZCBmb3IgYXV0b21hdGljIHJlbmV3YWwgb2YgdGhlIGxvYW4uCgpBdCBleHBpcmF0aW9uLCBpZiB0aGUgbG9hbiBoYXMgbGVzcyBmdW5kcyB0aGFuIHt7bG9hbl9wYXltZW50fX0sIGl0IGlzIGNsb3NlZCBhbmQgbGVudCB0b2tlbnMgdGhhdCBoYXZlIGJlZW4gc3Rha2VkIGFyZSB0YWtlbiBvdXQgb2Yge3tyZWNlaXZlcn194oCZcyBORVQgYmFuZHdpZHRoLiBPdGhlcndpc2UsIGl0IGlzIHJlbmV3ZWQgYXQgdGhlIG1hcmtldCBwcmljZSBhdCB0aGUgdGltZSBvZiByZW5ld2FsLCB0aGF0IGlzLCB0aGUgbnVtYmVyIG9mIHN0YWtlZCB0b2tlbnMgaXMgcmVjYWxjdWxhdGVkIGFuZCB7e3JlY2VpdmVyfX3igJlzIE5FVCBiYW5kd2lkdGggaXMgdXBkYXRlZCBhY2NvcmRpbmdseS4ge3tmcm9tfX0gY2FuIGZ1bmQgb3IgZGVmdW5kIGEgbG9hbiBhdCBhbnkgdGltZSBiZWZvcmUgZXhwaXJhdGlvbi4gV2hlbiB0aGUgbG9hbiBpcyBjbG9zZWQsIHt7ZnJvbX19IGlzIHJlZnVuZGVkIGFueSB0b2tlbnMgcmVtYWluaW5nIGluIHRoZSBsb2FuIGZ1bmQuAAAAAKmuuroHcmV4ZXhlY6IDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogUGVyZm9ybSBSRVggTWFpbnRlbmFuY2UKc3VtbWFyeTogJ1Byb2Nlc3Mgc2VsbCBvcmRlcnMgYW5kIGV4cGlyZWQgbG9hbnMnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9yZXgucG5nI2QyMjk4MzdmYTYyYTQ2NGI5YzcxZTA2MDYwYWE4NjE3OWFkZjBiM2Y0ZTNiOGM0Zjk3MDJmNGY0YjBjMzQwYTgKLS0tCgpQZXJmb3JtcyBSRVggbWFpbnRlbmFuY2UgYnkgcHJvY2Vzc2luZyBhIG1heGltdW0gb2Yge3ttYXh9fSBSRVggc2VsbCBvcmRlcnMgYW5kIGV4cGlyZWQgbG9hbnMuIEFueSBhY2NvdW50IGNhbiBleGVjdXRlIHRoaXMgYWN0aW9uLgCuQjrRW7e8C3JtdnByb2R1Y2VyggUtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBGb3JjaWJseSBVbnJlZ2lzdGVyIGEgQmxvY2sgUHJvZHVjZXIgQ2FuZGlkYXRlCnN1bW1hcnk6ICd7e25vd3JhcCBwcm9kdWNlcn19IGlzIHVucmVnaXN0ZXJlZCBhcyBhIGJsb2NrIHByb2R1Y2VyIGNhbmRpZGF0ZScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL2FkbWluLnBuZyM5YmYxY2VjNjY0ODYzYmQ2YWFhYzBmODE0YjIzNWY4Nzk5ZmIwMmM4NTBlOWFhNWRhMzRlOGEwMDRiZDY1MThlCi0tLQoKe3skYWN0aW9uLmFjY291bnR9fSB1bnJlZ2lzdGVycyB7e3Byb2R1Y2VyfX0gYXMgYSBibG9jayBwcm9kdWNlciBjYW5kaWRhdGUuIHt7cHJvZHVjZXJ9fSBhY2NvdW50IHdpbGwgcmV0YWluIGl0cyB2b3RlcyBhbmQgdGhvc2Ugdm90ZXMgY2FuIGNoYW5nZSBiYXNlZCBvbiB2b3RlciBzdGFrZSBjaGFuZ2VzIG9yIHZvdGVzIHJlbW92ZWQgZnJvbSB7e3Byb2R1Y2VyfX0uIEhvd2V2ZXIgbmV3IHZvdGVycyB3aWxsIG5vdCBiZSBhYmxlIHRvIHZvdGUgZm9yIHt7cHJvZHVjZXJ9fSB3aGlsZSBpdCByZW1haW5zIHVucmVnaXN0ZXJlZC4AAABAmhujwgdzZWxscmFtxQMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBTZWxsIFJBTSBGcm9tIEFjY291bnQKc3VtbWFyeTogJ1NlbGwgdW51c2VkIFJBTSBmcm9tIHt7bm93cmFwIGFjY291bnR9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3Jlc291cmNlLnBuZyMzODMwZjFjZThjYjA3Zjc3NTdkYmNmMzgzYjFlYzFiMTE5MTRhYzM0YTFmOWQ4YjA2NWYwNzYwMGZhOWRhYzE5Ci0tLQoKU2VsbCB7e2J5dGVzfX0gYnl0ZXMgb2YgdW51c2VkIFJBTSBmcm9tIGFjY291bnQge3thY2NvdW50fX0gYXQgbWFya2V0IHByaWNlLiBUaGlzIHRyYW5zYWN0aW9uIHdpbGwgaW5jdXIgYSAwLjUlIGZlZSBvbiB0aGUgcHJvY2VlZHMgd2hpY2ggZGVwZW5kIG9uIG1hcmtldCByYXRlcy4AAACgqxujwgdzZWxscmV4qQotLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBTZWxsIFJFWCBUb2tlbnMgaW4gRXhjaGFuZ2UgZm9yIEVPUwpzdW1tYXJ5OiAne3tub3dyYXAgZnJvbX19IHNlbGxzIHt7bm93cmFwIHJleH19IHRva2VucycKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3JleC5wbmcjZDIyOTgzN2ZhNjJhNDY0YjljNzFlMDYwNjBhYTg2MTc5YWRmMGIzZjRlM2I4YzRmOTcwMmY0ZjRiMGMzNDBhOAotLS0KCnt7ZnJvbX19IGluaXRpYXRlcyBhIHNlbGwgb3JkZXIgdG8gc2VsbCB7e3JleH19IHRva2VucyBhdCB0aGUgbWFya2V0IGV4Y2hhbmdlIHJhdGUgZHVyaW5nIHRoZSB0aW1lIGF0IHdoaWNoIHRoZSBvcmRlciBpcyB1bHRpbWF0ZWx5IGV4ZWN1dGVkLiBJZiB7e2Zyb219fSBhbHJlYWR5IGhhcyBhbiBvcGVuIHNlbGwgb3JkZXIgaW4gdGhlIHNlbGwgcXVldWUsIHt7cmV4fX0gd2lsbCBiZSBhZGRlZCB0byB0aGUgYW1vdW50IG9mIHRoZSBzZWxsIG9yZGVyIHdpdGhvdXQgY2hhbmdlIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VsbCBvcmRlciB3aXRoaW4gdGhlIHF1ZXVlLiBPbmNlIHRoZSBzZWxsIG9yZGVyIGlzIGV4ZWN1dGVkLCBwcm9jZWVkcyBhcmUgYWRkZWQgdG8ge3tmcm9tfX3igJlzIFJFWCBmdW5kLCB0aGUgdmFsdWUgb2Ygc29sZCBSRVggdG9rZW5zIGlzIGRlZHVjdGVkIGZyb20ge3tmcm9tfX3igJlzIHZvdGUgc3Rha2UsIGFuZCB2b3RlcyBhcmUgdXBkYXRlZCBhY2NvcmRpbmdseS4KCkRlcGVuZGluZyBvbiB0aGUgbWFya2V0IGNvbmRpdGlvbnMsIGl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gZmlsbCB0aGUgZW50aXJlIHNlbGwgb3JkZXIgaW1tZWRpYXRlbHkuIEluIHN1Y2ggYSBjYXNlLCB0aGUgc2VsbCBvcmRlciBpcyBhZGRlZCB0byB0aGUgYmFjayBvZiBhIHNlbGwgcXVldWUuIEEgc2VsbCBvcmRlciBhdCB0aGUgZnJvbnQgb2YgdGhlIHNlbGwgcXVldWUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIG1hcmtldCBjb25kaXRpb25zIGFsbG93IGZvciB0aGUgZW50aXJlIG9yZGVyIHRvIGJlIGZpbGxlZC4gUmVnYXJkbGVzcyBvZiB0aGUgbWFya2V0IGNvbmRpdGlvbnMsIHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gZXhlY3V0ZSB0aGlzIHNlbGwgb3JkZXIgd2l0aGluIDMwIGRheXMuIHt7ZnJvbX19IGNhbiBjYW5jZWwgdGhlIG9yZGVyIGF0IGFueSB0aW1lIGJlZm9yZSBpdCBpcyBmaWxsZWQgdXNpbmcgdGhlIGNuY2xyZXhvcmRlciBhY3Rpb24uAAAAALhjssIGc2V0YWJp8wItLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBEZXBsb3kgQ29udHJhY3QgQUJJCnN1bW1hcnk6ICdEZXBsb3kgY29udHJhY3QgQUJJIG9uIGFjY291bnQge3tub3dyYXAgYWNjb3VudH19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvYWNjb3VudC5wbmcjM2Q1NWEyZmMzYTVjMjBiNDU2ZjU2NTdmYWY2NjZiYzI1ZmZkMDZmNDgzNmM1ZTgyNTZmNzQxMTQ5YjBiMjk0ZgotLS0KCkRlcGxveSB0aGUgQUJJIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250cmFjdCBvbiBhY2NvdW50IHt7YWNjb3VudH19LgCArigjZLLCCnNldGFjY3RjcHWeBi0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IEV4cGxpY2l0bHkgTWFuYWdlIHRoZSBDUFUgUXVvdGEgb2YgQWNjb3VudApzdW1tYXJ5OiAnRXhwbGljaXRseSBtYW5hZ2UgdGhlIENQVSBiYW5kd2lkdGggcXVvdGEgb2YgYWNjb3VudCB7e25vd3JhcCBhY2NvdW50fX0nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7I2lmX2hhc192YWx1ZSBjcHVfd2VpZ2h0fX0KRXhwbGljaXRseSBtYW5hZ2UgdGhlIENQVSBiYW5kd2lkdGggcXVvdGEgb2YgYWNjb3VudCB7e2FjY291bnR9fSBieSBwaW5uaW5nIGl0IHRvIGEgd2VpZ2h0IG9mIHt7Y3B1X3dlaWdodH19LgoKe3thY2NvdW50fX0gY2FuIHN0YWtlIGFuZCB1bnN0YWtlLCBob3dldmVyLCBpdCB3aWxsIG5vdCBjaGFuZ2UgdGhlaXIgQ1BVIGJhbmR3aWR0aCBxdW90YSBhcyBsb25nIGFzIGl0IHJlbWFpbnMgcGlubmVkLgp7e2Vsc2V9fQpVbnBpbiB0aGUgQ1BVIGJhbmR3aWR0aCBxdW90YSBvZiBhY2NvdW50IHt7YWNjb3VudH19LiBUaGUgQ1BVIGJhbmR3aWR0aCBxdW90YSBvZiB7e2FjY291bnR9fSB3aWxsIGJlIGRyaXZlbiBieSB0aGUgY3VycmVudCB0b2tlbnMgc3Rha2VkIGZvciBDUFUgYmFuZHdpZHRoIGJ5IHt7YWNjb3VudH19Lgp7ey9pZl9oYXNfdmFsdWV9fQBAVjMjZLLCCnNldGFjY3RuZXSiBi0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IEV4cGxpY2l0bHkgTWFuYWdlIHRoZSBORVQgUXVvdGEgb2YgQWNjb3VudApzdW1tYXJ5OiAnRXhwbGljaXRseSBtYW5hZ2UgdGhlIE5FVCBiYW5kd2lkdGggcXVvdGEgb2YgYWNjb3VudCB7e25vd3JhcCBhY2NvdW50fX0nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7I2lmX2hhc192YWx1ZSBuZXRfd2VpZ2h0fX0KRXhwbGljaXRseSBtYW5hZ2UgdGhlIG5ldHdvcmsgYmFuZHdpZHRoIHF1b3RhIG9mIGFjY291bnQge3thY2NvdW50fX0gYnkgcGlubmluZyBpdCB0byBhIHdlaWdodCBvZiB7e25ldF93ZWlnaHR9fS4KCnt7YWNjb3VudH19IGNhbiBzdGFrZSBhbmQgdW5zdGFrZSwgaG93ZXZlciwgaXQgd2lsbCBub3QgY2hhbmdlIHRoZWlyIE5FVCBiYW5kd2lkdGggcXVvdGEgYXMgbG9uZyBhcyBpdCByZW1haW5zIHBpbm5lZC4Ke3tlbHNlfX0KVW5waW4gdGhlIE5FVCBiYW5kd2lkdGggcXVvdGEgb2YgYWNjb3VudCB7e2FjY291bnR9fS4gVGhlIE5FVCBiYW5kd2lkdGggcXVvdGEgb2Yge3thY2NvdW50fX0gd2lsbCBiZSBkcml2ZW4gYnkgdGhlIGN1cnJlbnQgdG9rZW5zIHN0YWtlZCBmb3IgTkVUIGJhbmR3aWR0aCBieSB7e2FjY291bnR9fS4Ke3svaWZfaGFzX3ZhbHVlfX0AgDQ3I2SywgpzZXRhY2N0cmFt0AUtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBFeHBsaWNpdGx5IE1hbmFnZSB0aGUgUkFNIFF1b3RhIG9mIEFjY291bnQKc3VtbWFyeTogJ0V4cGxpY2l0bHkgbWFuYWdlIHRoZSBSQU0gcXVvdGEgb2YgYWNjb3VudCB7e25vd3JhcCBhY2NvdW50fX0nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7I2lmX2hhc192YWx1ZSByYW1fYnl0ZXN9fQpFeHBsaWNpdGx5IG1hbmFnZSB0aGUgUkFNIHF1b3RhIG9mIGFjY291bnQge3thY2NvdW50fX0gYnkgcGlubmluZyBpdCB0byB7e3JhbV9ieXRlc319IGJ5dGVzLgoKe3thY2NvdW50fX0gY2FuIGJ1eSBhbmQgc2VsbCBSQU0sIGhvd2V2ZXIsIGl0IHdpbGwgbm90IGNoYW5nZSB0aGVpciBSQU0gcXVvdGEgYXMgbG9uZyBhcyBpdCByZW1haW5zIHBpbm5lZC4Ke3tlbHNlfX0KVW5waW4gdGhlIFJBTSBxdW90YSBvZiBhY2NvdW50IHt7YWNjb3VudH19LiBUaGUgUkFNIHF1b3RhIG9mIHt7YWNjb3VudH19IHdpbGwgYmUgZHJpdmVuIGJ5IHRoZSBjdXJyZW50IFJBTSBob2xkaW5ncyBvZiB7e2FjY291bnR9fS4Ke3svaWZfaGFzX3ZhbHVlfX0AAM5OumiywgpzZXRhbGltaXRz9gMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBBZGp1c3QgUmVzb3VyY2UgTGltaXRzIG9mIEFjY291bnQKc3VtbWFyeTogJ0FkanVzdCByZXNvdXJjZSBsaW1pdHMgb2YgYWNjb3VudCB7e25vd3JhcCBhY2NvdW50fX0nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7JGFjdGlvbi5hY2NvdW50fX0gdXBkYXRlcyB7e2FjY291bnR9feKAmXMgcmVzb3VyY2UgbGltaXRzIHRvIGhhdmUgYSBSQU0gcXVvdGEgb2Yge3tyYW1fYnl0ZXN9fSBieXRlcywgYSBORVQgYmFuZHdpZHRoIHF1b3RhIG9mIHt7bmV0X3dlaWdodH19IGFuZCBhIENQVSBiYW5kd2lkdGggcXVvdGEgb2Yge3tjcHVfd2VpZ2h0fX0uAAAAQCWKssIHc2V0Y29kZeYCLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogRGVwbG95IENvbnRyYWN0IENvZGUKc3VtbWFyeTogJ0RlcGxveSBjb250cmFjdCBjb2RlIG9uIGFjY291bnQge3tub3dyYXAgYWNjb3VudH19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvYWNjb3VudC5wbmcjM2Q1NWEyZmMzYTVjMjBiNDU2ZjU2NTdmYWY2NjZiYzI1ZmZkMDZmNDgzNmM1ZTgyNTZmNzQxMTQ5YjBiMjk0ZgotLS0KCkRlcGxveSBjb21waWxlZCBjb250cmFjdCBjb2RlIHRvIHRoZSBhY2NvdW50IHt7YWNjb3VudH19LjCpyyau6bLCDHNldGluZmxhdGlvbusELS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogU2V0IEluZmxhdGlvbiBQYXJhbWV0ZXJzCnN1bW1hcnk6ICdTZXQgaW5mbGF0aW9uIHBhcmFtZXRlcnMnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7JGFjdGlvbi5hY2NvdW50fX0gc2V0cyB0aGUgaW5mbGF0aW9uIHBhcmFtZXRlcnMgYXMgZm9sbG93czoKCiogQW5udWFsIGluZmxhdGlvbiByYXRlIChpbiB1bml0cyBvZiBhIGh1bmRyZWR0aCBvZiBhIHBlcmNlbnQpOiB7e2FubnVhbF9yYXRlfX0KKiBGcmFjdGlvbiBvZiBpbmZsYXRpb24gdXNlZCB0byByZXdhcmQgYmxvY2sgcHJvZHVjZXJzOiAxMDAwMC97e2luZmxhdGlvbl9wYXlfZmFjdG9yfX0KKiBGcmFjdGlvbiBvZiBibG9jayBwcm9kdWNlciByZXdhcmRzIHRvIGJlIGRpc3RyaWJ1dGVkIHByb3BvcnRpb25hbCB0byBibG9ja3MgcHJvZHVjZWQ6IDEwMDAwL3t7dm90ZXBheV9mYWN0b3J9fQAAwNJcU7PCCXNldHBhcmFtc9ACLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogU2V0IFN5c3RlbSBQYXJhbWV0ZXJzCnN1bW1hcnk6ICdTZXQgU3lzdGVtIFBhcmFtZXRlcnMnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7JGFjdGlvbi5hY2NvdW50fX0gc2V0cyBzeXN0ZW0gcGFyYW1ldGVycyB0bzoKe3t0b19qc29uIHBhcmFtc319AAAAYLtbs8IHc2V0cHJpdo0ELS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogTWFrZSBhbiBBY2NvdW50IFByaXZpbGVnZWQgb3IgVW5wcml2aWxlZ2VkCnN1bW1hcnk6ICd7eyNpZiBpc19wcml2fX1NYWtlIHt7bm93cmFwIGFjY291bnR9fSBwcml2aWxlZ2Vke3tlbHNlfX1SZW1vdmUgcHJpdmlsZWdlZCBzdGF0dXMgb2Yge3tub3dyYXAgYWNjb3VudH19e3svaWZ9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL2FkbWluLnBuZyM5YmYxY2VjNjY0ODYzYmQ2YWFhYzBmODE0YjIzNWY4Nzk5ZmIwMmM4NTBlOWFhNWRhMzRlOGEwMDRiZDY1MThlCi0tLQoKe3sjaWYgaXNfcHJpdn19Cnt7JGFjdGlvbi5hY2NvdW50fX0gbWFrZXMge3thY2NvdW50fX0gcHJpdmlsZWdlZC4Ke3tlbHNlfX0Ke3skYWN0aW9uLmFjY291bnR9fSByZW1vdmVzIHByaXZpbGVnZWQgc3RhdHVzIG9mIHt7YWNjb3VudH19Lgp7ey9pZn19AAAAAEhzs8IGc2V0cmFt5gItLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBDb25maWd1cmUgdGhlIEF2YWlsYWJsZSBSQU0Kc3VtbWFyeTogJ0NvbmZpZ3VyZSB0aGUgYXZhaWxhYmxlIFJBTScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL2FkbWluLnBuZyM5YmYxY2VjNjY0ODYzYmQ2YWFhYzBmODE0YjIzNWY4Nzk5ZmIwMmM4NTBlOWFhNWRhMzRlOGEwMDRiZDY1MThlCi0tLQoKe3skYWN0aW9uLmFjY291bnR9fSBjb25maWd1cmVzIHRoZSBhdmFpbGFibGUgUkFNIHRvIHt7bWF4X3JhbV9zaXplfX0gYnl0ZXMuAIDK5kpzs8IKc2V0cmFtcmF0ZYUDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogU2V0IHRoZSBSYXRlIG9mIEluY3JlYXNlIG9mIFJBTQpzdW1tYXJ5OiAnU2V0IHRoZSByYXRlIG9mIGluY3JlYXNlIG9mIFJBTSBwZXIgYmxvY2snCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7JGFjdGlvbi5hY2NvdW50fX0gc2V0cyB0aGUgcmF0ZSBvZiBpbmNyZWFzZSBvZiBSQU0gdG8ge3tieXRlc19wZXJfYmxvY2t9fSBieXRlcy9ibG9jay4AAAAAdHWzwgZzZXRyZXi3Ay0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IEFkanVzdCBSRVggUG9vbCBWaXJ0dWFsIEJhbGFuY2UKc3VtbWFyeTogJ0FkanVzdCBSRVggUG9vbCBWaXJ0dWFsIEJhbGFuY2UnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7JGFjdGlvbi5hY2NvdW50fX0gYWRqdXN0cyBSRVggbG9hbiByYXRlIGJ5IHNldHRpbmcgUkVYIHBvb2wgdmlydHVhbCBiYWxhbmNlIHRvIHt7YmFsYW5jZX19LiBObyB0b2tlbiB0cmFuc2ZlciBvciBpc3N1ZSBpcyBleGVjdXRlZCBpbiB0aGlzIGFjdGlvbi7Aj8qGqajS1Ax1bmRlbGVnYXRlYnehBy0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IFVuc3Rha2UgVG9rZW5zIGZvciBORVQgYW5kL29yIENQVQpzdW1tYXJ5OiAnVW5zdGFrZSB0b2tlbnMgZm9yIE5FVCBhbmQvb3IgQ1BVIGZyb20ge3tub3dyYXAgcmVjZWl2ZXJ9fScKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3Jlc291cmNlLnBuZyMzODMwZjFjZThjYjA3Zjc3NTdkYmNmMzgzYjFlYzFiMTE5MTRhYzM0YTFmOWQ4YjA2NWYwNzYwMGZhOWRhYzE5Ci0tLQoKe3tmcm9tfX0gdW5zdGFrZXMgZnJvbSB7e3JlY2VpdmVyfX0ge3t1bnN0YWtlX25ldF9xdWFudGl0eX19IGZvciBORVQgYmFuZHdpZHRoIGFuZCB7e3Vuc3Rha2VfY3B1X3F1YW50aXR5fX0gZm9yIENQVSBiYW5kd2lkdGguCgpUaGUgc3VtIG9mIHRoZXNlIHR3byBxdWFudGl0aWVzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB2b3RlIHdlaWdodCBvZiB7e3JlY2VpdmVyfX0gYW5kIHdpbGwgYmUgbWFkZSBhdmFpbGFibGUgdG8ge3tmcm9tfX0gYWZ0ZXIgYW4gdW5pbnRlcnJ1cHRlZCAzIGRheSBwZXJpb2Qgd2l0aG91dCBmdXJ0aGVyIHVuc3Rha2luZyBieSB7e2Zyb219fS4gQWZ0ZXIgdGhlIHVuaW50ZXJydXB0ZWQgMyBkYXkgcGVyaW9kIHBhc3NlcywgdGhlIHN5c3RlbSB3aWxsIGF0dGVtcHQgdG8gYXV0b21hdGljYWxseSByZXR1cm4gdGhlIGZ1bmRzIHRvIHt7ZnJvbX194oCZcyByZWd1bGFyIHRva2VuIGJhbGFuY2UuIEhvd2V2ZXIsIHRoaXMgYXV0b21hdGljIHJlZnVuZCBtYXkgb2NjYXNpb25hbGx5IGZhaWwgd2hpY2ggd2lsbCB0aGVuIHJlcXVpcmUge3tmcm9tfX0gdG8gbWFudWFsbHkgY2xhaW0gdGhlIGZ1bmRzIHdpdGggdGhlIHJlZnVuZCBhY3Rpb24uAEDL2sDp4tQKdW5saW5rYXV0aJEFLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogVW5saW5rIEFjdGlvbiBmcm9tIFBlcm1pc3Npb24Kc3VtbWFyeTogJ3t7bm93cmFwIGFjY291bnR9fSB1bnNldHMgdGhlIG1pbmltdW0gcmVxdWlyZWQgcGVybWlzc2lvbiBmb3IgdGhlIHt7I2lmIHR5cGV9fXt7bm93cmFwIHR5cGV9fSBhY3Rpb24gb2YgdGhle3svaWZ9fSB7e25vd3JhcCBjb2RlfX0gY29udHJhY3QnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hY2NvdW50LnBuZyMzZDU1YTJmYzNhNWMyMGI0NTZmNTY1N2ZhZjY2NmJjMjVmZmQwNmY0ODM2YzVlODI1NmY3NDExNDliMGIyOTRmCi0tLQoKe3thY2NvdW50fX0gcmVtb3ZlcyB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiB0aGUge3sjaWYgdHlwZX19e3t0eXBlfX0gYWN0aW9uIG9mIHRoZXt7L2lmfX0ge3tjb2RlfX0gY29udHJhY3QgYW5kIGl0cyBtaW5pbXVtIHJlcXVpcmVkIHBlcm1pc3Npb24uCgp7eyNpZiB0eXBlfX17e2Vsc2V9fVRoaXMgd2lsbCBub3QgcmVtb3ZlIGFueSBsaW5rcyBleHBsaWNpdGx5IGFzc29jaWF0ZWQgdG8gc3BlY2lmaWMgYWN0aW9ucyBvZiB7e2NvZGV9fS57ey9pZn19AABI9Fam7tQJdW5yZWdwcm9k5QQtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBVbnJlZ2lzdGVyIGFzIGEgQmxvY2sgUHJvZHVjZXIgQ2FuZGlkYXRlCnN1bW1hcnk6ICd7e25vd3JhcCBwcm9kdWNlcn19IHVucmVnaXN0ZXJzIGFzIGEgYmxvY2sgcHJvZHVjZXIgY2FuZGlkYXRlJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvdm90aW5nLnBuZyNkYjI4Y2QzZGI2ZTYyZDQ1MDlhZjM2NDRjZTdkMzc3MzI5NDgyYTE0YmI0YmZhY2EyYWE1ZjE0MDBkOGU4YTg0Ci0tLQoKe3twcm9kdWNlcn19IHVucmVnaXN0ZXJzIGFzIGEgYmxvY2sgcHJvZHVjZXIgY2FuZGlkYXRlLiB7e3Byb2R1Y2VyfX0gYWNjb3VudCB3aWxsIHJldGFpbiBpdHMgdm90ZXMgYW5kIHRob3NlIHZvdGVzIGNhbiBjaGFuZ2UgYmFzZWQgb24gdm90ZXIgc3Rha2UgY2hhbmdlcyBvciB2b3RlcyByZW1vdmVkIGZyb20ge3twcm9kdWNlcn19LiBIb3dldmVyIG5ldyB2b3RlcnMgd2lsbCBub3QgYmUgYWJsZSB0byB2b3RlIGZvciB7e3Byb2R1Y2VyfX0gd2hpbGUgaXQgcmVtYWlucyB1bnJlZ2lzdGVyZWQu0NWlWUGT8dQMdW5zdGFrZXRvcmV44wYtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBCdXkgUkVYIFRva2VucyBVc2luZyBTdGFrZWQgVG9rZW5zCnN1bW1hcnk6ICd7e25vd3JhcCBvd25lcn19IGJ1eXMgUkVYIHRva2VucyBpbiBleGNoYW5nZSBmb3IgdG9rZW5zIGN1cnJlbnRseSBzdGFrZWQgdG8gTkVUIGFuZC9vciBDUFUnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9yZXgucG5nI2QyMjk4MzdmYTYyYTQ2NGI5YzcxZTA2MDYwYWE4NjE3OWFkZjBiM2Y0ZTNiOGM0Zjk3MDJmNGY0YjBjMzQwYTgKLS0tCgp7e2Zyb21fbmV0fX0gYW5kIHt7ZnJvbV9jcHV9fSBhcmUgd2l0aGRyYXduIGZyb20ge3tyZWNlaXZlcn194oCZcyBORVQgYW5kIENQVSBiYW5kd2lkdGhzIHJlc3BlY3RpdmVseS4gVGhlc2UgZnVuZHMgYXJlIHVzZWQgdG8gcHVyY2hhc2UgUkVYIHRva2VucyBhdCB0aGUgY3VycmVudCBtYXJrZXQgZXhjaGFuZ2UgcmF0ZS4gSW4gb3JkZXIgZm9yIHRoZSBhY3Rpb24gdG8gc3VjY2VlZCwge3tvd25lcn19IG11c3QgaGF2ZSB2b3RlZCBmb3IgYSBwcm94eSBvciBhdCBsZWFzdCAyMSBibG9jayBwcm9kdWNlcnMuCgpBIHNlbGwgb3JkZXIgb2YgdGhlIHB1cmNoYXNlZCBhbW91bnQgY2FuIG9ubHkgYmUgaW5pdGlhdGVkIGFmdGVyIHdhaXRpbmcgZm9yIHRoZSBtYXR1cml0eSBwZXJpb2Qgb2YgNCB0byA1IGRheXMgdG8gcGFzcy4gRXZlbiB0aGVuLCBkZXBlbmRpbmcgb24gdGhlIG1hcmtldCBjb25kaXRpb25zLCB0aGUgaW5pdGlhdGVkIHNlbGwgb3JkZXIgbWF5IG5vdCBiZSBleGVjdXRlZCBpbW1lZGlhdGVseS4AQMvaqGxS1Qp1cGRhdGVhdXRo7QMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBNb2RpZnkgQWNjb3VudCBQZXJtaXNzaW9uCnN1bW1hcnk6ICdBZGQgb3IgdXBkYXRlIHRoZSB7e25vd3JhcCBwZXJtaXNzaW9ufX0gcGVybWlzc2lvbiBvZiB7e25vd3JhcCBhY2NvdW50fX0nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hY2NvdW50LnBuZyMzZDU1YTJmYzNhNWMyMGI0NTZmNTY1N2ZhZjY2NmJjMjVmZmQwNmY0ODM2YzVlODI1NmY3NDExNDliMGIyOTRmCi0tLQoKTW9kaWZ5LCBhbmQgY3JlYXRlIGlmIG5lY2Vzc2FyeSwgdGhlIHt7cGVybWlzc2lvbn19IHBlcm1pc3Npb24gb2Yge3thY2NvdW50fX0gdG8gaGF2ZSBhIHBhcmVudCBwZXJtaXNzaW9uIG9mIHt7cGFyZW50fX0gYW5kIHRoZSBmb2xsb3dpbmcgYXV0aG9yaXR5Ogp7e3RvX2pzb24gYXV0aH19AADo6qpsUtUJdXBkYXRlcmV4gQMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBVcGRhdGUgUkVYIE93bmVyIFZvdGUgV2VpZ2h0CnN1bW1hcnk6ICdVcGRhdGUgdm90ZSB3ZWlnaHQgdG8gY3VycmVudCB2YWx1ZSBvZiBoZWxkIFJFWCB0b2tlbnMnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9yZXgucG5nI2QyMjk4MzdmYTYyYTQ2NGI5YzcxZTA2MDYwYWE4NjE3OWFkZjBiM2Y0ZTNiOGM0Zjk3MDJmNGY0YjBjMzQwYTgKLS0tCgpVcGRhdGUgdm90ZSB3ZWlnaHQgb2Yge3tvd25lcn19IGFjY291bnQgdG8gY3VycmVudCB2YWx1ZSBvZiBoZWxkIFJFWCB0b2tlbnMuMKnDbqubU9UMdXBkdHJldmlzaW9uggMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBVcGRhdGUgU3lzdGVtIENvbnRyYWN0IFJldmlzaW9uIE51bWJlcgpzdW1tYXJ5OiAnVXBkYXRlIHN5c3RlbSBjb250cmFjdCByZXZpc2lvbiBudW1iZXInCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy9hZG1pbi5wbmcjOWJmMWNlYzY2NDg2M2JkNmFhYWMwZjgxNGIyMzVmODc5OWZiMDJjODUwZTlhYTVkYTM0ZThhMDA0YmQ2NTE4ZQotLS0KCnt7JGFjdGlvbi5hY2NvdW50fX0gYWR2YW5jZXMgdGhlIHN5c3RlbSBjb250cmFjdCByZXZpc2lvbiBudW1iZXIgdG8ge3tyZXZpc2lvbn19LnAV0oneqjLdDHZvdGVwcm9kdWNlcq0GLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogVm90ZSBmb3IgQmxvY2sgUHJvZHVjZXJzCnN1bW1hcnk6ICd7e25vd3JhcCB2b3Rlcn19IHZvdGVzIGZvciB7eyNpZiBwcm94eX19dGhlIHByb3h5IHt7bm93cmFwIHByb3h5fX17e2Vsc2V9fXVwIHRvIDMwIGJsb2NrIHByb2R1Y2VyIGNhbmRpZGF0ZXN7ey9pZn19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvdm90aW5nLnBuZyNkYjI4Y2QzZGI2ZTYyZDQ1MDlhZjM2NDRjZTdkMzc3MzI5NDgyYTE0YmI0YmZhY2EyYWE1ZjE0MDBkOGU4YTg0Ci0tLQoKe3sjaWYgcHJveHl9fQp7e3ZvdGVyfX0gdm90ZXMgZm9yIHRoZSBwcm94eSB7e3Byb3h5fX0uCkF0IHRoZSB0aW1lIG9mIHZvdGluZyB0aGUgZnVsbCB3ZWlnaHQgb2Ygdm90ZXLigJlzIHN0YWtlZCAoQ1BVICsgTkVUKSB0b2tlbnMgd2lsbCBiZSBjYXN0IHRvd2FyZHMgZWFjaCBvZiB0aGUgcHJvZHVjZXJzIHZvdGVkIGJ5IHt7cHJveHl9fS4Ke3tlbHNlfX0Ke3t2b3Rlcn19IHZvdGVzIGZvciB0aGUgZm9sbG93aW5nIGJsb2NrIHByb2R1Y2VyIGNhbmRpZGF0ZXM6Cgp7eyNlYWNoIHByb2R1Y2Vyc319CiAgKyB7e3RoaXN9fQp7ey9lYWNofX0KCkF0IHRoZSB0aW1lIG9mIHZvdGluZyB0aGUgZnVsbCB3ZWlnaHQgb2Ygdm90ZXLigJlzIHN0YWtlZCAoQ1BVICsgTkVUKSB0b2tlbnMgd2lsbCBiZSBjYXN0IHRvd2FyZHMgZWFjaCBvZiB0aGUgYWJvdmUgcHJvZHVjZXJzLgp7ey9pZn19AIDKJlWtMt0Kdm90ZXVwZGF0ZQAAAACALSSx4Qd3YXNtY2ZnAAAAANzc1LLjCHdpdGhkcmF3yQMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBXaXRoZHJhdyBmcm9tIFJFWCBGdW5kCnN1bW1hcnk6ICdXaXRoZHJhdyB7e25vd3JhcCBhbW91bnR9fSBmcm9tIHt7bm93cmFwIG93bmVyfX3igJlzIFJFWCBmdW5kIGJ5IHRyYW5zZmVycmluZyB0byB7e293bmVyfX3igJlzIGxpcXVpZCBiYWxhbmNlJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvcmV4LnBuZyNkMjI5ODM3ZmE2MmE0NjRiOWM3MWUwNjA2MGFhODYxNzlhZGYwYjNmNGUzYjhjNGY5NzAyZjRmNGIwYzM0MGE4Ci0tLQoKV2l0aGRyYXdzIHt7YW1vdW50fX0gZnJvbSB7e293bmVyfX3igJlzIFJFWCBmdW5kIGFuZCB0cmFuc2ZlciB0aGVtIHRvIHt7b3duZXJ9feKAmXMgbGlxdWlkIGJhbGFuY2UuGgAAAKBh09wxA2k2NAAACGFiaV9oYXNoAABOUy91kzsDaTY0AAAKYmlkX3JlZnVuZAAAoGs6iGg8A2k2NAAAEWJsb2NrX2luZm9fcmVjb3JkAAAAYBoadUUDaTY0AAAIcmV4X2xvYW4AAAAgTXOiSgNpNjQAABNkZWxlZ2F0ZWRfYmFuZHdpZHRoAAAAAERzaGQDaTY0AAASZW9zaW9fZ2xvYmFsX3N0YXRlAAAAQERzaGQDaTY0AAATZW9zaW9fZ2xvYmFsX3N0YXRlMgAAAGBEc2hkA2k2NAAAE2Vvc2lvX2dsb2JhbF9zdGF0ZTMAAACARHNoZANpNjQAABNlb3Npb19nbG9iYWxfc3RhdGU0AAAAOLmjpJkDaTY0AAAIbmFtZV9iaWQAAABgGhqzmgNpNjQAAAhyZXhfbG9hbgCuSpeCqjmtA2k2NAAADXBvd2VydXBfb3JkZXIAVDYZg6o5rQNpNjQAAA1wb3dlcnVwX3N0YXRlAADAVyGd6K0DaTY0AAANcHJvZHVjZXJfaW5mbwCAwFchneitA2k2NAAADnByb2R1Y2VyX2luZm8yAADICl4jpbkDaTY0AAAOZXhjaGFuZ2Vfc3RhdGUAAAAAp6mXugNpNjQAAA5yZWZ1bmRfcmVxdWVzdAAAzgoifbK6A2k2NAAAEnJleF9yZXR1cm5fYnVja2V0cwAAAABEc7q6A2k2NAAAC3JleF9iYWxhbmNlAAAAIE29uroDaTY0AAAIcmV4X2Z1bmQAAAAgUlq7ugNpNjQAAAhyZXhfcG9vbAAAAEorbbu6A2k2NAAACXJleF9vcmRlcgBApLRmdbu6A2k2NAAAD3JleF9yZXR1cm5fcG9vbAAAAACrexXWA2k2NAAADnVzZXJfcmVzb3VyY2VzAAAAAOCrMt0DaTY0AAAKdm90ZXJfaW5mb8Aaalmb7KSLA2k2NAAAEWxpbWl0X2F1dGhfY2hhbmdlAg1Vc2VyQWdyZWVtZW507H8jIEVPUyBVc2VyIEFncmVlbWVudAoKIyMgRGVmaW5pdGlvbnMKCiBBbGwgY2FwaXRhbGl6ZWQsIGl0YWxpY2l6ZWQsIG9yIGlubGluZSBjb2RlIHRlcm1zIGluICpUaGUgRU9TIFVzZXIgQWdyZWVtZW50KiB3aWxsIGJlIGdpdmVuIHRoZSBzYW1lIGVmZmVjdCBhbmQgbWVhbmluZyBhcyBpbiAqRGVmaW5pdGlvbnMqLgoKKiBFT1MgVXNlciBBZ3JlZW1lbnQ6IFRoaXMgZG9jdW1lbnQgKCpFVUEqKQoKKiBDaGFpbiBJRDogYGNoYWluX2lkYOKAii3igIphY2EzNzZmMjA2YjhmYzI1YTZlZDQ0ZGJkYzY2NTQ3YzM2YzZjMzNlM2ExMTlmZmJlYWVmOTQzNjQyZjBlOTA2CgoqIFVzZXI6IEFueSBwZXJzb24gb3Igb3JnYW5pemF0aW9uIG9mIHBlcnNvbnMgd2hvIG1haW50YWluKHMpIGRpcmVjdCBvciBpbmRpcmVjdCBvd25lcnNoaXAgb2YgYW4gRU9TIGFjY291bnQsIG9yIEVPUy1iYXNlZCBwcm9wZXJ0eSBjb25uZWN0ZWQgdG8gYW4gRU9TIGFjY291bnQuCgoqIE93bmVyc2hpcDogRGlyZWN0IG9yIGluZGlyZWN0IGFjY2VzcyB0byBhbiBFT1MgYWNjb3VudCB0aHJvdWdoIG9uZSBvciBtb3JlIHZhbGlkIHBlcm1pc3Npb25zIGNoZWNrcy4gT3duZXJzaGlwIG1heSBiZSBwYXJ0aWFsbHkgc2hhcmVkIGJldHdlZW4gVXNlcnMgdGhyb3VnaCB0aGUgdXNlIG9mIG11bHRpLXNpZ25hdHVyZSBwZXJtaXNzaW9ucy4KCiogQmxvY2sgUHJvZHVjZXI6IFVzZXJzIHdobyBoYXZlIGNhbGxlZCBgcmVncHJvZHVjZXJgIGFuZCByZWNlaXZlIHJld2FyZHMgZnJvbSBlb3Npby52cGF5LgoKKiBgZW9zaW8ucHJvZHNgOiBBbiBFT1MgYWNjb3VudCB3aXRoIGEgZHluYW1pYyBwZXJtaXNzaW9ucyBzdHJ1Y3R1cmUgdGhhdCBjYW4gYXNzdW1lIHRoZSBwcml2aWxlZ2VzIG9mIHRoZSBgZW9zaW9gIGFjY291bnQgd2hlbiAxNS8yMSBCbG9jayBQcm9kdWNlcnMgYWdyZWUgdG8gZG8gc28uCgoqIE5ldHdvcmsgRnVuZHM6IFRva2VucyBjb250YWluZWQgd2l0aGluIHRoZSBmb2xsb3dpbmcgYWNjb3VudHM6IGBlb3Npby5uYW1lc2AsIGBlb3Npby5yYW1mZWVgLCBgZW9zaW8uc2F2aW5nYC4KCiogR292ZXJuaW5nIERvY3VtZW50czogKnJlZ3Byb2R1Y2VyKiBpcyBjb25zaWRlcmVkIGEgZ292ZXJuaW5nIGRvY3VtZW50LgoKKiBPbi1DaGFpbjogQW55IHRyYW5zYWN0aW9uLCBzbWFydCBjb250cmFjdCwgb3IgUmljYXJkaWFuIGNvbnRyYWN0IHdoaWNoIGlzIGxvY2F0ZWQgd2l0aGluIGEgYmxvY2sgdGhhdCBpcyBpcnJldmVyc2libGUgYW5kIGFwcGVuZGVkIHRvIHRoZSBFT1MgYmxvY2tjaGFpbiBgY2hhaW5faWRgLgoKKiBFT1MtYmFzZWQgUHJvcGVydHk6IEFueXRoaW5nIHRoYXQgcmVxdWlyZXMgYSB2YWxpZCBwZXJtaXNzaW9uIGluIG9yZGVyIHRvIGRpcmVjdGx5IG1hbmlwdWxhdGUsIGFsdGVyLCB0cmFuc2ZlciwgaW5mbHVlbmNlLCBvciBvdGhlcndpc2UgZWZmZWN0IG9uIHRoZSBFT1MgQmxvY2tjaGFpbgoKKiBDYWxsOiBUbyBzdWJtaXQgYW4gYWN0aW9uIHRvIHRoZSBFT1MgQmxvY2tjaGFpbiBgY2hhaW5faWRgLgoKKiBBdXRob3JpemF0aW9ucyAmIFBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyBhcmUgYXJiaXRyYXJ5IG5hbWVzIHVzZWQgdG8gZGVmaW5lIHRoZSByZXF1aXJlbWVudHMgZm9yIGEgdHJhbnNhY3Rpb24gc2VudCBvbiBiZWhhbGYgb2YgdGhhdCBwZXJtaXNzaW9uLiBQZXJtaXNzaW9ucyBjYW4gYmUgYXNzaWduZWQgZm9yIGF1dGhvcml0eSBvdmVyIHNwZWNpZmljIGNvbnRyYWN0IGFjdGlvbnMuCgoqIFJpY2FyZGlhbiBDb250cmFjdDogQSBjb250cmFjdCB0aGF0IHBsYWNlcyB0aGUgZGVmaW5pbmcgZWxlbWVudHMgb2YgYSBsZWdhbCBhZ3JlZW1lbnQgaW4gYSBmb3JtYXQgdGhhdCBjYW4gYmUgZXhwcmVzc2VkIGFuZCBleGVjdXRlZCBpbiBzb2Z0d2FyZS4KCiMjIEFydGljbGUgSSAt4oCKIFVzZXIgQWNrbm93bGVkZ2VtZW50IG9mIFJpc2tzCklmIFVzZXIgbG9zZXMgYWNjZXNzIHRvIHRoZWlyIEVPUyBhY2NvdW50IG9uIGBjaGFpbl9pZGAgYW5kIGhhcyBub3QgdGFrZW4gYXBwcm9wcmlhdGUgbWVhc3VyZXMgdG8gc2VjdXJlIGFjY2VzcyB0byB0aGVpciBFT1MgYWNjb3VudCBieSBvdGhlciBtZWFucywgdGhlIFVzZXIgYWNrbm93bGVkZ2VzIGFuZCBhZ3JlZXMgdGhhdCB0aGF0IEVPUyBhY2NvdW50IHdpbGwgYmVjb21lIGluYWNjZXNzaWJsZS4gVXNlcnMgYWNrbm93bGVkZ2UgdGhhdCB0aGUgVXNlciBoYXMgYW4gYWRlcXVhdGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmlza3MsIHVzYWdlIGFuZCBpbnRyaWNhY2llcyBvZiBjcnlwdG9ncmFwaGljIHRva2VucyBhbmQgYmxvY2tjaGFpbi1iYXNlZCBzb2Z0d2FyZS4gVGhlIFVzZXIgYWNrbm93bGVkZ2VzIGFuZCBhZ3JlZXMgdGhhdCB0aGUgVXNlciBpcyB1c2luZyB0aGUgRU9TIGJsb2NrY2hhaW4gYXQgdGhlaXIgc29sZSByaXNrLgoKIyMgQXJ0aWNsZSBJSeKAii3igIpTcGVjaWFsIFVzZXIgVHlwZXMKVXNlcnMgd2hvIGNhbGwgYHJlZ3Byb2R1Y2VyYCBhZ3JlZSB0bywgYW5kIGFyZSBib3VuZCBieSwgdGhlICpyZWdwcm9kdWNlciogUmljYXJkaWFuIENvbnRyYWN0LgoKIyMgQXJ0aWNsZSBJSUnigIot4oCKQ29uc2VudCBvZiB0aGUgRVVBClRoZSBuYXR1cmUgb2YgdGhlICpFT1MgVXNlciBBZ3JlZW1lbnQqIGlzIHN1Y2ggdGhhdCBpdCBzZXJ2ZXMgYXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudCBFT1MgTWFpbm5ldCBnb3Zlcm5hbmNlIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbiBwbGFjZS4gVGhlc2UgZnVuY3Rpb25zLCBlbmZvcmNlZCBieSBjb2RlLCBkbyBub3QgcmVxdWlyZSB0aGUgY29uc2VudCBvZiBVc2VycyBhcyB0aGVzZSBmdW5jdGlvbnMgYXJlIGluaGVyZW50IGFuZCBzeXN0ZW1pYyB0byB0aGUgRU9TIE1haW5uZXQgaXRzZWxmLgoKIyMgQXJ0aWNsZSBJVuKAii3igIpHb3Zlcm5pbmcgRG9jdW1lbnRzCkFueSBtb2RpZmljYXRpb25zIHRvIHRoZSAqRVVBKiBhbmQgKmdvdmVybmluZyBkb2N1bWVudHMqIG1heSBiZSBtYWRlIGJ5IGBlb3Npby5wcm9kc2AuIEl0IGlzIGFkbW9uaXNoZWQgdGhhdCBhIHN0YXRlbWVudCBiZSBjcmFmdGVkIGFuZCBpc3N1ZWQgdGhyb3VnaCBgZW9zaW8ucHJvZHNgIHZpYSBlb3Npby5mb3J1bSByZWZlcmVuZHVtIGNvbnRyYWN0IGRlc2NyaWJpbmcgc3VjaCBhIG1vZGlmaWNhdGlvbiBpbiBhZHZhbmNlLgoKIyMgQXJ0aWNsZSBW4oCKLeKAik5hdGl2ZSBVbml0IG9mIFZhbHVlClRoZSBuYXRpdmUgdW5pdCBvZiB2YWx1ZSBvbiBFT1MgY2hhaW5faWQgc2hhbGwgYmUgdGhlIEVPUyB0b2tlbiBhcyBkZWZpbmVkIGFuZCBjcmVhdGVkIGJ5IHRoZSBgZW9zaW8udG9rZW5gIHNtYXJ0IGNvbnRyYWN0LgoKIyMgQXJ0aWNsZSBWSeKAii3igIpNYWludGFpbmluZyB0aGUgRU9TIGJsb2NrY2hhaW4KYGVvc2lvLnByb2RzYCB3aWxsIG1haW50YWluIHRoZSBhY3RpdmUgYmxvY2tjaGFpbiBjb2RlYmFzZSB3aGljaCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWxsIG1vZGlmaWNhdGlvbnMgb2YgYWxsIGZlYXR1cmVzLCBvcHRpbWl6YXRpb25zLCBhbmQgdXBncmFkZXM6IHByZXNlbnQgYW5kIGZ1dHVyZS4KCiMjIEFydGljbGUgVklJ4oCKLeKAik5ldHdvcmsgRnVuZHMKSXQgaXMgYWRtb25pc2hlZCB0aGF0IGFueSBhbHRlcmluZyBvZiB0aGUgc3RhdGUgb2YgYW55IHRva2VucyBjb250YWluZWQgd2l0aGluIG5ldHdvcmsgZnVuZCBhY2NvdW50cywgb3IgYWx0ZXJpbmcgYW55IHByZS1leGlzdGluZyBjb2RlIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBnb3Zlcm5zIHRoZSBhbGxvY2F0aW9uLCBmdWxmaWxsbWVudCwgb3IgZGlzdHJpYnV0aW9uIG9mIGFueSAqbmV0d29yayBmdW5kcyogYmUgcHJlY2VkZWQgYnkgYSBzdGF0ZW1lbnQgY3JhZnRlZCBhbmQgaXNzdWVkIGJ5IGBlb3Npby5wcm9kc2AgdG8gdGhlICplb3Npby5mb3J1bSogcmVmZXJlbmR1bSBzeXN0ZW0gY29udHJhY3QgZGVzY3JpYmluZyB0aGUgZWZmZWN0IGluIGFkdmFuY2UuCgojIyBBcnRpY2xlIFZJSUnigIot4oCKRnJlZWRvbSBvZiBBY2NvdW50IENyZWF0aW9uCkFueSBjdXJyZW50IG9yIGZ1dHVyZSBVc2VyIGlzIGFibGUgdG8gY3JlYXRlIGFuIEVPUyBBY2NvdW50IHdpdGhvdXQgdGhlIHBlcm1pc3Npb24gYnkgYW55IG90aGVyIFVzZXIuIGBlb3Npby5wcm9kc2AgbWF5IG5ldmVyIGFmZmVjdCBhbiBFT1MgVXNlciBBY2NvdW50KHMpIHdpdGhvdXQgdmFsaWQgcGVybWlzc2lvbihzKSB3aGljaCBoYXZlIGJlZW4gc2hhcmVkIHdpdGggYGVvc2lvLnByb2RzYCBieSBhbiBFT1MgYWNjb3VudC4gYGVvc2lvLnByb2RzYCBtYXkgY2hhcmdlIGEgZmVlIGZvciBhbnkgYWN0aW9ucyB0aGF0IGFyZSByZXF1ZXN0ZWQgYnkgb3RoZXIgVXNlcnMgcGVydGFpbmluZyB0byBhbiBFT1MgYWNjb3VudCB3aGVyZSBwZXJtaXNzaW9ucyBhcmUgc2hhcmVkLgoKIyMgQXJ0aWNsZSBJWOKAii3igIpObyBGaWR1Y2lhcnkKTm8gVXNlciBzaGFsbCBoYXZlIGEgZmlkdWNpYXJ5IHB1cnBvc2UgdG8gc3VwcG9ydCB0aGUgdmFsdWUgb2YgdGhlIEVPUyB0b2tlbi4gTm8gVXNlciBjYW4gYXV0aG9yaXplIGFueW9uZSB0byBob2xkIGFzc2V0cywgYm9ycm93LCBzcGVhaywgY29udHJhY3Qgb24gYmVoYWxmIG9mIG90aGVyIEVPUyBVc2VycyBvciB0aGUgRU9TIGJsb2NrY2hhaW4gYGNoYWluX2lkYCBjb2xsZWN0aXZlbHkuIFRoaXMgRU9TIGJsb2NrY2hhaW4gc2hhbGwgaGF2ZSBubyBvd25lcnMsIG1hbmFnZXJzLCBvciBmaWR1Y2lhcmllcy4KCiMjIEFydGljbGUgWOKAii3igIpVc2VyIFNlY3VyaXR5CkFsbCBpdGVtcyBwZXJ0YWluaW5nIHRvIHBlcnNvbmFsIGFjY291bnQgc2VjdXJpdHksIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHNhZmVrZWVwaW5nIG9mIHByaXZhdGUga2V5cywgaXMgc29sZWx5IHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgVXNlciB0byBzZWN1cmUuCgojIyBBcnRpY2xlIFhJIC0gYGVvc2lvLnByb2RzYCBMaW1pdGVkIExpYWJpbGl0eQpUaGUgVXNlciBhY2tub3dsZWRnZXMgYW5kIGFncmVlcyB0aGF0LCB0byB0aGUgZnVsbGVzdCBleHRlbnQgcGVybWl0dGVkIGJ5IGFueSBhcHBsaWNhYmxlIGxhdywgdGhpcyBkaXNjbGFpbWVyIG9mIGxpYWJpbGl0eSBhcHBsaWVzIHRvIGFueSBhbmQgYWxsIGRhbWFnZXMgb3IgaW5qdXJ5IHdoYXRzb2V2ZXIgY2F1c2VkIGJ5IG9yIHJlbGF0ZWQgdG8gcmlza3Mgb2YsIHVzZSBvZiwgb3IgaW5hYmlsaXR5IHRvIHVzZSwgdGhlIEVPUyB0b2tlbiBvciB0aGUgRU9TIGJsb2NrY2hhaW4gYGNoYWluX2lkYCB1bmRlciBhbnkgY2F1c2Ugb2YgYWN0aW9uIHdoYXRzb2V2ZXIgb2YgYW55IGtpbmQgaW4gYW55IGp1cmlzZGljdGlvbiwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFjdGlvbnMgZm9yIGJyZWFjaCBvZiB3YXJyYW50eSwgYnJlYWNoIG9mIGNvbnRyYWN0IG9yIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSBhbmQgdGhhdCBgZW9zaW8ucHJvZHNgLCBub3IgdGhlIGluZGl2aWR1YWwgcGVybWlzc2lvbnMgdGhhdCBvcGVyYXRlIGl0LCBzaGFsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgaW5kaXJlY3QsIGluY2lkZW50YWwsIHNwZWNpYWwsIGV4ZW1wbGFyeSBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIGluY2x1ZGluZyBmb3IgbG9zcyBvZiBwcm9maXRzLCBnb29kd2lsbCBvciBkYXRhLgoKIyBFT1Mg7IKs7Jqp7J6QIOuPmeydmOyEnAoKIyMg7KCV7J2YCgpFT1Mg7IKs7Jqp7J6QIOuPmeydmOyEnOydmCDrqqjrk6Ag64yA66y47J6QLCDquLDsmrjsnoQg6ry0LCDrmJDripQg7J2465287J24IOy9lOuTnCDsmqnslrTripQg7KCV7J2Y7JeQ7ISc7JmAIOuPmeydvO2VnCDtmqjqs7zsmYAg7J2Y66+46rCAIOu2gOyXrOuQqeuLiOuLpC4KCi0gICBFT1Mg7IKs7Jqp7J6QIOuPmeydmOyEnDog67O4IOusuOyEnCAoRVVBKQotICAg7LK07J24IElEOiBjaGFpbl9pZOKAii0tLeKAimFjYTM3NmYyMDZiOGZjMjVhNmVkNDRkYmRjNjY1NDdjMzZjNmMzM2UzYTExOWZmYmVhZWY5NDM2NDJmMGU5MDYKLSAgIOyCrOyaqeyekDogRU9TIOqzhOygleydhCDsp4HsoJEg65iQ64qUIOqwhOygkeyggeycvOuhnCDshozsnKDtlZjqsbDrgpggRU9TIOqzhOygleyXkCDsl7DqsrDrkJwgRU9TIOq4sOuwmCDsho3shLHsnYQg7Jyg7KeA7ZWY6rGw64KYIOq0gOumrO2VmOuKlCDsgqzrnowsIOyhsOyngSwg65iQ64qUIOyhsOyngeydmCDrqqjrk6Ag7IKs656MLgotICAg7IaM7Jyg6raMOiDtlZjrgpgg7J207IOB7J2YIOycoO2aqO2VnCDsgqzsmqnqtoztlZwg7ZmV7J247J2EIO2Gte2VtCBFT1Mg6rOE7KCV7JeQIOyngeygkSDrmJDripQg6rCE7KCR7KCB7Jy866GcIOygkeq3vO2VqeuLiOuLpC4g7IaM7Jyg6raM7J2AIOuLpOykkSDshJzrqoXqtoztlZzsnYQg7IKs7Jqp7ZWY7JesIOyCrOyaqeyekOqwhOyXkCDrtoDrtoTsoIHsnLzroZwg6rO17JygIOuQoCDsiJgg7J6I7Iq164uI64ukLgotICAg67iU66GdIO2UhOuhnOuTgOyEnDogcmVncHJvZHVjZXLrpbwg7Iuk7ZaJ7ZWY6rOgIGVvc2lvLnZwYXnroZzrtoDthLAg67O07IOB7J2EIOuwm+uKlCDsgqzsmqnsnpAuCi0gICBlb3Npby5wcm9kczogMTUvMjEg67iU66GdIO2UhOuhnOuTgOyEnOuTpOydtCDrj5nsnZgg7ZWgIOuVjCBlb3NpbyDqs4TsoJXsnZgg6raM7ZWc7J2EIOqwgOyniCDsiJgg7J6I64qUIOuPmeyggSDqtoztlZwg6rWs7KGw66W8IOqwgOynhCBFT1Mg6rOE7KCVLgotICAg64Sk7Yq47JuM7YGsIOyekOq4iDog64uk7J2MIOqzhOygleyXkCDtj6ztlagg65CcIO2GoO2BsDogZW9zaW8ubmFtZXMsIGVvc2lvLnJhbWZlZSwgZW9zaW8uc2F2aW5nLgotICAg6rSA66asIOusuOyEnDogcmVncHJvZHVjZXLripQg6rSA66asIOusuOyEnOuhnCDqsITso7zrkKnri4jri6QuCi0gICDsmKjssrTsnbg6IEVPUyDruJTroZ3ssrTsnbggY2hhaW5faWTsl5Ag67mE6rCA7Jet7KCB7J2066mwIOy2lOqwgCDtlaAg7IiYIOyeiOuKlCDruJTroZ0g64K07JeQIOychOy5mO2VnCDrqqjrk6Ag6rGw656YLCDsiqTrp4jtirgg6rOE7JW9IOuYkOuKlCDrpqzsubTrpbTrlJTslYgg6rOE7JW9LgotICAgRU9TIOq4sOuwmCDsho3shLE6IEVPUyDruJTroZ3ssrTsnbjsnYQg7KeB7KCRIOyhsOyekSwg67OA6rK9LCDsoITshqEsIOyYge2WpSDrmJDripQg64us66asIOyggeyaqe2VmOq4sCDsnITtlbQg7Jyg7Zqo7ZWcIOyCrOyaqSDqtoztlZzsnbQg7ZWE7JqU7ZWcIOuqqOuToCDqsoMKLSAgIOy9nDogRU9TIOu4lOuhneyytOyduCBjaGFpbl9pZOyXkCDsnpHsl4XsnYQg7Iug7LKt7ZWY64qUIOqygy4KLSAgIO2XiOqwgCDrsI8g6raM7ZWcOiAn7ZeI6rCAJ+uKlCDtlbTri7kg6raM7ZWc7J2EIOuMgOyLoO2VmOyXrCDsoITshqHrkJjripQg7Yq4656c7J6t7IWY7J2YIOyalOq1rOyCrO2VreydhCDsoJXsnZjtlZjripQg642wIOyCrOyaqeuQqeuLiOuLpC4gJ+q2jO2VnCfsnYAg7Yq57KCVIOqzhOyVvSDsobDsuZjsl5Ag64yA7ZWcIOq2jO2VnOydhCDrtoDsl6ztlanri4jri6QuCi0gICDrpqzsubTrpbTrlJTslYgg6rOE7JW9OiDtlanrspXsoIEg6rOE7JW97J2YIOygleydmCDsmpTshozrpbwg7IaM7ZSE7Yq47Juo7Ja066GcIO2RnO2YhO2VmOqzoCDsi6TtlontlaAg7IiYIOyeiOuKlCDtmJXsi53snLzroZwg67Cw7LmY7ZWY64qUIOqzhOyVvS4KCiMjIOygnCAx7KGw4oCKLS0t4oCK7JyE7ZeY7JeQIOuMgO2VnCDsgqzsmqnsnpDrk6TsnZgg7J247KeACgrsgqzsmqnsnpDqsIAgY2hhaW5faWTsl5DshJwgRU9TIOqzhOygleyXkCDrjIDtlZwg7KCR6re8IOq2jO2VnOydhCDsnoPqs6AsIOuLpOuluCDrsKnrspXsnLzroZwgRU9TIOqzhOygleyXkCDrjIDtlZwg7KCR6re87J2EIOuztO2YuO2VmOq4sCDsnITtlbQg7KCB7KCI7ZWcIOyhsOy5mOulvCDst6jtlZjsp4Ag7JWK64qUIOqyveyasOyXkOuKlCBFT1Mg6rOE7KCV7JeQIOygkeq3vO2VoCDsiJgg7JeG6rKMIOuQnOuLpOuKlCDqsoPsnYQg7J247KCV7ZWY6rOgIOuPmeydmO2VqeuLiOuLpC4g7IKs7Jqp7J6Q64qUIOyVlO2YuO2ZlCDthqDtgbDqs7wg67iU66Gd7LK07J24IOq4sOuwmCDshoztlITtirjsm6jslrTsnZgg7JyE7ZeYLCDsgqzsmqnrspUsIOq3uOumrOqzoCDrs7XsnqHshLHsl5Ag64yA7ZW0IOy2qeu2hO2eiCDsnbTtlbTtlZjqs6Ag7J6I7J2M7J2EIOyduOygle2VqeuLiOuLpC4g7IKs7Jqp7J6Q64qUIEVPUyDruJTroZ3ssrTsnbjsnZgg7IKs7Jqp7JeQIOuMgO2VnCDsoITsoIHsnbgg7LGF7J6E7J2EIOynhOuLpOuKlCDqsoPsl5Ag7J247KCV7ZWY6rOgIOuPmeydmO2VqeuLiOuLpC4KCiMjIOygnCAy7KGw4oCKLS0t4oCK7Yq567OE7ZWcIOyCrOyaqeyekCDsnKDtmJUKCnJlZ3Byb2R1Y2Vy66W8IOyLpO2Wie2VmOuKlCDsgqzsmqnsnpDripQgcmVncHJvZHVjZXIg66as7Lm066W065SU7JWIIOqzhOyVveyXkCDrj5nsnZjtlZjqs6AsIOydtOyXkCDqtazsho3rkKnri4jri6QuCgojIyDsoJwgM+yhsOKAii0tLeKAikVVQeydmCDrj5nsnZgKCkVPUyDsgqzsmqnsnpAg64+Z7J2Y7ISc64qUIO2YhOyerCDsi5ztlonspJHsnbggRU9TIOuplOyduOuEtyDqsbDrsoTrhIzsiqTsl5Ag64yA7ZWcIOyEpOuqheycvOuhnCDsgqzsmqnrkKnri4jri6QuIOy9lOuTnOyXkCDsnZjtlbQg7Iuc7ZaJ65CY64qUIOydtOufrO2VnCDquLDriqXsnYAgRU9TIOuplOyduOuEtyDsnpDssrTsnZgg7LK06rOE7KCB7J206rOgIOqzoOycoO2VnCDquLDriqXsnbTrr4DroZwg7IKs7Jqp7J6Q7J2YIOuPmeydmOulvCDtlYTsmpTroZwg7ZWY7KeAIOyViuyKteuLiOuLpC4KCiMjIOygnCA07KGw4oCKLS0t4oCK6rSA66asIOusuOyEnAoKRVVB7JmAIOq0gOumrCDrrLjshJzripQgZW9zaW8ucHJvZHPrpbwg7Ya17ZW0IOyImOygleydtCDqsIDriqXtlanri4jri6QuIO2KueyglSDrs4Dqsr3sgqztla3snYQg7IKs7KCE7JeQIOyEpOuqhe2VmOuKlCBlb3Npby5mb3J1bSDtiKztkZwg6rOE7JW97J2EIO2Gte2VtCBlb3Npby5wcm9kc+qwgCDshLHrqoXshJzrpbwg7J6R7ISx7ZWY6rOgIOuwnOq4ie2VoCDqsoPsnYQg6raM6rOg7ZWp64uI64ukLgoKIyMg7KCcIDXsobDigIotLS3igIrqsIDsuZjsnZgg6riw67O4IOuLqOychAoKRU9TIGNoYWluX2lk7J2YIOq4sOuzuCDri6jsnITripQgZW9zaW8udG9rZW4g7Iqk66eI7Yq4IOqzhOyVveyXkCDsnZjtlbQg7KCV7J2Y65CY6rOgIOyekeyEseuQnCBFT1Mg7Yag7YGw7J6F64uI64ukLgoKIyMg7KCcIDbsobDigIotLS3igIpFT1Mg67iU66Gd7LK07J24IOycoOyngAoKZW9zaW8ucHJvZHPripQg66qo65OgIOq4sOuKpSwg7LWc7KCB7ZmULCDqt7jrpqzqs6Ag7JeF6re466CI7J2065Oc7J2YIO2YhOyerOyZgCDrr7jrnpjsnZgg66qo65OgIOyImOygleyCrO2VreydhCDqtaztmITtlZjripQg6rKD7J2EIO2PrO2VqO2VmOuQmCwg7J207JeQIOq1re2VnOuQmOyngCDslYrripQg7Zmc7ISx7ZmU65CcIOu4lOuhneyytOyduCDsvZTrk5zrsqDsnbTsiqTrpbwg7Jyg7KeA7ZWp64uI64ukCgojIyDsoJwgN+yhsOKAii0tLeKAiuuEpO2KuOybjO2BrCDsnpDquIgKCuuEpO2KuOybjO2BrCDsnpDquIgg6rOE7KCV7JeQIO2PrO2VqOuQnCDthqDtgbDsnZgg7IOB7YOc66W8IOuzgOqyve2VmOqxsOuCmCwg64Sk7Yq47JuM7YGsIOyekOq4iOydmCDrsLDrtoQsIOydtO2WiSwg65iQ64qUIOuwsO2PrOulvCDsp4Ev6rCE7KCR7KCB7Jy866GcIOq0gOumrO2VmOuKlCDquLDsobQg7L2U65Oc66W8IOuzgOqyve2VmOuKlCDqsr3smrDsl5DripQgZW9zaW8ucHJvZHPrpbwgZW9zaW8uZm9ydW0g7LSdIO2IrO2RnCDsi5zsiqTthZwg6rOE7JW97JeQIOy2lOqwgO2VmOyXrCDsgqzsoITsl5Ag7Lap67aE7ZWcIOyEpOuqheydtCDsnbTro6jslrTsoLjslbwg7ZWp64uI64ukLgoKIyMg7KCcIDjsobDigIotLS3igIrqs4TsoJUg7IOd7ISx7J2YIOyekOycoAoK7ZiE7J6sLCDrmJDripQg66+4656Y7J2YIOyCrOyaqeyekOuKlCDri6Trpbgg7IKs7Jqp7J6Q7J2YIO2XiOqwgCDsl4bsnbQgRU9TIOqzhOygleydhCDrp4zrk6Qg7IiYIOyeiOyKteuLiOuLpC4gZW9zaW8ucHJvZHPripQgRU9TIOqzhOygleyXkCDsnZjtlbQg6rO17Jyg65CcIOycoO2aqO2VnCDtl4jqsIAg7JeG7J2064qUIEVPUyDsgqzsmqnsnpAg6rOE7KCV7JeQIOyYge2WpeydhCDspIQg7IiYIOyXhuyKteuLiOuLpC4gZW9zaW8ucHJvZHPripQg6raM7ZWc7J20IOqzteycoOuQmOuKlCBFT1Mg6rOE7KCV6rO8IOq0gOugqO2VmOyXrCDri6Trpbgg7IKs7Jqp7J6Q6rCAIOyalOyyre2VnCDrqqjrk6Ag7J6R7JeF7JeQIOuMgO2VtCDsmpTquIjsnYQg67aA6rO87ZWgIOyImCDsnojsirXri4jri6QuCgojIyDsoJwgOeyhsOKAii0tLeKAiuyLoO2DgSDrtojqsIAKCuyCrOyaqeyekOuKlCBFT1Mg7Yag7YGw7J2YIOqwgOy5mOulvCDrkrfrsJvsuajtlaAg7IiYIOyeiOuKlCDsi6Dtg4Eg66qp7KCB7J2EIOqwgOyguOyEnOuKlCDslYjrkKnri4jri6QuIOyCrOyaqeyekOuKlCBFT1Mg7IKs7Jqp7J6QIOuYkOuKlCBFT1Mg67iU66Gd7LK07J24IGNoYWluX2lk66W8IOuMgO2RnO2VmOyXrCDriITqtazsl5Dqsozrj4Qg7J6Q7IKw7J2EIOuztOycoO2VmOqxsOuCmCwg64yA7Jes7ZWY6rGw64KYLCDsnpDsgrDsl5Ag64yA7ZW0IOyWmOq4sO2VmOqxsOuCmCwg6rOE7JW97J2EIOunuuydhCDqtoztlZzsnYQg67aA7Jes7ZWgIOyImCDsl4bsirXri4jri6QuIEVPUyDruJTroZ3ssrTsnbjsl5DripQg7IaM7Jyg7J6QLCDqtIDrpqzsnpAsIOq3uOumrOqzoCDsiJjtg4HsnpDqsIAg7JeG7Ja07JW8IO2VqeuLiOuLpC4KCiMjIOygnCAxMOyhsOKAii0tLeKAiuyCrOyaqeyekCDrs7TslYgKCuu5hOqzteqwnCDtgqTsnZgg67O06rSA7J2EIO2PrO2VqO2VmOuQmCwg7J207JeQIOq1re2VnOuQmOyngCDslYrripQg6rCc7J24IOqzhOyijCDrs7TslYjqs7wg6rSA66Co65CcIOuqqOuToCDtla3rqqnrk6Qg65iQ7ZWcIOyghOyggeycvOuhnCDsgqzsmqnsnpDqsIAg7JWI7KCE7ZWY6rKMIOuztOq0gO2VtOyVvCDtlanri4jri6QuCgojIyDsoJwgMTHsobDigIotLS3igIplb3Npby5wcm9kcyDsnKDtlZzssYXsnoQKCuyCrOyaqeyekOuKlCDrspXrpaDsnbQg7ZeI7Jqp7ZWY64qUIO2VnOuPhCDrgrTsl5DshJwgRU9TIO2GoO2BsOydmCDsnITtl5gsIOyCrOyaqSwg65iQ64qUIOyCrOyaqSDrtojqsIDroZwg7J247ZW0IOuwnOyDne2VmOuKlCDrqqjrk6Ag7IaQ7ZW07JeQIOuMgO2VtCDssYXsnoTsnZgg66m07LGFIOyhsO2VreydtCDsoIHsmqnrkJzri6TripQg6rKD7J2EIOyduOygle2VmOqzoCwg64+Z7J2Y7ZWp64uI64ukLiDqs4Tslb0g7JyE67CYLCDrtojrspUg7ZaJ7JyELCDqt7jrpqzqs6Ag7JyE67CYIO2WieychCAo6rSA66asIO2DnOunjCDtj6ztlagp7JmAIGVvc2lvLnByb2RzIOuYkOuKlCDsnbTrpbwg7Jq07JiB7ZWY64qUIOqwnOuzhCDsgqzsmqkg6raM7ZWc7J2EIO2PrO2VqO2VmOuQmCwg7J207JeQIOq1re2VnO2VmOyngCDslYrqs6Ag66qo65OgIOq0gO2VoCDsp4Dsl63sl5DshJzsnZgg66qo65OgIOyiheulmOydmCDsgqzsnKDroZwg7J247ZWcIEVPUyDruJTroZ3ssrTsnbggY2hhaW5faWQg7J207J21LCDsmIHsl4XqtowsIOuYkOuKlCDrjbDsnbTthLDsnZgg7IaQ7Iuk7J2EIO2PrO2VqO2VmOyXrCDqsITsoJHsoIEsIOyasOuwnOyggSwg7Yq57IiY7ZWcLCDrjIDtkZzsoIEsIOq3uOumrOqzoCDtjIzsg53soIHsnbgg7IaQ7ZW07JeQIOuMgO2VnCDssYXsnoTsnYQg7KeA7KeAIOyViuyKteuLiOuLpC4KCiMgRU9T55So5oi35Y2P6K6uCgojIyAqKuWumuS5iSoqCgpFT1PnlKjmiLfljY/orq7kuK3nmoTmiYDmnInlpKflhpnvvIzmlpzkvZPmiJblhoXogZTku6PnoIHmnK/or63lsIblhbfmnInkuI7ku6XkuIvlrprkuYnnm7jlkIznmoTmlYjmnpzlkozlkKvkuYnjgIIKCi0gRU9T55So5oi35Y2P6K6u77ya5Y2z5pys5paH5qGj77yIRVVB77yJCgotIOmTvuS4iklEOiBjaGFpbl9pZCAtIGFjYTM3NmYyMDZiOGZjMjVhNmVkNDRkYmRjNjY1NDdjMzZjNmMzM2UzYTExOWZmYmVhZWY5NDM2NDJmMGU5MDYKCi0g55So5oi377ya5Lu75oSP5ruh6Laz5LiL5YiX6KaB5rGC55qE5Liq5Lq65oiW57uE57uH77ya55u05o6l5oiW6ICF6Ze05o6l5oul5pyJRU9T6LSm5oi35oiW5LiORU9T6LSm5oi35YWz6IGU55qE5Z+65LqORU9T5Y+R6KGM55qE6LSi5Lqn44CCCgotIOaJgOacieadg++8muebtOaOpeaIluiAhemXtOaOpemAmui/h+S4gOS4quaIluWkmuS4quacieaViOeahOadg+mZkOajgOafpeiuv+mXruS4gOS4qkVPU+i0puaIt+OAguaJgOacieadg+WPr+S7pemAmui/h+Wkmuetvuadg+mZkOiuuOWPr+WcqOeUqOaIt+mXtOWFseS6q+OAggoKLSDmiafooYzkuoZyZWdwcm9kdWNl77yM5bm25LiU5LuOZW9zaW8udnBheemihuWPluaUtuWFpeeahOeUqOaIt+OAggoKLSBlb3Npby5wcm9kczrlhbfmnInliqjmgIHmnYPpmZDnu5PmnoTnmoRFT1PluJDmiLfvvIzlvZMxNS8yMSBCbG9jayBQcm9kdWNlcnPlkIzmhI/ml7bvvIzor6XluJDmiLflj6/ku6Xmib/mi4Vlb3Npb+W4kOaIt+eahOadg+mZkOOAggoKLSDnvZHnu5zotYTkuqfvvJrljIXlkKvlnKjku6XkuIvotKbmiLfkuK3nmoTku6PluIHvvJplb3Npby5uYW1lc+OAgWVvc2lvLnJhbWZlZeOAgSAgZW9zaW8uc2F2aW5n44CCCgotIOayu+eQhuaWh+aho++8mnJlZ3Byb2R1Y2Vy5piv5rK755CG5paH5qGj44CCCgotIOS7u+S9leS6pOaYk+OAgeaZuuiDveWQiOe6puaIluiAheadjuWYieWbvuWQiOe6pu+8jOWug+S7rOW3sue7j+S9jeS6juS4gOS4quWMuuWdl+S4re+8jOW5tuS4lOi/meS4quWMuuWdl+aYr+S4jeWPr+mAhui9rOeahOOAgeW3sumZhOWKoOWIsOWQjeS4umNoYWluX2lk55qERU9T5Yy65Z2X6ZO+5Lit44CCCgotIOWfuuS6jkVPU+i1hOS6p++8muS7u+S9lemcgOimgeacieaViOiuuOWPr+adpeaTjeS9nOOAgeaUueWPmOOAgei9rOenu+OAgeW9seWTjeaIluiAhei/m+ihjOWFtuS7luaTjeS9nOeahOS4nOilv+OAggoKLSDmiafooYzvvJrlnKjlkI3kuLpjaGFpbl9pZOeahEVPU+WMuuWdl+mTvuS4reaPkOS6pOS4gOS4quihjOWKqOOAggoKLSDmjojmnYPlkozmnYPpmZDvvJrmnYPpmZDvvIhQZXJtaXNzaW9uc++8ieaYr+eUqOadpeWumuS5ieS7o+ihqOivpeadg+mZkOWPkemAgeeahOS6pOaYk+eahOimgeaxgueahOS7u+aEj+WQjeWtl+OAguWPr+S7pee7meeJueWumueahOWQiOe6puaTjeS9nOeahOaOiOadg++8iEF1dGhvcml6YXRpb25z77yJ5YiG6YWN5p2D6ZmQ77yIUGVybWlzc2lvbnPvvInjgIIKCi0g5p2O5ZiJ5Zu+5ZCI57qm77ya5bCG5rOV5b6L5Y2P6K6u5Lit55qE5a6a5LmJ6KaB57Sg5Lul6IO95Zyo6L2v5Lu25Lit6KGo6L6+5ZKM5omn6KGM55qE5qC85byP6KGo6L6+55qE5ZCI57qm44CCCgojIyAqKuadoeasvuS4gCoqKirnlKgqKioq5oi36aOO6Zmp56Gu6K6kKioKCuWmguaenOeUqOaIt+S4ouWksei0puaIt+iuv+mXruadg+mZkOaIluiAheayoeaciemHh+WPluWQiOmAgueahOaWueW8j+S/neaKpOi0puaIt+iuv+mXruadg+mZkO+8jOeUqOaIt+W6lOefpeaCieW5tuWQjOaEj++8jEVPU+i0puaIt+WwhuaXoOazleiuv+mXruOAgueUqOaIt+W6lOehruiupOeUqOaIt+WvueWKoOWvhuS7o+W4geWSjOWMuuWdl+mTvui9r+S7tueahOmjjumZqeOAgeeUqOazleWSjOWkjeadguaAp+acieWFheWIhuS6huino+OAgueUqOaIt+aJv+iupOW5tuWQjOaEj+eUqOaIt+iHquihjOaJv+aLheS9v+eUqEVPU+WMuuWdl+mTvueahOmjjumZqeOAggoKIyMgKirmnaHmrL7kuowqKioq54m55q6K55SoKioqKuaIt+exu+WeiyoqCgrmiafooYxyZWdwcm9kdWNl77yM5ZCM5oSP5bm25LiU5Y+XcmVncHJvZHVjZXLmnY7lmInlm77lkIjnuqbnuqbmnZ/nmoTnlKjmiLfjgIIKCiMjICoq5p2h5qy+5LiJKioqKuWQjOaEjyoqKipFT1MqKioq55SoKioqKuaIt+WNj+iurioqCgpFT1PnlKjmiLfljY/orq7nmoTlrp7otKjmmK/lr7nlvZPliY1FT1PkuLvnvZHmsrvnkIblip/og73nmoTmj4/ov7DjgILnlLHku6PnoIHlvLrliLbmiafooYznmoTlip/og73kuI3pnIDopoHnlKjmiLfnmoTlkIzmhI/vvIzlm6DkuLrov5nkupvlip/og73mmK9FT1PkuLvnvZHns7vnu5/oh6rluKbnmoTjgIIKCiMjICoq5p2h5qy+5ZubKiogLSAqKuayu+eQhuaWh+ahoyoqCgplb3Npby5wcm9kc+WPr+S7peWvuUVPU+eUqOaIt+WNj+iuruWSjOayu+eQhuaWh+aho+i/m+ihjOS7u+S9leS/ruaUueOAguS4peato+aPkOmGku+8jOaPkOWJjeeUqGVvc2lvLmZvcnVt5YWs5oqV5ZCI57qm77yM6YCa6L+HZW9zaW8ucHJvZHPnvJblhpnjgIHlj5HluIPkuIDkuKrlo7DmmI7mnaXmj4/ov7DpgqPkuKrkv67mlLnjgIIKCiMjICoq5p2h5qy+5LqUKioqKuWOn+eUn+S7tyoqKirlgLzljZXkvY0qKgoKRU9T5YWs6ZO+5LiK55qE5Y6f55Sf5Lu35YC85Y2V5L2N5bqU5Li6ZW9zaW8udG9rZW7mmbrog73lkIjnuqblrprkuYnlkozliJvlu7rnmoRFT1PpgJror4HjgIIKCiMjICoq5p2h5qy+5YWtKioqKue7tOaKpCoqKipFT1MqKioq5Yy6KioqKuWdl+mTvioqCgrml6DorrrnjrDlnKjmiJblsIbmnaXlsIbmnaXvvIxlb3Npby5wcm9kc+Wwhue7tOaKpOa0u+i3g+eahOWMuuWdl+mTvuS7o+eggeW6k++8jOWMheaLrOS9huS4jemZkOS6juaJgOacieWKn+iDveOAgeS8mOWMluOAgeWNh+e6p+eahOaJgOacieS/ruaUueOAgeWunueOsOOAggoKIyMg5p2h5qy+5LiDIC0gKioqKuWumioqKirkuYkqKioqRU9TKioqKue9kee7nOi1hOS6pwoK5pu05pS5572R57uc6LWE5Lqn6LSm5oi35Lit55qE5Lu75L2V5Luj5biB55qE54q25oCB77yM5pu05pS55Lu75L2V546w5a2Y55qE55u05o6l5oiW6Ze05o6l566h55CG5Lu75L2V572R57uc6LWE5Lqn55qE5YiG6YWN44CB5a6e546w5oiW5YiG5Y+R55qE5Luj56CB77yM6ZyA6KaB5LqL5YWI55SoZW9zaW8ucHJvZHPlnKhlb3Npby5mb3J1beWFrOaKleWQiOe6puS4iue8luWGmeWSjOWPkeW4g+aViOaenOaPj+i/sOeahOWjsOaYjuOAggoKIyMgKirmnaHmrL7lhast5Yib5bu66LSm5oi36Ieq55SxKioKCuS7u+S9leeOsOWcqOaIluWwhuadpeeahOeUqOaIt+mDveWPr+S7peWcqOacque7j+S7u+S9leWFtuS7lueUqOaIt+iuuOWPr+eahOaDheWGteS4i+WIm+W7ukVPU+W4kOaIt+OAgiAg5aaC5L2V5rKh5pyJ5pS25YiwRU9T5biQ5oi355qE5pyJ5pWI6K645Y+v77yIcGVybWlzc2lvbu+8ie+8jGVvc2lvLnByb2Rz5rC46L+c5LiN5Lya5b2x5ZONRU9T55So5oi35biQ5oi344CCICDlr7nkuo7lhbHkuqvmnYPpmZDnmoRFT1PluJDmiLfnmoTlhbbku5bnlKjmiLfor7fmsYLnmoTku7vkvZXmk43kvZzvvIxlb3Npby5wcm9kc+WPr+iDveS8muaUtuWPlui0ueeUqOOAggoKIyMgKirmnaHmrL7kuZ3msqHmnInlj5fmiZjkuroqKgoK5rKh5pyJ55So5oi35om/5ouF5L+h5omY6LSj5Lu75p2l57u05oyBRU9T5Luj5biB55qE5Lu35YC844CC5rKh5pyJ55So5oi35Y+v5Lul5Luj6KGoRU9T55So5oi35oiW6ICF5Luj6KGo5ZCN5Li6Y2hhaW5fSUTnmoRFT1PljLrlnZfpk77mjojmnYPku7vkvZXkurrlhbHlkIzmjIHmnInotYTkuqfjgIHlgJ/mrL7jgIHlj5HoqIDmiJblrprlkIjlkIzjgILmraTljLrlnZfpk77kuI3lrZjlnKjmi6XmnInogIXjgIHnrqHnkIbogIXmiJbogIXlj5fmiZjkurrjgIIKCiMjICoq5p2h5qy+5Y2B5Liq5Lq65a6J5YWoKioKCuaJgOacieacieWFs+S4quS6uui0puaIt+WuieWFqOeahOS6i+mhue+8jOWMheaLrOS9huS4jemZkOS6juengemSpeeahOWuieWFqOS/neWtmO+8jOmDveeUseeUqOaIt+iHquW3sei0n+i0o+OAggoKIyMgKirmnaHmrL7ljYHkuIAgZW9zaW8ucHJvZHPnmoTmnInpmZDotKPku7sqKgoK55So5oi35bqU55+l5oKJ5ZKM5ZCM5oSP77yM5Zyo5Lu75L2V6YCC55So5rOV5b6L5YWB6K6455qE5pyA5aSn6IyD5Zu05YaF77yM5pys5YWN6LSj5aOw5piO6YCC55So5LqO5LiORU9T5Luj5biB6aOO6Zmp77yM5L2/55So5oiW5peg5rOV5L2/55SoRU9T5Luj5biB5pyJ5YWz5oiW5a+86Ie055qE5Lu75L2V5oiW5omA5pyJ5o2f5a6z5oiW5Lyk5a6z77yM5Lmf6YCC55So5LqO5Lu75L2V5Y+45rOV566h6L6W5Yy65YaF55qE5Lu75L2V5Lu75L2V6KGM5Li65LiL55qERU9T5Yy65Z2X6ZO+Y2hhaW5faWTvvIzljIXmi6zkvYbkuI3pmZDkuo7ov53lj43mi4Xkv53jgIHov53lj43lkIjlkIzmiJbkvrXmnYPooYzkuLrvvIjljIXmi6znlo/lv73vvInjgIJlb3Npby5wcm9kc+S7peWPiuaTjeS9nOWug+eahOS4quS6uuadg+mZkOWvueS6juS7u+S9lemXtOaOpeeahO+8jOWBtueEtueahO+8jOeJueauiueahO+8jOekuuS+i+aAp+eahOaIluWQjuaenOaAp+eahOaNn+Wus++8jOWMheaLrOWIqea2puaNn+Wkse+8jOWVhuiqieaIluaVsOaNru+8jOS4jeaJv+aLheS7u+S9lei0o+S7u+OAghZCbG9ja1Byb2R1Y2VyQWdyZWVtZW50xmwjIyMgMS4gVGhlIGludGVudCBvZiByZWdwcm9kdWNlcgoKVGhlIGludGVudCBvZiB0aGUgYHJlZ3Byb2R1Y2VyYCBhY3Rpb24gaXMgdG8gcmVnaXN0ZXIgYSBibG9jayBwcm9kdWNlciBjYW5kaWRhY3kuIFRoaXMgY29udHJhY3QgaXMgY29uc2lkZXJlZCBhIGdvdmVybmluZyBkb2N1bWVudCBhcyBkZWZpbmVkIGJ5IHRoZSBFT1MgVXNlciBBZ3JlZW1lbnQgKEVVQSkuCgpyZWdwcm9kdWNlcuydmCDrqqnsoIEKCmByZWdwcm9kdWNlcmAg7J6R7JeF7J2YIOuqqeyggeydgCDruJTroZ3sg53sgrDsnpAg7J6F7ZuE67O0IOuTseuhneydhCDtlZjripQg6rKD7J6F64uI64ukLiDsnbQg6rOE7JW97J2AIEVPUyDsgqzsmqnsnpAg6rOE7JW97IScIChFVUEp7JeQIOygleydmOuQnCDrsJTsmYAg6rCZ7J20IOq0gOumrCDrrLjshJzroZwg6rCE7KO865Cp64uI64ukLgoKcmVncHJvZHVjZXIg55qE55uu55qECgpgcmVncHJvZHVjZXJg5pON5L2c55qE55uu55qE5piv5rOo5YaM5oiQ5Li65Ye65Z2X6IqC54K55YCZ6YCJ6ICF44CC5qC55o2uIEVPUyDnlKjmiLfljY/orq4oRVVBKeeahOWumuS5ie+8jOacrOWQiOe6puWxnuS6juayu+eQhuaWh+acrChnb3Zlcm5pbmcgZG9jdW1lbnQpCgojIyMgMi4gTm9taW5hdGlvbgoKSSwge3sgcHJvZHVjZXIgfX0sIGhlcmVieSBub21pbmF0ZSBteXNlbGYgZm9yIGNvbnNpZGVyYXRpb24gYXMgYSBibG9jayBwcm9kdWNlciBjYW5kaWRhdGUuIFRoaXMgbm9taW5hdGlvbiBpbmNsdWRlcyBhZ3JlZW1lbnQgdG8gdGhlIHRlcm1zIG9mIHRoaXMgY29udHJhY3QgYnkgbXkgYmxvY2sgcHJvZHVjZXIgY2FuZGlkYXRlIGVudGl0eSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgc2hhcmVob2xkZXJzLCBvd25lcnMsIGVtcGxveWVlcywgc3RhZmYsIG1lbWJlcnMsIGFuZCBhbnkgaW5kaXZpZHVhbCB3b3JraW5nIGluIG9mZmljaWFsLCBkaXJlY3QsIG9yIGFmZmlsaWF0ZWQgY2FwYWNpdHkgZm9yIG15IEJsb2NrIFByb2R1Y2VyIGVudGl0eS4KCuyngOuqhQoK64KYLCB7eyBwcm9kdWNlciB9feuKlCDruJTroZ3tlITroZzrk4DshJwg7ZuE67O066GcIOqzoOugpOuQmOuPhOuhnSDsnpDsi6DsnYQg7KeA66qF7ZWp64uI64ukLiDsnbQg7KeA66qF7JeQ64qUIOu4lOuhne2UhOuhnOuTgOyEnO2ajOyCrOydmCDrqqjrk6Ag7KO87KO8LCDshozsnKDsnpAsIOyngeybkCwg66mk67KELCDtmozsm5Ag67CPIOqzteyLneyduOybkCwg7KeB7KCRIOuYkOuKlCDqs4Tsl7Tsgqzsl5DshJwg7J287ZWY64qUIOuqqOuToCDqsJzsnbjsnYQg7Y+s7ZWo7ZWcIOu4lOuhne2UhOuhnOuTgOyEnCDtmozsgqzqsIAg6rOE7JW9IOyhsOqxtOyXkCDrjIDtlbQg64+Z7J2Y7ZWo7J2EIOyduOygle2VqeuLiOuLpC4KCuaPkOWQjQoK5pys5Lq677yMe3sgcHJvZHVjZXIgfX3vvIznibnmraTmj5DlkI3mnKzkurrkuLrlh7rlnZfoioLngrnlgJnpgInkurrjgILmnKzmj5DlkI3ljIXmi6zkuobmnKzlh7rlnZfoioLngrnlgJnpgInkurrlrp7kvZPlr7nmnKzlkIjnuqbkuK3miYDmnInmnaHmrL7nmoTmmI7noa7lkIzmhI/vvIzljIXlkKvlhbbmiYDmnInogIXjgIHpm4flkZjjgIHlkZjlt6XjgIHmiJDlkZjvvIzku6Xlj4rku7vkvZXku6XmraPlvI/mlrnlvI/jgIHnm7TmjqXmiJbpmYTlsZ7mlrnlvI/kuLrmnKzlh7rlnZfoioLngrnlrp7kvZPlt6XkvZznmoTkuKrkurrjgIIKCiMjIyAzLiBSZXNpZ25hdGlvbiBhbmQgUmVtb3ZhbCBmb3IgSW5hYmlsaXR5IHRvIFBlcmZvcm0gT2JsaWdhdGlvbnMuCgpJZiBJLCB7eyBwcm9kdWNlciB9fSwgYW0gdW5hYmxlIHRvIHBlcmZvcm0gYW55IG9mIHRoZSBvYmxpZ2F0aW9ucyBzdGlwdWxhdGVkIGluIHRoaXMgY29udHJhY3QsIEkgd2lsbCByZXNpZ24gbXkgcG9zaXRpb24gYnkgY2FsbGluZyB0aGUgYHVucmVncHJvZGAgYWN0aW9uLgoKSWYgSSwge3sgcHJvZHVjZXIgfX0sIGZhaWwgdG8gcmVzaWduIHdoZW4gdW5hYmxlIHRvIHBlcmZvcm0gc2FpZCBvYmxpZ2F0aW9ucywgSSB1bmRlcnN0YW5kIHRoYXQgcHJvY2VkdXJlcyBlbnVtZXJhdGVkIGluIHRoaXMgY29udHJhY3Qgc2hhbGwgYmUgZW5hY3RlZC4KCuydmOustOydmCDrtojsnbTtlonsl5Ag64yA7ZWcIOyCrOyehCDrsI8g7LKg7ZqMCgp7eyBwcm9kdWNlciB9feqwgCDrs7gg6rOE7JW97ISc7JeQIOuqheyLnOuQnCDsnZjrrLTrpbwg7IiY7ZaJIO2VoCDsiJgg7JeG64qUIOqyveyasCwg7IOd7IKw7J6QIO2CpOulvCBudWxsIOuhnCDtlajsnLzroZzsjagg67O47J247J2YIOyngOychOulvCDsgqzsnoTtlanri4jri6QuCgrrp4zslb0g64K06rCAIHt7cHJvZHVjZXJ9feydmCDsnZjrrLTrpbwg7J207ZaJIO2VoCDsiJgg7JeG7J2EIOuVjCDsgqzsnoTtlZjsp4Ag7JWK64qU64uk66m0LCDrgpjripQg67O4IOqzhOyVveyXkCDsl7TqsbDrkJwg7KCI7LCo6rCAIOynke2WieuQqOydhCDrj5nsnZjtlanri4jri6QuCgrlm6DkuI3og73lsaXooYzkuYnliqHogIzpgIDlh7rmiJbooqvlj5bmtojlh7rlnZfotYTmoLwKCuWmguaenOaIke+8jHt7IHByb2R1Y2VyIH1977yM5LiN6IO95bGl6KGM5pys5ZCI57qm5Lit5omA6KeE5a6a55qE5omA5pyJ5LmJ5Yqh77yM5oiR5bCG5L2/55SoIGB1bnJlZ3Byb2RgIOaTjeS9nOadpeiHquaIkemAgOWHuu+8iHJlc2lnbu+8ieOAggoK5aaC5p6c5oiRIHt7IHByb2R1Y2VyIH19LCDlnKjml6Dms5XlsaXooYzkuIrov7DkuYnliqHml7bmnKrog73pgIDlh7oocmVzaWduKe+8jOaIkeefpeaZk+acrOWQiOe6puWwhuS8muaMieeFp+aJgOacieWIl+S4vueahOeoi+W6j+WvueaIkeWunuihjOWItuijgeaIluWkhOe9mueoi+W6j+OAggoKIyMjIDQuIEVPUyBBY2NvdW50cwoKQmxvY2sgUHJvZHVjZXJzIG1heSBuZXZlciBhZmZlY3QgYW4gYWNjb3VudCBvbiB0aGUgRU9TIGJsb2NrY2hhaW4sIGV4Y2VwdCBmb3IgdGhlIHJlYXNvbnMgc3BlY2lmaWNhbGx5IGNpdGVkIGluIHRoaXMgY29udHJhY3QgdGhhdCBwZXJ0YWluIHRvIEJsb2NrIFByb2R1Y2VyIGFjY291bnRzLiBVc2VyIGFjY291bnRzIGNhbiBvbmx5IGJlIGFmZmVjdGVkIG9uIHRoZSBiYXNpcyBvZiBBcnRpY2xlIFZJSUkgaW4gdGhlIEVPUyBVc2VyIEFncmVlbWVudC4KCkVPUyDqs4TsoJUKCuu4lOuhne2UhOuhnOuTgOyEnOuKlCDrs7gg6rOE7JW97JeQ7IScIO2VtOuLue2VmOuKlCDruJTroZ3tlITroZzrk4DshJzsnZgg6rOE7KCVIOywqOuLqOyXkCDqtIDroKjtlZjsl6wg7Yq567OE7Z6IIOyWuOq4ie2VnCDsnbTsnKDrpbwg7KCc7Jm47ZWY6rOg64qUIEVPUyDruJTroZ3ssrTsnbjsnZgg6rOE7KCV7JeQIOqysOy9lCDsmIHtlqXsnYQg66+47LmY7KeAIOyViuyKteuLiOuLpC4g7IKs7Jqp7J6QIOqzhOygleydgCBFT1Mg7IKs7Jqp7J6QIOqzhOyVveyEnOydmCA47KGw7JeQIOq3vOqxsO2VoCDrlYzrp4wg7JiB7Zal7J2EIOuwm+ydhCDsiJgg7J6I7Iq164uI64ukLgoKRU9TIOi0puWPtwoK5Ye65Z2X6IqC54K55rC46L+c5LiN5Lya5a+5IEVPUyDljLrlnZfpk77kuIrnmoTluJDmiLfpgKDmiJDlvbHlk43vvIzpmaTpnZ7mmK/mnKzlkIjnuqbkuK3nibnliKvmj5DliLDkuI7lh7rlnZfoioLngrnluJDmiLfmnInlhbPnmoTljp/lm6DjgILlj6rmnInln7rkuo4gRU9T55So5oi35Y2P6K6u5Lit55qE56ys5YWr5p2h55qE5oOF5b2i5LiL77yM55So5oi355qE6LSm5Y+35omN5Lya5Y+X5Yiw5b2x5ZONLgoKIyMjIDUuIFByb2R1Y2VyIEtleQoKSSwge3sgcHJvZHVjZXIgfX0sIHdpbGwgc2lnbiBibG9ja3Mgd2l0aCB7eyBwcm9kdWNlcl9rZXkgfX0KCklmIEksIHt7IHByb2R1Y2VyIH19IHN1c3BlY3QgbXkga2V5IGhhcyBiZWVuIGNvbXByb21pc2VkIEkgd2lsbCBhbGVydCB0aGUgb3RoZXIgQmxvY2sgUHJvZHVjZXJzIGltbWVkaWF0ZWx5LgoKSSwge3sgcHJvZHVjZXIgfX0sIGFja25vd2xlZGdlIHRoYXQgYW55IGFuZCBhbGwgYWN0aW9ucyBleGVjdXRlZCB3aXRoIG15IHt7IHByb2R1Y2VyX2tleSB9fSBpcyBteSByZXNwb25zaWJpbGl0eSwgcmVnYXJkbGVzcyBvZiB0aGUgYWNjb3VudCBiZWluZyBjb21wcm9taXNlZC4KCu2UhOuhnOuTgOyEnCDtgqQKCuuCmCwge3sgcHJvZHVjZXIgfX3ripQge3sgcHJvZHVjZXIgXyBrZXkgfX0g66GcIOu4lOuhneyXkCDshJzrqoUg7ZWgIOqyg+yeheuLiOuLpC4K66eM7JW9IOuCtCwge3twcm9kdWNlcn19IOqwgCDrs7jsnbjsnZgg7YKk6rCAIOyGkOyDgeuQmOyXiOuLpOqzoCDsnZjsi6zrkJjrqbQg7KaJ7IucIOuLpOuluCDruJTroZ3tlITroZzrk4DshJzsl5Dqsowg7JWM66Ck7KSEIOqyg+yeheuLiOuLpC4K64KYLCB7e3Byb2R1Y2VyfX3ripQgRU9TIOu4lOuhneyytOyduOyXkOyEnCDrs7jsnbjsnZgg67iU66Gd7ZSE66Gc65OA7IScIOqzhOygleydtCDsi6TtlontlZjripQg66qo65OgIOyekeyXheyXkCDrjIDtlbQsIOqzhOyglSDsnbTsg4Eg7Jyg66y07JmAIOq0gOugqCDsl4bsnbQsIOyxheyehOydtCDsnojsnYzsnYQg7J247KCV7ZWp64uI64ukLgoK5Ye65Z2X6IqC54K55YWs6ZKlCgog5oiRLCB7eyBwcm9kdWNlciB9fSwg5bCG5L2/55SoIHt7IHByb2R1Y2VyX2tleSB9fSDlr7nljLrlnZfnrb7lkI3jgIIK5aaC5p6c5oiRLCB7eyBwcm9kdWNlciB9fSwg5oCA55aR5oiR55qE5a+G6ZKl5bey6KKr5rOE6Zyy77yM5oiR5bCG56uL5Y2z6YCa55+l5YW25LuW6IqC54K544CCCuaIke+8jHt7IHByb2R1Y2VyIH1977yM5om/6K6k5oiR55qE5Ye65Z2X6IqC54K55biQ5oi35ZyoRU9T5Yy65Z2X6ZO+5LiK5omA5omn6KGM55qE5Lu75L2V5pON5L2c6YO95piv5oiR55qE6LSj5Lu777yM5peg6K666K+l5biQ5oi35piv5ZCm6KKr55uX44CCCgojIyMgNi4gQVBJIEVuZHBvaW50cwoKSWYgSSwge3sgcHJvZHVjZXIgfX0sIHF1YWxpZnkgZm9yLCBhbmQgY2hvb3NlIHRvIGNsYWltIHJld2FyZHMgZHVlIHRvIHZvdGVzIHJlY2VpdmVkLCBhbmQvb3IgYmxvY2tzIHByb2R1Y2VkLCBJLCB7eyBwcm9kdWNlciB9fSwgd2lsbCBwcm92aWRlIGZ1bmN0aW9uaW5nIGFuZCBxdWVyeWFibGUgcHVibGljIFAyUCBhbmQgQVBJIGVuZHBvaW50cyB0byBtYWludGFpbiBzeW5jaHJvbml6YXRpb24gd2l0aCB0aGUgYmxvY2tjaGFpbiBhbmQgc3VibWl0IHRyYW5zYWN0aW9ucyB0byBiZSBpbmNsdWRlZC4gQVBJIGVuZHBvaW50cyBtdXN0IGJlIHVwZGF0ZWQgdG8gYSByZWNlbnQgZnVuY3Rpb25hbCB2ZXJzaW9uIHRoYXQgZG9lcyBub3QgaGF2ZSBrbm93biBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuCgpJLCB7eyBwcm9kdWNlciB9fSwgaGVyZWJ5IGFja25vd2xlZGdlIHRoYXQgaWYgSSBhbSB1bmFibGUgdG8gZG8gc28gd2l0aGluIDMwIG1pbnV0ZXMgb2YgYmVpbmcgYWxlcnRlZCBieSBhbm90aGVyIGJsb2NrIHByb2R1Y2VyIGNhbmRpZGF0ZSwgSSBjYW4gYmUgcmVtb3ZlZCBieSB1c2Ugb2YgdGhlIGBybXZwcm9kdWNlcmAgYWN0aW9uLgoKQVBJIOyXlOuTnO2PrOyduO2KuAoK66eM7JW9IOuCtCwge3sgcHJvZHVjZXIgfX0g6rCAIO2IrO2RnOulvCDrsJvslYQg67iU66GdIOuztOyDgeydhCDssq3qtaztlaAg7IiYIOyeiOuKlCDsnpDqsqnsnYQg7Ja77Jy866m0LCDrgpgge3sgcHJvZHVjZXIgfX3ripQg7J6R64+ZIOuwjyDsv7zrpqwg6rCA64ql7ZWcIOqzteqwnCBQMlAg67CPIEFQSSDsl5Trk5ztj6zsnbjtirjrpbwg67iU66Gd7LK07J246rO87J2YIOuPmeq4sO2ZlCDrsI8g7Yq4656c7J6t7IWY7J2EIOygnOy2nO2VoCDsiJgg7J6I6rKMIOycoOyngOq0gOumrO2VqeuLiOuLpC4gQVBJIOyXlOuTnO2PrOyduO2KuOuKlCDslYzroKTsp4Qg67O07JWIIOy3qOyVveyEseydtCDsl4bripQg7LWc7Iug67KE7KCE7Jy866GcIOyXheuNsOydtO2KuO2VtOyVvCDtlanri4jri6QuCgrrgpgsIHt7IHByb2R1Y2VyIH19IOuKlCDri6TrpbggYmxvY2sgcHJvZHVjZXIgY2FuZGlkYXRlIOqwgCDqsr3qs6Ag4oCL4oCL7ZWcIO2bhCwgMzDrtoQg7J2064K07JeQIOuwlOuhnOyeoeydhCDsiJgg7JeG64uk66m0IGBybXZwcm9kdWNlcmAg7KGw7LmY66W8IO2Gte2VtCDsnpDqsqnsnbQg7KCc6rGwIOuQoCDsiJgg7J6I7J2M7J2EIOyduOygle2VqeuLiOuLpC4KCkFQSSDnq6/ngrkKCuWmguaenOaIke+8jHt7IHByb2R1Y2VyIH19IOeUseS6juW+l+WIsOaKleelqOWSjC/miJblh7rlnZfnmoTljp/lm6DvvIznrKblkIjpooblj5blpZblirHnmoTmnaHku7blubbpgInmi6nmjqXlj5flpZblirHvvIzpgqPkuYjmiJHvvIwge3sgcHJvZHVjZXIgfX3vvIzlsIbmj5Dkvpvlip/og73mraPluLjnmoTlhazlhbEgUDJQIOWSjCBBUEkg56uv54K55p2l57u05oqk5LiO5Yy65Z2X6ZO+55qE5ZCM5q2l77yM5bm25o+Q5Lqk6KaB5omT5YyF5YWl5Z2X55qE5LqL5Yqh44CCQVBJIOerr+eCueW/hemhu+abtOaWsOWIsOacgOaWsOeahOWPr+eUqOeJiOacrO+8jOW5tuS4lOivpeeJiOacrOayoeacieW3suefpeeahOWuieWFqOa8j+a0ngoK5oiR77yMe3twcm9kdWNlcn1977yM5Zyo5q2k56Gu6K6k77yM5aaC5p6c5oiR5Zyo5pS25Yiw5Y+m5LiA5LiqIGJsb2NrIHByb2R1Y2VyIGNhbmRpZGF0ZeeahOitpuWRiuWQjjMw5YiG6ZKf5YaF5LuN5LiN6IO956ym5ZCI5LiK6L+w6KaB5rGC77yM5Y+v5Lul5L2/55SoYHJtdnByb2R1Y2VyYOaTjeS9nOenu+mZpOaIkeeahOi0puaIt+OAggoKIyMjIDcuIEV4ZWN1dGlvbiB0aW1lCgpJLCB7eyBwcm9kdWNlciB9fSwgd2lsbCBkZXBsb3kgYW5kIHJ1biBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGNhcGFibGUgb2YgbWFpbnRhaW5pbmcgMm1zIG9yIGxlc3MgQ1BVIGV4ZWN1dGlvbiB0aW1lcy4KCkksIHt7IHByb2R1Y2VyIH19LCBoZXJlYnkgYWNrbm93bGVkZ2UgdGhhdCBpZiBJIGFtIHVuYWJsZSB0byBkbyBzbyB3aXRoaW4gMzAgbWludXRlcyBvZiBiZWluZyBhbGVydGVkIGJ5IGFub3RoZXIgYmxvY2sgcHJvZHVjZXIgY2FuZGlkYXRlLCBJIGNhbiBiZSByZW1vdmVkIGJ5IHVzZSBvZiB0aGUgYHJtdnByb2R1Y2VyYCBhY3Rpb24uCgrsi6Ttlokg7Iuc6rCECgrrgpgsIHt7IHByb2R1Y2VyIH1964qUIDJtcyDrmJDripQg6re4IOydtO2VmOydmCBDUFUg7Iuk7ZaJIOyLnOqwhOydhCDsnKDsp4DtlaAg7IiYIOyeiOuKlCDrhKTtirjsm4ztgawg7J247ZSE652866W8IOuwsO2PrO2VmOqzoCDsi6Ttlontlanri4jri6QuCgog64KYLCB7eyBwcm9kdWNlciB9fSDripQg64uk66W4IGJsb2NrIHByb2R1Y2VyIGNhbmRpZGF0ZeqwgCDqsr3qs6Ag4oCL4oCL7ZWcIO2bhCwgMzDrtoQg7J2064K07JeQIOuwlOuhnOyeoeydhCDsiJgg7JeG64uk66m0IGBybXZwcm9kdWNlcmAg7KGw7LmY66W8IO2Gte2VtCDsnpDqsqnsnbQg7KCc6rGwIOuQoCDsiJgg7J6I7J2M7J2EIOyduOygle2VqeuLiOuLpC4KCuaJp+ihjOaXtumXtAoK5oiR77yMIHt7IHByb2R1Y2VyIH1977yM5bCG6YOo572y5ZKM6L+Q6KGM572R57uc5Z+656GA6K6+5pa977yM6IO95aSf5bCGIENQVSDmiafooYzml7bpl7Tnu7TmjIHlnKggMm1zIOaIluabtOWwkeeahOawtOW5s+OAggoK5oiR77yMe3sgcHJvZHVjZXIgfX3vvIzlnKjmraTnoa7orqTvvIzlpoLmnpzmiJHlnKjmlLbliLDlj6bkuIDkuKpibG9jayBwcm9kdWNlciBjYW5kaWRhdGXnmoTorablkYrlkI4zMOWIhumSn+WGheS4jeiDveespuWQiOS4iui/sOadoeS7tu+8jOWPr+S7peS9v+eUqCBgcm12cHJvZHVjZXJgIOaTjeS9nOWwhuaIkeenu+mZpOOAggoKIyMjIDguIE9yZGVyaW5nCgpJIHt7IHByb2R1Y2VyIH19IGFncmVlIHRvIHByb2Nlc3MgdHJhbnNhY3Rpb25zIG9uIGEgZmlyc3QtaW4tZmlyc3Qtb3V0IChGSUZPKSBiYXNpcywgYW5kIG5vdCB0byBtYW5pcHVsYXRlIHRoZSBjb250ZW50cyBvZiBibG9ja3MgaW4gb3JkZXIgdG8gZGVyaXZlIHByb2ZpdCBmcm9tIHRoZSBvcmRlciBpbiB3aGljaCB0cmFuc2FjdGlvbnMgYXJlIGluY2x1ZGVkOiB0aGUgaGFzaCBvZiB0aGUgYmxvY2sgdGhhdCBpcyBwcm9kdWNlZC4KCuyDneyCsArrgpgsIHt7IHByb2R1Y2VyIH1964qUIOyEoOyehSDshKDstpzrspUgKEZJRk8pIOuwqeyLneycvOuhnCDqsbDrnpjrpbwg7LKY66as7ZWY6rOgIOqxsOuemOqwgCDruJTroZ3snZgg7ZW07Iuc7JeQIO2PrO2VqOuQmOuKlCDsiJzshJzsl5DshJwg7J207J217J2EIOyWu+ycvOugpOuKlCDrqqnsoIHsnLzroZwg7IOd7IKw7ZWY64qUIOu4lOuhneydmCDrgrTsmqnsnYQg7KGw7J6R7ZWY7KeAIOyViuq4sOuhnCDrj5nsnZjtlanri4jri6QuCgrpobrluo8KCuaIke+8jCB7eyBwcm9kdWNlciB9fSDvvIzlkIzmhI/moLnmja7lhYjov5vlhYjlh7ooRklGTynnmoTmlrnlvI/lpITnkIbkuovliqHvvIzlubbkuJTnu53kuI3kvJrkuLrkuobniZ/liKnogIzliKnnlKjljLrlnZflhoXlrrnjgIHmk43nurXljLrlnZfkuK3kuqTmmJPlpITnkIbnmoTpobrluo/jgIIKCiMjIyA5LiBSYW5kb20gUm90YXRpb24gb2YgU3RhbmRieXMKCkksIHt7IHByb2R1Y2VyIH19LCBhZ3JlZSB0aGF0IGlmIEkgYW0gaW4gYSBwYWlkIHN0YW5kYnkgcG9zaXRpb24sIEkgY2FuIGJlIHJhbmRvbWx5IGNhbGxlZCBpbnRvIGEgcHJvZHVjaW5nIHBvc2l0aW9uLiBVcG9uIGZhaWx1cmUgdG8gcHJvZHVjZSBibG9ja3MsIGNvZGUgbWF5IHNlbGYtZXhlY3V0ZSBwZW5hbHRpZXMgcmVnYXJkaW5nIGZ1dHVyZSB2cGF5IHJld2FyZHMuCgrsnKDquIkg64yA6riwIOu4lOuhne2UhOuhnOuTgOyEnOydmCDrrLTsnpHsnIQg66Gc7YWM7J207IWYCgrrgpgsIHt7IHByb2R1Y2VyIH1964qUIOuzuOyduOydtCDsnKDquIkg64yA6riw7KeB7JeQIOyeiOydhCDrlYwsIOustOyekeychOuhnCDsg53sgrDsp4HsnLzroZwg67aA66aEIOuwm+ydhCDsiJgg7J6I64uk64qUIOqyg+yXkCDrj5nsnZjtlanri4jri6QuIOydtOuVjCDruJTroZ3snYQg7IOd7ISx7ZWY7KeAIOuqu+2VmOuptCDsvZTrk5zripQg7Zal7ZuEIHZwYXkg67O07IOB7JeQIOuMgO2VnCDsspjrsozsnYQg7KeR7ZaJ7ZWgIOyImCDsnojsirXri4jri6QuCgrlpIfpgInoioLngrnpmo/mnLrova7mjaIKCuaIke+8jHt7IHByb2R1Y2VyIH1977yM5ZCM5oSP6Iul5pys6IqC54K55aSE5LqO5pyJ5YG/5aSH6YCJ54q25oCB77yM5Y+v6KKr6ZqP5py66LCD5YWl5Ye65Z2X54q25oCB44CC5aaC5p6c5oiR5peg5rOV5Ye65Z2X77yM5ZCI57qm5Luj56CB5Y+v6IO95Lya6Ieq5Yqo5omn6KGM5bCx5pyq5p2l55qEIHZwYXkg5oql6YWs6L+b6KGM5aSE572a44CCCgojIyMgMTAuIE1pc3NpbmcgVHdvIG9yIE1vcmUgUm91bmRzIG9mIEJsb2NrcwoKSSwge3sgcHJvZHVjZXIgfX0sIGFja25vd2xlZGdlIHRoYXQgaWYgYWZ0ZXIgbWlzc2luZyAyIG9yIG1vcmUgcm91bmRzIG9mIGJsb2NrcyBpbiBzdWNjZXNzaW9uIEkgYW0gdW5hYmxlIHRvIGJlIGNvbnRhY3RlZCB3aXRoaW4gMjAgbWludXRlcywgSSwge3sgcHJvZHVjZXIgfX0sIGFja25vd2xlZGdlIHRoYXQgSSBtYXkgYmUgcmVtb3ZlZCBmcm9tIGEgcHJvZHVjaW5nIHBvc2l0aW9uIGJ5IHVzZSBvZiB0aGUgYHJtdnByb2R1Y2VyYCBhY3Rpb24uCgpJLCB7eyBwcm9kdWNlciB9fSwgYWNrbm93bGVkZ2UgdGhhdCBhZnRlciBtaXNzaW5nIHR3byBvciBtb3JlIHJvdW5kcyBvZiBibG9ja3MgaW4gc3VjY2Vzc2lvbiwgc3RhbmRhcmQgcHJhY3RpY2Ugc3RpcHVsYXRlcyByZW1vdmluZyBteSBwcm9kdWNlciBieSB1c2luZyB0aGUgYHVucmVncHJvZGAgYWN0aW9uIHVudGlsIHRoZSBnaXZlbiBpc3N1ZSBpcyByZXNvbHZlZC4KCuuRkCDrnbzsmrTrk5wg7J207IOB7J2YIOu4lOuhnSDriITrnb0KCuuCmCwge3sgcHJvZHVjZXIgfX3ripQg65GQIOudvOyatOuTnCDsnbTsg4Eg7Jew7IaN7ZWY7JesIOu4lOuhneydhCDriITrnb0g7ZWcIO2bhCwgMjDrtoQg7J2064K07JeQIOyXsOudvSDtlaAg7IiYIOyXhuuLpOuptCB7eyBwcm9kdWNlciB9fSDqsIAgYHJtdnByb2R1Y2VyYCDslaHshZjsnZgg7IKs7Jqp65CY7Ja0IOyDneyCsCDsnITsuZjsl5DshJwg7KCc6rGwIOuQoCDsiJgg7J6I7J2M7J2EIOyduOygle2VqeuLiOuLpC4KCnt7IHByb2R1Y2VyIH1964qUIOuRkCDrnbzsmrTrk5wg7J207IOB7Jy866GcIOu4lOuhneydhCDsl7Dsho3soIHsnLzroZwg64iE65297ZWc64uk66m0LCDso7zslrTsp4Qg66y47KCc6rCAIO2VtOqysCDrkKAg65WM6rmM7KeAIGB1bnJlZ3Byb2RgIOyekeyXheydhCDsgqzsmqntlZjsl6wg67O47J247J20IOyDneyCsCDsnITsuZjsl5DshJwg7KCc6rGw65Co7J20IO2RnOykgCDqtIDtlonsnLzroZwg6rec7KCV65CY7Ja0IOyeiOydjOydhCDsnbjsoJXtlanri4jri6QuCgrkuKTova7miJbmm7TlpJrova7kuKLlnZfnmoTmg4XlvaIKCuaIke+8jHt7IHByb2R1Y2VyIH19LCDnoa7orqTlpoLmnpzov57nu63kuKTova7miJbmm7TlpJrova7kuKLlnZfkuJTml6Dms5XlnKgyMOWIhumSn+WGheiBlOezu+WIsOaIke+8jOaIke+8jHt7IHByb2R1Y2VyIH19LCDlkIzmhI/lj6/og73kvJrnlKggYHJtdnByb2R1Y2VyYCDmk43kvZzlsIbmiJHnp7vpmaTjgIIK5oiR77yMe3sgcHJvZHVjZXIgfX0sIOWmguaenOi/nue7reS4pOi9ruaIluabtOWkmui9ruS4ouWdl++8jOagueaNruagh+WHhuWunui3teS8muWPkei1tyBgdW5yZWdwcm9kYCDmk43kvZzlsIbmiJHnp7vpmaTlh7rlnZfotYTmoLzvvIznm7TliLDpl67popjop6PlhrPjgIIKCiMjIyAxMS4gVXJnZW50IFNlY3VyaXR5IFBhdGNoZXMKCkksIHt7IHByb2R1Y2VyIH19LCBhY2tub3dsZWRnZSB0aGF0IGlmIEkgYW0gbm90IGFibGUgdG8gYmUgY29udGFjdGVkIGluIGFueSBmb3JtIGFmdGVyIGFuIHVyZ2VudCBzZWN1cml0eSBwYXRjaCBpcyBhbm5vdW5jZWQsIEkgbWF5IGJlIHJlbW92ZWQgYnkgdXNlIG9mIHRoZSBgcm12cHJvZHVjZXJgIGFjdGlvbi4KCuq4tOq4iSDrs7TslYgg7Yyo7LmYCuq4tOq4iSDrs7TslYgg7Yyo7LmY6rCAIOuwnO2RnCDrkJwg7ZuELCDslrTrlqQg7ZiV7YOc66Gc65OgIOyXsOudvSDtlaAg7IiYIOyXhuuKlCDqsr3smrAgYHJtdnByb2R1Y2VyYCDsnpHsl4XsnYQg7IKs7Jqp7ZWY7JesIOygnOqxsCDrkKAg7IiYIOyeiOydjOydhCDrgpgsIHt7IHByb2R1Y2VyIH1964qUIOyduOygle2VqeuLiOuLpC4KCue0p+aApeWuieWFqOihpeS4gQoK5oiR77yMe3sgcHJvZHVjZXIgfX3vvIznoa7orqTlpoLmnpzlnKjntKfmgKXlronlhajooaXkuIHlj5HluIPlkI7nlKjku7vkvZXmlrnlvI/pg73ml6Dms5XogZTns7vliLDmiJHvvIzlj6/og73kvJrnlKggYHJtdnByb2R1Y2VyYCDmjIfku6TlsIbmiJHnp7vpmaTjgIIKCiMjIyAxMi4gRGlzY2xvc3VyZSBvZiBFbnRpdHkgYW5kIFNlcnZlciBJbmZvcm1hdGlvbgoKSSwge3sgcHJvZHVjZXIgfX0sIGF0dGVzdCB0aGF0IEkgaGF2ZSBkaXNjbG9zZWQgdGhlIGFwcHJveGltYXRlIGdlb2xvY2F0aW9uIGZvciBteSBtYWluIHByb2R1Y3Rpb24gbm9kZSBhcyBiZWluZyB7eyBsb2NhdGlvbiB9fS4KCuuyleyduCDrsI8g7ISc67KEIOygleuztOydmCDqs7XqsJwKCuuCmCwge3sgcHJvZHVjZXIgfX0g64qUIOyjvCDsg53sgrAg64W465Oc7JeQIOuMgO2VnCDsnITsuZgg7KCV67O066W8IOqzteqwnO2WiOydjOydhCDspp3rqoXtlanri4jri6QuCgrlrp7kvZPlkozmnI3liqHlmajnmoTkv6Hmga/miqvpnLIKCuaIke+8jHt7IHByb2R1Y2VyIH1977yM56Gu6K6k5oiR5bey57uP5oqr6Zyy5LqG5Li75Ye65Z2X6IqC54K55pyN5Yqh5Zmo5Zyw55CG5L2N572u55qE5YeG56Gu5L+h5oGv44CC5YW25Zyw5Z2A5Li6IHt7IGxvY2F0aW9uIH1944CCCgojIyMgMTMuIEVzdGFibGlzaGVzIHRoZSBwZW5hbHR5IGFuZCBwcm9jZWR1cmUgZm9yIHVud2lsbGluZ25lc3MgdG8gY29tcGx5IHdpdGggcGVuYWx0aWVzIG9yIHByb2NlZHVyZXMKCkksIHt7IHByb2R1Y2VyIH19LCBhY2tub3dsZWRnZSB0aGF0IGZhaWxpbmcgdG8gY29tcGx5IHdpdGggcGVuYWx0aWVzIG9yIHByb2NlZHVyZXMgZW5hY3RlZCBhZ2FpbnN0IG1lIHdpbGwgcmVzdWx0IGluIEJsb2NrIFByb2R1Y2VycyBleGVjdXRpbmcgdGhlIGBybXZwcm9kdWNlcmAgY29udHJhY3QgdG8gcmVtb3ZlIG1lLgoKSSwge3sgcHJvZHVjZXIgfX0sIHdpbGwgbm90IGV4ZWN1dGUgdGhlIGByZWdwcm9kdWNlcmAgY29udHJhY3QgdW50aWwgc2VydmluZyBvciBmdWxmaWxsaW5nIHRoZSByZXF1aXJlbWVudHMgZnJvbSBhIHBlbmFsdHkgb3IgcHJvY2VkdXJlIHRoYXQgcmVzdWx0cyBpbiBoYXZpbmcgdGhlIGBybXZwcm9kdWNlcmAgY29udHJhY3QgZXhlY3V0ZWQgdG8gcmVtb3ZlIG1lLgoKSSwge3sgcHJvZHVjZXIgfX0sIGFja25vd2xlZGdlIHRoYXQgaWYgSSBjb250aW51ZSB0byBjYWxsIHRoZSBgcmVncHJvZHVjZXJgIGFjdGlvbiB3aXRob3V0IHNlcnZpbmcgb3IgZnVsZmlsbGluZyB0aGUgcmVxdWlyZW1lbnRzIGZyb20gYnJlYWNoIG9mIGByZWdwcm9kdWNlcmAsIG15IGFjY291bnQga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlZ2lzdGVyZWQgQmxvY2sgUHJvZHVjZXIgaW4gcXVlc3Rpb24gbWF5IGJlIG51bGxlZCBieSBCbG9jayBQcm9kdWNlcnMgYnkgdXNpbmcgYGVvc2lvLndyYXBgLgoK7Y6Y64SQ7Yuw66W8IOykgOyImO2VmOyngCDslYrsnYQg6rK97JqwIOuyjOy5mQoK64KYLCB7eyBwcm9kdWNlciB9fSDripQg64KY7JeQ6rKMIOygnOyerOuQnCDsspjrsozsnYQg7KSA7IiY7ZWY7KeAIOyViuycvOuptCDruJTroZ3tlITroZzrk4DshJzrk6TsnbQgYHJtdnByb2R1Y2VyYCDqs4Tslb3snYQg7KeR7ZaJ7ZWY6rKMIOuQoCDqsoPsnbTrnbzqs6Ag7J247KCV7ZWp64uI64ukLiDrgpgsIHt7IHByb2R1Y2VyIH19IOuKlCBgcm12cHJvZHVjZXJgIOqzhOyVveydtCDsp5HtlonrkJzri6TrqbQg7JqU6rWsIOyCrO2VreydhCDstqnsobHrkKAg65WM6rmM7KeAIGByZWdwcm9kdWNlcmAg6rOE7JW97J2EIOydtO2Wie2VmOyngCDslYrsnYQg6rKD7J6F64uI64ukLgpgcmVncHJvZHVjZXJgIOqzhOyVvSDsnITrsJjsnLzroZwg7J247ZWcIOyalOq1rCDsgqztla3snYQg7Lap7KGx7Iuc7YKk7KeAIOyViuqzoCBgcmVncHJvZHVjZXJgIOqzhOyVveydhCDqs4Tsho0g7Zi47Lac7ZWY66m0IO2VtOuLuSDruJTroZ3tlITroZzrk4DshJzsmYAg6rSA66Co65CcIOqzhOyglSDtgqTqsIAgYGVvc2lvLndyYXBgIOydhCDsgqzsmqntlZjsl6wg67iU66Gd7ZSE66Gc65OA7ISc65Ok7JeQIOydmO2VtCDrrLTtmqjtmZQg65CgIOyImCDsnojsnYzsnYQg7J247KCV7ZWp64uI64ukLgoK5a+55LiN5oS/6YG15a6I5aSE572a55qE6KGM5Li65LqI5Lul5aSE572aCgrmiJHvvIx7eyBwcm9kdWNlciB9fe+8jOaJv+iupOiLpeS4jemBteWuiOWvueacrOS6uuWItuijgeeahOWkhOe9mu+8jEJQIOWPr+S7peWunuaWvSBgcm12cHJvZHVjZXJgIOWQiOe6pu+8jOaIkeaOpeWPl+aKleelqOeahOi1hOagvOWwhuiiq+WPlua2iOOAguiLpeaciemSiOWvueaIkeWunuaWvSBgcm12cHJvZHVjZXJgIOWQiOe6pueahOaDheWGteWPkeeUn++8jOaIkSwge3sgcHJvZHVjZXIgfX0g5Zyo6YG15a6IL+WxpeihjOaJgOaUtuWIsOeahOWkhOe9muS5i+WJje+8jOS4jeS8muWGjeasoeaJp+ihjCBgcmVncHJvZHVjZXJgIOWQiOe6puOAggoK5oiR77yMe3sgcHJvZHVjZXIgfX3vvIzlnKjlsaXooYzmg6nnvZrnqIvluo/nmoTopoHmsYLkuYvliY3vvIzkuI3kvJrmiafooYwgYHJlZ3Byb2R1Y2VyYCDlkIjlkIzjgILmiJHnn6XmmZPlpoLkuI3lsaXooYzmraTnqIvluo/vvIwgYHJtdnByb2R1Y2VyYCDlkIjlkIzlsIbkvJrlho3mrKHlsIbmiJHnp7vpmaTjgIIKCuaIkSx7eyBwcm9kdWNlciB9fSwg5om/6K6k5aaC5p6c5rKh5pyJ6YG15a6I5oiW5bGl6KGM5Zug6L+d5Y+NIGByZWdwcm9kdWNlcmAg6ICM5Y+X5Yiw55qE5oOp572a6KaB5rGC5Y2057un57ut6LCD55SoYHJlZ3Byb2R1Y2VyYOaTjeS9nO+8jEJQIOWPr+S7peiwg+eUqCBgZW9zaW8ud3JhcGAg5ZCI57qm5bCG5oiR55So5p2l5rOo5YaM5Ye65Z2X6IqC54K555qE6LSm5Y+35a+G6ZKl6K6+572u5Li65peg5pWI5YC844CCAAABInZhcmlhbnRfYmxvY2tfc2lnbmluZ19hdXRob3JpdHlfdjABGmJsb2NrX3NpZ25pbmdfYXV0aG9yaXR5X3Yw');\nconst abi = ABI.from(abiBlob);\nclass Contract extends Contract$1 {\n constructor(args) {\n super({\n client: args.client,\n abi: abi,\n account: Name.from('eosio'),\n });\n }\n action(name, data, options) {\n return super.action(name, data, options);\n }\n table(name, scope) {\n return super.table(name, scope, TableMap[name]);\n }\n}\nvar Types;\n(function (Types) {\n let AbiHash = class AbiHash extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], AbiHash.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Checksum256)\n ], AbiHash.prototype, \"hash\", void 0);\n AbiHash = __decorate([\n Struct.type('abi_hash')\n ], AbiHash);\n Types.AbiHash = AbiHash;\n let Activate = class Activate extends Struct {\n };\n __decorate([\n Struct.field(Checksum256)\n ], Activate.prototype, \"feature_digest\", void 0);\n Activate = __decorate([\n Struct.type('activate')\n ], Activate);\n Types.Activate = Activate;\n let KeyWeight = class KeyWeight extends Struct {\n };\n __decorate([\n Struct.field(PublicKey)\n ], KeyWeight.prototype, \"key\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], KeyWeight.prototype, \"weight\", void 0);\n KeyWeight = __decorate([\n Struct.type('key_weight')\n ], KeyWeight);\n Types.KeyWeight = KeyWeight;\n let PermissionLevel = class PermissionLevel extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], PermissionLevel.prototype, \"actor\", void 0);\n __decorate([\n Struct.field(Name)\n ], PermissionLevel.prototype, \"permission\", void 0);\n PermissionLevel = __decorate([\n Struct.type('permission_level')\n ], PermissionLevel);\n Types.PermissionLevel = PermissionLevel;\n let PermissionLevelWeight = class PermissionLevelWeight extends Struct {\n };\n __decorate([\n Struct.field(PermissionLevel)\n ], PermissionLevelWeight.prototype, \"permission\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], PermissionLevelWeight.prototype, \"weight\", void 0);\n PermissionLevelWeight = __decorate([\n Struct.type('permission_level_weight')\n ], PermissionLevelWeight);\n Types.PermissionLevelWeight = PermissionLevelWeight;\n let WaitWeight = class WaitWeight extends Struct {\n };\n __decorate([\n Struct.field(UInt32)\n ], WaitWeight.prototype, \"wait_sec\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], WaitWeight.prototype, \"weight\", void 0);\n WaitWeight = __decorate([\n Struct.type('wait_weight')\n ], WaitWeight);\n Types.WaitWeight = WaitWeight;\n let Authority = class Authority extends Struct {\n };\n __decorate([\n Struct.field(UInt32)\n ], Authority.prototype, \"threshold\", void 0);\n __decorate([\n Struct.field(KeyWeight, { array: true })\n ], Authority.prototype, \"keys\", void 0);\n __decorate([\n Struct.field(PermissionLevelWeight, { array: true })\n ], Authority.prototype, \"accounts\", void 0);\n __decorate([\n Struct.field(WaitWeight, { array: true })\n ], Authority.prototype, \"waits\", void 0);\n Authority = __decorate([\n Struct.type('authority')\n ], Authority);\n Types.Authority = Authority;\n let BidRefund = class BidRefund extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], BidRefund.prototype, \"bidder\", void 0);\n __decorate([\n Struct.field(Asset)\n ], BidRefund.prototype, \"amount\", void 0);\n BidRefund = __decorate([\n Struct.type('bid_refund')\n ], BidRefund);\n Types.BidRefund = BidRefund;\n let Bidname = class Bidname extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Bidname.prototype, \"bidder\", void 0);\n __decorate([\n Struct.field(Name)\n ], Bidname.prototype, \"newname\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Bidname.prototype, \"bid\", void 0);\n Bidname = __decorate([\n Struct.type('bidname')\n ], Bidname);\n Types.Bidname = Bidname;\n let Bidrefund = class Bidrefund extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Bidrefund.prototype, \"bidder\", void 0);\n __decorate([\n Struct.field(Name)\n ], Bidrefund.prototype, \"newname\", void 0);\n Bidrefund = __decorate([\n Struct.type('bidrefund')\n ], Bidrefund);\n Types.Bidrefund = Bidrefund;\n let ProducerKey = class ProducerKey extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], ProducerKey.prototype, \"producer_name\", void 0);\n __decorate([\n Struct.field(PublicKey)\n ], ProducerKey.prototype, \"block_signing_key\", void 0);\n ProducerKey = __decorate([\n Struct.type('producer_key')\n ], ProducerKey);\n Types.ProducerKey = ProducerKey;\n let ProducerSchedule = class ProducerSchedule extends Struct {\n };\n __decorate([\n Struct.field(UInt32)\n ], ProducerSchedule.prototype, \"version\", void 0);\n __decorate([\n Struct.field(ProducerKey, { array: true })\n ], ProducerSchedule.prototype, \"producers\", void 0);\n ProducerSchedule = __decorate([\n Struct.type('producer_schedule')\n ], ProducerSchedule);\n Types.ProducerSchedule = ProducerSchedule;\n let BlockHeader = class BlockHeader extends Struct {\n };\n __decorate([\n Struct.field(UInt32)\n ], BlockHeader.prototype, \"timestamp\", void 0);\n __decorate([\n Struct.field(Name)\n ], BlockHeader.prototype, \"producer\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], BlockHeader.prototype, \"confirmed\", void 0);\n __decorate([\n Struct.field(Checksum256)\n ], BlockHeader.prototype, \"previous\", void 0);\n __decorate([\n Struct.field(Checksum256)\n ], BlockHeader.prototype, \"transaction_mroot\", void 0);\n __decorate([\n Struct.field(Checksum256)\n ], BlockHeader.prototype, \"action_mroot\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockHeader.prototype, \"schedule_version\", void 0);\n __decorate([\n Struct.field(ProducerSchedule, { optional: true })\n ], BlockHeader.prototype, \"new_producers\", void 0);\n BlockHeader = __decorate([\n Struct.type('block_header')\n ], BlockHeader);\n Types.BlockHeader = BlockHeader;\n let BlockInfoRecord = class BlockInfoRecord extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], BlockInfoRecord.prototype, \"version\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockInfoRecord.prototype, \"block_height\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], BlockInfoRecord.prototype, \"block_timestamp\", void 0);\n BlockInfoRecord = __decorate([\n Struct.type('block_info_record')\n ], BlockInfoRecord);\n Types.BlockInfoRecord = BlockInfoRecord;\n let BlockSigningAuthorityV0 = class BlockSigningAuthorityV0 extends Struct {\n };\n __decorate([\n Struct.field(UInt32)\n ], BlockSigningAuthorityV0.prototype, \"threshold\", void 0);\n __decorate([\n Struct.field(KeyWeight, { array: true })\n ], BlockSigningAuthorityV0.prototype, \"keys\", void 0);\n BlockSigningAuthorityV0 = __decorate([\n Struct.type('block_signing_authority_v0')\n ], BlockSigningAuthorityV0);\n Types.BlockSigningAuthorityV0 = BlockSigningAuthorityV0;\n let BlockchainParameters = class BlockchainParameters extends Struct {\n };\n __decorate([\n Struct.field(UInt64)\n ], BlockchainParameters.prototype, \"max_block_net_usage\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"target_block_net_usage_pct\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"max_transaction_net_usage\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"base_per_transaction_net_usage\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"net_usage_leeway\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"context_free_discount_net_usage_num\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"context_free_discount_net_usage_den\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"max_block_cpu_usage\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"target_block_cpu_usage_pct\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"max_transaction_cpu_usage\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"min_transaction_cpu_usage\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"max_transaction_lifetime\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"deferred_trx_expiration_window\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"max_transaction_delay\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], BlockchainParameters.prototype, \"max_inline_action_size\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], BlockchainParameters.prototype, \"max_inline_action_depth\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], BlockchainParameters.prototype, \"max_authority_depth\", void 0);\n BlockchainParameters = __decorate([\n Struct.type('blockchain_parameters')\n ], BlockchainParameters);\n Types.BlockchainParameters = BlockchainParameters;\n let BlockchainParametersV1 = class BlockchainParametersV1 extends Struct {\n };\n __decorate([\n Struct.field(UInt32, { optional: true })\n ], BlockchainParametersV1.prototype, \"max_action_return_value_size\", void 0);\n BlockchainParametersV1 = __decorate([\n Struct.type('blockchain_parameters_v1')\n ], BlockchainParametersV1);\n Types.BlockchainParametersV1 = BlockchainParametersV1;\n let Buyram = class Buyram extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Buyram.prototype, \"payer\", void 0);\n __decorate([\n Struct.field(Name)\n ], Buyram.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Buyram.prototype, \"quant\", void 0);\n Buyram = __decorate([\n Struct.type('buyram')\n ], Buyram);\n Types.Buyram = Buyram;\n let Buyrambytes = class Buyrambytes extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Buyrambytes.prototype, \"payer\", void 0);\n __decorate([\n Struct.field(Name)\n ], Buyrambytes.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], Buyrambytes.prototype, \"bytes\", void 0);\n Buyrambytes = __decorate([\n Struct.type('buyrambytes')\n ], Buyrambytes);\n Types.Buyrambytes = Buyrambytes;\n let Buyrex = class Buyrex extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Buyrex.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Buyrex.prototype, \"amount\", void 0);\n Buyrex = __decorate([\n Struct.type('buyrex')\n ], Buyrex);\n Types.Buyrex = Buyrex;\n let Canceldelay = class Canceldelay extends Struct {\n };\n __decorate([\n Struct.field(PermissionLevel)\n ], Canceldelay.prototype, \"canceling_auth\", void 0);\n __decorate([\n Struct.field(Checksum256)\n ], Canceldelay.prototype, \"trx_id\", void 0);\n Canceldelay = __decorate([\n Struct.type('canceldelay')\n ], Canceldelay);\n Types.Canceldelay = Canceldelay;\n let PowerupConfigResource = class PowerupConfigResource extends Struct {\n };\n __decorate([\n Struct.field(Int64, { optional: true })\n ], PowerupConfigResource.prototype, \"current_weight_ratio\", void 0);\n __decorate([\n Struct.field(Int64, { optional: true })\n ], PowerupConfigResource.prototype, \"target_weight_ratio\", void 0);\n __decorate([\n Struct.field(Int64, { optional: true })\n ], PowerupConfigResource.prototype, \"assumed_stake_weight\", void 0);\n __decorate([\n Struct.field(TimePointSec, { optional: true })\n ], PowerupConfigResource.prototype, \"target_timestamp\", void 0);\n __decorate([\n Struct.field(Float64, { optional: true })\n ], PowerupConfigResource.prototype, \"exponent\", void 0);\n __decorate([\n Struct.field(UInt32, { optional: true })\n ], PowerupConfigResource.prototype, \"decay_secs\", void 0);\n __decorate([\n Struct.field(Asset, { optional: true })\n ], PowerupConfigResource.prototype, \"min_price\", void 0);\n __decorate([\n Struct.field(Asset, { optional: true })\n ], PowerupConfigResource.prototype, \"max_price\", void 0);\n PowerupConfigResource = __decorate([\n Struct.type('powerup_config_resource')\n ], PowerupConfigResource);\n Types.PowerupConfigResource = PowerupConfigResource;\n let PowerupConfig = class PowerupConfig extends Struct {\n };\n __decorate([\n Struct.field(PowerupConfigResource)\n ], PowerupConfig.prototype, \"net\", void 0);\n __decorate([\n Struct.field(PowerupConfigResource)\n ], PowerupConfig.prototype, \"cpu\", void 0);\n __decorate([\n Struct.field(UInt32, { optional: true })\n ], PowerupConfig.prototype, \"powerup_days\", void 0);\n __decorate([\n Struct.field(Asset, { optional: true })\n ], PowerupConfig.prototype, \"min_powerup_fee\", void 0);\n PowerupConfig = __decorate([\n Struct.type('powerup_config')\n ], PowerupConfig);\n Types.PowerupConfig = PowerupConfig;\n let Cfgpowerup = class Cfgpowerup extends Struct {\n };\n __decorate([\n Struct.field(PowerupConfig)\n ], Cfgpowerup.prototype, \"args\", void 0);\n Cfgpowerup = __decorate([\n Struct.type('cfgpowerup')\n ], Cfgpowerup);\n Types.Cfgpowerup = Cfgpowerup;\n let Claimrewards = class Claimrewards extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Claimrewards.prototype, \"owner\", void 0);\n Claimrewards = __decorate([\n Struct.type('claimrewards')\n ], Claimrewards);\n Types.Claimrewards = Claimrewards;\n let Closerex = class Closerex extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Closerex.prototype, \"owner\", void 0);\n Closerex = __decorate([\n Struct.type('closerex')\n ], Closerex);\n Types.Closerex = Closerex;\n let Cnclrexorder = class Cnclrexorder extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Cnclrexorder.prototype, \"owner\", void 0);\n Cnclrexorder = __decorate([\n Struct.type('cnclrexorder')\n ], Cnclrexorder);\n Types.Cnclrexorder = Cnclrexorder;\n let Connector = class Connector extends Struct {\n };\n __decorate([\n Struct.field(Asset)\n ], Connector.prototype, \"balance\", void 0);\n __decorate([\n Struct.field(Float64)\n ], Connector.prototype, \"weight\", void 0);\n Connector = __decorate([\n Struct.type('connector')\n ], Connector);\n Types.Connector = Connector;\n let Consolidate = class Consolidate extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Consolidate.prototype, \"owner\", void 0);\n Consolidate = __decorate([\n Struct.type('consolidate')\n ], Consolidate);\n Types.Consolidate = Consolidate;\n let Defcpuloan = class Defcpuloan extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Defcpuloan.prototype, \"from\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], Defcpuloan.prototype, \"loan_num\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Defcpuloan.prototype, \"amount\", void 0);\n Defcpuloan = __decorate([\n Struct.type('defcpuloan')\n ], Defcpuloan);\n Types.Defcpuloan = Defcpuloan;\n let Defnetloan = class Defnetloan extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Defnetloan.prototype, \"from\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], Defnetloan.prototype, \"loan_num\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Defnetloan.prototype, \"amount\", void 0);\n Defnetloan = __decorate([\n Struct.type('defnetloan')\n ], Defnetloan);\n Types.Defnetloan = Defnetloan;\n let Delegatebw = class Delegatebw extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Delegatebw.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Name)\n ], Delegatebw.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Delegatebw.prototype, \"stake_net_quantity\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Delegatebw.prototype, \"stake_cpu_quantity\", void 0);\n __decorate([\n Struct.field('bool')\n ], Delegatebw.prototype, \"transfer\", void 0);\n Delegatebw = __decorate([\n Struct.type('delegatebw')\n ], Delegatebw);\n Types.Delegatebw = Delegatebw;\n let DelegatedBandwidth = class DelegatedBandwidth extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], DelegatedBandwidth.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Name)\n ], DelegatedBandwidth.prototype, \"to\", void 0);\n __decorate([\n Struct.field(Asset)\n ], DelegatedBandwidth.prototype, \"net_weight\", void 0);\n __decorate([\n Struct.field(Asset)\n ], DelegatedBandwidth.prototype, \"cpu_weight\", void 0);\n DelegatedBandwidth = __decorate([\n Struct.type('delegated_bandwidth')\n ], DelegatedBandwidth);\n Types.DelegatedBandwidth = DelegatedBandwidth;\n let Deleteauth = class Deleteauth extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Deleteauth.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Name)\n ], Deleteauth.prototype, \"permission\", void 0);\n __decorate([\n Struct.field(Name, { optional: true })\n ], Deleteauth.prototype, \"authorized_by\", void 0);\n Deleteauth = __decorate([\n Struct.type('deleteauth')\n ], Deleteauth);\n Types.Deleteauth = Deleteauth;\n let Deposit = class Deposit extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Deposit.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Deposit.prototype, \"amount\", void 0);\n Deposit = __decorate([\n Struct.type('deposit')\n ], Deposit);\n Types.Deposit = Deposit;\n let EosioGlobalState = class EosioGlobalState extends Struct {\n };\n __decorate([\n Struct.field(UInt64)\n ], EosioGlobalState.prototype, \"max_ram_size\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], EosioGlobalState.prototype, \"total_ram_bytes_reserved\", void 0);\n __decorate([\n Struct.field(Int64)\n ], EosioGlobalState.prototype, \"total_ram_stake\", void 0);\n __decorate([\n Struct.field(BlockTimestamp)\n ], EosioGlobalState.prototype, \"last_producer_schedule_update\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], EosioGlobalState.prototype, \"last_pervote_bucket_fill\", void 0);\n __decorate([\n Struct.field(Int64)\n ], EosioGlobalState.prototype, \"pervote_bucket\", void 0);\n __decorate([\n Struct.field(Int64)\n ], EosioGlobalState.prototype, \"perblock_bucket\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], EosioGlobalState.prototype, \"total_unpaid_blocks\", void 0);\n __decorate([\n Struct.field(Int64)\n ], EosioGlobalState.prototype, \"total_activated_stake\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], EosioGlobalState.prototype, \"thresh_activated_stake_time\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], EosioGlobalState.prototype, \"last_producer_schedule_size\", void 0);\n __decorate([\n Struct.field(Float64)\n ], EosioGlobalState.prototype, \"total_producer_vote_weight\", void 0);\n __decorate([\n Struct.field(BlockTimestamp)\n ], EosioGlobalState.prototype, \"last_name_close\", void 0);\n EosioGlobalState = __decorate([\n Struct.type('eosio_global_state')\n ], EosioGlobalState);\n Types.EosioGlobalState = EosioGlobalState;\n let EosioGlobalState2 = class EosioGlobalState2 extends Struct {\n };\n __decorate([\n Struct.field(UInt16)\n ], EosioGlobalState2.prototype, \"new_ram_per_block\", void 0);\n __decorate([\n Struct.field(BlockTimestamp)\n ], EosioGlobalState2.prototype, \"last_ram_increase\", void 0);\n __decorate([\n Struct.field(BlockTimestamp)\n ], EosioGlobalState2.prototype, \"last_block_num\", void 0);\n __decorate([\n Struct.field(Float64)\n ], EosioGlobalState2.prototype, \"total_producer_votepay_share\", void 0);\n __decorate([\n Struct.field(UInt8)\n ], EosioGlobalState2.prototype, \"revision\", void 0);\n EosioGlobalState2 = __decorate([\n Struct.type('eosio_global_state2')\n ], EosioGlobalState2);\n Types.EosioGlobalState2 = EosioGlobalState2;\n let EosioGlobalState3 = class EosioGlobalState3 extends Struct {\n };\n __decorate([\n Struct.field(TimePoint)\n ], EosioGlobalState3.prototype, \"last_vpay_state_update\", void 0);\n __decorate([\n Struct.field(Float64)\n ], EosioGlobalState3.prototype, \"total_vpay_share_change_rate\", void 0);\n EosioGlobalState3 = __decorate([\n Struct.type('eosio_global_state3')\n ], EosioGlobalState3);\n Types.EosioGlobalState3 = EosioGlobalState3;\n let EosioGlobalState4 = class EosioGlobalState4 extends Struct {\n };\n __decorate([\n Struct.field(Float64)\n ], EosioGlobalState4.prototype, \"continuous_rate\", void 0);\n __decorate([\n Struct.field(Int64)\n ], EosioGlobalState4.prototype, \"inflation_pay_factor\", void 0);\n __decorate([\n Struct.field(Int64)\n ], EosioGlobalState4.prototype, \"votepay_factor\", void 0);\n EosioGlobalState4 = __decorate([\n Struct.type('eosio_global_state4')\n ], EosioGlobalState4);\n Types.EosioGlobalState4 = EosioGlobalState4;\n let ExchangeState = class ExchangeState extends Struct {\n };\n __decorate([\n Struct.field(Asset)\n ], ExchangeState.prototype, \"supply\", void 0);\n __decorate([\n Struct.field(Connector)\n ], ExchangeState.prototype, \"base\", void 0);\n __decorate([\n Struct.field(Connector)\n ], ExchangeState.prototype, \"quote\", void 0);\n ExchangeState = __decorate([\n Struct.type('exchange_state')\n ], ExchangeState);\n Types.ExchangeState = ExchangeState;\n let Fundcpuloan = class Fundcpuloan extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Fundcpuloan.prototype, \"from\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], Fundcpuloan.prototype, \"loan_num\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Fundcpuloan.prototype, \"payment\", void 0);\n Fundcpuloan = __decorate([\n Struct.type('fundcpuloan')\n ], Fundcpuloan);\n Types.Fundcpuloan = Fundcpuloan;\n let Fundnetloan = class Fundnetloan extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Fundnetloan.prototype, \"from\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], Fundnetloan.prototype, \"loan_num\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Fundnetloan.prototype, \"payment\", void 0);\n Fundnetloan = __decorate([\n Struct.type('fundnetloan')\n ], Fundnetloan);\n Types.Fundnetloan = Fundnetloan;\n let Init = class Init extends Struct {\n };\n __decorate([\n Struct.field(VarUInt)\n ], Init.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Asset.Symbol)\n ], Init.prototype, \"core\", void 0);\n Init = __decorate([\n Struct.type('init')\n ], Init);\n Types.Init = Init;\n let Limitauthchg = class Limitauthchg extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Limitauthchg.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Name, { array: true })\n ], Limitauthchg.prototype, \"allow_perms\", void 0);\n __decorate([\n Struct.field(Name, { array: true })\n ], Limitauthchg.prototype, \"disallow_perms\", void 0);\n Limitauthchg = __decorate([\n Struct.type('limitauthchg')\n ], Limitauthchg);\n Types.Limitauthchg = Limitauthchg;\n let Linkauth = class Linkauth extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Linkauth.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Name)\n ], Linkauth.prototype, \"code\", void 0);\n __decorate([\n Struct.field(Name)\n ], Linkauth.prototype, \"type\", void 0);\n __decorate([\n Struct.field(Name)\n ], Linkauth.prototype, \"requirement\", void 0);\n __decorate([\n Struct.field(Name, { optional: true })\n ], Linkauth.prototype, \"authorized_by\", void 0);\n Linkauth = __decorate([\n Struct.type('linkauth')\n ], Linkauth);\n Types.Linkauth = Linkauth;\n let Mvfrsavings = class Mvfrsavings extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Mvfrsavings.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Mvfrsavings.prototype, \"rex\", void 0);\n Mvfrsavings = __decorate([\n Struct.type('mvfrsavings')\n ], Mvfrsavings);\n Types.Mvfrsavings = Mvfrsavings;\n let Mvtosavings = class Mvtosavings extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Mvtosavings.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Mvtosavings.prototype, \"rex\", void 0);\n Mvtosavings = __decorate([\n Struct.type('mvtosavings')\n ], Mvtosavings);\n Types.Mvtosavings = Mvtosavings;\n let NameBid = class NameBid extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], NameBid.prototype, \"newname\", void 0);\n __decorate([\n Struct.field(Name)\n ], NameBid.prototype, \"high_bidder\", void 0);\n __decorate([\n Struct.field(Int64)\n ], NameBid.prototype, \"high_bid\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], NameBid.prototype, \"last_bid_time\", void 0);\n NameBid = __decorate([\n Struct.type('name_bid')\n ], NameBid);\n Types.NameBid = NameBid;\n let Newaccount = class Newaccount extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Newaccount.prototype, \"creator\", void 0);\n __decorate([\n Struct.field(Name)\n ], Newaccount.prototype, \"name\", void 0);\n __decorate([\n Struct.field(Authority)\n ], Newaccount.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Authority)\n ], Newaccount.prototype, \"active\", void 0);\n Newaccount = __decorate([\n Struct.type('newaccount')\n ], Newaccount);\n Types.Newaccount = Newaccount;\n let Onblock = class Onblock extends Struct {\n };\n __decorate([\n Struct.field(BlockHeader)\n ], Onblock.prototype, \"header\", void 0);\n Onblock = __decorate([\n Struct.type('onblock')\n ], Onblock);\n Types.Onblock = Onblock;\n let Onerror = class Onerror extends Struct {\n };\n __decorate([\n Struct.field(UInt128)\n ], Onerror.prototype, \"sender_id\", void 0);\n __decorate([\n Struct.field(Bytes)\n ], Onerror.prototype, \"sent_trx\", void 0);\n Onerror = __decorate([\n Struct.type('onerror')\n ], Onerror);\n Types.Onerror = Onerror;\n let PairTimePointSecInt64 = class PairTimePointSecInt64 extends Struct {\n };\n __decorate([\n Struct.field(TimePointSec)\n ], PairTimePointSecInt64.prototype, \"first\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PairTimePointSecInt64.prototype, \"second\", void 0);\n PairTimePointSecInt64 = __decorate([\n Struct.type('pair_time_point_sec_int64')\n ], PairTimePointSecInt64);\n Types.PairTimePointSecInt64 = PairTimePointSecInt64;\n let Powerup = class Powerup extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Powerup.prototype, \"payer\", void 0);\n __decorate([\n Struct.field(Name)\n ], Powerup.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], Powerup.prototype, \"days\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Powerup.prototype, \"net_frac\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Powerup.prototype, \"cpu_frac\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Powerup.prototype, \"max_payment\", void 0);\n Powerup = __decorate([\n Struct.type('powerup')\n ], Powerup);\n Types.Powerup = Powerup;\n let PowerupOrder = class PowerupOrder extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], PowerupOrder.prototype, \"version\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], PowerupOrder.prototype, \"id\", void 0);\n __decorate([\n Struct.field(Name)\n ], PowerupOrder.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupOrder.prototype, \"net_weight\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupOrder.prototype, \"cpu_weight\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], PowerupOrder.prototype, \"expires\", void 0);\n PowerupOrder = __decorate([\n Struct.type('powerup_order')\n ], PowerupOrder);\n Types.PowerupOrder = PowerupOrder;\n let PowerupStateResource = class PowerupStateResource extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], PowerupStateResource.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupStateResource.prototype, \"weight\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupStateResource.prototype, \"weight_ratio\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupStateResource.prototype, \"assumed_stake_weight\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupStateResource.prototype, \"initial_weight_ratio\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupStateResource.prototype, \"target_weight_ratio\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], PowerupStateResource.prototype, \"initial_timestamp\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], PowerupStateResource.prototype, \"target_timestamp\", void 0);\n __decorate([\n Struct.field(Float64)\n ], PowerupStateResource.prototype, \"exponent\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], PowerupStateResource.prototype, \"decay_secs\", void 0);\n __decorate([\n Struct.field(Asset)\n ], PowerupStateResource.prototype, \"min_price\", void 0);\n __decorate([\n Struct.field(Asset)\n ], PowerupStateResource.prototype, \"max_price\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupStateResource.prototype, \"utilization\", void 0);\n __decorate([\n Struct.field(Int64)\n ], PowerupStateResource.prototype, \"adjusted_utilization\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], PowerupStateResource.prototype, \"utilization_timestamp\", void 0);\n PowerupStateResource = __decorate([\n Struct.type('powerup_state_resource')\n ], PowerupStateResource);\n Types.PowerupStateResource = PowerupStateResource;\n let PowerupState = class PowerupState extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], PowerupState.prototype, \"version\", void 0);\n __decorate([\n Struct.field(PowerupStateResource)\n ], PowerupState.prototype, \"net\", void 0);\n __decorate([\n Struct.field(PowerupStateResource)\n ], PowerupState.prototype, \"cpu\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], PowerupState.prototype, \"powerup_days\", void 0);\n __decorate([\n Struct.field(Asset)\n ], PowerupState.prototype, \"min_powerup_fee\", void 0);\n PowerupState = __decorate([\n Struct.type('powerup_state')\n ], PowerupState);\n Types.PowerupState = PowerupState;\n let Powerupexec = class Powerupexec extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Powerupexec.prototype, \"user\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], Powerupexec.prototype, \"max\", void 0);\n Powerupexec = __decorate([\n Struct.type('powerupexec')\n ], Powerupexec);\n Types.Powerupexec = Powerupexec;\n let ProducerInfo = class ProducerInfo extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], ProducerInfo.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Float64)\n ], ProducerInfo.prototype, \"total_votes\", void 0);\n __decorate([\n Struct.field(PublicKey)\n ], ProducerInfo.prototype, \"producer_key\", void 0);\n __decorate([\n Struct.field('bool')\n ], ProducerInfo.prototype, \"is_active\", void 0);\n __decorate([\n Struct.field('string')\n ], ProducerInfo.prototype, \"url\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], ProducerInfo.prototype, \"unpaid_blocks\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], ProducerInfo.prototype, \"last_claim_time\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], ProducerInfo.prototype, \"location\", void 0);\n __decorate([\n Struct.field(BlockSigningAuthorityV0, { optional: true })\n ], ProducerInfo.prototype, \"producer_authority\", void 0);\n ProducerInfo = __decorate([\n Struct.type('producer_info')\n ], ProducerInfo);\n Types.ProducerInfo = ProducerInfo;\n let ProducerInfo2 = class ProducerInfo2 extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], ProducerInfo2.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Float64)\n ], ProducerInfo2.prototype, \"votepay_share\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], ProducerInfo2.prototype, \"last_votepay_share_update\", void 0);\n ProducerInfo2 = __decorate([\n Struct.type('producer_info2')\n ], ProducerInfo2);\n Types.ProducerInfo2 = ProducerInfo2;\n let Refund = class Refund extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Refund.prototype, \"owner\", void 0);\n Refund = __decorate([\n Struct.type('refund')\n ], Refund);\n Types.Refund = Refund;\n let RefundRequest = class RefundRequest extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], RefundRequest.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], RefundRequest.prototype, \"request_time\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RefundRequest.prototype, \"net_amount\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RefundRequest.prototype, \"cpu_amount\", void 0);\n RefundRequest = __decorate([\n Struct.type('refund_request')\n ], RefundRequest);\n Types.RefundRequest = RefundRequest;\n let Regproducer = class Regproducer extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Regproducer.prototype, \"producer\", void 0);\n __decorate([\n Struct.field(PublicKey)\n ], Regproducer.prototype, \"producer_key\", void 0);\n __decorate([\n Struct.field('string')\n ], Regproducer.prototype, \"url\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], Regproducer.prototype, \"location\", void 0);\n Regproducer = __decorate([\n Struct.type('regproducer')\n ], Regproducer);\n Types.Regproducer = Regproducer;\n let Regproducer2 = class Regproducer2 extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Regproducer2.prototype, \"producer\", void 0);\n __decorate([\n Struct.field(BlockSigningAuthorityV0)\n ], Regproducer2.prototype, \"producer_authority\", void 0);\n __decorate([\n Struct.field('string')\n ], Regproducer2.prototype, \"url\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], Regproducer2.prototype, \"location\", void 0);\n Regproducer2 = __decorate([\n Struct.type('regproducer2')\n ], Regproducer2);\n Types.Regproducer2 = Regproducer2;\n let Regproxy = class Regproxy extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Regproxy.prototype, \"proxy\", void 0);\n __decorate([\n Struct.field('bool')\n ], Regproxy.prototype, \"isproxy\", void 0);\n Regproxy = __decorate([\n Struct.type('regproxy')\n ], Regproxy);\n Types.Regproxy = Regproxy;\n let Rentcpu = class Rentcpu extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Rentcpu.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Name)\n ], Rentcpu.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Rentcpu.prototype, \"loan_payment\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Rentcpu.prototype, \"loan_fund\", void 0);\n Rentcpu = __decorate([\n Struct.type('rentcpu')\n ], Rentcpu);\n Types.Rentcpu = Rentcpu;\n let Rentnet = class Rentnet extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Rentnet.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Name)\n ], Rentnet.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Rentnet.prototype, \"loan_payment\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Rentnet.prototype, \"loan_fund\", void 0);\n Rentnet = __decorate([\n Struct.type('rentnet')\n ], Rentnet);\n Types.Rentnet = Rentnet;\n let RexBalance = class RexBalance extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], RexBalance.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Name)\n ], RexBalance.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexBalance.prototype, \"vote_stake\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexBalance.prototype, \"rex_balance\", void 0);\n __decorate([\n Struct.field(Int64)\n ], RexBalance.prototype, \"matured_rex\", void 0);\n __decorate([\n Struct.field(PairTimePointSecInt64, { array: true })\n ], RexBalance.prototype, \"rex_maturities\", void 0);\n RexBalance = __decorate([\n Struct.type('rex_balance')\n ], RexBalance);\n Types.RexBalance = RexBalance;\n let RexFund = class RexFund extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], RexFund.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Name)\n ], RexFund.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexFund.prototype, \"balance\", void 0);\n RexFund = __decorate([\n Struct.type('rex_fund')\n ], RexFund);\n Types.RexFund = RexFund;\n let RexLoan = class RexLoan extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], RexLoan.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Name)\n ], RexLoan.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Name)\n ], RexLoan.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexLoan.prototype, \"payment\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexLoan.prototype, \"balance\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexLoan.prototype, \"total_staked\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], RexLoan.prototype, \"loan_num\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], RexLoan.prototype, \"expiration\", void 0);\n RexLoan = __decorate([\n Struct.type('rex_loan')\n ], RexLoan);\n Types.RexLoan = RexLoan;\n let RexOrder = class RexOrder extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], RexOrder.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Name)\n ], RexOrder.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexOrder.prototype, \"rex_requested\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexOrder.prototype, \"proceeds\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexOrder.prototype, \"stake_change\", void 0);\n __decorate([\n Struct.field(TimePoint)\n ], RexOrder.prototype, \"order_time\", void 0);\n __decorate([\n Struct.field('bool')\n ], RexOrder.prototype, \"is_open\", void 0);\n RexOrder = __decorate([\n Struct.type('rex_order')\n ], RexOrder);\n Types.RexOrder = RexOrder;\n let RexPool = class RexPool extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], RexPool.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexPool.prototype, \"total_lent\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexPool.prototype, \"total_unlent\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexPool.prototype, \"total_rent\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexPool.prototype, \"total_lendable\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexPool.prototype, \"total_rex\", void 0);\n __decorate([\n Struct.field(Asset)\n ], RexPool.prototype, \"namebid_proceeds\", void 0);\n __decorate([\n Struct.field(UInt64)\n ], RexPool.prototype, \"loan_num\", void 0);\n RexPool = __decorate([\n Struct.type('rex_pool')\n ], RexPool);\n Types.RexPool = RexPool;\n let RexReturnBuckets = class RexReturnBuckets extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], RexReturnBuckets.prototype, \"version\", void 0);\n __decorate([\n Struct.field(PairTimePointSecInt64, { array: true })\n ], RexReturnBuckets.prototype, \"return_buckets\", void 0);\n RexReturnBuckets = __decorate([\n Struct.type('rex_return_buckets')\n ], RexReturnBuckets);\n Types.RexReturnBuckets = RexReturnBuckets;\n let RexReturnPool = class RexReturnPool extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], RexReturnPool.prototype, \"version\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], RexReturnPool.prototype, \"last_dist_time\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], RexReturnPool.prototype, \"pending_bucket_time\", void 0);\n __decorate([\n Struct.field(TimePointSec)\n ], RexReturnPool.prototype, \"oldest_bucket_time\", void 0);\n __decorate([\n Struct.field(Int64)\n ], RexReturnPool.prototype, \"pending_bucket_proceeds\", void 0);\n __decorate([\n Struct.field(Int64)\n ], RexReturnPool.prototype, \"current_rate_of_increase\", void 0);\n __decorate([\n Struct.field(Int64)\n ], RexReturnPool.prototype, \"proceeds\", void 0);\n RexReturnPool = __decorate([\n Struct.type('rex_return_pool')\n ], RexReturnPool);\n Types.RexReturnPool = RexReturnPool;\n let Rexexec = class Rexexec extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Rexexec.prototype, \"user\", void 0);\n __decorate([\n Struct.field(UInt16)\n ], Rexexec.prototype, \"max\", void 0);\n Rexexec = __decorate([\n Struct.type('rexexec')\n ], Rexexec);\n Types.Rexexec = Rexexec;\n let Rmvproducer = class Rmvproducer extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Rmvproducer.prototype, \"producer\", void 0);\n Rmvproducer = __decorate([\n Struct.type('rmvproducer')\n ], Rmvproducer);\n Types.Rmvproducer = Rmvproducer;\n let Sellram = class Sellram extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Sellram.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Sellram.prototype, \"bytes\", void 0);\n Sellram = __decorate([\n Struct.type('sellram')\n ], Sellram);\n Types.Sellram = Sellram;\n let Sellrex = class Sellrex extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Sellrex.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Sellrex.prototype, \"rex\", void 0);\n Sellrex = __decorate([\n Struct.type('sellrex')\n ], Sellrex);\n Types.Sellrex = Sellrex;\n let Setabi = class Setabi extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Setabi.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Bytes)\n ], Setabi.prototype, \"abi\", void 0);\n __decorate([\n Struct.field('string', { optional: true })\n ], Setabi.prototype, \"memo\", void 0);\n Setabi = __decorate([\n Struct.type('setabi')\n ], Setabi);\n Types.Setabi = Setabi;\n let Setacctcpu = class Setacctcpu extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Setacctcpu.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Int64, { optional: true })\n ], Setacctcpu.prototype, \"cpu_weight\", void 0);\n Setacctcpu = __decorate([\n Struct.type('setacctcpu')\n ], Setacctcpu);\n Types.Setacctcpu = Setacctcpu;\n let Setacctnet = class Setacctnet extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Setacctnet.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Int64, { optional: true })\n ], Setacctnet.prototype, \"net_weight\", void 0);\n Setacctnet = __decorate([\n Struct.type('setacctnet')\n ], Setacctnet);\n Types.Setacctnet = Setacctnet;\n let Setacctram = class Setacctram extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Setacctram.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Int64, { optional: true })\n ], Setacctram.prototype, \"ram_bytes\", void 0);\n Setacctram = __decorate([\n Struct.type('setacctram')\n ], Setacctram);\n Types.Setacctram = Setacctram;\n let Setalimits = class Setalimits extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Setalimits.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Setalimits.prototype, \"ram_bytes\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Setalimits.prototype, \"net_weight\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Setalimits.prototype, \"cpu_weight\", void 0);\n Setalimits = __decorate([\n Struct.type('setalimits')\n ], Setalimits);\n Types.Setalimits = Setalimits;\n let Setcode = class Setcode extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Setcode.prototype, \"account\", void 0);\n __decorate([\n Struct.field(UInt8)\n ], Setcode.prototype, \"vmtype\", void 0);\n __decorate([\n Struct.field(UInt8)\n ], Setcode.prototype, \"vmversion\", void 0);\n __decorate([\n Struct.field(Bytes)\n ], Setcode.prototype, \"code\", void 0);\n __decorate([\n Struct.field('string', { optional: true })\n ], Setcode.prototype, \"memo\", void 0);\n Setcode = __decorate([\n Struct.type('setcode')\n ], Setcode);\n Types.Setcode = Setcode;\n let Setinflation = class Setinflation extends Struct {\n };\n __decorate([\n Struct.field(Int64)\n ], Setinflation.prototype, \"annual_rate\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Setinflation.prototype, \"inflation_pay_factor\", void 0);\n __decorate([\n Struct.field(Int64)\n ], Setinflation.prototype, \"votepay_factor\", void 0);\n Setinflation = __decorate([\n Struct.type('setinflation')\n ], Setinflation);\n Types.Setinflation = Setinflation;\n let Setparams = class Setparams extends Struct {\n };\n __decorate([\n Struct.field(BlockchainParametersV1)\n ], Setparams.prototype, \"params\", void 0);\n Setparams = __decorate([\n Struct.type('setparams')\n ], Setparams);\n Types.Setparams = Setparams;\n let Setpriv = class Setpriv extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Setpriv.prototype, \"account\", void 0);\n __decorate([\n Struct.field(UInt8)\n ], Setpriv.prototype, \"is_priv\", void 0);\n Setpriv = __decorate([\n Struct.type('setpriv')\n ], Setpriv);\n Types.Setpriv = Setpriv;\n let Setram = class Setram extends Struct {\n };\n __decorate([\n Struct.field(UInt64)\n ], Setram.prototype, \"max_ram_size\", void 0);\n Setram = __decorate([\n Struct.type('setram')\n ], Setram);\n Types.Setram = Setram;\n let Setramrate = class Setramrate extends Struct {\n };\n __decorate([\n Struct.field(UInt16)\n ], Setramrate.prototype, \"bytes_per_block\", void 0);\n Setramrate = __decorate([\n Struct.type('setramrate')\n ], Setramrate);\n Types.Setramrate = Setramrate;\n let Setrex = class Setrex extends Struct {\n };\n __decorate([\n Struct.field(Asset)\n ], Setrex.prototype, \"balance\", void 0);\n Setrex = __decorate([\n Struct.type('setrex')\n ], Setrex);\n Types.Setrex = Setrex;\n let Undelegatebw = class Undelegatebw extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Undelegatebw.prototype, \"from\", void 0);\n __decorate([\n Struct.field(Name)\n ], Undelegatebw.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Undelegatebw.prototype, \"unstake_net_quantity\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Undelegatebw.prototype, \"unstake_cpu_quantity\", void 0);\n Undelegatebw = __decorate([\n Struct.type('undelegatebw')\n ], Undelegatebw);\n Types.Undelegatebw = Undelegatebw;\n let Unlinkauth = class Unlinkauth extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Unlinkauth.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Name)\n ], Unlinkauth.prototype, \"code\", void 0);\n __decorate([\n Struct.field(Name)\n ], Unlinkauth.prototype, \"type\", void 0);\n __decorate([\n Struct.field(Name, { optional: true })\n ], Unlinkauth.prototype, \"authorized_by\", void 0);\n Unlinkauth = __decorate([\n Struct.type('unlinkauth')\n ], Unlinkauth);\n Types.Unlinkauth = Unlinkauth;\n let Unregprod = class Unregprod extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Unregprod.prototype, \"producer\", void 0);\n Unregprod = __decorate([\n Struct.type('unregprod')\n ], Unregprod);\n Types.Unregprod = Unregprod;\n let Unstaketorex = class Unstaketorex extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Unstaketorex.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Name)\n ], Unstaketorex.prototype, \"receiver\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Unstaketorex.prototype, \"from_net\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Unstaketorex.prototype, \"from_cpu\", void 0);\n Unstaketorex = __decorate([\n Struct.type('unstaketorex')\n ], Unstaketorex);\n Types.Unstaketorex = Unstaketorex;\n let Updateauth = class Updateauth extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Updateauth.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Name)\n ], Updateauth.prototype, \"permission\", void 0);\n __decorate([\n Struct.field(Name)\n ], Updateauth.prototype, \"parent\", void 0);\n __decorate([\n Struct.field(Authority)\n ], Updateauth.prototype, \"auth\", void 0);\n __decorate([\n Struct.field(Name, { optional: true })\n ], Updateauth.prototype, \"authorized_by\", void 0);\n Updateauth = __decorate([\n Struct.type('updateauth')\n ], Updateauth);\n Types.Updateauth = Updateauth;\n let Updaterex = class Updaterex extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Updaterex.prototype, \"owner\", void 0);\n Updaterex = __decorate([\n Struct.type('updaterex')\n ], Updaterex);\n Types.Updaterex = Updaterex;\n let Updtrevision = class Updtrevision extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], Updtrevision.prototype, \"revision\", void 0);\n Updtrevision = __decorate([\n Struct.type('updtrevision')\n ], Updtrevision);\n Types.Updtrevision = Updtrevision;\n let UserResources = class UserResources extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], UserResources.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], UserResources.prototype, \"net_weight\", void 0);\n __decorate([\n Struct.field(Asset)\n ], UserResources.prototype, \"cpu_weight\", void 0);\n __decorate([\n Struct.field(Int64)\n ], UserResources.prototype, \"ram_bytes\", void 0);\n UserResources = __decorate([\n Struct.type('user_resources')\n ], UserResources);\n Types.UserResources = UserResources;\n let Voteproducer = class Voteproducer extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Voteproducer.prototype, \"voter\", void 0);\n __decorate([\n Struct.field(Name)\n ], Voteproducer.prototype, \"proxy\", void 0);\n __decorate([\n Struct.field(Name, { array: true })\n ], Voteproducer.prototype, \"producers\", void 0);\n Voteproducer = __decorate([\n Struct.type('voteproducer')\n ], Voteproducer);\n Types.Voteproducer = Voteproducer;\n let VoterInfo = class VoterInfo extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], VoterInfo.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Name)\n ], VoterInfo.prototype, \"proxy\", void 0);\n __decorate([\n Struct.field(Name, { array: true })\n ], VoterInfo.prototype, \"producers\", void 0);\n __decorate([\n Struct.field(Int64)\n ], VoterInfo.prototype, \"staked\", void 0);\n __decorate([\n Struct.field(Float64)\n ], VoterInfo.prototype, \"last_vote_weight\", void 0);\n __decorate([\n Struct.field(Float64)\n ], VoterInfo.prototype, \"proxied_vote_weight\", void 0);\n __decorate([\n Struct.field('bool')\n ], VoterInfo.prototype, \"is_proxy\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], VoterInfo.prototype, \"flags1\", void 0);\n __decorate([\n Struct.field(UInt32)\n ], VoterInfo.prototype, \"reserved2\", void 0);\n __decorate([\n Struct.field(Asset)\n ], VoterInfo.prototype, \"reserved3\", void 0);\n VoterInfo = __decorate([\n Struct.type('voter_info')\n ], VoterInfo);\n Types.VoterInfo = VoterInfo;\n let Voteupdate = class Voteupdate extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Voteupdate.prototype, \"voter_name\", void 0);\n Voteupdate = __decorate([\n Struct.type('voteupdate')\n ], Voteupdate);\n Types.Voteupdate = Voteupdate;\n let Wasmcfg = class Wasmcfg extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Wasmcfg.prototype, \"settings\", void 0);\n Wasmcfg = __decorate([\n Struct.type('wasmcfg')\n ], Wasmcfg);\n Types.Wasmcfg = Wasmcfg;\n let Withdraw = class Withdraw extends Struct {\n };\n __decorate([\n Struct.field(Name)\n ], Withdraw.prototype, \"owner\", void 0);\n __decorate([\n Struct.field(Asset)\n ], Withdraw.prototype, \"amount\", void 0);\n Withdraw = __decorate([\n Struct.type('withdraw')\n ], Withdraw);\n Types.Withdraw = Withdraw;\n let LimitAuthChange = class LimitAuthChange extends Struct {\n };\n __decorate([\n Struct.field(UInt8)\n ], LimitAuthChange.prototype, \"version\", void 0);\n __decorate([\n Struct.field(Name)\n ], LimitAuthChange.prototype, \"account\", void 0);\n __decorate([\n Struct.field(Name, { array: true })\n ], LimitAuthChange.prototype, \"allow_perms\", void 0);\n __decorate([\n Struct.field(Name, { array: true })\n ], LimitAuthChange.prototype, \"disallow_perms\", void 0);\n LimitAuthChange = __decorate([\n Struct.type('limit_auth_change')\n ], LimitAuthChange);\n Types.LimitAuthChange = LimitAuthChange;\n})(Types || (Types = {}));\nconst TableMap = {\n abihash: Types.AbiHash,\n bidrefunds: Types.BidRefund,\n blockinfo: Types.BlockInfoRecord,\n cpuloan: Types.RexLoan,\n delband: Types.DelegatedBandwidth,\n global: Types.EosioGlobalState,\n global2: Types.EosioGlobalState2,\n global3: Types.EosioGlobalState3,\n global4: Types.EosioGlobalState4,\n namebids: Types.NameBid,\n netloan: Types.RexLoan,\n 'powup.order': Types.PowerupOrder,\n 'powup.state': Types.PowerupState,\n producers: Types.ProducerInfo,\n producers2: Types.ProducerInfo2,\n rammarket: Types.ExchangeState,\n refunds: Types.RefundRequest,\n retbuckets: Types.RexReturnBuckets,\n rexbal: Types.RexBalance,\n rexfund: Types.RexFund,\n rexpool: Types.RexPool,\n rexqueue: Types.RexOrder,\n rexretpool: Types.RexReturnPool,\n userres: Types.UserResources,\n voters: Types.VoterInfo,\n limitauthchg: Types.LimitAuthChange,\n};\n\nvar eosio = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Contract: Contract,\n get Types () { return Types; },\n abi: abi,\n abiBlob: abiBlob\n});\n\nclass Resource {\n constructor(resource, data) {\n this.resource = resource;\n this.data = data;\n switch (resource) {\n case 'cpu': {\n this.available = this.data.cpu_limit.available;\n this.current_used = this.data.cpu_limit.current_used;\n this.used = this.data.cpu_limit.used;\n this.max = this.data.cpu_limit.max;\n this.weight = this.data.cpu_weight;\n break;\n }\n case 'net': {\n this.available = this.data.net_limit.available;\n this.current_used = this.data.net_limit.current_used;\n this.used = this.data.net_limit.used;\n this.max = this.data.net_limit.max;\n this.weight = this.data.net_weight;\n break;\n }\n case 'ram': {\n this.available = this.data.ram_quota.subtracting(this.data.ram_usage);\n this.used = Int64.from(this.data.ram_usage);\n this.max = this.data.ram_quota;\n break;\n }\n default: {\n throw new Error(`Unknown resource type (${resource}).`);\n }\n }\n }\n toJSON() {\n return {\n resource: this.resource,\n available: this.available,\n current_used: this.current_used ? this.current_used : this.current_used,\n used: this.used,\n max: this.max,\n weight: this.weight ? this.weight : undefined,\n };\n }\n}\n\nclass Account {\n constructor(args) {\n this.data = args.data;\n if (args.contract) {\n this.systemContract = args.contract;\n }\n else {\n this.systemContract = new Contract({ client: args.client });\n }\n this.client = args.client;\n this.token = new Token({ client: args.client });\n }\n get accountName() {\n return Name.from(this.data.account_name);\n }\n get systemToken() {\n return Asset.Symbol.from(this.data.total_resources.cpu_weight.symbol);\n }\n balance(symbol, tokenContract) {\n return this.token.balance(this.accountName, symbol, tokenContract);\n }\n permission(permissionName) {\n const permission = this.data.permissions.find((permission) => permission.perm_name.equals(permissionName));\n if (!permission) {\n throw new Error(`Permission ${permissionName} does not exist on account ${this.accountName}.`);\n }\n return Permission.from(permission);\n }\n get permissions() {\n return this.data.permissions.map((permission) => Permission.from(permission));\n }\n resource(resourceType) {\n return new Resource(resourceType, this.data);\n }\n // TODO: Refactor once resources library is updated\n resources(sampleAccount) {\n // Returns an instance of the @wharfkit/resources library\n // configured for this blockchain/account\n return new Resources({\n api: this.client,\n sampleAccount: sampleAccount ? String(sampleAccount) : undefined,\n symbol: this.data.core_liquid_balance\n ? String(this.data.core_liquid_balance.symbol)\n : undefined,\n });\n }\n setPermission(permission) {\n return this.systemContract.action('updateauth', {\n account: this.accountName,\n auth: permission.required_auth,\n authorized_by: '',\n parent: permission.parent,\n permission: permission.perm_name,\n });\n }\n removePermission(permissionName) {\n return this.systemContract.action('deleteauth', {\n account: this.accountName,\n authorized_by: '',\n permission: permissionName,\n });\n }\n linkauth(contract, action, requiredPermission) {\n return this.systemContract.action('linkauth', {\n account: this.accountName,\n code: contract,\n type: action,\n requirement: requiredPermission,\n authorized_by: '',\n });\n }\n unlinkauth(contract, action) {\n return this.systemContract.action('unlinkauth', {\n account: this.accountName,\n code: contract,\n type: action,\n authorized_by: '',\n });\n }\n buyRam(amount, options) {\n let receiver = this.accountName;\n if (options && options.receiver) {\n receiver = Name.from(options.receiver);\n }\n return this.systemContract.action('buyram', {\n payer: this.accountName,\n quant: amount,\n receiver,\n });\n }\n buyRamBytes(bytes, options) {\n let receiver = this.accountName;\n if (options && options.receiver) {\n receiver = Name.from(options.receiver);\n }\n return this.systemContract.action('buyrambytes', {\n bytes,\n payer: this.accountName,\n receiver,\n });\n }\n sellRam(bytes) {\n return this.systemContract.action('sellram', {\n account: this.accountName,\n bytes,\n });\n }\n delegate(value) {\n return this.systemContract.action('delegatebw', {\n from: value.from || this.accountName,\n receiver: value.receiver || this.accountName,\n stake_cpu_quantity: value.cpu || Asset.fromUnits(0, this.systemToken),\n stake_net_quantity: value.net || Asset.fromUnits(0, this.systemToken),\n transfer: value.transfer !== undefined ? value.transfer : false,\n });\n }\n undelegate(value) {\n return this.systemContract.action('undelegatebw', {\n from: value.from || this.accountName,\n receiver: value.receiver || this.accountName,\n unstake_cpu_quantity: value.cpu || Asset.fromUnits(0, this.systemToken),\n unstake_net_quantity: value.net || Asset.fromUnits(0, this.systemToken),\n });\n }\n}\n\nclass AccountKit {\n constructor(chain, options) {\n this.chain = chain;\n this.contract = options?.contract;\n this.client = options?.client || new APIClient({ url: this.chain.url });\n }\n async load(accountName) {\n const data = await this.client.v1.chain.get_account(accountName, this.chain.accountDataType);\n return new Account({\n client: this.client,\n contract: this.contract,\n data: data,\n });\n }\n}\n\nexport { Account, AccountKit, LinkedAction, Permission, Resource, eosio as SystemContract };\n//# sourceMappingURL=account.m.js.map\n","import { ChainDefinition, Logo } from '@wharfkit/common';\nexport * from '@wharfkit/common';\nimport { APIClient, FetchProvider, Serializer, Action, PermissionLevel, SignedTransaction, Transaction, Name, Struct, Checksum256 } from '@wharfkit/antelope';\nexport * from '@wharfkit/antelope';\nimport zlib from 'pako';\nimport { AccountKit } from '@wharfkit/account';\nimport { RequestDataV2, RequestDataV3, RequestSignature, SigningRequest, ResolvedSigningRequest, ChainId } from '@wharfkit/signing-request';\nexport * from '@wharfkit/signing-request';\nimport { ABICache } from '@wharfkit/abicache';\nexport * from '@wharfkit/abicache';\nimport { __decorate } from 'tslib';\n\nvar LoginHookTypes;\n(function (LoginHookTypes) {\n LoginHookTypes[\"beforeLogin\"] = \"beforeLogin\";\n LoginHookTypes[\"afterLogin\"] = \"afterLogin\";\n})(LoginHookTypes || (LoginHookTypes = {}));\nclass LoginContext {\n constructor(options) {\n this.arbitrary = {};\n this.chains = [];\n this.hooks = {\n afterLogin: [],\n beforeLogin: [],\n };\n this.uiRequirements = {\n requiresChainSelect: true,\n requiresPermissionSelect: true,\n requiresPermissionEntry: false,\n requiresWalletSelect: true,\n };\n this.walletPlugins = [];\n this.appName = String(options.appName);\n if (options.arbitrary) {\n this.arbitrary = options.arbitrary;\n }\n if (options.chains) {\n this.chains = options.chains;\n }\n if (options.chain) {\n this.chain = options.chain;\n }\n this.fetch = options.fetch;\n this.permissionLevel = options.permissionLevel;\n this.walletPlugins = options.walletPlugins || [];\n this.ui = options.ui;\n options.loginPlugins?.forEach((plugin) => {\n plugin.register(this);\n });\n }\n addHook(t, hook) {\n this.hooks[t].push(hook);\n }\n getClient(chain) {\n return new APIClient({ provider: new FetchProvider(chain.url, { fetch: this.fetch }) });\n }\n get esrOptions() {\n return {\n zlib,\n };\n }\n}\nclass AbstractLoginPlugin {\n}\nclass BaseLoginPlugin extends AbstractLoginPlugin {\n register() {\n }\n}\n\nvar TransactHookTypes;\n(function (TransactHookTypes) {\n TransactHookTypes[\"beforeSign\"] = \"beforeSign\";\n TransactHookTypes[\"afterSign\"] = \"afterSign\";\n TransactHookTypes[\"afterBroadcast\"] = \"afterBroadcast\";\n})(TransactHookTypes || (TransactHookTypes = {}));\nclass TransactContext {\n constructor(options) {\n this.hooks = {\n afterBroadcast: [],\n afterSign: [],\n beforeSign: [],\n };\n this.abiCache = options.abiCache;\n this.appName = String(options.appName);\n this.chain = options.chain;\n this.client = options.client;\n this.createRequest = options.createRequest;\n this.fetch = options.fetch;\n this.permissionLevel = options.permissionLevel;\n if (options.storage) {\n this.storage = options.storage;\n }\n this.transactPluginsOptions = options.transactPluginsOptions || {};\n this.ui = options.ui;\n options.transactPlugins?.forEach((plugin) => {\n plugin.register(this);\n });\n }\n get accountName() {\n return this.permissionLevel.actor;\n }\n get permissionName() {\n return this.permissionLevel.permission;\n }\n get esrOptions() {\n return {\n abiProvider: this.abiCache,\n zlib,\n };\n }\n addHook(t, hook) {\n switch (t) {\n case TransactHookTypes.beforeSign: {\n this.hooks[t].push(hook);\n break;\n }\n case TransactHookTypes.afterSign:\n case TransactHookTypes.afterBroadcast: {\n this.hooks[t].push(hook);\n break;\n }\n }\n }\n async getInfo() {\n let info = this.info;\n if (this.info) {\n info = this.info;\n }\n else {\n this.info = info = await this.client.v1.chain.get_info();\n }\n return info;\n }\n async resolve(request, expireSeconds = 120) {\n let resolveArgs = {\n chainId: this.chain.id,\n };\n if (request.requiresTapos()) {\n const info = await this.getInfo();\n const header = info.getTransactionHeader(expireSeconds);\n resolveArgs = {\n ...resolveArgs,\n ...header,\n };\n }\n const abis = await request.fetchAbis(this.abiCache);\n return request.resolve(abis, this.permissionLevel, resolveArgs);\n }\n}\nclass TransactRevisions {\n constructor(request) {\n this.revisions = [];\n this.addRevision({ request, signatures: [] }, 'original', true);\n }\n addRevision(response, code, allowModify) {\n let modified = false;\n const previous = this.revisions[this.revisions.length - 1];\n if (previous) {\n modified = previous.response.request !== String(response.request);\n }\n this.revisions.push({\n allowModify,\n code: String(code),\n modified,\n response: {\n request: String(response.request),\n signatures: response.signatures ? Serializer.objectify(response.signatures) : [],\n },\n });\n }\n}\nclass AbstractTransactPlugin {\n}\nclass BaseTransactPlugin extends AbstractTransactPlugin {\n get id() {\n return 'base-transact-plugin';\n }\n register() {\n }\n}\n\nfunction getFetch(options) {\n if (options && options.fetch) {\n return options.fetch;\n }\n if (typeof window !== 'undefined' && window.fetch) {\n return window.fetch.bind(window);\n }\n if (typeof global !== 'undefined' && global.fetch) {\n return global.fetch.bind(global);\n }\n throw new Error('Missing fetch');\n}\nfunction appendAction(request, action) {\n const newAction = Action.from(action);\n const cloned = request.clone();\n switch (cloned.data.req.variantName) {\n case 'action': {\n cloned.data.req.value = [cloned.data.req.value, newAction];\n cloned.data.req.variantIdx = 1;\n break;\n }\n case 'action[]': {\n const array = cloned.data.req.value;\n array.push(newAction);\n cloned.data.req.value = array;\n break;\n }\n case 'transaction': {\n const tx = cloned.data.req.value;\n tx.actions.push(newAction);\n cloned.data.req.value = tx;\n break;\n }\n default: {\n throw new Error('unknown data req type');\n }\n }\n return cloned;\n}\nfunction prependAction(request, action) {\n const newAction = Action.from(action);\n const cloned = request.clone();\n switch (cloned.data.req.variantName) {\n case 'action': {\n cloned.data.req.value = [newAction, cloned.data.req.value];\n cloned.data.req.variantIdx = 1;\n break;\n }\n case 'action[]': {\n const array = cloned.data.req.value;\n array.unshift(newAction);\n cloned.data.req.value = array;\n break;\n }\n case 'transaction': {\n const tx = cloned.data.req.value;\n tx.actions.unshift(newAction);\n cloned.data.req.value = tx;\n break;\n }\n default: {\n throw new Error('unknown data req type');\n }\n }\n return cloned;\n}\n\nclass Session {\n constructor(args, options = {}) {\n this.abis = [];\n this.allowModify = true;\n this.broadcast = true;\n this.expireSeconds = 120;\n this.transactPluginsOptions = {};\n this.serialize = () => Serializer.objectify({\n chain: this.chain.id,\n actor: this.permissionLevel.actor,\n permission: this.permissionLevel.permission,\n walletPlugin: this.walletPlugin.serialize(),\n });\n this.chain = ChainDefinition.from(args.chain);\n if (args.permissionLevel) {\n this.permissionLevel = PermissionLevel.from(args.permissionLevel);\n }\n else if (args.actor && args.permission) {\n this.permissionLevel = PermissionLevel.from(`${args.actor}@${args.permission}`);\n }\n else {\n throw new Error('Either a permissionLevel or actor/permission must be provided when creating a new Session.');\n }\n this.walletPlugin = args.walletPlugin;\n if (options.appName) {\n this.appName = String(options.appName);\n }\n if (options.abis) {\n this.abis = [...options.abis];\n }\n if (options.contracts) {\n this.abis.push(...options.contracts.map((c) => ({ account: c.account, abi: c.abi })));\n }\n if (options.allowModify !== undefined) {\n this.allowModify = options.allowModify;\n }\n if (options.broadcast !== undefined) {\n this.broadcast = options.broadcast;\n }\n if (options.expireSeconds) {\n this.expireSeconds = options.expireSeconds;\n }\n if (options.fetch) {\n this.fetch = options.fetch;\n }\n else {\n this.fetch = getFetch(options);\n }\n if (options.storage) {\n this.storage = options.storage;\n }\n if (options.transactPlugins) {\n this.transactPlugins = options.transactPlugins;\n }\n else {\n this.transactPlugins = [new BaseTransactPlugin()];\n }\n if (options.transactPluginsOptions) {\n this.transactPluginsOptions = options.transactPluginsOptions;\n }\n if (options.abiCache) {\n this.abiCache = options.abiCache;\n }\n else {\n this.abiCache = new ABICache(this.client);\n }\n if (options.ui) {\n this.ui = options.ui;\n }\n }\n get actor() {\n return this.permissionLevel.actor;\n }\n get permission() {\n return this.permissionLevel.permission;\n }\n get client() {\n return new APIClient({ provider: new FetchProvider(this.chain.url, { fetch: this.fetch }) });\n }\n setEndpoint(url) {\n this.chain.url = url;\n }\n upgradeTransaction(args) {\n const anyArgs = args;\n if (args.actions &&\n (anyArgs.expiration ||\n anyArgs.ref_block_num ||\n anyArgs.ref_block_prefix ||\n anyArgs.max_net_usage_words ||\n anyArgs.max_cpu_usage_ms ||\n anyArgs.delay_sec)) {\n return (args = {\n transaction: {\n expiration: '1970-01-01T00:00:00',\n ref_block_num: 0,\n ref_block_prefix: 0,\n max_net_usage_words: 0,\n max_cpu_usage_ms: 0,\n delay_sec: 0,\n ...anyArgs,\n },\n });\n }\n if (args.context_free_actions || args.context_free_data) {\n const actions = args.actions || [args.action];\n delete args.action;\n return {\n transaction: {\n expiration: '1970-01-01T00:00:00',\n ref_block_num: 0,\n ref_block_prefix: 0,\n max_net_usage_words: 0,\n max_cpu_usage_ms: 0,\n delay_sec: 0,\n context_free_actions: [],\n context_free_data: [],\n actions,\n ...anyArgs,\n },\n };\n }\n return args;\n }\n storageType(version) {\n return version === 2 ? RequestDataV2 : RequestDataV3;\n }\n cloneRequest(request, abiCache) {\n let signature;\n if (request.signature) {\n signature = RequestSignature.from(JSON.parse(JSON.stringify(request.signature)));\n }\n const RequestData = this.storageType(request.version);\n const data = RequestData.from(JSON.parse(JSON.stringify(request.data)));\n return new SigningRequest(request.version, data, zlib, abiCache, signature);\n }\n async createRequest(args, abiCache) {\n let request;\n const options = {\n abiProvider: abiCache,\n zlib,\n };\n if (args.request && args.request instanceof SigningRequest) {\n request = this.cloneRequest(args.request, abiCache);\n }\n else if (args.request) {\n request = SigningRequest.from(args.request, options);\n }\n else {\n args = this.upgradeTransaction(args);\n request = await SigningRequest.create({\n ...args,\n chainId: this.chain.id,\n }, options);\n }\n request.setBroadcast(false);\n return request;\n }\n async updateRequest(previous, modified, abiCache) {\n const updatedRequest = this.cloneRequest(modified, abiCache);\n const info = updatedRequest.getRawInfo();\n previous.data.info.forEach((metadata) => {\n if (info[metadata.key]) {\n console.warn(`During an updateRequest call, the previous request had already set the ` +\n `metadata key of \"${metadata.key}\" which will not be overwritten.`);\n }\n updatedRequest.setRawInfoKey(metadata.key, metadata.value);\n });\n return updatedRequest;\n }\n async transact(args, options) {\n try {\n const expireSeconds = options && options.expireSeconds ? options.expireSeconds : this.expireSeconds;\n const willBroadcast = options && typeof options.broadcast !== 'undefined'\n ? options.broadcast\n : this.broadcast;\n const abiCache = this.getMergedAbiCache(args, options);\n const transactPlugins = options?.transactPlugins || this.transactPlugins;\n const transactPluginsOptions = options?.transactPluginsOptions || this.transactPluginsOptions;\n let allowModify = options && typeof options.allowModify !== 'undefined'\n ? options.allowModify\n : this.allowModify;\n const context = new TransactContext({\n abiCache,\n appName: this.appName,\n chain: this.chain,\n client: this.client,\n createRequest: (a) => this.createRequest(a, abiCache),\n fetch: this.fetch,\n permissionLevel: this.permissionLevel,\n storage: this.storage,\n transactPlugins,\n transactPluginsOptions,\n ui: this.ui,\n });\n if (context.ui) {\n await context.ui.onTransact();\n for (const translation of transactPlugins.map((transactPlugin) => this.getPluginTranslations(transactPlugin))) {\n context.ui.addTranslations(translation);\n }\n }\n let request = await this.createRequest(args, abiCache);\n const result = {\n chain: this.chain,\n request,\n resolved: undefined,\n returns: [],\n revisions: new TransactRevisions(request),\n signatures: [],\n signer: this.permissionLevel,\n transaction: undefined,\n };\n for (const hook of context.hooks.beforeSign) {\n const response = await hook(request.clone(), context);\n if (response) {\n result.revisions.addRevision(response, String(hook), allowModify);\n if (allowModify) {\n request = await this.updateRequest(request, response.request, abiCache);\n }\n if (response.signatures) {\n result.signatures = [...result.signatures, ...response.signatures];\n allowModify = false;\n }\n }\n }\n result.request = request;\n result.resolved = await context.resolve(request, expireSeconds);\n result.transaction = result.resolved.resolvedTransaction;\n if (context.ui) {\n await context.ui.onSign();\n context.ui.addTranslations(this.getPluginTranslations(this.walletPlugin));\n }\n const walletResponse = await this.walletPlugin.sign(result.resolved, context);\n result.signatures.push(...walletResponse.signatures);\n if (walletResponse.resolved) {\n const { resolved } = walletResponse;\n const requestWasModified = !result.resolved.transaction.equals(resolved.transaction);\n if (requestWasModified) {\n if (allowModify) {\n result.request = resolved.request;\n result.resolved = resolved;\n result.transaction = resolved.resolvedTransaction;\n }\n else {\n throw new Error(`The ${this.walletPlugin.metadata.name} plugin modified the transaction when it was not allowed to.`);\n }\n }\n }\n for (const hook of context.hooks.afterSign)\n await hook(result, context);\n if (context.ui) {\n await context.ui.onSignComplete();\n }\n if (willBroadcast) {\n if (context.ui) {\n await context.ui.onBroadcast();\n }\n const signed = SignedTransaction.from({\n ...result.resolved.transaction,\n signatures: result.signatures,\n });\n result.response = await context.client.v1.chain.send_transaction(signed);\n if (result.response.processed && result.response.processed.action_traces) {\n result.returns = await processReturnValues(result.response, abiCache);\n }\n for (const hook of context.hooks.afterBroadcast)\n await hook(result, context);\n if (context.ui) {\n await context.ui.onBroadcastComplete();\n }\n }\n if (context.ui) {\n await context.ui.onTransactComplete();\n }\n return result;\n }\n catch (error) {\n if (error.response && error.response.json) {\n const { json } = error.response;\n if (json.error && json.error.details) {\n const e = new Error(json.error.details[0].message);\n if (this.ui) {\n await this.ui.onError(e);\n }\n throw e;\n }\n }\n else {\n if (this.ui) {\n await this.ui.onError(error);\n }\n }\n throw new Error(error);\n }\n }\n async signTransaction(transaction) {\n const context = new TransactContext({\n abiCache: this.abiCache,\n chain: this.chain,\n client: this.client,\n createRequest: (args) => this.createRequest(args, this.abiCache),\n fetch: this.fetch,\n permissionLevel: this.permissionLevel,\n });\n const request = await SigningRequest.create({\n transaction,\n chainId: this.chain.id,\n }, context.esrOptions);\n request.setBroadcast(false);\n const resolvedRequest = new ResolvedSigningRequest(request, this.permissionLevel, Transaction.from(transaction), Serializer.objectify(Transaction.from(transaction)), ChainId.from(this.chain.id));\n const walletResponse = await this.walletPlugin.sign(resolvedRequest, context);\n return walletResponse.signatures;\n }\n getPluginTranslations(transactPlugin) {\n if (!transactPlugin.translations) {\n return {};\n }\n const prefixed = {};\n const languages = Object.keys(transactPlugin.translations);\n languages.forEach((lang) => {\n if (transactPlugin.translations) {\n prefixed[lang] = { [transactPlugin.id]: transactPlugin.translations[lang] };\n }\n });\n return prefixed;\n }\n getMergedAbiCache(args, options) {\n const abiCache = options?.abiCache || this.abiCache;\n if (!abiCache['setAbi']) {\n throw new Error('Custom `abiCache` does not support `setAbi` method.');\n }\n this.abis.forEach((def) => abiCache.setAbi(def.account, def.abi));\n if (options?.abis) {\n options.abis.forEach((def) => abiCache.setAbi(def.account, def.abi));\n }\n if (options?.contracts) {\n options.contracts.forEach((c) => abiCache.setAbi(c.account, c.abi));\n }\n if (args.action && args.action['abi']) {\n abiCache.setAbi(args.action.account, args.action['abi'], true);\n }\n if (args.actions) {\n args.actions.forEach((action) => {\n if (action['abi']) {\n abiCache.setAbi(action.account, action['abi'], true);\n }\n });\n }\n if (args.transaction && args.transaction.actions) {\n args.transaction.actions.forEach((action) => {\n if (action['abi']) {\n abiCache.setAbi(action.account, action['abi'], true);\n }\n });\n }\n return abiCache;\n }\n async account() {\n const accountKit = new AccountKit(this.chain, { client: this.client });\n return accountKit.load(this.permissionLevel.actor);\n }\n}\nasync function processReturnValues(response, abiCache) {\n const decoded = [];\n for (const actionTrace of response.processed.action_traces) {\n if (actionTrace.return_value_hex_data) {\n const contract = Name.from(actionTrace.act.account);\n const action = Name.from(actionTrace.act.name);\n const abi = await abiCache.getAbi(contract);\n const returnType = abi.action_results.find((a) => Name.from(a.name).equals(action));\n if (returnType) {\n try {\n const data = Serializer.decode({\n data: actionTrace.return_value_hex_data,\n type: returnType.result_type,\n abi,\n });\n decoded.push({\n contract,\n action,\n hex: actionTrace.return_value_hex_data,\n data,\n returnType,\n });\n }\n catch (error) {\n console.warn(`Error decoding return value for ${contract}::${action}:`, error);\n decoded.push({\n contract,\n action,\n hex: actionTrace.return_value_hex_data,\n data: '',\n returnType,\n });\n }\n }\n else {\n console.warn(`No return type found for ${contract}::${action}`);\n decoded.push({\n contract,\n action,\n hex: actionTrace.return_value_hex_data,\n data: '',\n returnType: {\n name: action,\n result_type: '',\n },\n });\n }\n }\n }\n return decoded;\n}\n\nclass BrowserLocalStorage {\n constructor(keyPrefix = '') {\n this.keyPrefix = keyPrefix;\n }\n async write(key, data) {\n localStorage.setItem(this.storageKey(key), data);\n }\n async read(key) {\n return localStorage.getItem(this.storageKey(key));\n }\n async remove(key) {\n localStorage.removeItem(this.storageKey(key));\n }\n storageKey(key) {\n return `wharf-${this.keyPrefix}-${key}`;\n }\n}\n\nvar WalletPluginMetadata_1;\nlet WalletPluginMetadata = WalletPluginMetadata_1 = class WalletPluginMetadata extends Struct {\n static from(data) {\n return new WalletPluginMetadata_1({\n ...data,\n logo: data.logo ? Logo.from(data.logo) : undefined,\n });\n }\n};\n__decorate([\n Struct.field('string', { optional: true })\n], WalletPluginMetadata.prototype, \"name\", void 0);\n__decorate([\n Struct.field('string', { optional: true })\n], WalletPluginMetadata.prototype, \"description\", void 0);\n__decorate([\n Struct.field(Logo, { optional: true })\n], WalletPluginMetadata.prototype, \"logo\", void 0);\n__decorate([\n Struct.field('string', { optional: true })\n], WalletPluginMetadata.prototype, \"homepage\", void 0);\n__decorate([\n Struct.field('string', { optional: true })\n], WalletPluginMetadata.prototype, \"download\", void 0);\n__decorate([\n Struct.field('string', { optional: true })\n], WalletPluginMetadata.prototype, \"publicKey\", void 0);\nWalletPluginMetadata = WalletPluginMetadata_1 = __decorate([\n Struct.type('wallet_plugin_metadata')\n], WalletPluginMetadata);\nclass AbstractWalletPlugin {\n constructor() {\n this._data = {};\n this.config = {\n requiresChainSelect: true,\n requiresPermissionSelect: false,\n requiresPermissionEntry: false,\n };\n this.metadata = new WalletPluginMetadata({});\n }\n get data() {\n return this._data;\n }\n set data(data) {\n this._data = data;\n }\n serialize() {\n return {\n id: this.id,\n data: this.data,\n };\n }\n}\n\nvar AccountCreationPluginMetadata_1;\nlet AccountCreationPluginMetadata = AccountCreationPluginMetadata_1 = class AccountCreationPluginMetadata extends Struct {\n static from(data) {\n return new AccountCreationPluginMetadata_1({\n ...data,\n logo: data.logo ? Logo.from(data.logo) : undefined,\n });\n }\n};\n__decorate([\n Struct.field('string')\n], AccountCreationPluginMetadata.prototype, \"name\", void 0);\n__decorate([\n Struct.field('string', { optional: true })\n], AccountCreationPluginMetadata.prototype, \"description\", void 0);\n__decorate([\n Struct.field(Logo, { optional: true })\n], AccountCreationPluginMetadata.prototype, \"logo\", void 0);\n__decorate([\n Struct.field('string', { optional: true })\n], AccountCreationPluginMetadata.prototype, \"homepage\", void 0);\nAccountCreationPluginMetadata = AccountCreationPluginMetadata_1 = __decorate([\n Struct.type('account_creation_plugin_metadata')\n], AccountCreationPluginMetadata);\nclass CreateAccountContext {\n constructor(options) {\n this.accountCreationPlugins = [];\n this.uiRequirements = {\n requiresChainSelect: true,\n requiresPluginSelect: true,\n };\n this.appName = String(options.appName);\n if (options.chains) {\n this.chains = options.chains;\n }\n if (options.chain) {\n this.chain = options.chain;\n }\n this.fetch = options.fetch;\n this.ui = options.ui;\n if (options.accountCreationPlugins) {\n this.accountCreationPlugins = options.accountCreationPlugins;\n }\n if (options.uiRequirements) {\n this.uiRequirements = options.uiRequirements;\n }\n }\n getClient(chain) {\n return new APIClient({ provider: new FetchProvider(chain.url, { fetch: this.fetch }) });\n }\n}\nclass AbstractAccountCreationPlugin {\n constructor() {\n this.config = {\n requiresChainSelect: true,\n };\n this.metadata = new AccountCreationPluginMetadata({});\n }\n}\n\nclass SessionKit {\n constructor(args, options = {}) {\n this.abis = [];\n this.allowModify = true;\n this.expireSeconds = 120;\n this.transactPluginsOptions = {};\n this.accountCreationPlugins = [];\n this.appName = String(args.appName);\n this.chains = args.chains.map((chain) => ChainDefinition.from(chain));\n this.ui = args.ui;\n this.walletPlugins = args.walletPlugins;\n if (options.fetch) {\n this.fetch = options.fetch;\n }\n else {\n this.fetch = getFetch(options);\n }\n if (options.abis) {\n this.abis = [...options.abis];\n }\n if (options.contracts) {\n this.abis.push(...options.contracts.map((c) => ({ account: c.account, abi: c.abi })));\n }\n if (options.loginPlugins) {\n this.loginPlugins = options.loginPlugins;\n }\n else {\n this.loginPlugins = [new BaseLoginPlugin()];\n }\n if (options.storage) {\n this.storage = options.storage;\n }\n else {\n this.storage = new BrowserLocalStorage();\n }\n if (options.transactPlugins) {\n this.transactPlugins = options.transactPlugins;\n }\n else {\n this.transactPlugins = [new BaseTransactPlugin()];\n }\n if (typeof options.allowModify !== 'undefined') {\n this.allowModify = options.allowModify;\n }\n if (options.expireSeconds) {\n this.expireSeconds = options.expireSeconds;\n }\n if (options.transactPluginsOptions) {\n this.transactPluginsOptions = options.transactPluginsOptions;\n }\n if (options.accountCreationPlugins) {\n this.accountCreationPlugins = options.accountCreationPlugins;\n }\n }\n setEndpoint(id, url) {\n const modifiedChains = [...this.chains];\n const chainId = Checksum256.from(id);\n const chainIndex = this.chains.findIndex((c) => c.id.equals(chainId));\n if (chainIndex < 0) {\n throw new Error('Chain with specified ID not found.');\n }\n modifiedChains[chainIndex].url = url;\n this.chains = modifiedChains;\n }\n getChainDefinition(id, override) {\n const chains = override ? override : this.chains;\n const chainId = Checksum256.from(id);\n const chain = chains.find((c) => c.id.equals(chainId));\n if (!chain) {\n throw new Error(`No chain defined with an ID of: ${chainId}`);\n }\n return chain;\n }\n async createAccount(options) {\n try {\n if (this.accountCreationPlugins.length === 0) {\n throw new Error('No account creation plugins available.');\n }\n let chain = options?.chain;\n let requiresChainSelect = !chain;\n let requiresPluginSelect = !options?.pluginId;\n let accountCreationPlugin;\n if (options?.pluginId) {\n requiresPluginSelect = false;\n accountCreationPlugin = this.accountCreationPlugins.find((p) => p.id === options.pluginId);\n if (!accountCreationPlugin) {\n throw new Error('Invalid account creation plugin selected.');\n }\n if (accountCreationPlugin?.config.requiresChainSelect !== undefined) {\n requiresChainSelect = accountCreationPlugin?.config.requiresChainSelect;\n }\n if (!accountCreationPlugin.config.requiresChainSelect &&\n accountCreationPlugin.config.supportedChains &&\n accountCreationPlugin.config.supportedChains.length === 1) {\n chain = accountCreationPlugin.config.supportedChains[0];\n }\n }\n let chains = this.chains;\n if (accountCreationPlugin && accountCreationPlugin?.config.supportedChains?.length) {\n chains = chains.filter((availableChain) => {\n return accountCreationPlugin?.config.supportedChains?.find((c) => {\n return c.id.equals(availableChain.id);\n });\n });\n }\n const context = new CreateAccountContext({\n accountCreationPlugins: this.accountCreationPlugins,\n appName: this.appName,\n chain,\n chains,\n fetch: this.fetch,\n ui: this.ui,\n uiRequirements: {\n requiresChainSelect,\n requiresPluginSelect,\n },\n });\n if (requiresPluginSelect || requiresChainSelect) {\n const response = await context.ui.onAccountCreate(context);\n const pluginId = options?.pluginId || response.pluginId;\n if (!pluginId) {\n throw new Error('No account creation plugin selected.');\n }\n accountCreationPlugin = context.accountCreationPlugins.find((p) => p.id === pluginId);\n if (!accountCreationPlugin) {\n throw new Error('No account creation plugin selected.');\n }\n if (!accountCreationPlugin.config.requiresChainSelect &&\n accountCreationPlugin.config.supportedChains &&\n accountCreationPlugin.config.supportedChains.length === 1) {\n context.chain = accountCreationPlugin.config.supportedChains[0];\n }\n if (response.chain) {\n context.chain = this.getChainDefinition(response.chain, context.chains);\n }\n if (accountCreationPlugin.config.requiresChainSelect && !context.chain) {\n throw new Error(`Account creation plugin (${pluginId}) requires chain selection, and no chain was selected.`);\n }\n }\n if (!accountCreationPlugin) {\n throw new Error('No account creation plugin selected');\n }\n const accountCreationData = await accountCreationPlugin.create(context);\n await context.ui.onAccountCreateComplete();\n return accountCreationData;\n }\n catch (error) {\n await this.ui.onError(error);\n throw new Error(error);\n }\n }\n async login(options) {\n try {\n const context = new LoginContext({\n appName: this.appName,\n arbitrary: options?.arbitrary || {},\n chain: undefined,\n chains: options && options?.chains\n ? options.chains.map((c) => this.getChainDefinition(c))\n : this.chains,\n fetch: this.fetch,\n loginPlugins: this.loginPlugins,\n ui: this.ui,\n walletPlugins: this.walletPlugins.map((plugin) => {\n return {\n config: plugin.config,\n metadata: WalletPluginMetadata.from(plugin.metadata),\n retrievePublicKey: plugin.retrievePublicKey?.bind(plugin),\n };\n }),\n });\n await context.ui.onLogin();\n if (options && options.chain) {\n if (options.chain instanceof ChainDefinition) {\n context.chain = options.chain;\n }\n else {\n context.chain = this.getChainDefinition(options.chain, context.chains);\n }\n context.uiRequirements.requiresChainSelect = false;\n }\n else if (context.chains.length === 1) {\n context.chain = context.chains[0];\n context.uiRequirements.requiresChainSelect = false;\n }\n let walletPlugin = undefined;\n if (this.walletPlugins.length === 1) {\n walletPlugin = this.walletPlugins[0];\n context.uiRequirements.requiresWalletSelect = false;\n }\n else if (options?.walletPlugin) {\n const index = this.walletPlugins.findIndex((p) => p.id === options.walletPlugin);\n if (index >= 0) {\n walletPlugin = this.walletPlugins[index];\n context.walletPluginIndex = index;\n context.uiRequirements.requiresWalletSelect = false;\n }\n }\n if (walletPlugin && walletPlugin.config.requiresPermissionSelect === false) {\n context.uiRequirements.requiresPermissionSelect = false;\n }\n if (options?.permissionLevel) {\n context.permissionLevel = PermissionLevel.from(options.permissionLevel);\n context.uiRequirements.requiresPermissionSelect = false;\n }\n if (context.uiRequirements.requiresChainSelect ||\n context.uiRequirements.requiresPermissionSelect ||\n context.uiRequirements.requiresPermissionEntry ||\n context.uiRequirements.requiresWalletSelect) {\n const uiLoginResponse = await context.ui.login(context);\n if (uiLoginResponse.walletPluginIndex !== undefined) {\n walletPlugin = this.walletPlugins[uiLoginResponse.walletPluginIndex];\n }\n if (!walletPlugin) {\n throw new Error('UserInterface did not return a valid WalletPlugin index.');\n }\n if (uiLoginResponse.chainId) {\n if (!context.chains.some((c) => c.id.equals(uiLoginResponse.chainId))) {\n throw new Error('UserInterface did not return a chain ID matching the subset of chains.');\n }\n context.chain = this.getChainDefinition(uiLoginResponse.chainId, context.chains);\n }\n if (uiLoginResponse.permissionLevel) {\n context.permissionLevel = PermissionLevel.from(uiLoginResponse.permissionLevel);\n }\n }\n if (!walletPlugin) {\n throw new Error('No WalletPlugin available to perform the login.');\n }\n const { supportedChains } = walletPlugin.config;\n if (context.chain &&\n supportedChains &&\n supportedChains.length &&\n !supportedChains.includes(String(context.chain.id))) {\n throw new Error(`The wallet plugin '${walletPlugin.metadata.name}' does not support the chain '${context.chain.id}'`);\n }\n for (const hook of context.hooks.beforeLogin)\n await hook(context);\n const response = await walletPlugin.login(context);\n const session = new Session({\n chain: this.getChainDefinition(response.chain),\n permissionLevel: response.permissionLevel,\n walletPlugin,\n }, this.getSessionOptions(options));\n for (const hook of context.hooks.afterLogin)\n await hook(context);\n this.persistSession(session, options?.setAsDefault);\n await context.ui.onLoginComplete();\n return {\n context,\n response,\n session,\n };\n }\n catch (error) {\n await this.ui.onError(error);\n throw new Error(error);\n }\n }\n logoutParams(session, walletPlugin) {\n if (session instanceof Session) {\n return {\n session,\n appName: this.appName,\n };\n }\n else {\n return {\n session: new Session({\n chain: this.getChainDefinition(session.chain),\n permissionLevel: PermissionLevel.from({\n actor: session.actor,\n permission: session.permission,\n }),\n walletPlugin,\n }),\n appName: this.appName,\n };\n }\n }\n async logout(session) {\n if (!this.storage) {\n throw new Error('An instance of Storage must be provided to utilize the logout method.');\n }\n await this.storage.remove('session');\n if (session) {\n const walletPlugin = this.walletPlugins.find((wPlugin) => session?.walletPlugin.id === wPlugin.id);\n if (walletPlugin?.logout) {\n await walletPlugin.logout(this.logoutParams(session, walletPlugin));\n }\n const sessions = await this.getSessions();\n if (sessions) {\n let serialized = session;\n if (session instanceof Session) {\n serialized = session.serialize();\n }\n const other = sessions.filter((s) => {\n return (!Checksum256.from(s.chain).equals(Checksum256.from(String(serialized.chain))) ||\n !Name.from(s.actor).equals(Name.from(serialized.actor)) ||\n !Name.from(s.permission).equals(Name.from(serialized.permission)));\n });\n await this.storage.write('sessions', JSON.stringify(other));\n }\n }\n else {\n const sessions = await this.getSessions();\n await this.storage.remove('sessions');\n if (sessions) {\n Promise.all(sessions.map((s) => {\n const walletPlugin = this.walletPlugins.find((wPlugin) => s.walletPlugin.id === wPlugin.id);\n if (walletPlugin?.logout) {\n return walletPlugin.logout(this.logoutParams(s, walletPlugin));\n }\n else {\n return Promise.resolve();\n }\n }));\n }\n }\n }\n async restore(args, options) {\n if (!args) {\n const data = await this.storage.read('session');\n if (data) {\n args = JSON.parse(data);\n }\n else {\n return;\n }\n }\n if (!args) {\n throw new Error('Either a RestoreArgs object or a Storage instance must be provided.');\n }\n const chainId = Checksum256.from(args.chain instanceof ChainDefinition ? args.chain.id : args.chain);\n let serializedSession;\n const data = await this.storage.read('sessions');\n if (data) {\n const sessions = JSON.parse(data);\n if (args.actor && args.permission) {\n serializedSession = sessions.find((s) => {\n return (args &&\n chainId.equals(s.chain) &&\n s.actor === args.actor &&\n s.permission === args.permission);\n });\n }\n else {\n serializedSession = sessions.find((s) => {\n return args && chainId.equals(s.chain) && s.default;\n });\n }\n }\n else {\n if (args.actor && args.permission && args.walletPlugin) {\n serializedSession = {\n chain: String(chainId),\n actor: args.actor,\n permission: args.permission,\n walletPlugin: {\n id: args.walletPlugin.id,\n data: args.walletPlugin.data,\n },\n };\n }\n else {\n throw new Error('No sessions found in storage. A wallet plugin must be provided.');\n }\n }\n if (!serializedSession) {\n return;\n }\n const walletPlugin = this.walletPlugins.find((p) => {\n if (!args) {\n return false;\n }\n return p.id === serializedSession.walletPlugin.id;\n });\n if (!walletPlugin) {\n throw new Error(`No WalletPlugin found with the ID of: '${serializedSession.walletPlugin.id}'`);\n }\n if (serializedSession.walletPlugin.data) {\n walletPlugin.data = serializedSession.walletPlugin.data;\n }\n if (args.walletPlugin && args.walletPlugin.data) {\n walletPlugin.data = args.walletPlugin.data;\n }\n const session = new Session({\n chain: this.getChainDefinition(serializedSession.chain),\n permissionLevel: PermissionLevel.from({\n actor: serializedSession.actor,\n permission: serializedSession.permission,\n }),\n walletPlugin,\n }, this.getSessionOptions(options));\n this.persistSession(session, options?.setAsDefault);\n return session;\n }\n async restoreAll() {\n const sessions = [];\n const serializedSessions = await this.getSessions();\n if (serializedSessions) {\n for (const s of serializedSessions) {\n const session = await this.restore(s);\n if (session) {\n sessions.push(session);\n }\n }\n }\n return sessions;\n }\n async persistSession(session, setAsDefault = true) {\n if (!this.storage) {\n return;\n }\n const serialized = session.serialize();\n serialized.default = setAsDefault;\n if (setAsDefault) {\n this.storage.write('session', JSON.stringify(serialized));\n }\n const existing = await this.storage.read('sessions');\n if (existing) {\n const stored = JSON.parse(existing);\n const sessions = stored\n .filter((s) => {\n return (!Checksum256.from(s.chain).equals(Checksum256.from(serialized.chain)) ||\n !Name.from(s.actor).equals(Name.from(serialized.actor)) ||\n !Name.from(s.permission).equals(Name.from(serialized.permission)));\n })\n .map((s) => {\n if (session.chain.id.equals(s.chain)) {\n s.default = false;\n }\n return s;\n });\n const orderedSessions = [...sessions, serialized];\n orderedSessions.sort((a, b) => {\n const chain = String(a.chain).localeCompare(String(b.chain));\n const actor = String(a.actor).localeCompare(String(b.actor));\n const permission = String(a.permission).localeCompare(String(b.permission));\n return chain || actor || permission;\n });\n this.storage.write('sessions', JSON.stringify(orderedSessions));\n }\n else {\n this.storage.write('sessions', JSON.stringify([serialized]));\n }\n }\n async getSessions() {\n if (!this.storage) {\n throw new Error('No storage instance is available to retrieve sessions from.');\n }\n const data = await this.storage.read('sessions');\n if (!data)\n return [];\n try {\n const parsed = JSON.parse(data);\n const filtered = parsed.filter((s) => this.walletPlugins.some((p) => {\n return p.id === s.walletPlugin.id;\n }));\n return filtered;\n }\n catch (e) {\n throw new Error(`Failed to parse sessions from storage (${e})`);\n }\n }\n getSessionOptions(options) {\n return {\n abis: this.abis,\n allowModify: this.allowModify,\n appName: this.appName,\n expireSeconds: this.expireSeconds,\n fetch: this.fetch,\n storage: this.storage,\n transactPlugins: options?.transactPlugins || this.transactPlugins,\n transactPluginsOptions: options?.transactPluginsOptions || this.transactPluginsOptions,\n ui: this.ui,\n };\n }\n}\n\nclass AbstractUserInterface {\n translate(key, options, namespace) {\n throw new Error('The `translate` method must be implemented in this UserInterface. Called with: ' +\n JSON.stringify({\n key,\n options,\n namespace,\n }));\n }\n getTranslate(namespace) {\n return (key, options) => this.translate(key, options, namespace);\n }\n addTranslations(translations) {\n throw new Error('The `addTranslations` method must be implemented in this UserInterface. Called with: ' +\n JSON.stringify(translations));\n }\n}\n\nexport { AbstractAccountCreationPlugin, AbstractLoginPlugin, AbstractTransactPlugin, AbstractUserInterface, AbstractWalletPlugin, AccountCreationPluginMetadata, BaseLoginPlugin, BaseTransactPlugin, BrowserLocalStorage, CreateAccountContext, LoginContext, LoginHookTypes, Session, SessionKit, TransactContext, TransactHookTypes, TransactRevisions, WalletPluginMetadata, appendAction, SessionKit as default, getFetch, prependAction };\n//# sourceMappingURL=session.m.js.map\n","/**\n * EOSIO Signing Request v3.2.0\n * https://github.com/greymass/eosio-signing-request\n *\n * @license\n * Copyright © 2021 Greymass Inc.\n * \n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the “Software”), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR\n * INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, OPERATION OR\n * MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { TypeAlias, Variant, Checksum256, isInstanceOf, UInt8, Struct, PermissionLevel, Action, Transaction, Name, TimePointSec, Signature, Serializer, Authority, Bytes, ABIEncoder, ABIDecoder, ABI, UInt16, UInt32 } from '@wharfkit/antelope';\nimport { __decorate } from 'tslib';\n\n/**\n * Base64u - URL-Safe Base64 variant no padding.\n * Based on https://gist.github.com/jonleighton/958841\n */\nconst baseCharset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nconst lookup = new Uint8Array(256);\nfor (let i = 0; i < 62; i++) {\n lookup[baseCharset.charCodeAt(i)] = i;\n}\n// support both urlsafe and standard base64\nlookup[43] = lookup[45] = 62;\nlookup[47] = lookup[95] = 63;\nfunction encode(data, urlSafe = true) {\n const byteLength = data.byteLength;\n const byteRemainder = byteLength % 3;\n const mainLength = byteLength - byteRemainder;\n const charset = baseCharset + (urlSafe ? '-_' : '+/');\n const parts = [];\n let a;\n let b;\n let c;\n let d;\n let chunk;\n // Main loop deals with bytes in chunks of 3\n for (let i = 0; i < mainLength; i += 3) {\n // Combine the three bytes into a single integer\n chunk = (data[i] << 16) | (data[i + 1] << 8) | data[i + 2];\n // Use bitmasks to extract 6-bit segments from the triplet\n a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18\n b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12\n c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6\n d = chunk & 63; // 63 = 2^6 - 1\n // Convert the raw binary segments to the appropriate ASCII encoding\n parts.push(charset[a] + charset[b] + charset[c] + charset[d]);\n }\n // Deal with the remaining bytes\n if (byteRemainder === 1) {\n chunk = data[mainLength];\n a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2\n // Set the 4 least significant bits to zero\n b = (chunk & 3) << 4; // 3 = 2^2 - 1\n parts.push(charset[a] + charset[b]);\n }\n else if (byteRemainder === 2) {\n chunk = (data[mainLength] << 8) | data[mainLength + 1];\n a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10\n b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4\n // Set the 2 least significant bits to zero\n c = (chunk & 15) << 2; // 15 = 2^4 - 1\n parts.push(charset[a] + charset[b] + charset[c]);\n }\n return parts.join('');\n}\nfunction decode(input) {\n const byteLength = input.length * 0.75;\n const data = new Uint8Array(byteLength);\n let a;\n let b;\n let c;\n let d;\n let p = 0;\n for (let i = 0; i < input.length; i += 4) {\n a = lookup[input.charCodeAt(i)];\n b = lookup[input.charCodeAt(i + 1)];\n c = lookup[input.charCodeAt(i + 2)];\n d = lookup[input.charCodeAt(i + 3)];\n data[p++] = (a << 2) | (b >> 4);\n data[p++] = ((b & 15) << 4) | (c >> 2);\n data[p++] = ((c & 3) << 6) | (d & 63);\n }\n return data;\n}\n\nvar base64u = /*#__PURE__*/Object.freeze({\n __proto__: null,\n encode: encode,\n decode: decode\n});\n\n/** Chain ID aliases. */\nvar ChainName;\n(function (ChainName) {\n ChainName[ChainName[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n ChainName[ChainName[\"EOS\"] = 1] = \"EOS\";\n ChainName[ChainName[\"TELOS\"] = 2] = \"TELOS\";\n ChainName[ChainName[\"JUNGLE\"] = 3] = \"JUNGLE\";\n ChainName[ChainName[\"KYLIN\"] = 4] = \"KYLIN\";\n ChainName[ChainName[\"WORBLI\"] = 5] = \"WORBLI\";\n ChainName[ChainName[\"BOS\"] = 6] = \"BOS\";\n ChainName[ChainName[\"MEETONE\"] = 7] = \"MEETONE\";\n ChainName[ChainName[\"INSIGHTS\"] = 8] = \"INSIGHTS\";\n ChainName[ChainName[\"BEOS\"] = 9] = \"BEOS\";\n ChainName[ChainName[\"WAX\"] = 10] = \"WAX\";\n ChainName[ChainName[\"PROTON\"] = 11] = \"PROTON\";\n ChainName[ChainName[\"FIO\"] = 12] = \"FIO\";\n})(ChainName || (ChainName = {}));\nlet ChainId = class ChainId extends Checksum256 {\n static from(value) {\n if (isInstanceOf(value, this)) {\n return value;\n }\n if (typeof value === 'number') {\n value = ChainIdLookup.get(value);\n if (!value) {\n throw new Error('Unknown chain id alias');\n }\n }\n return super.from(value);\n }\n get chainVariant() {\n const name = this.chainName;\n if (name !== ChainName.UNKNOWN) {\n return ChainIdVariant.from(['chain_alias', name]);\n }\n return ChainIdVariant.from(this);\n }\n get chainName() {\n const cid = this.hexString;\n for (const [n, id] of ChainIdLookup) {\n if (id === cid) {\n return n;\n }\n }\n return ChainName.UNKNOWN;\n }\n};\nChainId = __decorate([\n TypeAlias('chain_id')\n], ChainId);\nlet ChainAlias = class ChainAlias extends UInt8 {\n};\nChainAlias = __decorate([\n TypeAlias('chain_alias')\n], ChainAlias);\nlet ChainIdVariant = class ChainIdVariant extends Variant {\n get chainId() {\n if (isInstanceOf(this.value, ChainId)) {\n return this.value;\n }\n return ChainId.from(Number(this.value.value));\n }\n};\nChainIdVariant = __decorate([\n Variant.type('variant_id', [ChainAlias, ChainId])\n], ChainIdVariant);\nconst ChainIdLookup = new Map([\n [ChainName.EOS, 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906'],\n [ChainName.TELOS, '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11'],\n [ChainName.JUNGLE, 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473'],\n [ChainName.KYLIN, '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191'],\n [ChainName.WORBLI, '73647cde120091e0a4b85bced2f3cfdb3041e266cbbe95cee59b73235a1b3b6f'],\n [ChainName.BOS, 'd5a3d18fbb3c084e3b1f3fa98c21014b5f3db536cc15d08f9f6479517c6a3d86'],\n [ChainName.MEETONE, 'cfe6486a83bad4962f232d48003b1824ab5665c36778141034d75e57b956e422'],\n [ChainName.INSIGHTS, 'b042025541e25a472bffde2d62edd457b7e70cee943412b1ea0f044f88591664'],\n [ChainName.BEOS, 'b912d19a6abd2b1b05611ae5be473355d64d95aeff0c09bedc8c166cd6468fe4'],\n [ChainName.WAX, '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4'],\n [ChainName.PROTON, '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0'],\n [ChainName.FIO, '21dcae42c0182200e93f954a074011f9048a7624c6fe81d3c9541a614a88bd1c'],\n]);\n\n/** SigningRequest ABI and typedefs. */\nvar RequestFlags_1;\nlet AccountName = class AccountName extends Name {\n};\nAccountName = __decorate([\n TypeAlias('account_name')\n], AccountName);\nlet PermissionName = class PermissionName extends Name {\n};\nPermissionName = __decorate([\n TypeAlias('permission_name')\n], PermissionName);\nlet IdentityV2 = class IdentityV2 extends Struct {\n};\n__decorate([\n Struct.field(PermissionLevel, { optional: true })\n], IdentityV2.prototype, \"permission\", void 0);\nIdentityV2 = __decorate([\n Struct.type('identity')\n], IdentityV2);\nlet IdentityV3 = class IdentityV3 extends Struct {\n};\n__decorate([\n Struct.field('name')\n], IdentityV3.prototype, \"scope\", void 0);\n__decorate([\n Struct.field(PermissionLevel, { optional: true })\n], IdentityV3.prototype, \"permission\", void 0);\nIdentityV3 = __decorate([\n Struct.type('identity')\n], IdentityV3);\nlet RequestVariantV2 = class RequestVariantV2 extends Variant {\n};\nRequestVariantV2 = __decorate([\n Variant.type('variant_req', [Action, { type: Action, array: true }, Transaction, IdentityV2])\n], RequestVariantV2);\nlet RequestVariantV3 = class RequestVariantV3 extends Variant {\n};\nRequestVariantV3 = __decorate([\n Variant.type('variant_req', [Action, { type: Action, array: true }, Transaction, IdentityV3])\n], RequestVariantV3);\nlet RequestFlags = RequestFlags_1 = class RequestFlags extends UInt8 {\n get broadcast() {\n return (Number(this) & RequestFlags_1.broadcast) !== 0;\n }\n set broadcast(enabled) {\n this.setFlag(RequestFlags_1.broadcast, enabled);\n }\n get background() {\n return (Number(this) & RequestFlags_1.background) !== 0;\n }\n set background(enabled) {\n this.setFlag(RequestFlags_1.background, enabled);\n }\n setFlag(flag, enabled) {\n if (enabled) {\n // TODO: implement bitwise operators in core, bn.js setbit does not work\n this.value = UInt8.from(Number(this) | flag).value;\n }\n else {\n this.value = UInt8.from(Number(this) & ~flag).value;\n }\n }\n};\nRequestFlags.broadcast = 1 << 0;\nRequestFlags.background = 1 << 1;\nRequestFlags = RequestFlags_1 = __decorate([\n TypeAlias('request_flags')\n], RequestFlags);\nlet InfoPair = class InfoPair extends Struct {\n};\n__decorate([\n Struct.field('string')\n], InfoPair.prototype, \"key\", void 0);\n__decorate([\n Struct.field('bytes')\n], InfoPair.prototype, \"value\", void 0);\nInfoPair = __decorate([\n Struct.type('info_pair')\n], InfoPair);\nlet RequestDataV2 = class RequestDataV2 extends Struct {\n};\n__decorate([\n Struct.field(ChainIdVariant)\n], RequestDataV2.prototype, \"chain_id\", void 0);\n__decorate([\n Struct.field(RequestVariantV2)\n], RequestDataV2.prototype, \"req\", void 0);\n__decorate([\n Struct.field(RequestFlags)\n], RequestDataV2.prototype, \"flags\", void 0);\n__decorate([\n Struct.field('string')\n], RequestDataV2.prototype, \"callback\", void 0);\n__decorate([\n Struct.field(InfoPair, { array: true })\n], RequestDataV2.prototype, \"info\", void 0);\nRequestDataV2 = __decorate([\n Struct.type('signing_request')\n], RequestDataV2);\nlet RequestDataV3 = class RequestDataV3 extends Struct {\n};\n__decorate([\n Struct.field(ChainIdVariant)\n], RequestDataV3.prototype, \"chain_id\", void 0);\n__decorate([\n Struct.field(RequestVariantV3)\n], RequestDataV3.prototype, \"req\", void 0);\n__decorate([\n Struct.field(RequestFlags)\n], RequestDataV3.prototype, \"flags\", void 0);\n__decorate([\n Struct.field('string')\n], RequestDataV3.prototype, \"callback\", void 0);\n__decorate([\n Struct.field(InfoPair, { array: true })\n], RequestDataV3.prototype, \"info\", void 0);\nRequestDataV3 = __decorate([\n Struct.type('signing_request')\n], RequestDataV3);\nlet RequestSignature = class RequestSignature extends Struct {\n};\n__decorate([\n Struct.field('name')\n], RequestSignature.prototype, \"signer\", void 0);\n__decorate([\n Struct.field('signature')\n], RequestSignature.prototype, \"signature\", void 0);\nRequestSignature = __decorate([\n Struct.type('request_signature')\n], RequestSignature);\n\nvar IdentityProof_1;\nlet IdentityProof = IdentityProof_1 = class IdentityProof extends Struct {\n static from(value) {\n if (isInstanceOf(value, IdentityProof_1)) {\n return value;\n }\n else if (typeof value === 'string') {\n return IdentityProof_1.fromString(value);\n }\n else {\n return super.from(value);\n }\n }\n /**\n * Create a new instance from an EOSIO authorization header string.\n * \"EOSIO \"\n */\n static fromString(string) {\n const parts = string.split(' ');\n if (parts.length !== 2 || parts[0] !== 'EOSIO') {\n throw new Error('Invalid IdentityProof string');\n }\n const data = decode(parts[1]);\n return Serializer.decode({ data, type: IdentityProof_1 });\n }\n /** Create a new instance from a callback payload. */\n static fromPayload(payload, options = {}) {\n const request = SigningRequest.from(payload.req, options);\n if (!(request.version >= 3 && request.isIdentity())) {\n throw new Error('Not an identity request');\n }\n return this.from({\n chainId: payload.cid || request.getChainId(),\n scope: request.getIdentityScope(),\n expiration: payload.ex,\n signer: { actor: payload.sa, permission: payload.sp },\n signature: payload.sig,\n });\n }\n /**\n * Transaction this proof resolves to.\n * @internal\n */\n get transaction() {\n const action = Action.from({\n account: '',\n name: 'identity',\n authorization: [this.signer],\n data: IdentityV3.from({ scope: this.scope, permission: this.signer }),\n });\n return Transaction.from({\n ref_block_num: 0,\n ref_block_prefix: 0,\n expiration: this.expiration,\n actions: [action],\n });\n }\n /**\n * Recover the public key that signed this proof.\n */\n recover() {\n return this.signature.recoverDigest(this.transaction.signingDigest(this.chainId));\n }\n /**\n * Verify that given authority signed this proof.\n * @param auth The accounts signing authority.\n * @param currentTime Time to verify expiry against, if unset will use system time.\n */\n verify(auth, currentTime) {\n const now = TimePointSec.from(currentTime || new Date()).toMilliseconds();\n return (now < this.expiration.toMilliseconds() &&\n Authority.from(auth).hasPermission(this.recover()));\n }\n /**\n * Encode the proof to an `EOSIO` auth header string.\n */\n toString() {\n const data = Serializer.encode({ object: this });\n return `EOSIO ${encode(data.array, false)}`;\n }\n};\n__decorate([\n Struct.field(ChainId)\n], IdentityProof.prototype, \"chainId\", void 0);\n__decorate([\n Struct.field(Name)\n], IdentityProof.prototype, \"scope\", void 0);\n__decorate([\n Struct.field(TimePointSec)\n], IdentityProof.prototype, \"expiration\", void 0);\n__decorate([\n Struct.field(PermissionLevel)\n], IdentityProof.prototype, \"signer\", void 0);\n__decorate([\n Struct.field(Signature)\n], IdentityProof.prototype, \"signature\", void 0);\nIdentityProof = IdentityProof_1 = __decorate([\n Struct.type('identity_proof')\n], IdentityProof);\n\n/**\n * EOSIO Signing Request (ESR).\n */\n/** Current supported protocol version, backwards compatible with version 2. */\nconst ProtocolVersion = 3;\n/**\n * The placeholder name: `............1` aka `uint64(1)`.\n * If used in action data will be resolved to current signer.\n * If used in as an authorization permission will be resolved to\n * the signers permission level.\n *\n * Example action:\n * ```\n * { account: \"eosio.token\",\n * name: \"transfer\",\n * authorization: [{actor: \"............1\", permission: \"............1\"}],\n * data: {\n * from: \"............1\",\n * to: \"bar\",\n * quantity: \"42.0000 EOS\",\n * memo: \"Don't panic\" }}\n * ```\n * When signed by `foo@active` would resolve to:\n * ```\n * { account: \"eosio.token\",\n * name: \"transfer\",\n * authorization: [{actor: \"foo\", permission: \"active\"}],\n * data: {\n * from: \"foo\",\n * to: \"bar\",\n * quantity: \"42.0000 EOS\",\n * memo: \"Don't panic\" }}\n * ```\n */\nconst PlaceholderName = Name.from('............1'); // aka uint64(1)\n/** Placeholder that will resolve to signer permission name. */\nconst PlaceholderPermission = Name.from('............2'); // aka uint64(2)\nconst PlaceholderAuth = PermissionLevel.from({\n actor: PlaceholderName,\n permission: PlaceholderPermission,\n});\nclass SigningRequest {\n /**\n * Create a new signing request.\n * Normally not used directly, see the `create` and `from` class methods.\n */\n constructor(version, data, zlib, abiProvider, signature) {\n if (data.flags.broadcast && data.req.variantName === 'identity') {\n throw new Error('Invalid request (identity request cannot be broadcast)');\n }\n this.version = version;\n this.data = data;\n this.zlib = zlib;\n this.abiProvider = abiProvider;\n this.signature = signature;\n }\n /** Return the identity ABI for given version. */\n static identityAbi(version) {\n const abi = Serializer.synthesize(this.identityType(version));\n abi.actions = [{ name: 'identity', type: 'identity', ricardian_contract: '' }];\n return abi;\n }\n /** Return the ABISerializableType identity type for given version. */\n static identityType(version) {\n return version === 2 ? IdentityV2 : IdentityV3;\n }\n /** Return the ABISerializableType storage type for given version. */\n static storageType(version) {\n return version === 2 ? RequestDataV2 : RequestDataV3;\n }\n /** Create a new signing request. */\n static async create(args, options = {}) {\n let actions;\n if (args.action) {\n actions = [args.action];\n }\n else if (args.actions) {\n actions = args.actions;\n }\n else if (args.transaction) {\n actions = args.transaction.actions || [];\n }\n else {\n actions = [];\n }\n const requiredAbis = actions\n .filter((action) => !Bytes.isBytes(action.data) &&\n action.data.constructor.abiName === undefined)\n .map((action) => Name.from(action.account));\n const abis = {};\n if (requiredAbis.length > 0) {\n const provider = options.abiProvider;\n if (!provider) {\n throw new Error('Missing abi provider');\n }\n const accountAbis = await Promise.all(requiredAbis.map((account) => provider.getAbi(account)));\n for (const [idx, abi] of accountAbis.entries()) {\n abis[requiredAbis[idx].toString()] = abi;\n }\n }\n return this.createSync(args, options, abis);\n }\n /**\n * Synchronously create a new signing request.\n * @throws If an un-encoded action with no abi def is encountered.\n */\n static createSync(args, options = {}, abis = {}) {\n let version = 2;\n const data = {};\n const encode = (action) => encodeAction(action, abis);\n // multi-chain requests requires version 3\n if (args.chainId === null) {\n version = 3;\n }\n // set the request data\n if (args.identity !== undefined) {\n if (args.identity.scope) {\n version = 3;\n }\n data.req = ['identity', this.identityType(version).from(args.identity)];\n }\n else if (args.action && !args.actions && !args.transaction) {\n data.req = ['action', encode(args.action)];\n }\n else if (args.actions && !args.action && !args.transaction) {\n if (args.actions.length === 1) {\n data.req = ['action', encode(args.actions[0])];\n }\n else {\n data.req = ['action[]', args.actions.map(encode)];\n }\n }\n else if (args.transaction && !args.action && !args.actions) {\n const tx = args.transaction;\n // set default values if missing\n if (tx.expiration === undefined) {\n tx.expiration = '1970-01-01T00:00:00.000';\n }\n if (tx.ref_block_num === undefined) {\n tx.ref_block_num = 0;\n }\n if (tx.ref_block_prefix === undefined) {\n tx.ref_block_prefix = 0;\n }\n if (tx.context_free_actions === undefined) {\n tx.context_free_actions = [];\n }\n if (tx.transaction_extensions === undefined) {\n tx.transaction_extensions = [];\n }\n if (tx.delay_sec === undefined) {\n tx.delay_sec = 0;\n }\n if (tx.max_cpu_usage_ms === undefined) {\n tx.max_cpu_usage_ms = 0;\n }\n if (tx.max_net_usage_words === undefined) {\n tx.max_net_usage_words = 0;\n }\n if (tx.actions === undefined) {\n tx.actions = [];\n }\n if (tx.context_free_actions === undefined) {\n tx.context_free_actions = [];\n }\n // encode actions if needed\n tx.actions = tx.actions.map(encode);\n data.req = ['transaction', tx];\n }\n else {\n throw new TypeError('Invalid arguments: Must have exactly one of action, actions or transaction');\n }\n // set the chain id\n if (args.chainId === null) {\n data.chain_id = ChainIdVariant.from(['chain_alias', 0]);\n }\n else {\n data.chain_id = ChainId.from(args.chainId || ChainName.EOS).chainVariant;\n }\n // request flags and callback\n const flags = RequestFlags.from(0);\n let callback = '';\n flags.broadcast = args.broadcast !== undefined ? args.broadcast : data.req[0] !== 'identity';\n if (typeof args.callback === 'string') {\n callback = args.callback;\n }\n else if (typeof args.callback === 'object') {\n callback = args.callback.url;\n flags.background = args.callback.background || false;\n }\n data.flags = flags;\n data.callback = callback;\n // info pairs\n data.info = [];\n if (typeof args.info === 'object') {\n for (const key in args.info) {\n const isOwn = Object.prototype.hasOwnProperty.call(args.info, key);\n if (isOwn) {\n let value = args.info[key];\n if (typeof value === 'string') {\n value = Bytes.from(value, 'utf8');\n }\n else if (!(value instanceof Bytes)) {\n value = Serializer.encode({ object: value });\n }\n data.info.push({ key, value });\n }\n }\n }\n if (args.chainIds && args.chainId === null) {\n const ids = args.chainIds.map((id) => ChainId.from(id).chainVariant);\n data.info.push({\n key: 'chain_ids',\n value: Serializer.encode({ object: ids, type: { type: ChainIdVariant, array: true } }),\n });\n }\n const req = new SigningRequest(version, this.storageType(version).from(data), options.zlib, options.abiProvider);\n // sign the request if given a signature provider\n if (options.signatureProvider) {\n req.sign(options.signatureProvider);\n }\n return req;\n }\n /** Creates an identity request. */\n static identity(args, options = {}) {\n let permission = {\n actor: args.account || PlaceholderName,\n permission: args.permission || PlaceholderPermission,\n };\n if (permission.actor === PlaceholderName &&\n permission.permission === PlaceholderPermission) {\n permission = undefined;\n }\n return this.createSync({\n ...args,\n identity: {\n permission,\n scope: args.scope,\n },\n broadcast: false,\n }, options);\n }\n /**\n * Create a request from a chain id and serialized transaction.\n * @param chainId The chain id where the transaction is valid.\n * @param serializedTransaction The serialized transaction.\n * @param options Creation options.\n */\n static fromTransaction(chainId, serializedTransaction, options = {}) {\n const id = ChainId.from(chainId);\n serializedTransaction = Bytes.from(serializedTransaction);\n const encoder = new ABIEncoder();\n encoder.writeByte(2); // header\n encoder.writeArray(Serializer.encode({ object: id.chainVariant }).array);\n encoder.writeByte(2); // transaction variant\n encoder.writeArray(Bytes.from(serializedTransaction).array);\n encoder.writeByte(RequestFlags.broadcast);\n encoder.writeByte(0); // callback\n encoder.writeByte(0); // info\n return SigningRequest.fromData(encoder.getData(), options);\n }\n /** Creates a signing request from encoded `esr:` uri string. */\n static from(uri, options = {}) {\n if (typeof uri !== 'string') {\n throw new Error('Invalid request uri');\n }\n const [, path] = uri.split(':');\n const data = decode(path.startsWith('//') ? path.slice(2) : path);\n return SigningRequest.fromData(data, options);\n }\n static fromData(data, options = {}) {\n data = Bytes.from(data);\n const header = data.array[0];\n const version = header & ~(1 << 7);\n if (version !== 2 && version !== 3) {\n throw new Error('Unsupported protocol version');\n }\n let payload = data.droppingFirst(1);\n if ((header & (1 << 7)) !== 0) {\n if (!options.zlib) {\n throw new Error('Compressed URI needs zlib');\n }\n payload = Bytes.from(options.zlib.inflateRaw(payload.array));\n }\n const decoder = new ABIDecoder(payload.array);\n const req = Serializer.decode({ data: decoder, type: this.storageType(version) });\n let sig;\n if (decoder.canRead()) {\n sig = Serializer.decode({ data: decoder, type: RequestSignature });\n }\n return new SigningRequest(version, req, options.zlib, options.abiProvider, sig);\n }\n /**\n * Sign the request, mutating.\n * @param signatureProvider The signature provider that provides a signature for the signer.\n */\n sign(signatureProvider) {\n const message = this.getSignatureDigest();\n this.signature = RequestSignature.from(signatureProvider.sign(message));\n }\n /**\n * Get the signature digest for this request.\n */\n getSignatureDigest() {\n // protocol version + utf8 \"request\"\n const prefix = [this.version, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74];\n return Checksum256.hash(Bytes.from(prefix).appending(this.getData()));\n }\n /**\n * Set the signature data for this request, mutating.\n * @param signer Account name of signer.\n * @param signature The signature string.\n */\n setSignature(signer, signature) {\n this.signature = RequestSignature.from({ signer, signature });\n }\n /**\n * Set the request callback, mutating.\n * @param url Where the callback should be sent.\n * @param background Whether the callback should be sent in the background.\n */\n setCallback(url, background) {\n this.data.callback = url;\n this.data.flags.background = background;\n }\n /**\n * Set broadcast flag.\n * @param broadcast Whether the transaction should be broadcast by receiver.\n */\n setBroadcast(broadcast) {\n this.data.flags.broadcast = broadcast;\n }\n /**\n * Encode this request into an `esr:` uri.\n * @argument compress Whether to compress the request data using zlib,\n * defaults to true if omitted and zlib is present;\n * otherwise false.\n * @argument slashes Whether add slashes after the protocol scheme, i.e. `esr://`.\n * Defaults to true.\n * @returns An esr uri string.\n */\n encode(compress, slashes, scheme = 'esr:') {\n const shouldCompress = compress !== undefined ? compress : this.zlib !== undefined;\n if (shouldCompress && this.zlib === undefined) {\n throw new Error('Need zlib to compress');\n }\n let header = this.version;\n const data = this.getData();\n const sigData = this.getSignatureData();\n let array = new Uint8Array(data.byteLength + sigData.byteLength);\n array.set(data, 0);\n array.set(sigData, data.byteLength);\n if (shouldCompress) {\n const deflated = this.zlib.deflateRaw(array);\n if (array.byteLength > deflated.byteLength) {\n header |= 1 << 7;\n array = deflated;\n }\n }\n const out = new Uint8Array(1 + array.byteLength);\n out[0] = header;\n out.set(array, 1);\n if (slashes !== false) {\n scheme += '//';\n }\n return scheme + encode(out);\n }\n /** Get the request data without header or signature. */\n getData() {\n return Serializer.encode({ object: this.data }).array;\n }\n /** Get signature data, returns an empty array if request is not signed. */\n getSignatureData() {\n if (!this.signature) {\n return new Uint8Array(0);\n }\n return Serializer.encode({ object: this.signature }).array;\n }\n /** ABI definitions required to resolve request. */\n getRequiredAbis() {\n return this.getRawActions()\n .filter((action) => !isIdentity(action))\n .map((action) => action.account)\n .filter((value, index, self) => self.indexOf(value) === index);\n }\n /** Whether TaPoS values are required to resolve request. */\n requiresTapos() {\n const tx = this.getRawTransaction();\n return !this.isIdentity() && !hasTapos(tx);\n }\n /** Resolve required ABI definitions. */\n async fetchAbis(abiProvider) {\n const required = this.getRequiredAbis();\n if (required.length > 0) {\n const provider = abiProvider || this.abiProvider;\n if (!provider) {\n throw new Error('Missing ABI provider');\n }\n const abis = new Map();\n await Promise.all(required.map(async (account) => {\n abis.set(account.toString(), ABI.from(await provider.getAbi(account)));\n }));\n return abis;\n }\n else {\n return new Map();\n }\n }\n /**\n * Decode raw actions actions to object representations.\n * @param abis ABI defenitions required to decode all actions.\n * @param signer Placeholders in actions will be resolved to signer if set.\n */\n resolveActions(abis, signer) {\n return this.getRawActions().map((rawAction) => {\n let abi;\n if (isIdentity(rawAction)) {\n abi = this.constructor.identityAbi(this.version);\n }\n else {\n const rawAbi = abis.get(rawAction.account.toString());\n if (!rawAbi) {\n throw new Error(`Missing ABI definition for ${rawAction.account}`);\n }\n abi = ABI.from(rawAbi);\n }\n const type = abi.getActionType(rawAction.name);\n if (!type) {\n throw new Error(`Missing type for action ${rawAction.account}:${rawAction.name} in ABI`);\n }\n let data = rawAction.decodeData(abi);\n let authorization = rawAction.authorization;\n if (signer) {\n const signerPerm = PermissionLevel.from(signer);\n const resolve = (value) => {\n if (value instanceof Name) {\n if (value.equals(PlaceholderName)) {\n return signerPerm.actor;\n }\n else if (value.equals(PlaceholderPermission)) {\n return signerPerm.permission;\n }\n else {\n return value;\n }\n }\n else if (Array.isArray(value)) {\n return value.map(resolve);\n }\n else if (typeof value === 'object' && value !== null) {\n for (const key of Object.keys(value)) {\n value[key] = resolve(value[key]);\n }\n return value;\n }\n else {\n return value;\n }\n };\n data = resolve(data);\n authorization = authorization.map((auth) => {\n let { actor, permission } = auth;\n if (actor.equals(PlaceholderName)) {\n actor = signerPerm.actor;\n }\n if (permission.equals(PlaceholderPermission)) {\n permission = signerPerm.permission;\n }\n // backwards compatibility, actor placeholder will also resolve to permission when used in auth\n if (permission.equals(PlaceholderName)) {\n permission = signerPerm.permission;\n }\n return PermissionLevel.from({ actor, permission });\n });\n }\n return {\n ...rawAction,\n authorization,\n data,\n };\n });\n }\n resolveTransaction(abis, signer, ctx = {}) {\n const tx = this.getRawTransaction();\n if (!this.isIdentity() && !hasTapos(tx)) {\n if (ctx.expiration !== undefined &&\n ctx.ref_block_num !== undefined &&\n ctx.ref_block_prefix !== undefined) {\n tx.expiration = TimePointSec.from(ctx.expiration);\n tx.ref_block_num = UInt16.from(ctx.ref_block_num, 'truncate');\n tx.ref_block_prefix = UInt32.from(ctx.ref_block_prefix);\n }\n else if (ctx.block_num !== undefined &&\n ctx.ref_block_prefix !== undefined &&\n ctx.timestamp !== undefined) {\n tx.expiration = expirationTime(ctx.timestamp, ctx.expire_seconds);\n tx.ref_block_num = UInt16.from(ctx.block_num, 'truncate');\n tx.ref_block_prefix = UInt32.from(ctx.ref_block_prefix);\n }\n else {\n throw new Error('Invalid transaction context, need either a reference block or explicit TaPoS values');\n }\n }\n else if (this.isIdentity() && this.version > 2) {\n // From ESR version 3 all identity requests have expiration\n tx.expiration = ctx.expiration\n ? TimePointSec.from(ctx.expiration)\n : expirationTime(ctx.timestamp, ctx.expire_seconds);\n }\n const actions = this.resolveActions(abis, signer);\n // TODO: resolve context free actions\n const context_free_actions = tx.context_free_actions;\n return { ...tx, context_free_actions, actions };\n }\n resolve(abis, signer, ctx = {}) {\n const tx = this.resolveTransaction(abis, signer, ctx);\n const actions = tx.actions.map((action) => {\n let abi;\n if (isIdentity(action)) {\n abi = this.constructor.identityAbi(this.version);\n }\n else {\n abi = abis.get(action.account.toString());\n }\n if (!abi) {\n throw new Error(`Missing ABI definition for ${action.account}`);\n }\n const type = abi.getActionType(action.name);\n const data = Serializer.encode({ object: action.data, type, abi });\n return Action.from({ ...action, data });\n });\n const transaction = Transaction.from({ ...tx, actions });\n let chainId;\n if (this.isMultiChain()) {\n if (!ctx.chainId) {\n throw new Error('Missing chosen chain ID for multi-chain request');\n }\n chainId = ChainId.from(ctx.chainId);\n const ids = this.getChainIds();\n if (ids && !ids.some((id) => chainId.equals(id))) {\n throw new Error('Trying to resolve for chain ID not defined in request');\n }\n }\n else {\n chainId = this.getChainId();\n }\n return new ResolvedSigningRequest(this, PermissionLevel.from(signer), transaction, tx, chainId);\n }\n /**\n * Get the id of the chain where this request is valid.\n * @returns The 32-byte chain id as hex encoded string.\n */\n getChainId() {\n return this.data.chain_id.chainId;\n }\n /**\n * Chain IDs this request is valid for, only valid for multi chain requests. Value of `null` when `isMultiChain` is true denotes any chain.\n */\n getChainIds() {\n if (!this.isMultiChain()) {\n return null;\n }\n const ids = this.getInfoKey('chain_ids', { type: ChainIdVariant, array: true });\n if (ids) {\n return ids.map((id) => id.chainId);\n }\n return null;\n }\n /**\n * Set chain IDs this request is valid for, only considered for multi chain requests.\n */\n setChainIds(ids) {\n const value = ids.map((id) => ChainId.from(id).chainVariant);\n this.setInfoKey('chain_ids', value, { type: ChainIdVariant, array: true });\n }\n /**\n * True if chainId is set to chain alias `0` which indicates that the request is valid for any chain.\n */\n isMultiChain() {\n return (this.data.chain_id.variantIdx === 0 &&\n this.data.chain_id.value.equals(ChainName.UNKNOWN));\n }\n /** Return the actions in this request with action data encoded. */\n getRawActions() {\n const req = this.data.req;\n switch (req.variantName) {\n case 'action':\n return [req.value];\n case 'action[]':\n return req.value;\n case 'identity': {\n if (this.version === 2) {\n const id = req.value;\n let data = '0101000000000000000200000000000000'; // placeholder permission\n let authorization = [PlaceholderAuth];\n if (id.permission) {\n data = Serializer.encode({ object: id });\n authorization = [id.permission];\n }\n const action = Action.from({\n account: '',\n name: 'identity',\n authorization,\n data,\n });\n // TODO: The way payloads are encoded is including the ABI, which isn't what we want\n // This needs to be resolved in wharfkit/antelope, and then the delete call here should be removed\n delete action.abi;\n return [action];\n }\n else {\n // eslint-disable-next-line prefer-const\n let { scope, permission } = req.value;\n if (!permission) {\n permission = PlaceholderAuth;\n }\n const data = Serializer.encode({ object: { scope, permission }, type: IdentityV3 });\n const action = Action.from({\n account: '',\n name: 'identity',\n authorization: [permission],\n data,\n });\n // TODO: The way payloads are encoded is including the ABI, which isn't what we want\n // This needs to be resolved in wharfkit/antelope, and then the delete call here should be removed\n delete action.abi;\n return [action];\n }\n }\n case 'transaction':\n return req.value.actions;\n default:\n throw new Error('Invalid signing request data');\n }\n }\n /** Unresolved transaction. */\n getRawTransaction() {\n const req = this.data.req;\n switch (req.variantName) {\n case 'transaction':\n return Transaction.from({ ...req.value });\n case 'action':\n case 'action[]':\n case 'identity':\n return Transaction.from({\n actions: this.getRawActions(),\n context_free_actions: [],\n transaction_extensions: [],\n expiration: '1970-01-01T00:00:00.000',\n ref_block_num: 0,\n ref_block_prefix: 0,\n max_cpu_usage_ms: 0,\n max_net_usage_words: 0,\n delay_sec: 0,\n });\n default:\n throw new Error('Invalid signing request data');\n }\n }\n /** Whether the request is an identity request. */\n isIdentity() {\n return this.data.req.variantName === 'identity';\n }\n /** Whether the request should be broadcast by signer. */\n shouldBroadcast() {\n if (this.isIdentity()) {\n return false;\n }\n return this.data.flags.broadcast;\n }\n /**\n * Present if the request is an identity request and requests a specific account.\n * @note This returns `nil` unless a specific identity has been requested,\n * use `isIdentity` to check id requests.\n */\n getIdentity() {\n if (!this.isIdentity()) {\n return null;\n }\n const id = this.data.req.value;\n if (id.permission && !id.permission.actor.equals(PlaceholderName)) {\n return id.permission.actor;\n }\n return null;\n }\n /**\n * Present if the request is an identity request and requests a specific permission.\n * @note This returns `nil` unless a specific permission has been requested,\n * use `isIdentity` to check id requests.\n */\n getIdentityPermission() {\n if (!this.isIdentity()) {\n return null;\n }\n const id = this.data.req.value;\n if (id.permission && !id.permission.permission.equals(PlaceholderPermission)) {\n return id.permission.permission;\n }\n return null;\n }\n /**\n * Present if the request is an identity request and requests a specific permission.\n * @note This returns `nil` unless a specific permission has been requested,\n * use `isIdentity` to check id requests.\n */\n getIdentityScope() {\n if (!this.isIdentity() || this.version <= 2) {\n return null;\n }\n const id = this.data.req.value;\n return id.scope;\n }\n /** Get raw info dict */\n getRawInfo() {\n const rv = {};\n for (const { key, value } of this.data.info) {\n rv[key] = value;\n }\n return rv;\n }\n getRawInfoKey(key) {\n const pair = this.data.info.find((pair) => pair.key === key);\n if (pair) {\n return pair.value;\n }\n }\n setRawInfoKey(key, value) {\n let pair = this.data.info.find((pair) => pair.key === key);\n if (!pair) {\n pair = InfoPair.from({ key, value });\n this.data.info.push(pair);\n }\n else {\n pair.value = Bytes.from(value);\n }\n }\n /** Set a metadata key. */\n setInfoKey(key, object, type) {\n let data;\n if (typeof object === 'string' && !type) {\n // match old behavior where strings encode to raw utf8 as opposed to\n // eosio-abi encoded strings (varuint32 length prefix + utf8 bytes)\n data = Bytes.from(object, 'utf8');\n }\n else {\n data = Serializer.encode({ object, type });\n }\n this.setRawInfoKey(key, data);\n }\n getInfoKey(key, type) {\n const data = this.getRawInfoKey(key);\n if (data) {\n if (type) {\n return Serializer.decode({ data, type });\n }\n else {\n // assume utf8 string if no type is given\n return data.utf8String;\n }\n }\n }\n /** Return a deep copy of this request. */\n clone() {\n let signature;\n if (this.signature) {\n signature = RequestSignature.from(JSON.parse(JSON.stringify(this.signature)));\n }\n const RequestData = this.constructor.storageType(this.version);\n const data = RequestData.from(JSON.parse(JSON.stringify(this.data)));\n return new SigningRequest(this.version, data, this.zlib, this.abiProvider, signature);\n }\n // Convenience methods.\n toString() {\n return this.encode();\n }\n toJSON() {\n return this.encode();\n }\n}\nclass ResolvedSigningRequest {\n constructor(request, signer, transaction, resolvedTransaction, chainId) {\n this.request = request;\n this.signer = signer;\n this.transaction = transaction;\n this.resolvedTransaction = resolvedTransaction;\n this.chainId = chainId;\n }\n /** Recreate a resolved request from a callback payload. */\n static async fromPayload(payload, options = {}) {\n const request = SigningRequest.from(payload.req, options);\n const abis = await request.fetchAbis();\n return request.resolve(abis, { actor: payload.sa, permission: payload.sp }, {\n ref_block_num: payload.rbn,\n ref_block_prefix: payload.rid,\n expiration: payload.ex,\n chainId: payload.cid || request.getChainId(),\n });\n }\n get serializedTransaction() {\n return Serializer.encode({ object: this.transaction }).array;\n }\n get signingDigest() {\n return this.transaction.signingDigest(this.chainId);\n }\n get signingData() {\n return this.transaction.signingData(this.chainId);\n }\n getCallback(signatures, blockNum) {\n const { callback, flags } = this.request.data;\n if (!callback || callback.length === 0) {\n return null;\n }\n if (!signatures || signatures.length === 0) {\n throw new Error('Must have at least one signature to resolve callback');\n }\n const sigs = signatures.map((sig) => Signature.from(sig));\n const payload = {\n sig: String(sigs[0]),\n tx: String(this.transaction.id),\n rbn: String(this.transaction.ref_block_num),\n rid: String(this.transaction.ref_block_prefix),\n ex: String(this.transaction.expiration),\n req: this.request.encode(),\n sa: String(this.signer.actor),\n sp: String(this.signer.permission),\n cid: String(this.chainId),\n };\n for (const [n, sig] of sigs.slice(1).entries()) {\n payload[`sig${n}`] = String(sig);\n }\n if (blockNum) {\n payload.bn = String(UInt32.from(blockNum));\n }\n const url = callback.replace(/({{([a-z0-9]+)}})/g, (_1, _2, m) => {\n return payload[m] || '';\n });\n return {\n background: flags.background,\n payload,\n url,\n };\n }\n getIdentityProof(signature) {\n if (!this.request.isIdentity()) {\n throw new Error('Not a identity request');\n }\n return IdentityProof.from({\n chainId: this.chainId,\n scope: this.request.getIdentityScope(),\n expiration: this.transaction.expiration,\n signer: this.signer,\n signature,\n });\n }\n}\nfunction encodeAction(action, abis) {\n if (Bytes.isBytes(action.data) || action.data.constructor.abiName !== undefined) {\n return Action.from(action);\n }\n const abi = abis[String(Name.from(action.account))];\n if (!abi) {\n throw new Error(`Missing ABI for ${action.account}`);\n }\n const data = Action.from(action, abi);\n // TODO: The way payloads are encoded is including the ABI, which isn't what we want\n // This needs to be resolved in wharfkit/antelope, and then the delete call here should be removed\n delete data.abi;\n return data;\n}\nfunction isIdentity(action) {\n const account = Name.from(action.account);\n const name = Name.from(action.name);\n return account.rawValue.equals(0) && name.equals('identity');\n}\nfunction hasTapos(tx) {\n return !(tx.expiration.equals(0) && tx.ref_block_num.equals(0) && tx.ref_block_prefix.equals(0));\n}\nfunction expirationTime(timestamp, expireSeconds = 60) {\n const ts = TimePointSec.from(timestamp || new Date());\n const exp = UInt32.from(expireSeconds);\n return TimePointSec.fromInteger(ts.value.adding(exp));\n}\n\nexport { AccountName, base64u as Base64u, ChainAlias, ChainId, ChainIdVariant, ChainName, IdentityProof, IdentityV2, IdentityV3, InfoPair, PermissionName, PlaceholderAuth, PlaceholderName, PlaceholderPermission, ProtocolVersion, RequestDataV2, RequestDataV3, RequestFlags, RequestSignature, RequestVariantV2, RequestVariantV3, ResolvedSigningRequest, SigningRequest };\n//# sourceMappingURL=signing-request.m.js.map\n","/**\n * @greymass/buoy v1.0.4\n * https://github.com/greymass/buoy-client\n *\n * @license\n * Copyright (c) 2021 FFF00 Agents AB & Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport EventEmitter from 'eventemitter3';\n\n/** Emitted when a network error occurs, can safely be ignored. */\nclass SocketError extends Error {\n event;\n code = 'E_NETWORK';\n constructor(event) {\n super('Socket error');\n this.event = event;\n }\n}\n/** Emitted when a message fails to parse or read, non-recoverable. */\nclass MessageError extends Error {\n reason;\n underlyingError;\n code = 'E_MESSAGE';\n constructor(reason, underlyingError) {\n super(reason);\n this.reason = reason;\n this.underlyingError = underlyingError;\n }\n}\n\nconst globalBuoy$1 = globalThis || window;\nvar ListenerEncoding;\n(function (ListenerEncoding) {\n ListenerEncoding[\"binary\"] = \"binary\";\n ListenerEncoding[\"text\"] = \"text\";\n ListenerEncoding[\"json\"] = \"json\";\n})(ListenerEncoding || (ListenerEncoding = {}));\nclass Listener extends EventEmitter {\n url;\n active = false;\n socket;\n timer;\n reconnectTimer;\n encoding;\n WebSocket;\n constructor(options) {\n super();\n if (!options.service) {\n throw new Error('Options must include a service url');\n }\n if (!options.channel) {\n throw new Error('Options must include a channel name');\n }\n const baseUrl = options.service.replace(/^http/, 'ws').replace(/\\/$/, '');\n this.url = `${baseUrl}/${options.channel}?v=2`;\n this.encoding = options.encoding || ListenerEncoding.text;\n this.WebSocket = options.WebSocket || globalBuoy$1.WebSocket;\n if (options.autoConnect !== false) {\n this.connect();\n }\n }\n connect() {\n if (this.active)\n return;\n this.active = true;\n let retries = 0;\n let pingTimer;\n const connect = () => {\n const socket = new this.WebSocket(this.url);\n socket.onmessage = (event) => {\n if (typeof Blob !== 'undefined' && event.data instanceof Blob) {\n const reader = new FileReader();\n reader.onload = () => {\n this.handleMessage(new Uint8Array(reader.result));\n };\n reader.onerror = () => {\n this.emit('error', new MessageError('Could not read message'));\n };\n reader.readAsArrayBuffer(event.data);\n }\n else if (typeof event.data === 'string') {\n this.handleMessage(new TextEncoder().encode(event.data));\n }\n else if (typeof globalBuoy$1.Buffer !== 'undefined' &&\n (event.data instanceof globalBuoy$1.Buffer || Array.isArray(event.data))) {\n let buffer = event.data;\n if (!globalBuoy$1.Buffer.isBuffer(buffer)) {\n buffer = globalBuoy$1.Buffer.concat(buffer);\n }\n this.handleMessage(new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength));\n }\n else if (event.data instanceof Uint8Array) {\n this.handleMessage(event.data);\n }\n else if (event.data instanceof ArrayBuffer) {\n this.handleMessage(new Uint8Array(event.data));\n }\n else {\n this.emit('error', new MessageError('Unhandled event data type'));\n }\n };\n socket.onerror = (event) => {\n if (this.socket === socket && this.active) {\n this.emit('error', new SocketError(event));\n }\n };\n socket.onopen = () => {\n retries = 0;\n this.emit('connect');\n };\n socket.onclose = () => {\n if (this.active) {\n clearTimeout(this.timer);\n this.timer = setTimeout(connect, backoff(retries++));\n }\n this.socket = undefined;\n clearTimeout(pingTimer);\n if (this.reconnectTimer) {\n clearInterval(this.reconnectTimer);\n }\n this.emit('disconnect');\n };\n // Reconnect every 10 mins to keep the connection alive\n this.setupReconnectionTimer();\n // fix problem where node.js does not react to the socket going down\n // this terminates the connection if we don't get a heartbeat in 15s (buoy-nodejs sends every 10s)\n const nodeSocket = socket;\n if (typeof nodeSocket.on === 'function' && typeof nodeSocket.terminate === 'function') {\n nodeSocket.on('ping', () => {\n clearTimeout(pingTimer);\n pingTimer = setTimeout(() => {\n nodeSocket.terminate();\n }, 15 * 1000);\n });\n }\n this.socket = socket;\n };\n connect();\n }\n disconnect() {\n this.active = false;\n if (this.socket &&\n (this.socket.readyState === this.WebSocket.OPEN ||\n this.socket.readyState === this.WebSocket.CONNECTING)) {\n this.socket.close(1000);\n }\n }\n get isConnected() {\n return this.active && this.socket?.readyState == this.WebSocket.OPEN;\n }\n handleMessage(bytes) {\n if (bytes[0] === 0x42 && bytes[1] === 0x42 && bytes[2] === 0x01) {\n this.socket?.send(new Uint8Array([0x42, 0x42, 0x02, bytes[3]]));\n bytes = bytes.subarray(4);\n }\n let message;\n switch (this.encoding) {\n case ListenerEncoding.binary:\n message = bytes;\n break;\n case ListenerEncoding.text:\n message = new TextDecoder().decode(bytes);\n break;\n case ListenerEncoding.json: {\n try {\n message = JSON.parse(new TextDecoder().decode(bytes));\n }\n catch (error) {\n this.emit('error', new MessageError('Unable to decode JSON', error));\n return;\n }\n }\n }\n this.emit('message', message);\n }\n setupReconnectionTimer() {\n this.reconnectTimer = setInterval(() => {\n this.socket?.close(1000);\n }, 10 * 60 * 1000);\n }\n}\n/**\n * Exponential backoff function that caps off at 5s after 10 tries.\n * @internal\n */\nfunction backoff(tries) {\n return Math.min(Math.pow(tries * 7, 2), 5 * 1000);\n}\n\n/**\n * Receive a single message from a buoy channel.\n * @note Instantiate a [[Listener]] if you want to receive multiple messages over the same channel.\n */\nfunction receive(options, ctx) {\n return new Promise((resolve, reject) => {\n const listener = new Listener({ ...options, autoConnect: true });\n let timer;\n let lastError;\n const done = (error, message) => {\n clearTimeout(timer);\n if (error) {\n reject(error);\n }\n else {\n resolve(message);\n }\n listener.disconnect();\n };\n if (ctx) {\n ctx.cancel = () => {\n done(new MessageError('Cancelled', lastError));\n };\n }\n if (options.timeout) {\n timer = setTimeout(() => {\n done(new MessageError('Timed out', lastError));\n }, options.timeout);\n }\n listener.on('error', (error) => {\n if (!(error instanceof SocketError)) {\n done(error);\n }\n else {\n lastError = error;\n }\n });\n listener.once('message', (message) => {\n done(undefined, message);\n });\n });\n}\n\nconst globalBuoy = globalThis || window;\n/** Result of a [[send]] call. */\nvar SendResult;\n(function (SendResult) {\n /** Message was sent but not yet delivered. */\n SendResult[\"buffered\"] = \"buffered\";\n /** Message was delivered to at least 1 listener on the channel. */\n SendResult[\"delivered\"] = \"delivered\";\n})(SendResult || (SendResult = {}));\n/**\n * Sends a message to the channel.\n * @returns a promise that resolves to a [[SendResult]].\n * @throws if the message can't be delivered if [[SendOptions.requireDelivery]] is set.\n */\nasync function send(message, options) {\n const fetch = options.fetch || globalBuoy.fetch;\n const baseUrl = options.service.replace(/^ws/, 'http').replace(/\\/$/, '');\n const url = `${baseUrl}/${options.channel}`;\n const headers = {};\n if (options.requireDelivery) {\n if (!options.timeout) {\n throw new Error('requireDelivery can only be used with timeout');\n }\n headers['X-Buoy-Wait'] = `${Math.ceil(options.timeout / 1000)}`;\n }\n else if (options.timeout) {\n headers['X-Buoy-Soft-Wait'] = `${Math.ceil(options.timeout / 1000)}`;\n }\n let body;\n if (typeof message === 'string' || message instanceof Uint8Array) {\n body = message;\n }\n else {\n body = JSON.stringify(message);\n }\n const response = await fetch(url, { method: 'POST', body, headers });\n if (Math.floor(response.status / 100) !== 2) {\n if (response.status === 408) {\n throw new Error('Unable to deliver message');\n }\n else if (response.status === 410) {\n throw new Error('Request cancelled');\n }\n else {\n throw new Error(`Unexpected status code ${response.status}`);\n }\n }\n return (response.headers.get('X-Buoy-Delivery') || SendResult.buffered);\n}\n\nexport { Listener, ListenerEncoding, MessageError, SendResult, SocketError, receive, send };\n//# sourceMappingURL=buoy-client.m.js.map\n","/**\n * @wharfkit/protocol-esr v1.3.2\n * https://github.com/wharfkit/protocol-esr\n *\n * @license\n * Copyright (c) 2023 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { Struct, PrivateKey, ChainId, SigningRequest, UInt64, Checksum512, Serializer, Bytes, Checksum256, Signature } from '@wharfkit/session';\nimport { receive } from '@greymass/buoy';\nimport { AES_CBC } from '@greymass/miniaes';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nlet SealedMessage = class SealedMessage extends Struct {\n};\n__decorate([\n Struct.field('public_key')\n], SealedMessage.prototype, \"from\", void 0);\n__decorate([\n Struct.field('uint64')\n], SealedMessage.prototype, \"nonce\", void 0);\n__decorate([\n Struct.field('bytes')\n], SealedMessage.prototype, \"ciphertext\", void 0);\n__decorate([\n Struct.field('uint32')\n], SealedMessage.prototype, \"checksum\", void 0);\nSealedMessage = __decorate([\n Struct.type('sealed_message')\n], SealedMessage);\nlet LinkCreate = class LinkCreate extends Struct {\n};\n__decorate([\n Struct.field('name')\n], LinkCreate.prototype, \"session_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], LinkCreate.prototype, \"request_key\", void 0);\n__decorate([\n Struct.field('string', { extension: true })\n], LinkCreate.prototype, \"user_agent\", void 0);\nLinkCreate = __decorate([\n Struct.type('link_create')\n], LinkCreate);\nlet LinkInfo = class LinkInfo extends Struct {\n};\n__decorate([\n Struct.field('time_point_sec')\n], LinkInfo.prototype, \"expiration\", void 0);\nLinkInfo = __decorate([\n Struct.type('link_info')\n], LinkInfo);\n\nlet BuoyMessage = class BuoyMessage extends Struct {\n};\n__decorate([\n Struct.field('public_key')\n], BuoyMessage.prototype, \"from\", void 0);\n__decorate([\n Struct.field('uint64')\n], BuoyMessage.prototype, \"nonce\", void 0);\n__decorate([\n Struct.field('bytes')\n], BuoyMessage.prototype, \"ciphertext\", void 0);\n__decorate([\n Struct.field('uint32')\n], BuoyMessage.prototype, \"checksum\", void 0);\nBuoyMessage = __decorate([\n Struct.type('buoy_message')\n], BuoyMessage);\nlet BuoySession = class BuoySession extends Struct {\n};\n__decorate([\n Struct.field('name')\n], BuoySession.prototype, \"session_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], BuoySession.prototype, \"request_key\", void 0);\n__decorate([\n Struct.field('string', { extension: true })\n], BuoySession.prototype, \"user_agent\", void 0);\nBuoySession = __decorate([\n Struct.type('buoy_session')\n], BuoySession);\nlet BuoyInfo = class BuoyInfo extends Struct {\n};\n__decorate([\n Struct.field('time_point_sec')\n], BuoyInfo.prototype, \"expiration\", void 0);\nBuoyInfo = __decorate([\n Struct.type('buoy_info')\n], BuoyInfo);\n\nasync function waitForCallback(callbackArgs, buoyWs, t) {\n // Use the buoy-client to create a promise and wait for a response to the identity request\n const callbackResponse = await receive({ ...callbackArgs, WebSocket: buoyWs || WebSocket });\n if (!callbackResponse) {\n // If the promise was rejected, throw an error\n throw new Error(callbackResponse.rejected);\n }\n // If the promise was rejected, throw an error\n if (typeof callbackResponse.rejected === 'string') {\n throw new Error(callbackResponse.rejected);\n }\n // Process the identity request callback payload\n const payload = JSON.parse(callbackResponse);\n if (payload.sa === undefined || payload.sp === undefined || payload.cid === undefined) {\n throw new Error(t('error.cancelled', { default: 'The request was cancelled from Anchor.' }));\n }\n return payload;\n}\n\n/**\n * Return PascalCase version of snake_case string.\n * @internal\n */\nfunction snakeToPascal(name) {\n return name\n .split('_')\n .map((v) => (v[0] ? v[0].toUpperCase() : '') + v.slice(1))\n .join('');\n}\n/**\n * Return camelCase version of snake_case string.\n * @internal\n */\nfunction snakeToCamel(name) {\n const pascal = snakeToPascal(name);\n return (pascal[0] ? pascal[0].toLowerCase() : '') + pascal.slice(1);\n}\n/**\n * Print a warning message to console.\n * @internal\n **/\nfunction logWarn(...args) {\n // eslint-disable-next-line no-console\n console.warn('[anchor-link]', ...args);\n}\n/**\n * Generate a UUID.\n * @internal\n * */\nfunction uuid() {\n let uuid = '', ii;\n const chars = '0123456789abcdef';\n for (ii = 0; ii < 36; ii += 1) {\n switch (ii) {\n case 8:\n case 13:\n case 18:\n case 23:\n uuid += '-';\n break;\n case 14:\n uuid += '4';\n break;\n case 19:\n uuid += chars[(Math.random() * 4) | (0 + 8)];\n break;\n default:\n uuid += chars[(Math.random() * 16) | 0];\n }\n }\n return uuid;\n}\n/** Generate a return url that Anchor will redirect back to w/o reload. */\nfunction generateReturnUrl() {\n if (isChromeiOS()) {\n // google chrome on iOS will always open new tab so we just ask it to open again as a workaround\n return 'googlechrome://';\n }\n if (isFirefoxiOS()) {\n // same for firefox\n return 'firefox:://';\n }\n if (isAppleHandheld() && isBrave()) {\n // and brave ios\n return 'brave://';\n }\n if (isAppleHandheld()) {\n // return url with unique fragment required for iOS safari to trigger the return url\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let rv = window.location.href.split('#')[0] + '#';\n for (let i = 0; i < 8; i++) {\n rv += alphabet.charAt(Math.floor(Math.random() * alphabet.length));\n }\n return rv;\n }\n if (isAndroid() && isFirefox()) {\n return 'android-intent://org.mozilla.firefox';\n }\n if (isAndroid() && isEdge()) {\n return 'android-intent://com.microsoft.emmx';\n }\n if (isAndroid() && isOpera()) {\n return 'android-intent://com.opera.browser';\n }\n if (isAndroid() && isBrave()) {\n return 'android-intent://com.brave.browser';\n }\n if (isAndroid() && isAndroidWebView()) {\n return 'android-intent://webview';\n }\n if (isAndroid() && isChromeMobile()) {\n return 'android-intent://com.android.chrome';\n }\n return window.location.href;\n}\nfunction isAppleHandheld() {\n return /iP(ad|od|hone)/i.test(navigator.userAgent);\n}\nfunction isChromeiOS() {\n return /CriOS/.test(navigator.userAgent);\n}\nfunction isChromeMobile() {\n return /Chrome\\/[.0-9]* Mobile/i.test(navigator.userAgent);\n}\nfunction isFirefox() {\n return /Firefox/i.test(navigator.userAgent);\n}\nfunction isFirefoxiOS() {\n return /FxiOS/.test(navigator.userAgent);\n}\nfunction isOpera() {\n return /OPR/.test(navigator.userAgent) || /Opera/.test(navigator.userAgent);\n}\nfunction isEdge() {\n return /Edg/.test(navigator.userAgent);\n}\nfunction isBrave() {\n return navigator['brave'] && typeof navigator['brave'].isBrave === 'function';\n}\nfunction isAndroid() {\n return /Android/.test(navigator.userAgent);\n}\nfunction isAndroidWebView() {\n return /wv/.test(navigator.userAgent) || /Android.*AppleWebKit/.test(navigator.userAgent);\n}\nfunction isKnownMobile() {\n return (isAppleHandheld() ||\n isChromeiOS() ||\n isChromeMobile() ||\n isFirefoxiOS() ||\n isAndroid() ||\n isAndroidWebView());\n}\n\n/**\n * createIdentityRequest\n *\n * @param context LoginContext\n * @returns\n */\nasync function createIdentityRequest(context, buoyUrl) {\n // Create a new private key and public key to act as the request key\n const privateKey = PrivateKey.generate('K1');\n const requestKey = privateKey.toPublic();\n // Create a new BuoySession struct to be used as the info field\n const createInfo = BuoySession.from({\n session_name: context.appName,\n request_key: requestKey,\n user_agent: getUserAgent(),\n });\n // Determine based on the options whether this is a multichain request\n const isMultiChain = !(context.chain || context.chains.length === 1);\n // Create the callback\n const callbackChannel = prepareCallbackChannel(buoyUrl);\n // Determine the chain id(s) to use\n const chainId = isMultiChain\n ? null\n : context.chain\n ? ChainId.from(context.chain.id.array)\n : null;\n const chainIds = isMultiChain\n ? context.chains.map((c) => ChainId.from(c.id.array))\n : [];\n // Create the request\n const request = SigningRequest.identity({\n callback: prepareCallback(callbackChannel),\n scope: String(context.appName),\n chainId,\n chainIds,\n info: {\n link: createInfo,\n scope: String(context.appName),\n },\n }, context.esrOptions);\n const sameDeviceRequest = request.clone();\n if (typeof window !== 'undefined') {\n const returnUrl = generateReturnUrl();\n sameDeviceRequest.setInfoKey('same_device', true);\n sameDeviceRequest.setInfoKey('return_path', returnUrl);\n }\n // Return the request and the callback data\n return {\n callback: callbackChannel,\n request,\n sameDeviceRequest,\n requestKey,\n privateKey,\n };\n}\n/**\n * prepareTransactionRequest\n *\n * @param resolved ResolvedSigningRequest\n * @returns\n */\nfunction setTransactionCallback(request, buoyUrl) {\n const callback = prepareCallbackChannel(buoyUrl);\n request.setCallback(`${callback.service}/${callback.channel}`, true);\n return callback;\n}\nfunction getUserAgent() {\n const version = '1.3.2';\n let agent = `@wharfkit/protocol-esr ${version}`;\n if (typeof navigator !== 'undefined') {\n agent += ' ' + navigator.userAgent;\n }\n return agent;\n}\nfunction prepareCallback(callbackChannel) {\n const { service, channel } = callbackChannel;\n return {\n url: `${service}/${channel}`,\n background: true,\n };\n}\nfunction prepareCallbackChannel(buoyUrl) {\n return {\n service: buoyUrl,\n channel: uuid(),\n };\n}\nfunction sealMessage(message, privateKey, publicKey, nonce) {\n const secret = privateKey.sharedSecret(publicKey);\n if (!nonce) {\n nonce = UInt64.random();\n }\n const key = Checksum512.hash(Serializer.encode({ object: nonce }).appending(secret.array));\n const cbc = new AES_CBC(key.array.slice(0, 32), key.array.slice(32, 48));\n const ciphertext = Bytes.from(cbc.encrypt(Bytes.from(message, 'utf8').array));\n const checksumView = new DataView(Checksum256.hash(key.array).array.buffer);\n const checksum = checksumView.getUint32(0, true);\n return SealedMessage.from({\n from: privateKey.toPublic(),\n nonce,\n ciphertext,\n checksum,\n });\n}\nasync function verifyLoginCallbackResponse(callbackResponse, context) {\n if (!callbackResponse.sig || callbackResponse.sig.length === 0) {\n throw new Error('Invalid response, must have at least one signature');\n }\n let chain;\n if (!context.chain && context.chains.length > 1) {\n if (!callbackResponse.cid) {\n throw new Error('Multi chain response payload must specify resolved chain id (cid)');\n }\n }\n else {\n chain = context.chain || context.chains[0];\n if (callbackResponse.cid && String(chain.id) !== callbackResponse.cid) {\n throw new Error('Got response for wrong chain id');\n }\n }\n}\nfunction extractSignaturesFromCallback(payload) {\n const signatures = [];\n let index = 0;\n let sig = payload.sig;\n while (sig) {\n signatures.push(String(sig));\n sig = payload[`sig${index}`];\n index++;\n }\n // Deduplicate and make signatures\n return [...new Set(signatures)].map((s) => Signature.from(s));\n}\nfunction isCallback(object) {\n return 'tx' in object;\n}\n\nexport { BuoyInfo, BuoyMessage, BuoySession, LinkCreate, LinkInfo, SealedMessage, createIdentityRequest, extractSignaturesFromCallback, generateReturnUrl, getUserAgent, isAndroid, isAndroidWebView, isAppleHandheld, isBrave, isCallback, isChromeMobile, isChromeiOS, isEdge, isFirefox, isFirefoxiOS, isKnownMobile, isOpera, logWarn, prepareCallback, sealMessage, setTransactionCallback, snakeToCamel, snakeToPascal, uuid, verifyLoginCallbackResponse, waitForCallback };\n//# sourceMappingURL=protocol-esr.m.js.map\n","/**\n * @wharfkit/wallet-plugin-anchor v1.4.0\n * https://github.com/wharfkit/wallet-plugin-anchor\n *\n * @license\n * Copyright (c) 2023 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { send } from '@greymass/buoy';\nimport { AbstractWalletPlugin, WalletPluginMetadata, Logo, PublicKey, ResolvedSigningRequest, Checksum256, PermissionLevel, PrivateKey, Serializer } from '@wharfkit/session';\nimport { createIdentityRequest, isKnownMobile, waitForCallback, verifyLoginCallbackResponse, LinkInfo, setTransactionCallback, generateReturnUrl, isAppleHandheld, sealMessage, isCallback, extractSignaturesFromCallback } from '@wharfkit/protocol-esr';\n\nvar login$1 = {\n\ttitle: \"Connect with Anchor\",\n\tbody: \"Scan with Anchor on your mobile device or click the button below to open on this device.\",\n\tlink: \"Launch Anchor\"\n};\nvar transact$1 = {\n\ttitle: \"Complete using Anchor\",\n\tbody: \"Please open your Anchor Wallet on \\\"{{channelName}}\\\" to review and approve this transaction.\",\n\tlabel: \"Sign manually or with another device\",\n\tlink: \"Trigger Manually\",\n\t\"await\": \"Waiting for response from Anchor\"\n};\nvar error$1 = {\n\texpired: \"The request expired, please try again.\",\n\tinvalid_response: \"Invalid response from Anchor, must contain link_ch, link_key, link_name and cid flags.\",\n\tnot_completed: \"The request was not completed.\",\n\tcancelled: \"The request was cancelled from Anchor.\"\n};\nvar en = {\n\tlogin: login$1,\n\ttransact: transact$1,\n\terror: error$1\n};\n\nvar ko = {\n\t\n};\n\nvar login = {\n\tlink: \"启动Anchor\",\n\tbody: \"在您的设备上使用Anchor扫描或者点击下方按钮打开。\",\n\ttitle: \"连接Anchor\"\n};\nvar error = {\n\tcancelled: \"请求已从Anchor取消。\",\n\tnot_completed: \"此请求未完成。\",\n\tinvalid_response: \"无效的Anchor响应,必须包含link_ch, link_key, link_name和cid标识符。\",\n\texpired: \"请求已过期,请重试。\"\n};\nvar transact = {\n\t\"await\": \"等待Anchor响应\",\n\tlink: \"手动触发\",\n\tlabel: \"手动或使用其他设备签约\",\n\tbody: \"请在\\\"{{channelName}}\\\"上打开您的Anchor钱包以浏览并批准此交易。\",\n\ttitle: \"完成使用Anchor\"\n};\nvar zh_hans = {\n\tlogin: login,\n\terror: error,\n\ttransact: transact\n};\n\nvar zh_hant = {\n\t\n};\n\nvar defaultTranslations = {\n en,\n ko,\n 'zh-Hans': zh_hans,\n 'zh-Hant': zh_hant,\n};\n\nclass WalletPluginAnchor extends AbstractWalletPlugin {\n constructor(options) {\n super();\n /**\n * The unique identifier for the wallet plugin.\n */\n this.id = 'anchor';\n /**\n * The translations for this plugin\n */\n this.translations = defaultTranslations;\n /**\n * The logic configuration for the wallet plugin.\n */\n this.config = {\n // Should the user interface display a chain selector?\n requiresChainSelect: false,\n // Should the user interface display a permission selector?\n requiresPermissionSelect: false,\n };\n /**\n * The metadata for the wallet plugin to be displayed in the user interface.\n */\n this.metadata = WalletPluginMetadata.from({\n name: 'Anchor',\n description: '',\n logo: Logo.from({\n dark: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS40NCwgMCwgMCwgMS40NCwgLTguNTAxOTI1LCAtNTcuMDc0NTcpIiBzdHlsZT0iIj4KICAgIDx0aXRsZT5XaGl0ZTwvdGl0bGU+CiAgICA8Y2lyY2xlIGN4PSI5NC43OTMiIGN5PSIxMjguNTI0IiByPSI4MCIgZmlsbD0iI0ZCRkRGRiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0gOTQuNzk5IDc4LjUyNCBDIDk3LjA5OCA3OC41MjQgOTkuMTk1IDc5LjgzNyAxMDAuMTk4IDgxLjkwNiBMIDEyNC4yMDQgMTMxLjQwNiBMIDEyNC43NDYgMTMyLjUyNCBMIDExMS40MDkgMTMyLjUyNCBMIDEwNy41MyAxMjQuNTI0IEwgODIuMDY5IDEyNC41MjQgTCA3OC4xODkgMTMyLjUyNCBMIDY0Ljg1MyAxMzIuNTI0IEwgNjUuMzk1IDEzMS40MDYgTCA4OS40MDEgODEuOTA2IEMgOTAuNDA0IDc5LjgzNyA5Mi41MDEgNzguNTI0IDk0Ljc5OSA3OC41MjQgWiBNIDg2LjkxOSAxMTQuNTI0IEwgMTAyLjY4IDExNC41MjQgTCA5NC43OTkgOTguMjc0IEwgODYuOTE5IDExNC41MjQgWiBNIDExMi43OTMgMTQ5LjUyNCBMIDEyNC43OTggMTQ5LjUyNCBDIDEyNC40MzcgMTY1LjY3NiAxMTEuMDY3IDE3OC41MjQgOTQuNzk5IDE3OC41MjQgQyA3OC41MzIgMTc4LjUyNCA2NS4xNjIgMTY1LjY3NiA2NC44MDEgMTQ5LjUyNCBMIDc2LjgwNiAxNDkuNTI0IEMgNzcuMDg3IDE1Ni44NzggODEuOTc0IDE2My4xNTUgODguNzkzIDE2NS41MiBMIDg4Ljc5MyAxNDEuNTI0IEMgODguNzkzIDEzOC4yMSA5MS40OCAxMzUuNTI0IDk0Ljc5MyAxMzUuNTI0IEMgOTguMTA3IDEzNS41MjQgMTAwLjc5MyAxMzguMjEgMTAwLjc5MyAxNDEuNTI0IEwgMTAwLjc5MyAxNjUuNTI0IEMgMTA3LjYyIDE2My4xNjIgMTEyLjUxMSAxNTYuODgzIDExMi43OTMgMTQ5LjUyNCBaIiBmaWxsPSIjMzY1MEEyIi8+CiAgPC9nPgo8L3N2Zz4=',\n light: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgdmlld0JveD0iMCAwIDE2MCAxNjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxjaXJjbGUgY3g9IjgwIiBjeT0iODAiIHI9IjgwIiBmaWxsPSIjMzY1MEEyIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNODAuMDA2MyAzMEM4Mi4zMDUxIDMwIDg0LjQwMTkgMzEuMzEzNCA4NS40MDUgMzMuMzgxOEwxMDkuNDExIDgyLjg4MjJMMTA5Ljk1MyA4NEg5Ni42MTYzTDkyLjczNjYgNzZINjcuMjc1OUw2My4zOTYxIDg0SDUwLjA1OTRMNTAuNjAxNyA4Mi44ODE4TDc0LjYwNzcgMzMuMzgxOEM3NS42MTA4IDMxLjMxMzQgNzcuNzA3NSAzMCA4MC4wMDYzIDMwWk03Mi4xMjU2IDY2SDg3Ljg4N0w4MC4wMDYzIDQ5Ljc1MDFMNzIuMTI1NiA2NlpNOTcuOTk5NSAxMDFIMTEwLjAwNUMxMDkuNjQ0IDExNy4xNTIgOTYuMjczOCAxMzAgODAuMDA2MyAxMzBDNjMuNzM4OCAxMzAgNTAuMzY4NiAxMTcuMTUyIDUwLjAwNzggMTAxSDYyLjAxMzFDNjIuMjk0MSAxMDguMzU0IDY3LjE4MDQgMTE0LjYzMSA3NC4wMDAzIDExNi45OTZWOTNDNzQuMDAwMyA4OS42ODYzIDc2LjY4NjYgODcgODAuMDAwMyA4N0M4My4zMTQgODcgODYuMDAwMyA4OS42ODYzIDg2LjAwMDMgOTNWMTE3QzkyLjgyNjUgMTE0LjYzOCA5Ny43MTgzIDEwOC4zNTkgOTcuOTk5NSAxMDFaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K',\n }),\n homepage: 'https://greymass.com/anchor',\n download: 'https://greymass.com/anchor/download',\n });\n this.buoyUrl = options?.buoyUrl || 'https://cb.anchor.link';\n this.buoyWs = options?.buoyWs;\n }\n /**\n * Performs the wallet logic required to login and return the chain and permission level to use.\n *\n * @param options WalletPluginLoginOptions\n * @returns Promise\n */\n login(context) {\n return new Promise((resolve, reject) => {\n this.handleLogin(context)\n .then((response) => {\n resolve(response);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n async handleLogin(context) {\n if (!context.ui) {\n throw new Error('No UI available');\n }\n // Retrieve translation helper from the UI, passing the app ID\n const t = context.ui.getTranslate(this.id);\n // Create the identity request to be presented to the user\n const { callback, request, sameDeviceRequest, requestKey, privateKey } = await createIdentityRequest(context, this.buoyUrl);\n // Elements for the login prompt\n const elements = [\n {\n type: 'link',\n label: t('login.link', { default: 'Launch Anchor' }),\n data: {\n href: sameDeviceRequest.encode(true, false, 'esr:'),\n label: t('login.link', { default: 'Launch Anchor' }),\n variant: 'primary',\n },\n },\n ];\n // If we know this is NOT a mobile device, show the QR code\n if (!isKnownMobile()) {\n elements.unshift({\n type: 'qr',\n data: request.encode(true, false, 'esr:'),\n });\n }\n // Automatically try to open the link\n window.location.href = sameDeviceRequest.encode(true, false, 'esr:');\n // Tell Wharf we need to prompt the user with a QR code and a button\n const promptResponse = context.ui?.prompt({\n title: t('login.title', { default: 'Connect with Anchor' }),\n body: t('login.body', {\n default: 'Scan with Anchor on your mobile device or click the button below to open on this device.',\n }),\n elements,\n });\n promptResponse.catch(() => {\n // eslint-disable-next-line no-console\n console.info('Modal closed');\n });\n // Await a promise race to wait for either the wallet response or the cancel\n const callbackResponse = await waitForCallback(callback, this.buoyWs, t);\n verifyLoginCallbackResponse(callbackResponse, context);\n if (!callbackResponse.cid || !callbackResponse.sa || !callbackResponse.sp) {\n throw new Error('Invalid callback response');\n }\n if (callbackResponse.link_ch && callbackResponse.link_key && callbackResponse.link_name) {\n this.data.requestKey = requestKey;\n this.data.privateKey = privateKey;\n this.data.signerKey =\n callbackResponse.link_key && PublicKey.from(callbackResponse.link_key);\n this.data.channelUrl = callbackResponse.link_ch;\n this.data.channelName = callbackResponse.link_name;\n try {\n if (callbackResponse.link_meta) {\n const metadata = JSON.parse(callbackResponse.link_meta);\n this.data.sameDevice = metadata.sameDevice;\n this.data.launchUrl = metadata.launchUrl;\n this.data.triggerUrl = metadata.triggerUrl;\n }\n }\n catch (e) {\n // console.log('Error processing link_meta', e)\n }\n }\n const resolvedResponse = await ResolvedSigningRequest.fromPayload(callbackResponse, context.esrOptions);\n const identityProof = resolvedResponse.getIdentityProof(callbackResponse.sig);\n return {\n chain: Checksum256.from(callbackResponse.cid),\n permissionLevel: PermissionLevel.from({\n actor: callbackResponse.sa,\n permission: callbackResponse.sp,\n }),\n identityProof,\n };\n }\n /**\n * Performs the wallet logic required to sign a transaction and return the signature.\n *\n * @param chain ChainDefinition\n * @param resolved ResolvedSigningRequest\n * @returns Promise\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n sign(resolved, context) {\n return this.handleSigningRequest(resolved, context);\n }\n async handleSigningRequest(resolved, context) {\n if (!context.ui) {\n throw new Error('No UI available');\n }\n // Retrieve translation helper from the UI, passing the app ID\n const t = context.ui.getTranslate(this.id);\n // Set expiration time frames for the request\n const expiration = resolved.transaction.expiration.toDate();\n const now = new Date();\n const expiresIn = Math.floor(expiration.getTime() - now.getTime());\n // Create a new signing request based on the existing resolved request\n const modifiedRequest = await context.createRequest({ transaction: resolved.transaction });\n // Set the expiration on the request LinkInfo\n modifiedRequest.setInfoKey('link', LinkInfo.from({\n expiration,\n }));\n // Add the callback to the request\n const callback = setTransactionCallback(modifiedRequest, this.buoyUrl);\n const request = modifiedRequest.encode(true, false);\n // Mobile will return true or false, desktop will return undefined\n const isSameDevice = this.data.sameDevice !== false;\n // Same device request\n const sameDeviceRequest = modifiedRequest.clone();\n const returnUrl = generateReturnUrl();\n sameDeviceRequest.setInfoKey('same_device', true);\n sameDeviceRequest.setInfoKey('return_path', returnUrl);\n if (this.data.sameDevice) {\n if (this.data.launchUrl) {\n window.location.href = this.data.launchUrl;\n }\n else if (isAppleHandheld()) {\n window.location.href = 'anchor://link';\n }\n }\n const signManually = () => {\n context.ui?.prompt({\n title: t('transact.sign_manually.title', { default: 'Sign manually' }),\n body: t('transact.sign_manually.body', {\n default: 'Scan the QR-code with Anchor on another device or use the button to open it here.',\n }),\n elements: [\n {\n type: 'qr',\n data: String(request),\n },\n {\n type: 'link',\n label: t('transact.sign_manually.link.title', { default: 'Open Anchor' }),\n data: {\n href: String(sameDeviceRequest),\n label: t('transact.sign_manually.link.title', { default: 'Open Anchor' }),\n },\n },\n ],\n });\n };\n // Tell Wharf we need to prompt the user with a QR code and a button\n const promptPromise = context.ui.prompt({\n title: t('transact.title', { default: 'Complete using Anchor' }),\n body: t('transact.body', {\n channelName: this.data.channelName,\n default: `Please open your Anchor Wallet on \"${this.data.channelName}\" to review and approve this transaction.`,\n }),\n elements: [\n {\n type: 'countdown',\n data: {\n label: t('transact.await', { default: 'Waiting for response from Anchor' }),\n end: expiration.toISOString(),\n },\n },\n {\n type: 'button',\n label: t('transact.label', { default: 'Sign manually or with another device' }),\n data: {\n onClick: isSameDevice\n ? () => (window.location.href = sameDeviceRequest.encode())\n : signManually,\n label: t('transact.label', {\n default: 'Sign manually or with another device',\n }),\n },\n },\n ],\n });\n // Create a timer to test the external cancelation of the prompt, if defined\n const timer = setTimeout(() => {\n if (!context.ui) {\n throw new Error('No UI available');\n }\n promptPromise.cancel(t('error.expired', { default: 'The request expired, please try again.' }));\n }, expiresIn);\n // Clear the timeout if the UI throws (which generally means it closed)\n promptPromise.catch(() => clearTimeout(timer));\n // Wait for the callback from the wallet\n const callbackPromise = waitForCallback(callback, this.buoyWs, t);\n // Assemble and send the payload to the wallet\n if (this.data.channelUrl) {\n const service = new URL(this.data.channelUrl).origin;\n const channel = new URL(this.data.channelUrl).pathname.substring(1);\n const sealedMessage = sealMessage((this.data.sameDevice ? sameDeviceRequest : modifiedRequest).encode(true, false, 'esr:'), PrivateKey.from(this.data.privateKey), PublicKey.from(this.data.signerKey));\n send(Serializer.encode({ object: sealedMessage }).array, {\n service,\n channel,\n });\n }\n else {\n // If no channel is defined, fallback to the same device request and trigger immediately\n window.location.href = sameDeviceRequest.encode();\n }\n // Wait for either the callback or the prompt to resolve\n const callbackResponse = await Promise.race([callbackPromise, promptPromise]).finally(() => {\n // Clear the automatic timeout once the race resolves\n clearTimeout(timer);\n });\n const wasSuccessful = isCallback(callbackResponse) &&\n extractSignaturesFromCallback(callbackResponse).length > 0;\n if (wasSuccessful) {\n // If the callback was resolved, create a new request from the response\n const resolvedRequest = await ResolvedSigningRequest.fromPayload(callbackResponse, context.esrOptions);\n // Return the new request and the signatures from the wallet\n return {\n signatures: extractSignaturesFromCallback(callbackResponse),\n resolved: resolvedRequest,\n };\n }\n const errorString = t('error.not_completed', { default: 'The request was not completed.' });\n promptPromise.cancel(errorString);\n // This shouldn't ever trigger, but just in case\n throw new Error(errorString);\n }\n}\n\nexport { WalletPluginAnchor };\n//# sourceMappingURL=wallet-plugin-anchor.m.js.map\n","/**\n * @wharfkit/wallet-plugin-cloudwallet v1.3.3\n * https://github.com/wharfkit/wallet-plugin-cloudwallet\n *\n * @license\n * Copyright (c) 2023 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { Struct, Name, UInt32, Asset, AbstractWalletPlugin, WalletPluginMetadata, cancelable, PermissionLevel, IdentityProof, ChainId, TimePointSec, Signature, Serializer, Transaction, SigningRequest, ResolvedSigningRequest } from '@wharfkit/session';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\n// ABI Definitions to decode data\nlet Buyrambytes = class Buyrambytes extends Struct {\n};\n__decorate([\n Struct.field(Name)\n], Buyrambytes.prototype, \"payer\", void 0);\n__decorate([\n Struct.field(Name)\n], Buyrambytes.prototype, \"receiver\", void 0);\n__decorate([\n Struct.field(UInt32)\n], Buyrambytes.prototype, \"bytes\", void 0);\nBuyrambytes = __decorate([\n Struct.type('buyrambytes')\n], Buyrambytes);\nlet Transfer = class Transfer extends Struct {\n};\n__decorate([\n Struct.field(Name)\n], Transfer.prototype, \"from\", void 0);\n__decorate([\n Struct.field(Name)\n], Transfer.prototype, \"to\", void 0);\n__decorate([\n Struct.field(Asset)\n], Transfer.prototype, \"quantity\", void 0);\n__decorate([\n Struct.field('string')\n], Transfer.prototype, \"memo\", void 0);\nTransfer = __decorate([\n Struct.type('transfer')\n], Transfer);\n\nfunction validateModifications(original, modified) {\n // Ensure all the original actions exist within the modified transaction\n const originalsExist = original.actions.every((action) => modified.actions.some((modifiedAction) => action.equals(modifiedAction)));\n if (!originalsExist) {\n throw new Error('The modified transaction does not contain all the original actions.');\n }\n // Find all new actions added to this transaction\n const newActions = modified.actions.filter((action) => {\n return !original.actions.some((originalAction) => action.equals(originalAction));\n });\n // Iterate and validate each new action\n for (const newAction of newActions) {\n // Determine if a new action has the authorization of the original actor\n const authByUser = newAction.authorization.find((auth) => {\n return auth.actor === original.actions[0].authorization[0].actor;\n });\n if (authByUser) {\n // Ensure if a transaction fee is being paid by the user, it's going to the correct account\n const isTokenTransfer = newAction.account.equals('eosio.token') && newAction.name.equals('transfer');\n if (isTokenTransfer) {\n const data = Transfer.from(newAction.data);\n if (data.to.equals('txfee.wam') && data.memo.startsWith('WAX fee for')) {\n continue;\n }\n }\n // Ensure if a RAM purchase is occurring during a modification, it's going to the user\n const isRAMPurchase = newAction.account.equals('eosio') && newAction.name.equals('buyrambytes');\n if (isRAMPurchase) {\n const data = Buyrambytes.from(newAction.data);\n if (data.receiver.equals(original.actions[0].authorization[0].actor)) {\n continue;\n }\n }\n // If not passing the above rules, throw an error\n throw new Error('The modified transaction contains one or more actions that are not allowed.');\n }\n }\n}\n// Create and return an interval that checks whether or not the window has been closed\nfunction registerCloseListener(t, popup, reject) {\n const closeListener = setInterval(() => {\n if (popup.closed) {\n clearInterval(closeListener);\n reject(t('error.closed', {\n default: 'The Cloud Wallet was closed before the request was completed',\n }));\n }\n }, 500);\n return closeListener;\n}\n// Retrieve current time\nfunction getCurrentTime() {\n return Math.floor(new Date().getTime());\n}\n// Ensure the MessageEvent returned from the popup is valid\nfunction isValidEvent(event, url, window) {\n const eventOrigin = new URL(event.origin);\n const validOrigin = eventOrigin.origin === url.origin;\n const validSource = event.source === window;\n const validObject = typeof event.data === 'object';\n if (!validObject || !validOrigin || !validSource) {\n return false;\n }\n return true;\n}\n\nasync function autoLogin(t, urlString) {\n // TODO: Figure out what temp accounts are\n //\n // if (this.returnTempAccount) {\n // url.search = \"returnTemp=true\";\n // } else {\n // url.search = \"\";\n // }\n const url = new URL(urlString);\n const response = await fetch(String(url), {\n credentials: 'include',\n method: 'get',\n });\n if (!response.ok) {\n throw new Error(t('error.endpoint', {\n default: `Login Endpoint Error {{status}} - {{statusText}}`,\n status: response.status,\n statusText: response.statusText,\n }));\n }\n const data = await response.json();\n return data;\n}\nasync function popupLogin(t, urlString, timeout = 300000) {\n // Open the popup window\n const url = new URL(urlString);\n const popup = await window.open(url, 'WalletPluginCloudWalletPopup', 'height=800,width=600');\n if (!popup) {\n throw new Error(t('error.popup', {\n default: 'Unable to open the popup window. Check your browser settings and try again.',\n }));\n }\n // Return a promise that either times out or resolves when the popup resolves\n return new Promise((resolve, reject) => {\n const closeListener = registerCloseListener(t, popup, reject);\n // Event handler awaiting response from WCW\n const handleEvent = (event) => {\n if (!isValidEvent(event, url, popup)) {\n return;\n }\n try {\n resolve(event.data);\n }\n catch (e) {\n reject(e);\n }\n finally {\n window.removeEventListener('message', handleEvent);\n clearTimeout(autoCancel);\n clearInterval(closeListener);\n }\n };\n // Automatically cancel request after 5 minutes to cleanup windows/promises\n const autoCancel = setTimeout(() => {\n popup.close();\n window.removeEventListener('message', handleEvent);\n reject(new Error(t('error.timeout', {\n default: 'The request has timed out after {{timeout}} seconds. Please try again.',\n timeout: timeout / 1000,\n })));\n }, timeout);\n // Add event listener awaiting WCW Response\n window.addEventListener('message', handleEvent);\n });\n}\n\nfunction allowAutosign(request, data) {\n const ua = navigator.userAgent.toLowerCase();\n if (ua.search('chrome') === -1 && ua.search('safari') >= 0) {\n return false;\n }\n try {\n if (!data)\n return false;\n const whitelist = data.whitelist;\n const { actions } = request.resolvedTransaction;\n return actions.every((action) => {\n return whitelist.find((entry) => {\n if (action.account.equals(entry.contract)) {\n if (action.account.equals('eosio.token') &&\n action.name &&\n action.name.equals('transfer')) {\n return entry.recipients.includes(String(action.data.to));\n }\n return true;\n }\n });\n });\n }\n catch (e) {\n // console.log('error in canAutoSign', e)\n }\n return false;\n}\nasync function autoSign(t, urlString, request) {\n const url = new URL(urlString);\n const controller = new AbortController();\n setTimeout(() => controller.abort(), 5000);\n const response = await fetch(url, {\n body: JSON.stringify({\n feeFallback: true,\n freeBandwidth: true,\n transaction: request.serializedTransaction,\n }),\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n method: 'POST',\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new Error(t('error.endpoint', {\n default: `Login Endpoint Error {{status}} - {{statusText}}`,\n status: response.status,\n statusText: response.statusText,\n }));\n }\n const data = await response.json();\n if (data.processed && data.processed.except) {\n throw new Error(t('error.exception', {\n default: 'Signing exception occurred: {{exception}}',\n exception: JSON.stringify(data),\n }));\n }\n return data;\n}\nasync function popupTransact(t, urlString, request, timeout = 300000) {\n const url = new URL(urlString);\n const popup = await window.open(url, 'WalletPluginCloudWalletPopup', 'height=800,width=600');\n if (!popup) {\n throw new Error(t('error.popup', {\n default: 'Unable to open the popup window. Check your browser settings and try again.',\n }));\n }\n return new Promise((resolve, reject) => {\n const closeListener = registerCloseListener(t, popup, reject);\n const handleEvent = (event) => {\n if (!isValidEvent(event, url, popup)) {\n return;\n }\n popup?.postMessage({\n feeFallback: true,\n freeBandwidth: true,\n startTime: getCurrentTime(),\n transaction: request.serializedTransaction,\n type: 'TRANSACTION',\n }, String(urlString));\n const handleSigning = (signingEvent) => {\n if (!isValidEvent(signingEvent, url, popup)) {\n return;\n }\n try {\n resolve(signingEvent.data);\n }\n catch (e) {\n reject(e);\n }\n finally {\n window.removeEventListener('message', handleEvent);\n window.removeEventListener('message', handleSigning);\n clearTimeout(autoCancel);\n clearInterval(closeListener);\n }\n };\n window.addEventListener('message', handleSigning);\n };\n // Automatically cancel request after 5 minutes to cleanup windows/promises\n const autoCancel = setTimeout(() => {\n popup.close();\n window.removeEventListener('message', handleEvent);\n reject(new Error(t('error.timeout', {\n default: 'The request has timed out after {{timeout}} seconds. Please try again.',\n timeout: timeout / 1000,\n })));\n }, timeout);\n // Add event listener awaiting WCW Response\n window.addEventListener('message', handleEvent);\n });\n}\n\nvar connecting$3 = \"Connecting to Cloud Wallet\";\nvar error$3 = {\n\tclosed: \"The Cloud Wallet was closed before the request was completed\",\n\tendpoint: \"Login Endpoint Error {{status}} - {{statusText}}\",\n\texception: \"Signing exception occurred: {{exception}}\",\n\tpopup: \"Unable to open the popup window. Check your browser settings and try again.\",\n\tresponse: \"The Cloud Wallet failed to respond.\",\n\ttimeout: \"The request has timed out after {{timeout}} seconds. Please try again.\"\n};\nvar login$3 = {\n\tpopup: \"Login with the Cloud Wallet popup window\"\n};\nvar transact$3 = {\n\tpopup: \"Sign with the Cloud Wallet popup window\"\n};\nvar en = {\n\tconnecting: connecting$3,\n\terror: error$3,\n\tlogin: login$3,\n\ttransact: transact$3\n};\n\nvar connecting$2 = \"클라우드 지갑에 연결\";\nvar error$2 = {\n\tclosed: \"요청이 완료되기 전에 클라우드 지갑이 닫혔습니다.\",\n\tendpoint: \"로그인 엔드포인트 오류 {{status}} - {{statusText}}\",\n\texception: \"서명 예외가 발생했습니다: {{exception}}\",\n\tpopup: \"팝업 창을 열 수 없습니다. 브라우저 설정을 확인하고 다시 시도하십시오.\",\n\tresponse: \"클라우드 지갑이 응답하지 못했습니다.\",\n\ttimeout: \"{{timeout}}초 후에 요청 시간이 초과되었습니다. 다시 시도하십시오.\"\n};\nvar login$2 = {\n\tpopup: \"클라우드 지갑 팝업 창으로 로그인\"\n};\nvar transact$2 = {\n\tpopup: \"클라우드 지갑 팝업 창으로 서명\"\n};\nvar ko = {\n\tconnecting: connecting$2,\n\terror: error$2,\n\tlogin: login$2,\n\ttransact: transact$2\n};\n\nvar connecting$1 = \"正在连接到云钱包\";\nvar error$1 = {\n\tclosed: \"云钱包在请求完成之前已关闭\",\n\tendpoint: \"登录端点错误 {{status}} - {{statusText}}\",\n\texception: \"发生签名异常:{{exception}}\",\n\tpopup: \"无法打开弹出窗口。请检查您的浏览器设置,然后重试。\",\n\tresponse: \"云钱包响应失败。\",\n\ttimeout: \"请求在 {{timeout}} 秒后超时。请重试。\"\n};\nvar login$1 = {\n\tpopup: \"使用云钱包弹出窗口登录\"\n};\nvar transact$1 = {\n\tpopup: \"使用云钱包弹出窗口签名\"\n};\nvar zh_hans = {\n\tconnecting: connecting$1,\n\terror: error$1,\n\tlogin: login$1,\n\ttransact: transact$1\n};\n\nvar connecting = \"正在連接到雲錢包\";\nvar error = {\n\tclosed: \"雲錢包在請求完成之前已關閉\",\n\tendpoint: \"登錄端點錯誤 {{status}} - {{statusText}}\",\n\texception: \"發生簽名異常:{{exception}}\",\n\tpopup: \"無法打開彈出窗口。 請檢查您的瀏覽器設置,然後重試。\",\n\tresponse: \"雲錢包響應失敗\",\n\ttimeout: \"請求在 {{timeout}} 秒後超時。請重試。\"\n};\nvar login = {\n\tpopup: \"使用雲錢包彈出窗口登錄\"\n};\nvar transact = {\n\tpopup: \"使用雲錢包彈出窗口簽名\"\n};\nvar zh_hant = {\n\tconnecting: connecting,\n\terror: error,\n\tlogin: login,\n\ttransact: transact\n};\n\nvar defaultTranslations = {\n en,\n ko,\n 'zh-Hans': zh_hans,\n 'zh-Hant': zh_hant,\n};\n\nclass WalletPluginCloudWallet extends AbstractWalletPlugin {\n /**\n * Constructor to allow overriding of plugin configuration.\n */\n constructor(options) {\n super();\n /**\n * The unique identifier for the wallet plugin.\n */\n this.id = 'cloudwallet';\n /**\n * The translations for this plugin\n */\n this.translations = defaultTranslations;\n /**\n * The logic configuration for the wallet plugin.\n */\n this.config = {\n // Should the user interface display a chain selector?\n requiresChainSelect: false,\n // Should the user interface display a permission selector?\n requiresPermissionSelect: false,\n // The blockchains this WalletPlugin supports\n supportedChains: [\n '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4', // WAX (Mainnet)\n // 'f16b1833c747c43682f4386fca9cbb327929334a762755ebec17f6f23c9b8a12', // NYI - WAX (Testnet)\n ],\n };\n /**\n * The metadata for the wallet plugin to be displayed in the user interface.\n */\n this.metadata = WalletPluginMetadata.from({\n name: 'Cloud Wallet',\n description: '',\n logo: 'data:image/png;base64,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',\n homepage: 'https://www.mycloudwallet.com',\n download: 'https://www.mycloudwallet.com',\n });\n /**\n * WAX Cloud Wallet Configuration\n */\n this.url = 'https://www.mycloudwallet.com';\n this.autoUrl = 'https://idm-api.mycloudwallet.com/v1/accounts/auto-accept';\n this.loginTimeout = 300000; // 5 minutes\n if (options?.supportedChains) {\n this.config.supportedChains = options.supportedChains;\n }\n if (options?.url) {\n this.url = options.url;\n }\n if (options?.autoUrl) {\n this.autoUrl = options.autoUrl;\n }\n if (options?.loginTimeout) {\n this.loginTimeout = options.loginTimeout;\n }\n }\n /**\n * Performs the wallet logic required to login and return the chain and permission level to use.\n *\n * @param options WalletPluginLoginOptions\n * @returns Promise\n */\n login(context) {\n const promise = this.waxLogin(context);\n return cancelable(promise, (canceled) => {\n throw canceled;\n });\n }\n async waxLogin(context) {\n if (!context.chain) {\n throw new Error('A chain must be selected to login with.');\n }\n // Retrieve translation helper from the UI, passing the app ID\n const t = context.ui.getTranslate(this.id);\n const nonce = context.arbitrary['nonce'];\n const base64Nonce = btoa(nonce);\n let response;\n try {\n // Attempt automatic login\n response = await autoLogin(t, `${this.autoUrl}/login?n=${base64Nonce}`);\n }\n catch (e) {\n // Fallback to popup login\n response = await popupLogin(t, `${this.url}/cloud-wallet/login?n=${base64Nonce}`);\n }\n // If failed due to no response or no verified response, throw error\n if (!response) {\n throw new Error(t('login.error.response', { default: 'Cloud Wallet failed to respond' }));\n }\n if (!response.verified) {\n throw new Error(t('error.closed', {\n default: 'Cloud Wallet closed before the login was completed',\n }));\n }\n // Save our whitelisted contracts\n this.data.whitelist = response.whitelistedContracts;\n const signature = response?.proof?.data?.signature;\n return new Promise((resolve) => {\n if (!context.chain) {\n throw new Error('A chain must be selected to login with.');\n }\n // Return to session's transact call\n resolve({\n chain: context.chain.id,\n permissionLevel: PermissionLevel.from({\n actor: response.userAccount,\n permission: 'active',\n }),\n identityProof: signature &&\n IdentityProof.from({\n chainId: ChainId.from(context?.chain?.id),\n scope: Name.from(context.appName || ''),\n expiration: TimePointSec.from(new Date().getTime() / 1000 + 60 * 60),\n signer: PermissionLevel.from({\n actor: response.userAccount,\n permission: 'active',\n }),\n signature: Signature.from(response?.proof?.data?.signature),\n }),\n });\n });\n }\n /**\n * Performs the wallet logic required to sign a transaction and return the signature.\n *\n * @param chain ChainDefinition\n * @param resolved ResolvedSigningRequest\n * @returns Promise\n */\n sign(resolved, context) {\n const promise = this.waxSign(resolved, context);\n return cancelable(promise, (canceled) => {\n throw canceled;\n });\n }\n async waxSign(resolved, context) {\n if (!context.ui) {\n throw new Error('A UserInterface must be defined to sign transactions.');\n }\n // Retrieve translation helper from the UI, passing the app ID\n const t = context.ui.getTranslate(this.id);\n // Set expiration time frames for the request\n const expiration = resolved.transaction.expiration.toDate();\n const now = new Date();\n const timeout = Math.floor(expiration.getTime() - now.getTime());\n // Perform WAX Cloud Wallet signing\n const callbackPromise = this.getWalletResponse(resolved, context, t, timeout);\n let promptPromise = cancelable(new Promise(() => { }));\n if (!allowAutosign(resolved, this.data)) {\n // Tell Wharf we need to prompt the user with a countdown\n promptPromise = context.ui.prompt({\n title: 'Sign',\n body: `Please complete the transaction using the Cloud Wallet popup window.`,\n optional: true,\n elements: [\n {\n type: 'countdown',\n data: expiration.toISOString(),\n },\n ],\n });\n // Clear the timeout if the UI throws (which generally means it closed)\n promptPromise.catch(() => clearTimeout(timer));\n }\n // Create a timer to test the external cancelation of the prompt, if defined\n const timer = setTimeout(() => {\n if (!context.ui) {\n throw new Error('No UI defined');\n }\n promptPromise.cancel('The request expired, please try again.');\n }, timeout);\n // Wait for either the callback or the prompt to resolve\n const callbackResponse = await Promise.race([callbackPromise, promptPromise]).finally(() => {\n // Clear the automatic timeout once the race resolves\n clearTimeout(timer);\n promptPromise.cancel();\n });\n if (isCallback(callbackResponse)) {\n // The response to return to the Session Kit\n const result = {\n signatures: callbackResponse.signatures,\n };\n // If a transaction was returned by the WCW\n if (callbackResponse.serializedTransaction) {\n // Convert the serialized transaction from the WCW to a Transaction object\n const responseTransaction = Serializer.decode({\n data: callbackResponse.serializedTransaction,\n type: Transaction,\n });\n // Determine if the transaction changed from the requested transaction\n if (!responseTransaction.equals(resolved.transaction)) {\n // Evalutate whether modifications are valid, if not throw error\n validateModifications(resolved.transaction, responseTransaction);\n // If transaction modified, return a new resolved request to Wharf\n const request = await SigningRequest.create({\n transaction: responseTransaction,\n }, context.esrOptions);\n // Created a resolved request\n result.resolved = new ResolvedSigningRequest(request, context.permissionLevel, Transaction.from(responseTransaction), Serializer.objectify(Transaction.from(responseTransaction)), ChainId.from(context.chain.id));\n }\n }\n return new Promise((resolve) => resolve(result));\n }\n throw new Error('The Cloud Wallet failed to respond');\n }\n async getWalletResponse(resolved, context, t, timeout = 300000) {\n let response;\n if (!context.ui) {\n throw new Error('The Cloud Wallet requires a UI to sign transactions.');\n }\n // Check if automatic signing is allowed\n if (allowAutosign(resolved, this.data)) {\n try {\n // Try automatic signing\n response = await autoSign(t, `${this.autoUrl}/signing`, resolved);\n }\n catch (e) {\n // Fallback to poup signing\n response = await popupTransact(t, `${this.url}/cloud-wallet/signing/`, resolved, timeout);\n }\n }\n else {\n // If automatic is not allowed use the popup\n response = await popupTransact(t, `${this.url}/cloud-wallet/signing/`, resolved, timeout);\n }\n // Catch unknown errors where no response is returned\n if (!response) {\n throw new Error(t('login.error.response', { default: 'Cloud Wallet failed to respond' }));\n }\n // Ensure the response is verified, if not the user most likely cancelled the request\n if (!response.verified) {\n throw new Error(t('error.closed', {\n default: 'The Cloud Wallet was closed before the request was completed',\n }));\n }\n // Save our whitelisted contracts\n this.data.whitelist = response.whitelistedContracts;\n // Return the response from the API\n return response;\n }\n}\nfunction isCallback(object) {\n return 'serializedTransaction' in object;\n}\n\nexport { WalletPluginCloudWallet };\n//# sourceMappingURL=wallet-plugin-cloudwallet.m.js.map\n","/**\n * @wharfkit/wallet-plugin-wombat v1.5.1\n * https://github.com/wharfkit/wallet-plugin-wombat\n *\n * @license\n * Copyright (c) 2023 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { AbstractWalletPlugin, WalletPluginMetadata } from '@wharfkit/session';\n\nclass WalletPluginWombat extends AbstractWalletPlugin {\n constructor() {\n super();\n this.id = 'wombat';\n this.translations = {};\n /**\n * The logic configuration for the wallet plugin.\n */\n this.config = {\n // Should the user interface display a chain selector?\n requiresChainSelect: true,\n // Should the user interface display a permission selector?\n requiresPermissionSelect: false,\n };\n /**\n * The metadata for the wallet plugin to be displayed in the user interface.\n */\n this.metadata = WalletPluginMetadata.from({\n name: 'Wombat',\n description: '',\n logo: 'data:image/png;base64,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',\n homepage: 'https://www.wombat.app/',\n download: 'https://www.wombat.app/the-app',\n });\n }\n async loadScatterProtocol() {\n let scatterProtocol;\n if (typeof window !== 'undefined') {\n scatterProtocol = await import('@wharfkit/protocol-scatter');\n }\n if (!scatterProtocol) {\n throw new Error('Scatter protocol is not available in this environment');\n }\n return scatterProtocol;\n }\n /**\n * Performs the wallet logic required to login and return the chain and permission level to use.\n *\n * @param context LoginContext\n * @returns Promise\n */\n async login(context) {\n const scatterProtocol = await this.loadScatterProtocol();\n return scatterProtocol.handleLogin(context);\n }\n /**\n * Performs the wallet logic required to logout.\n *\n * @param context: LogoutContext\n * @returns Promise\n */\n async logout(context) {\n const scatterProtocol = await this.loadScatterProtocol();\n return scatterProtocol.handleLogout(context);\n }\n /**\n * Performs the wallet logic required to sign a transaction and return the signature.\n *\n * @param chain ChainDefinition\n * @param resolved ResolvedSigningRequest\n * @returns Promise\n */\n async sign(resolved, context) {\n const scatterProtocol = await this.loadScatterProtocol();\n return scatterProtocol.handleSignatureRequest(resolved, context);\n }\n}\n\nexport { WalletPluginWombat };\n//# sourceMappingURL=index.js.map\n","import { BrowserLocalStorage, PermissionLevel, AbstractUserInterface, cancelable, Canceled } from '@wharfkit/session';\n\n/** @returns {void} */\nfunction noop() {}\n\nconst identity = (x) => x;\n\n/**\n * @template T\n * @template S\n * @param {T} tar\n * @param {S} src\n * @returns {T & S}\n */\nfunction assign(tar, src) {\n\t// @ts-ignore\n\tfor (const k in src) tar[k] = src[k];\n\treturn /** @type {T & S} */ (tar);\n}\n\nfunction run(fn) {\n\treturn fn();\n}\n\nfunction blank_object() {\n\treturn Object.create(null);\n}\n\n/**\n * @param {Function[]} fns\n * @returns {void}\n */\nfunction run_all(fns) {\n\tfns.forEach(run);\n}\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nfunction is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\n/** @returns {boolean} */\nfunction safe_not_equal(a, b) {\n\treturn a != a ? b == b : a !== b || (a && typeof a === 'object') || typeof a === 'function';\n}\n\nlet src_url_equal_anchor;\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nfunction src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\tif (!src_url_equal_anchor) {\n\t\tsrc_url_equal_anchor = document.createElement('a');\n\t}\n\t// This is actually faster than doing URL(..).href\n\tsrc_url_equal_anchor.href = url;\n\treturn element_src === src_url_equal_anchor.href;\n}\n\n/** @returns {boolean} */\nfunction is_empty(obj) {\n\treturn Object.keys(obj).length === 0;\n}\n\nfunction subscribe(store, ...callbacks) {\n\tif (store == null) {\n\t\tfor (const callback of callbacks) {\n\t\t\tcallback(undefined);\n\t\t}\n\t\treturn noop;\n\t}\n\tconst unsub = store.subscribe(...callbacks);\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * https://svelte.dev/docs/svelte-store#get\n * @template T\n * @param {import('../store/public.js').Readable} store\n * @returns {T}\n */\nfunction get_store_value(store) {\n\tlet value;\n\tsubscribe(store, (_) => (value = _))();\n\treturn value;\n}\n\n/** @returns {void} */\nfunction component_subscribe(component, store, callback) {\n\tcomponent.$$.on_destroy.push(subscribe(store, callback));\n}\n\nfunction create_slot(definition, ctx, $$scope, fn) {\n\tif (definition) {\n\t\tconst slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n\t\treturn definition[0](slot_ctx);\n\t}\n}\n\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n\treturn definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;\n}\n\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n\tif (definition[2] && fn) {\n\t\tconst lets = definition[2](fn(dirty));\n\t\tif ($$scope.dirty === undefined) {\n\t\t\treturn lets;\n\t\t}\n\t\tif (typeof lets === 'object') {\n\t\t\tconst merged = [];\n\t\t\tconst len = Math.max($$scope.dirty.length, lets.length);\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tmerged[i] = $$scope.dirty[i] | lets[i];\n\t\t\t}\n\t\t\treturn merged;\n\t\t}\n\t\treturn $$scope.dirty | lets;\n\t}\n\treturn $$scope.dirty;\n}\n\n/** @returns {void} */\nfunction update_slot_base(\n\tslot,\n\tslot_definition,\n\tctx,\n\t$$scope,\n\tslot_changes,\n\tget_slot_context_fn\n) {\n\tif (slot_changes) {\n\t\tconst slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n\t\tslot.p(slot_context, slot_changes);\n\t}\n}\n\n/** @returns {any[] | -1} */\nfunction get_all_dirty_from_scope($$scope) {\n\tif ($$scope.ctx.length > 32) {\n\t\tconst dirty = [];\n\t\tconst length = $$scope.ctx.length / 32;\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tdirty[i] = -1;\n\t\t}\n\t\treturn dirty;\n\t}\n\treturn -1;\n}\n\nfunction null_to_empty(value) {\n\treturn value == null ? '' : value;\n}\n\nfunction set_store_value(store, ret, value) {\n\tstore.set(value);\n\treturn ret;\n}\n\n/** @param {number | string} value\n * @returns {[number, string]}\n */\nfunction split_css_unit(value) {\n\tconst split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n\treturn split ? [parseFloat(split[1]), split[2] || 'px'] : [/** @type {number} */ (value), 'px'];\n}\n\nconst is_client = typeof window !== 'undefined';\n\n/** @type {() => number} */\nlet now = is_client ? () => window.performance.now() : () => Date.now();\n\nlet raf = is_client ? (cb) => requestAnimationFrame(cb) : noop;\n\nconst tasks = new Set();\n\n/**\n * @param {number} now\n * @returns {void}\n */\nfunction run_tasks(now) {\n\ttasks.forEach((task) => {\n\t\tif (!task.c(now)) {\n\t\t\ttasks.delete(task);\n\t\t\ttask.f();\n\t\t}\n\t});\n\tif (tasks.size !== 0) raf(run_tasks);\n}\n\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n * @param {import('./private.js').TaskCallback} callback\n * @returns {import('./private.js').Task}\n */\nfunction loop(callback) {\n\t/** @type {import('./private.js').TaskEntry} */\n\tlet task;\n\tif (tasks.size === 0) raf(run_tasks);\n\treturn {\n\t\tpromise: new Promise((fulfill) => {\n\t\t\ttasks.add((task = { c: callback, f: fulfill }));\n\t\t}),\n\t\tabort() {\n\t\t\ttasks.delete(task);\n\t\t}\n\t};\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @returns {void}\n */\nfunction append(target, node) {\n\ttarget.appendChild(node);\n}\n\n/**\n * @param {Node} target\n * @param {string} style_sheet_id\n * @param {string} styles\n * @returns {void}\n */\nfunction append_styles(target, style_sheet_id, styles) {\n\tconst append_styles_to = get_root_for_style(target);\n\tif (!append_styles_to.getElementById(style_sheet_id)) {\n\t\tconst style = element('style');\n\t\tstyle.id = style_sheet_id;\n\t\tstyle.textContent = styles;\n\t\tappend_stylesheet(append_styles_to, style);\n\t}\n}\n\n/**\n * @param {Node} node\n * @returns {ShadowRoot | Document}\n */\nfunction get_root_for_style(node) {\n\tif (!node) return document;\n\tconst root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n\tif (root && /** @type {ShadowRoot} */ (root).host) {\n\t\treturn /** @type {ShadowRoot} */ (root);\n\t}\n\treturn node.ownerDocument;\n}\n\n/**\n * @param {Node} node\n * @returns {CSSStyleSheet}\n */\nfunction append_empty_stylesheet(node) {\n\tconst style_element = element('style');\n\t// For transitions to work without 'style-src: unsafe-inline' Content Security Policy,\n\t// these empty tags need to be allowed with a hash as a workaround until we move to the Web Animations API.\n\t// Using the hash for the empty string (for an empty tag) works in all browsers except Safari.\n\t// So as a workaround for the workaround, when we append empty style tags we set their content to /* empty */.\n\t// The hash 'sha256-9OlNO0DNEeaVzHL4RZwCLsBHA8WBQ8toBp/4F5XV2nc=' will then work even in Safari.\n\tstyle_element.textContent = '/* empty */';\n\tappend_stylesheet(get_root_for_style(node), style_element);\n\treturn style_element.sheet;\n}\n\n/**\n * @param {ShadowRoot | Document} node\n * @param {HTMLStyleElement} style\n * @returns {CSSStyleSheet}\n */\nfunction append_stylesheet(node, style) {\n\tappend(/** @type {Document} */ (node).head || node, style);\n\treturn style.sheet;\n}\n\n/**\n * @param {Node} target\n * @param {Node} node\n * @param {Node} [anchor]\n * @returns {void}\n */\nfunction insert(target, node, anchor) {\n\ttarget.insertBefore(node, anchor || null);\n}\n\n/**\n * @param {Node} node\n * @returns {void}\n */\nfunction detach(node) {\n\tif (node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\n/**\n * @returns {void} */\nfunction destroy_each(iterations, detaching) {\n\tfor (let i = 0; i < iterations.length; i += 1) {\n\t\tif (iterations[i]) iterations[i].d(detaching);\n\t}\n}\n\n/**\n * @template {keyof HTMLElementTagNameMap} K\n * @param {K} name\n * @returns {HTMLElementTagNameMap[K]}\n */\nfunction element(name) {\n\treturn document.createElement(name);\n}\n\n/**\n * @template {keyof SVGElementTagNameMap} K\n * @param {K} name\n * @returns {SVGElement}\n */\nfunction svg_element(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n/**\n * @param {string} data\n * @returns {Text}\n */\nfunction text(data) {\n\treturn document.createTextNode(data);\n}\n\n/**\n * @returns {Text} */\nfunction space() {\n\treturn text(' ');\n}\n\n/**\n * @returns {Text} */\nfunction empty() {\n\treturn text('');\n}\n\n/**\n * @param {EventTarget} node\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} handler\n * @param {boolean | AddEventListenerOptions | EventListenerOptions} [options]\n * @returns {() => void}\n */\nfunction listen(node, event, handler, options) {\n\tnode.addEventListener(event, handler, options);\n\treturn () => node.removeEventListener(event, handler, options);\n}\n\n/**\n * @returns {(event: any) => any} */\nfunction prevent_default(fn) {\n\treturn function (event) {\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => any} */\nfunction stop_propagation(fn) {\n\treturn function (event) {\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn.call(this, event);\n\t};\n}\n\n/**\n * @returns {(event: any) => void} */\nfunction self(fn) {\n\treturn function (event) {\n\t\t// @ts-ignore\n\t\tif (event.target === this) fn.call(this, event);\n\t};\n}\n\n/**\n * @param {Element} node\n * @param {string} attribute\n * @param {string} [value]\n * @returns {void}\n */\nfunction attr(node, attribute, value) {\n\tif (value == null) node.removeAttribute(attribute);\n\telse if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);\n}\n\n/**\n * @param {Element} element\n * @returns {ChildNode[]}\n */\nfunction children(element) {\n\treturn Array.from(element.childNodes);\n}\n\n/**\n * @param {Text} text\n * @param {unknown} data\n * @returns {void}\n */\nfunction set_data(text, data) {\n\tdata = '' + data;\n\tif (text.data === data) return;\n\ttext.data = /** @type {string} */ (data);\n}\n\n/**\n * @returns {void} */\nfunction set_input_value(input, value) {\n\tinput.value = value == null ? '' : value;\n}\n\n/**\n * @returns {void} */\nfunction set_style(node, key, value, important) {\n\tif (value == null) {\n\t\tnode.style.removeProperty(key);\n\t} else {\n\t\tnode.style.setProperty(key, value, important ? 'important' : '');\n\t}\n}\n\n/**\n * @returns {void} */\nfunction toggle_class(element, name, toggle) {\n\t// The `!!` is required because an `undefined` flag means flipping the current state.\n\telement.classList.toggle(name, !!toggle);\n}\n\n/**\n * @template T\n * @param {string} type\n * @param {T} [detail]\n * @param {{ bubbles?: boolean, cancelable?: boolean }} [options]\n * @returns {CustomEvent}\n */\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\nfunction construct_svelte_component(component, props) {\n\treturn new component(props);\n}\n\n/**\n * @typedef {Node & {\n * \tclaim_order?: number;\n * \thydrate_init?: true;\n * \tactual_end_child?: NodeEx;\n * \tchildNodes: NodeListOf;\n * }} NodeEx\n */\n\n/** @typedef {ChildNode & NodeEx} ChildNodeEx */\n\n/** @typedef {NodeEx & { claim_order: number }} NodeEx2 */\n\n/**\n * @typedef {ChildNodeEx[] & {\n * \tclaim_info?: {\n * \t\tlast_index: number;\n * \t\ttotal_claimed: number;\n * \t};\n * }} ChildNodeArray\n */\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\n/** @type {Map} */\nconst managed_styles = new Map();\n\nlet active$1 = 0;\n\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\n/**\n * @param {string} str\n * @returns {number}\n */\nfunction hash(str) {\n\tlet hash = 5381;\n\tlet i = str.length;\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn hash >>> 0;\n}\n\n/**\n * @param {Document | ShadowRoot} doc\n * @param {Element & ElementCSSInlineStyle} node\n * @returns {{ stylesheet: any; rules: {}; }}\n */\nfunction create_style_information(doc, node) {\n\tconst info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n\tmanaged_styles.set(doc, info);\n\treturn info;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {number} a\n * @param {number} b\n * @param {number} duration\n * @param {number} delay\n * @param {(t: number) => number} ease\n * @param {(t: number, u: number) => string} fn\n * @param {number} uid\n * @returns {string}\n */\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n\tconst step = 16.666 / duration;\n\tlet keyframes = '{\\n';\n\tfor (let p = 0; p <= 1; p += step) {\n\t\tconst t = a + (b - a) * ease(p);\n\t\tkeyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n\t}\n\tconst rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n\tconst name = `__svelte_${hash(rule)}_${uid}`;\n\tconst doc = get_root_for_style(node);\n\tconst { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n\tif (!rules[name]) {\n\t\trules[name] = true;\n\t\tstylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n\t}\n\tconst animation = node.style.animation || '';\n\tnode.style.animation = `${\n\t\tanimation ? `${animation}, ` : ''\n\t}${name} ${duration}ms linear ${delay}ms 1 both`;\n\tactive$1 += 1;\n\treturn name;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {string} [name]\n * @returns {void}\n */\nfunction delete_rule(node, name) {\n\tconst previous = (node.style.animation || '').split(', ');\n\tconst next = previous.filter(\n\t\tname\n\t\t\t? (anim) => anim.indexOf(name) < 0 // remove specific animation\n\t\t\t: (anim) => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n\t);\n\tconst deleted = previous.length - next.length;\n\tif (deleted) {\n\t\tnode.style.animation = next.join(', ');\n\t\tactive$1 -= deleted;\n\t\tif (!active$1) clear_rules();\n\t}\n}\n\n/** @returns {void} */\nfunction clear_rules() {\n\traf(() => {\n\t\tif (active$1) return;\n\t\tmanaged_styles.forEach((info) => {\n\t\t\tconst { ownerNode } = info.stylesheet;\n\t\t\t// there is no ownerNode if it runs on jsdom.\n\t\t\tif (ownerNode) detach(ownerNode);\n\t\t});\n\t\tmanaged_styles.clear();\n\t});\n}\n\nlet current_component;\n\n/** @returns {void} */\nfunction set_current_component(component) {\n\tcurrent_component = component;\n}\n\nfunction get_current_component() {\n\tif (!current_component) throw new Error('Function called outside component initialization');\n\treturn current_component;\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside a [server-side component](/docs#run-time-server-side-component-api).\n *\n * https://svelte.dev/docs/svelte#onmount\n * @template T\n * @param {() => import('./private.js').NotFunction | Promise> | (() => any)} fn\n * @returns {void}\n */\nfunction onMount(fn) {\n\tget_current_component().$$.on_mount.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * https://svelte.dev/docs/svelte#ondestroy\n * @param {() => any} fn\n * @returns {void}\n */\nfunction onDestroy(fn) {\n\tget_current_component().$$.on_destroy.push(fn);\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](/docs#template-syntax-component-directives-on-eventname).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: never; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * https://svelte.dev/docs/svelte#createeventdispatcher\n * @template {Record} [EventMap=any]\n * @returns {import('./public.js').EventDispatcher}\n */\nfunction createEventDispatcher() {\n\tconst component = get_current_component();\n\treturn (type, detail, { cancelable = false } = {}) => {\n\t\tconst callbacks = component.$$.callbacks[type];\n\t\tif (callbacks) {\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = custom_event(/** @type {string} */ (type), detail, { cancelable });\n\t\t\tcallbacks.slice().forEach((fn) => {\n\t\t\t\tfn.call(component, event);\n\t\t\t});\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#setcontext\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nfunction setContext(key, context) {\n\tget_current_component().$$.context.set(key, context);\n\treturn context;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * https://svelte.dev/docs/svelte#getcontext\n * @template T\n * @param {any} key\n * @returns {T}\n */\nfunction getContext(key) {\n\treturn get_current_component().$$.context.get(key);\n}\n\nconst dirty_components = [];\nconst binding_callbacks = [];\n\nlet render_callbacks = [];\n\nconst flush_callbacks = [];\n\nconst resolved_promise = /* @__PURE__ */ Promise.resolve();\n\nlet update_scheduled = false;\n\n/** @returns {void} */\nfunction schedule_update() {\n\tif (!update_scheduled) {\n\t\tupdate_scheduled = true;\n\t\tresolved_promise.then(flush);\n\t}\n}\n\n/** @returns {void} */\nfunction add_render_callback(fn) {\n\trender_callbacks.push(fn);\n}\n\n/** @returns {void} */\nfunction add_flush_callback(fn) {\n\tflush_callbacks.push(fn);\n}\n\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\n\nlet flushidx = 0; // Do *not* move this inside the flush() function\n\n/** @returns {void} */\nfunction flush() {\n\t// Do not reenter flush while dirty components are updated, as this can\n\t// result in an infinite loop. Instead, let the inner flush handle it.\n\t// Reentrancy is ok afterwards for bindings etc.\n\tif (flushidx !== 0) {\n\t\treturn;\n\t}\n\tconst saved_component = current_component;\n\tdo {\n\t\t// first, call beforeUpdate functions\n\t\t// and update components\n\t\ttry {\n\t\t\twhile (flushidx < dirty_components.length) {\n\t\t\t\tconst component = dirty_components[flushidx];\n\t\t\t\tflushidx++;\n\t\t\t\tset_current_component(component);\n\t\t\t\tupdate(component.$$);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// reset dirty state to not end up in a deadlocked state and then rethrow\n\t\t\tdirty_components.length = 0;\n\t\t\tflushidx = 0;\n\t\t\tthrow e;\n\t\t}\n\t\tset_current_component(null);\n\t\tdirty_components.length = 0;\n\t\tflushidx = 0;\n\t\twhile (binding_callbacks.length) binding_callbacks.pop()();\n\t\t// then, once components are updated, call\n\t\t// afterUpdate functions. This may cause\n\t\t// subsequent updates...\n\t\tfor (let i = 0; i < render_callbacks.length; i += 1) {\n\t\t\tconst callback = render_callbacks[i];\n\t\t\tif (!seen_callbacks.has(callback)) {\n\t\t\t\t// ...so guard against infinite loops\n\t\t\t\tseen_callbacks.add(callback);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t\trender_callbacks.length = 0;\n\t} while (dirty_components.length);\n\twhile (flush_callbacks.length) {\n\t\tflush_callbacks.pop()();\n\t}\n\tupdate_scheduled = false;\n\tseen_callbacks.clear();\n\tset_current_component(saved_component);\n}\n\n/** @returns {void} */\nfunction update($$) {\n\tif ($$.fragment !== null) {\n\t\t$$.update();\n\t\trun_all($$.before_update);\n\t\tconst dirty = $$.dirty;\n\t\t$$.dirty = [-1];\n\t\t$$.fragment && $$.fragment.p($$.ctx, dirty);\n\t\t$$.after_update.forEach(add_render_callback);\n\t}\n}\n\n/**\n * Useful for example to execute remaining `afterUpdate` callbacks before executing `destroy`.\n * @param {Function[]} fns\n * @returns {void}\n */\nfunction flush_render_callbacks(fns) {\n\tconst filtered = [];\n\tconst targets = [];\n\trender_callbacks.forEach((c) => (fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)));\n\ttargets.forEach((c) => c());\n\trender_callbacks = filtered;\n}\n\n/**\n * @type {Promise | null}\n */\nlet promise;\n\n/**\n * @returns {Promise}\n */\nfunction wait() {\n\tif (!promise) {\n\t\tpromise = Promise.resolve();\n\t\tpromise.then(() => {\n\t\t\tpromise = null;\n\t\t});\n\t}\n\treturn promise;\n}\n\n/**\n * @param {Element} node\n * @param {INTRO | OUTRO | boolean} direction\n * @param {'start' | 'end'} kind\n * @returns {void}\n */\nfunction dispatch(node, direction, kind) {\n\tnode.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\n\nconst outroing = new Set();\n\n/**\n * @type {Outro}\n */\nlet outros;\n\n/**\n * @returns {void} */\nfunction group_outros() {\n\toutros = {\n\t\tr: 0,\n\t\tc: [],\n\t\tp: outros // parent group\n\t};\n}\n\n/**\n * @returns {void} */\nfunction check_outros() {\n\tif (!outros.r) {\n\t\trun_all(outros.c);\n\t}\n\toutros = outros.p;\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} [local]\n * @returns {void}\n */\nfunction transition_in(block, local) {\n\tif (block && block.i) {\n\t\toutroing.delete(block);\n\t\tblock.i(local);\n\t}\n}\n\n/**\n * @param {import('./private.js').Fragment} block\n * @param {0 | 1} local\n * @param {0 | 1} [detach]\n * @param {() => void} [callback]\n * @returns {void}\n */\nfunction transition_out(block, local, detach, callback) {\n\tif (block && block.o) {\n\t\tif (outroing.has(block)) return;\n\t\toutroing.add(block);\n\t\toutros.c.push(() => {\n\t\t\toutroing.delete(block);\n\t\t\tif (callback) {\n\t\t\t\tif (detach) block.d(1);\n\t\t\t\tcallback();\n\t\t\t}\n\t\t});\n\t\tblock.o(local);\n\t} else if (callback) {\n\t\tcallback();\n\t}\n}\n\n/**\n * @type {import('../transition/public.js').TransitionConfig}\n */\nconst null_transition = { duration: 0 };\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @returns {{ start(): void; invalidate(): void; end(): void; }}\n */\nfunction create_in_transition(node, fn, params) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'in' };\n\tlet config = fn(node, params, options);\n\tlet running = false;\n\tlet animation_name;\n\tlet task;\n\tlet uid = 0;\n\n\t/**\n\t * @returns {void} */\n\tfunction cleanup() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @returns {void} */\n\tfunction go() {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = identity,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\t\tif (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n\t\ttick(0, 1);\n\t\tconst start_time = now() + delay;\n\t\tconst end_time = start_time + duration;\n\t\tif (task) task.abort();\n\t\trunning = true;\n\t\tadd_render_callback(() => dispatch(node, true, 'start'));\n\t\ttask = loop((now) => {\n\t\t\tif (running) {\n\t\t\t\tif (now >= end_time) {\n\t\t\t\t\ttick(1, 0);\n\t\t\t\t\tdispatch(node, true, 'end');\n\t\t\t\t\tcleanup();\n\t\t\t\t\treturn (running = false);\n\t\t\t\t}\n\t\t\t\tif (now >= start_time) {\n\t\t\t\t\tconst t = easing((now - start_time) / duration);\n\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn running;\n\t\t});\n\t}\n\tlet started = false;\n\treturn {\n\t\tstart() {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tdelete_rule(node);\n\t\t\tif (is_function(config)) {\n\t\t\t\tconfig = config(options);\n\t\t\t\twait().then(go);\n\t\t\t} else {\n\t\t\t\tgo();\n\t\t\t}\n\t\t},\n\t\tinvalidate() {\n\t\t\tstarted = false;\n\t\t},\n\t\tend() {\n\t\t\tif (running) {\n\t\t\t\tcleanup();\n\t\t\t\trunning = false;\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} node\n * @param {TransitionFn} fn\n * @param {any} params\n * @param {boolean} intro\n * @returns {{ run(b: 0 | 1): void; end(): void; }}\n */\nfunction create_bidirectional_transition(node, fn, params, intro) {\n\t/**\n\t * @type {TransitionOptions} */\n\tconst options = { direction: 'both' };\n\tlet config = fn(node, params, options);\n\tlet t = intro ? 0 : 1;\n\n\t/**\n\t * @type {Program | null} */\n\tlet running_program = null;\n\n\t/**\n\t * @type {PendingProgram | null} */\n\tlet pending_program = null;\n\tlet animation_name = null;\n\n\t/** @type {boolean} */\n\tlet original_inert_value;\n\n\t/**\n\t * @returns {void} */\n\tfunction clear_animation() {\n\t\tif (animation_name) delete_rule(node, animation_name);\n\t}\n\n\t/**\n\t * @param {PendingProgram} program\n\t * @param {number} duration\n\t * @returns {Program}\n\t */\n\tfunction init(program, duration) {\n\t\tconst d = /** @type {Program['d']} */ (program.b - t);\n\t\tduration *= Math.abs(d);\n\t\treturn {\n\t\t\ta: t,\n\t\t\tb: program.b,\n\t\t\td,\n\t\t\tduration,\n\t\t\tstart: program.start,\n\t\t\tend: program.start + duration,\n\t\t\tgroup: program.group\n\t\t};\n\t}\n\n\t/**\n\t * @param {INTRO | OUTRO} b\n\t * @returns {void}\n\t */\n\tfunction go(b) {\n\t\tconst {\n\t\t\tdelay = 0,\n\t\t\tduration = 300,\n\t\t\teasing = identity,\n\t\t\ttick = noop,\n\t\t\tcss\n\t\t} = config || null_transition;\n\n\t\t/**\n\t\t * @type {PendingProgram} */\n\t\tconst program = {\n\t\t\tstart: now() + delay,\n\t\t\tb\n\t\t};\n\n\t\tif (!b) {\n\t\t\t// @ts-ignore todo: improve typings\n\t\t\tprogram.group = outros;\n\t\t\toutros.r += 1;\n\t\t}\n\n\t\tif ('inert' in node) {\n\t\t\tif (b) {\n\t\t\t\tif (original_inert_value !== undefined) {\n\t\t\t\t\t// aborted/reversed outro — restore previous inert value\n\t\t\t\t\tnode.inert = original_inert_value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toriginal_inert_value = /** @type {HTMLElement} */ (node).inert;\n\t\t\t\tnode.inert = true;\n\t\t\t}\n\t\t}\n\n\t\tif (running_program || pending_program) {\n\t\t\tpending_program = program;\n\t\t} else {\n\t\t\t// if this is an intro, and there's a delay, we need to do\n\t\t\t// an initial tick and/or apply CSS animation immediately\n\t\t\tif (css) {\n\t\t\t\tclear_animation();\n\t\t\t\tanimation_name = create_rule(node, t, b, duration, delay, easing, css);\n\t\t\t}\n\t\t\tif (b) tick(0, 1);\n\t\t\trunning_program = init(program, duration);\n\t\t\tadd_render_callback(() => dispatch(node, b, 'start'));\n\t\t\tloop((now) => {\n\t\t\t\tif (pending_program && now > pending_program.start) {\n\t\t\t\t\trunning_program = init(pending_program, duration);\n\t\t\t\t\tpending_program = null;\n\t\t\t\t\tdispatch(node, running_program.b, 'start');\n\t\t\t\t\tif (css) {\n\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\tanimation_name = create_rule(\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\tt,\n\t\t\t\t\t\t\trunning_program.b,\n\t\t\t\t\t\t\trunning_program.duration,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\teasing,\n\t\t\t\t\t\t\tconfig.css\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (running_program) {\n\t\t\t\t\tif (now >= running_program.end) {\n\t\t\t\t\t\ttick((t = running_program.b), 1 - t);\n\t\t\t\t\t\tdispatch(node, running_program.b, 'end');\n\t\t\t\t\t\tif (!pending_program) {\n\t\t\t\t\t\t\t// we're done\n\t\t\t\t\t\t\tif (running_program.b) {\n\t\t\t\t\t\t\t\t// intro — we can tidy up immediately\n\t\t\t\t\t\t\t\tclear_animation();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// outro — needs to be coordinated\n\t\t\t\t\t\t\t\tif (!--running_program.group.r) run_all(running_program.group.c);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trunning_program = null;\n\t\t\t\t\t} else if (now >= running_program.start) {\n\t\t\t\t\t\tconst p = now - running_program.start;\n\t\t\t\t\t\tt = running_program.a + running_program.d * easing(p / running_program.duration);\n\t\t\t\t\t\ttick(t, 1 - t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!(running_program || pending_program);\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\trun(b) {\n\t\t\tif (is_function(config)) {\n\t\t\t\twait().then(() => {\n\t\t\t\t\tconst opts = { direction: b ? 'in' : 'out' };\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconfig = config(opts);\n\t\t\t\t\tgo(b);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tgo(b);\n\t\t\t}\n\t\t},\n\t\tend() {\n\t\t\tclear_animation();\n\t\t\trunning_program = pending_program = null;\n\t\t}\n\t};\n}\n\n/** @typedef {1} INTRO */\n/** @typedef {0} OUTRO */\n/** @typedef {{ direction: 'in' | 'out' | 'both' }} TransitionOptions */\n/** @typedef {(node: Element, params: any, options: TransitionOptions) => import('../transition/public.js').TransitionConfig} TransitionFn */\n\n/**\n * @typedef {Object} Outro\n * @property {number} r\n * @property {Function[]} c\n * @property {Object} p\n */\n\n/**\n * @typedef {Object} PendingProgram\n * @property {number} start\n * @property {INTRO|OUTRO} b\n * @property {Outro} [group]\n */\n\n/**\n * @typedef {Object} Program\n * @property {number} a\n * @property {INTRO|OUTRO} b\n * @property {1|-1} d\n * @property {number} duration\n * @property {number} start\n * @property {number} end\n * @property {Outro} [group]\n */\n\n// general each functions:\n\nfunction ensure_array_like(array_like_or_iterator) {\n\treturn array_like_or_iterator?.length !== undefined\n\t\t? array_like_or_iterator\n\t\t: Array.from(array_like_or_iterator);\n}\n\n/** @returns {{}} */\nfunction get_spread_update(levels, updates) {\n\tconst update = {};\n\tconst to_null_out = {};\n\tconst accounted_for = { $$scope: 1 };\n\tlet i = levels.length;\n\twhile (i--) {\n\t\tconst o = levels[i];\n\t\tconst n = updates[i];\n\t\tif (n) {\n\t\t\tfor (const key in o) {\n\t\t\t\tif (!(key in n)) to_null_out[key] = 1;\n\t\t\t}\n\t\t\tfor (const key in n) {\n\t\t\t\tif (!accounted_for[key]) {\n\t\t\t\t\tupdate[key] = n[key];\n\t\t\t\t\taccounted_for[key] = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlevels[i] = n;\n\t\t} else {\n\t\t\tfor (const key in o) {\n\t\t\t\taccounted_for[key] = 1;\n\t\t\t}\n\t\t}\n\t}\n\tfor (const key in to_null_out) {\n\t\tif (!(key in update)) update[key] = undefined;\n\t}\n\treturn update;\n}\n\nfunction get_spread_object(spread_props) {\n\treturn typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n/** @returns {void} */\nfunction bind(component, name, callback) {\n\tconst index = component.$$.props[name];\n\tif (index !== undefined) {\n\t\tcomponent.$$.bound[index] = callback;\n\t\tcallback(component.$$.ctx[index]);\n\t}\n}\n\n/** @returns {void} */\nfunction create_component(block) {\n\tblock && block.c();\n}\n\n/** @returns {void} */\nfunction mount_component(component, target, anchor) {\n\tconst { fragment, after_update } = component.$$;\n\tfragment && fragment.m(target, anchor);\n\t// onMount happens before the initial afterUpdate\n\tadd_render_callback(() => {\n\t\tconst new_on_destroy = component.$$.on_mount.map(run).filter(is_function);\n\t\t// if the component was destroyed immediately\n\t\t// it will update the `$$.on_destroy` reference to `null`.\n\t\t// the destructured on_destroy may still reference to the old array\n\t\tif (component.$$.on_destroy) {\n\t\t\tcomponent.$$.on_destroy.push(...new_on_destroy);\n\t\t} else {\n\t\t\t// Edge case - component was destroyed immediately,\n\t\t\t// most likely as a result of a binding initialising\n\t\t\trun_all(new_on_destroy);\n\t\t}\n\t\tcomponent.$$.on_mount = [];\n\t});\n\tafter_update.forEach(add_render_callback);\n}\n\n/** @returns {void} */\nfunction destroy_component(component, detaching) {\n\tconst $$ = component.$$;\n\tif ($$.fragment !== null) {\n\t\tflush_render_callbacks($$.after_update);\n\t\trun_all($$.on_destroy);\n\t\t$$.fragment && $$.fragment.d(detaching);\n\t\t// TODO null out other refs, including component.$$ (but need to\n\t\t// preserve final state?)\n\t\t$$.on_destroy = $$.fragment = null;\n\t\t$$.ctx = [];\n\t}\n}\n\n/** @returns {void} */\nfunction make_dirty(component, i) {\n\tif (component.$$.dirty[0] === -1) {\n\t\tdirty_components.push(component);\n\t\tschedule_update();\n\t\tcomponent.$$.dirty.fill(0);\n\t}\n\tcomponent.$$.dirty[(i / 31) | 0] |= 1 << i % 31;\n}\n\n/** @returns {void} */\nfunction init(\n\tcomponent,\n\toptions,\n\tinstance,\n\tcreate_fragment,\n\tnot_equal,\n\tprops,\n\tappend_styles,\n\tdirty = [-1]\n) {\n\tconst parent_component = current_component;\n\tset_current_component(component);\n\t/** @type {import('./private.js').T$$} */\n\tconst $$ = (component.$$ = {\n\t\tfragment: null,\n\t\tctx: [],\n\t\t// state\n\t\tprops,\n\t\tupdate: noop,\n\t\tnot_equal,\n\t\tbound: blank_object(),\n\t\t// lifecycle\n\t\ton_mount: [],\n\t\ton_destroy: [],\n\t\ton_disconnect: [],\n\t\tbefore_update: [],\n\t\tafter_update: [],\n\t\tcontext: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n\t\t// everything else\n\t\tcallbacks: blank_object(),\n\t\tdirty,\n\t\tskip_bound: false,\n\t\troot: options.target || parent_component.$$.root\n\t});\n\tappend_styles && append_styles($$.root);\n\tlet ready = false;\n\t$$.ctx = instance\n\t\t? instance(component, options.props || {}, (i, ret, ...rest) => {\n\t\t\t\tconst value = rest.length ? rest[0] : ret;\n\t\t\t\tif ($$.ctx && not_equal($$.ctx[i], ($$.ctx[i] = value))) {\n\t\t\t\t\tif (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);\n\t\t\t\t\tif (ready) make_dirty(component, i);\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t })\n\t\t: [];\n\t$$.update();\n\tready = true;\n\trun_all($$.before_update);\n\t// `false` as a special case of no DOM component\n\t$$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n\tif (options.target) {\n\t\tif (options.hydrate) {\n\t\t\tconst nodes = children(options.target);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.l(nodes);\n\t\t\tnodes.forEach(detach);\n\t\t} else {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t$$.fragment && $$.fragment.c();\n\t\t}\n\t\tif (options.intro) transition_in(component.$$.fragment);\n\t\tmount_component(component, options.target, options.anchor);\n\t\tflush();\n\t}\n\tset_current_component(parent_component);\n}\n\n/**\n * Base class for Svelte components. Used when dev=false.\n *\n * @template {Record} [Props=any]\n * @template {Record} [Events=any]\n */\nclass SvelteComponent {\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$ = undefined;\n\t/**\n\t * ### PRIVATE API\n\t *\n\t * Do not use, may change at any time\n\t *\n\t * @type {any}\n\t */\n\t$$set = undefined;\n\n\t/** @returns {void} */\n\t$destroy() {\n\t\tdestroy_component(this, 1);\n\t\tthis.$destroy = noop;\n\t}\n\n\t/**\n\t * @template {Extract} K\n\t * @param {K} type\n\t * @param {((e: Events[K]) => void) | null | undefined} callback\n\t * @returns {() => void}\n\t */\n\t$on(type, callback) {\n\t\tif (!is_function(callback)) {\n\t\t\treturn noop;\n\t\t}\n\t\tconst callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);\n\t\tcallbacks.push(callback);\n\t\treturn () => {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index !== -1) callbacks.splice(index, 1);\n\t\t};\n\t}\n\n\t/**\n\t * @param {Partial} props\n\t * @returns {void}\n\t */\n\t$set(props) {\n\t\tif (this.$$set && !is_empty(props)) {\n\t\t\tthis.$$.skip_bound = true;\n\t\t\tthis.$$set(props);\n\t\t\tthis.$$.skip_bound = false;\n\t\t}\n\t}\n}\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n\n// generated during release, do not modify\nconst PUBLIC_VERSION = '4';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte || (window.__svelte = { v: new Set() })).v.add(PUBLIC_VERSION);\n\n/* src/ui/components/BodyTitle.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$p(target) {\n\tappend_styles(target, \"svelte-efme7g\", \"h2.svelte-efme7g{color:var(--body-text-color);font-size:var(--fs-2);font-weight:600;text-align:center;margin:0;margin-block-start:var(--space-xs)}\");\n}\n\nfunction create_fragment$A(ctx) {\n\tlet h2;\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[1].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[0], null);\n\n\treturn {\n\t\tc() {\n\t\t\th2 = element(\"h2\");\n\t\t\tif (default_slot) default_slot.c();\n\t\t\tattr(h2, \"class\", \"svelte-efme7g\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, h2, anchor);\n\n\t\t\tif (default_slot) {\n\t\t\t\tdefault_slot.m(h2, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 1)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[0],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[0])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[0], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(h2);\n\t\t\t}\n\n\t\t\tif (default_slot) default_slot.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$A($$self, $$props, $$invalidate) {\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('$$scope' in $$props) $$invalidate(0, $$scope = $$props.$$scope);\n\t};\n\n\treturn [$$scope, slots];\n}\n\nclass BodyTitle extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$A, create_fragment$A, safe_not_equal, {}, add_css$p);\n\t}\n}\n\n/* src/ui/components/BodyText.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$o(target) {\n\tappend_styles(target, \"svelte-fszb3i\", \"p.svelte-fszb3i{color:var(--body-text-color-variant);font-size:var(--fs-1);font-weight:400;text-align:center;margin:0;overflow-wrap:anywhere}\");\n}\n\nfunction create_fragment$z(ctx) {\n\tlet p;\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[1].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[0], null);\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tif (default_slot) default_slot.c();\n\t\t\tattr(p, \"class\", \"svelte-fszb3i\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\n\t\t\tif (default_slot) {\n\t\t\t\tdefault_slot.m(p, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 1)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[0],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[0])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[0], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\n\t\t\tif (default_slot) default_slot.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$z($$self, $$props, $$invalidate) {\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('$$scope' in $$props) $$invalidate(0, $$scope = $$props.$$scope);\n\t};\n\n\treturn [$$scope, slots];\n}\n\nclass BodyText extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$z, create_fragment$z, safe_not_equal, {}, add_css$o);\n\t}\n}\n\nconst Alert = `\n`;\nconst Check = `\n`;\nconst ChevronLeft = `\n`;\nconst ChevronRight = `\n`;\nconst Close$1 = `\n`;\nconst Copy = `\n`;\nconst Error$2 = `\n`;\nconst ExternalLink = `\n`;\nconst Expand = `\n`;\nconst FileCode = `\n`;\nconst Github = `\n`;\nconst Globe = `\n`;\nconst Info = `\n`;\nconst Login$1 = `\n`;\nconst Settings$1 = `\n`;\nconst Signal = `\n`;\nconst Theme = `\n`;\nconst Wallet$1 = `\n`;\nconst Waves = `\n`;\nconst Wharf = `\n`;\nconst icons = {\n copy: Copy,\n check: Check,\n close: Close$1,\n 'file-code': FileCode,\n wharf: Wharf,\n login: Login$1,\n 'chevron-right': ChevronRight,\n 'chevron-left': ChevronLeft,\n wallet: Wallet$1,\n expand: Expand,\n signal: Signal,\n settings: Settings$1,\n globe: Globe,\n github: Github,\n info: Info,\n theme: Theme,\n waves: Waves,\n 'external-link': ExternalLink,\n error: Error$2,\n alert: Alert,\n};\n\n/* src/ui/components/Icon.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$n(target) {\n\tappend_styles(target, \"svelte-19w48ux\", \"div.svelte-19w48ux svg{width:100%;height:100%}\");\n}\n\nfunction create_fragment$y(ctx) {\n\tlet div;\n\tlet raw_value = icons[/*name*/ ctx[0]] + \"\";\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tset_style(div, \"width\", /*size*/ ctx[1]);\n\t\t\tset_style(div, \"display\", \"grid\");\n\t\t\tset_style(div, \"place-content\", \"center\");\n\t\t\tset_style(div, \"color\", /*color*/ ctx[2]);\n\t\t\tattr(div, \"class\", \"svelte-19w48ux\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tdiv.innerHTML = raw_value;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (dirty & /*name*/ 1 && raw_value !== (raw_value = icons[/*name*/ ctx[0]] + \"\")) div.innerHTML = raw_value;\n\t\t\tif (dirty & /*size*/ 2) {\n\t\t\t\tset_style(div, \"width\", /*size*/ ctx[1]);\n\t\t\t}\n\n\t\t\tif (dirty & /*color*/ 4) {\n\t\t\t\tset_style(div, \"color\", /*color*/ ctx[2]);\n\t\t\t}\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction instance$y($$self, $$props, $$invalidate) {\n\tlet { name } = $$props;\n\tlet { size = 'var(--space-l)' } = $$props;\n\tlet { color = 'currentColor' } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('name' in $$props) $$invalidate(0, name = $$props.name);\n\t\tif ('size' in $$props) $$invalidate(1, size = $$props.size);\n\t\tif ('color' in $$props) $$invalidate(2, color = $$props.color);\n\t};\n\n\treturn [name, size, color];\n}\n\nclass Icon extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$y, create_fragment$y, safe_not_equal, { name: 0, size: 1, color: 2 }, add_css$n);\n\t}\n}\n\n/* src/ui/components/Message.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$m(target) {\n\tappend_styles(target, \"svelte-1u0n4gl\", \"div.svelte-1u0n4gl{display:grid;justify-items:center;gap:var(--space-s);text-align:center;color:var(--body-text-color);margin-block:var(--space-s)}\");\n}\n\n// (11:4) {#if icon}\nfunction create_if_block_2$9(ctx) {\n\tlet icon_1;\n\tlet current;\n\n\ticon_1 = new Icon({\n\t\t\tprops: {\n\t\t\t\tname: /*icon*/ ctx[2],\n\t\t\t\tsize: \"var(--space-3xl)\",\n\t\t\t\tcolor: /*iconColor*/ ctx[3]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(icon_1.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(icon_1, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst icon_1_changes = {};\n\t\t\tif (dirty & /*icon*/ 4) icon_1_changes.name = /*icon*/ ctx[2];\n\t\t\tif (dirty & /*iconColor*/ 8) icon_1_changes.color = /*iconColor*/ ctx[3];\n\t\t\ticon_1.$set(icon_1_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon_1.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon_1.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(icon_1, detaching);\n\t\t}\n\t};\n}\n\n// (14:4) {#if title}\nfunction create_if_block_1$9(ctx) {\n\tlet bodytitle;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$a] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(bodytitle, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, title*/ 17) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(bodytitle, detaching);\n\t\t}\n\t};\n}\n\n// (15:8) \nfunction create_default_slot_1$a(ctx) {\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tt = text(/*title*/ ctx[0]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*title*/ 1) set_data(t, /*title*/ ctx[0]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (17:4) {#if details}\nfunction create_if_block$j(ctx) {\n\tlet bodytext;\n\tlet current;\n\n\tbodytext = new BodyText({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$c] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(bodytext.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(bodytext, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytext_changes = {};\n\n\t\t\tif (dirty & /*$$scope, details*/ 18) {\n\t\t\t\tbodytext_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytext.$set(bodytext_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytext.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytext.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(bodytext, detaching);\n\t\t}\n\t};\n}\n\n// (18:8) \nfunction create_default_slot$c(ctx) {\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tt = text(/*details*/ ctx[1]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*details*/ 2) set_data(t, /*details*/ ctx[1]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction create_fragment$x(ctx) {\n\tlet div;\n\tlet t0;\n\tlet t1;\n\tlet current;\n\tlet if_block0 = /*icon*/ ctx[2] && create_if_block_2$9(ctx);\n\tlet if_block1 = /*title*/ ctx[0] && create_if_block_1$9(ctx);\n\tlet if_block2 = /*details*/ ctx[1] && create_if_block$j(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tif (if_block0) if_block0.c();\n\t\t\tt0 = space();\n\t\t\tif (if_block1) if_block1.c();\n\t\t\tt1 = space();\n\t\t\tif (if_block2) if_block2.c();\n\t\t\tattr(div, \"class\", \"svelte-1u0n4gl\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tif (if_block0) if_block0.m(div, null);\n\t\t\tappend(div, t0);\n\t\t\tif (if_block1) if_block1.m(div, null);\n\t\t\tappend(div, t1);\n\t\t\tif (if_block2) if_block2.m(div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*icon*/ ctx[2]) {\n\t\t\t\tif (if_block0) {\n\t\t\t\t\tif_block0.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*icon*/ 4) {\n\t\t\t\t\t\ttransition_in(if_block0, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block0 = create_if_block_2$9(ctx);\n\t\t\t\t\tif_block0.c();\n\t\t\t\t\ttransition_in(if_block0, 1);\n\t\t\t\t\tif_block0.m(div, t0);\n\t\t\t\t}\n\t\t\t} else if (if_block0) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block0, 1, 1, () => {\n\t\t\t\t\tif_block0 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\n\t\t\tif (/*title*/ ctx[0]) {\n\t\t\t\tif (if_block1) {\n\t\t\t\t\tif_block1.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*title*/ 1) {\n\t\t\t\t\t\ttransition_in(if_block1, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block1 = create_if_block_1$9(ctx);\n\t\t\t\t\tif_block1.c();\n\t\t\t\t\ttransition_in(if_block1, 1);\n\t\t\t\t\tif_block1.m(div, t1);\n\t\t\t\t}\n\t\t\t} else if (if_block1) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block1, 1, 1, () => {\n\t\t\t\t\tif_block1 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\n\t\t\tif (/*details*/ ctx[1]) {\n\t\t\t\tif (if_block2) {\n\t\t\t\t\tif_block2.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*details*/ 2) {\n\t\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block2 = create_if_block$j(ctx);\n\t\t\t\t\tif_block2.c();\n\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\tif_block2.m(div, null);\n\t\t\t\t}\n\t\t\t} else if (if_block2) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block2, 1, 1, () => {\n\t\t\t\t\tif_block2 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block0);\n\t\t\ttransition_in(if_block1);\n\t\t\ttransition_in(if_block2);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block0);\n\t\t\ttransition_out(if_block1);\n\t\t\ttransition_out(if_block2);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tif (if_block0) if_block0.d();\n\t\t\tif (if_block1) if_block1.d();\n\t\t\tif (if_block2) if_block2.d();\n\t\t}\n\t};\n}\n\nfunction instance$x($$self, $$props, $$invalidate) {\n\tlet { title = undefined } = $$props;\n\tlet { details = undefined } = $$props;\n\tlet { icon = undefined } = $$props;\n\tlet { iconColor = 'currentColor' } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('title' in $$props) $$invalidate(0, title = $$props.title);\n\t\tif ('details' in $$props) $$invalidate(1, details = $$props.details);\n\t\tif ('icon' in $$props) $$invalidate(2, icon = $$props.icon);\n\t\tif ('iconColor' in $$props) $$invalidate(3, iconColor = $$props.iconColor);\n\t};\n\n\treturn [title, details, icon, iconColor];\n}\n\nclass Message extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\n\t\tinit(\n\t\t\tthis,\n\t\t\toptions,\n\t\t\tinstance$x,\n\t\t\tcreate_fragment$x,\n\t\t\tsafe_not_equal,\n\t\t\t{\n\t\t\t\ttitle: 0,\n\t\t\t\tdetails: 1,\n\t\t\t\ticon: 2,\n\t\t\t\ticonColor: 3\n\t\t\t},\n\t\t\tadd_css$m\n\t\t);\n\t}\n}\n\n/* src/ui/components/ErrorMessage.svelte generated by Svelte v4.2.0 */\n\nfunction create_fragment$w(ctx) {\n\tlet message;\n\tlet current;\n\n\tmessage = new Message({\n\t\t\tprops: {\n\t\t\t\ttitle: /*title*/ ctx[0],\n\t\t\t\tdetails: /*details*/ ctx[1],\n\t\t\t\ticon: \"error\",\n\t\t\t\ticonColor: \"var(--color-error-2)\"\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(message.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(message, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst message_changes = {};\n\t\t\tif (dirty & /*title*/ 1) message_changes.title = /*title*/ ctx[0];\n\t\t\tif (dirty & /*details*/ 2) message_changes.details = /*details*/ ctx[1];\n\t\t\tmessage.$set(message_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(message.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(message.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(message, detaching);\n\t\t}\n\t};\n}\n\nfunction instance$w($$self, $$props, $$invalidate) {\n\tlet { title } = $$props;\n\tlet { details } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('title' in $$props) $$invalidate(0, title = $$props.title);\n\t\tif ('details' in $$props) $$invalidate(1, details = $$props.details);\n\t};\n\n\treturn [title, details];\n}\n\nclass ErrorMessage extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$w, create_fragment$w, safe_not_equal, { title: 0, details: 1 });\n\t}\n}\n\nconst subscriber_queue = [];\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#readable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public.js').StartStopNotifier} [start]\n * @returns {import('./public.js').Readable}\n */\nfunction readable(value, start) {\n\treturn {\n\t\tsubscribe: writable(value, start).subscribe\n\t};\n}\n\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n *\n * https://svelte.dev/docs/svelte-store#writable\n * @template T\n * @param {T} [value] initial value\n * @param {import('./public.js').StartStopNotifier} [start]\n * @returns {import('./public.js').Writable}\n */\nfunction writable(value, start = noop) {\n\t/** @type {import('./public.js').Unsubscriber} */\n\tlet stop;\n\t/** @type {Set>} */\n\tconst subscribers = new Set();\n\t/** @param {T} new_value\n\t * @returns {void}\n\t */\n\tfunction set(new_value) {\n\t\tif (safe_not_equal(value, new_value)) {\n\t\t\tvalue = new_value;\n\t\t\tif (stop) {\n\t\t\t\t// store is ready\n\t\t\t\tconst run_queue = !subscriber_queue.length;\n\t\t\t\tfor (const subscriber of subscribers) {\n\t\t\t\t\tsubscriber[1]();\n\t\t\t\t\tsubscriber_queue.push(subscriber, value);\n\t\t\t\t}\n\t\t\t\tif (run_queue) {\n\t\t\t\t\tfor (let i = 0; i < subscriber_queue.length; i += 2) {\n\t\t\t\t\t\tsubscriber_queue[i][0](subscriber_queue[i + 1]);\n\t\t\t\t\t}\n\t\t\t\t\tsubscriber_queue.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {import('./public.js').Updater} fn\n\t * @returns {void}\n\t */\n\tfunction update(fn) {\n\t\tset(fn(value));\n\t}\n\n\t/**\n\t * @param {import('./public.js').Subscriber} run\n\t * @param {import('./private.js').Invalidator} [invalidate]\n\t * @returns {import('./public.js').Unsubscriber}\n\t */\n\tfunction subscribe(run, invalidate = noop) {\n\t\t/** @type {import('./private.js').SubscribeInvalidateTuple} */\n\t\tconst subscriber = [run, invalidate];\n\t\tsubscribers.add(subscriber);\n\t\tif (subscribers.size === 1) {\n\t\t\tstop = start(set, update) || noop;\n\t\t}\n\t\trun(value);\n\t\treturn () => {\n\t\t\tsubscribers.delete(subscriber);\n\t\t\tif (subscribers.size === 0 && stop) {\n\t\t\t\tstop();\n\t\t\t\tstop = null;\n\t\t\t}\n\t\t};\n\t}\n\treturn { set, update, subscribe };\n}\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores - input stores\n * @param {(values: import('./private.js').StoresValues, set: (value: T) => void, update: (fn: import('./public.js').Updater) => void) => import('./public.js').Unsubscriber | void} fn - function callback that aggregates the values\n * @param {T} [initial_value] - initial value\n * @returns {import('./public.js').Readable}\n */\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * https://svelte.dev/docs/svelte-store#derived\n * @template {import('./private.js').Stores} S\n * @template T\n * @overload\n * @param {S} stores - input stores\n * @param {(values: import('./private.js').StoresValues) => T} fn - function callback that aggregates the values\n * @param {T} [initial_value] - initial value\n * @returns {import('./public.js').Readable}\n */\n\n/**\n * @template {import('./private.js').Stores} S\n * @template T\n * @param {S} stores\n * @param {Function} fn\n * @param {T} [initial_value]\n * @returns {import('./public.js').Readable}\n */\nfunction derived(stores, fn, initial_value) {\n\tconst single = !Array.isArray(stores);\n\t/** @type {Array>} */\n\tconst stores_array = single ? [stores] : stores;\n\tif (!stores_array.every(Boolean)) {\n\t\tthrow new Error('derived() expects stores as input, got a falsy value');\n\t}\n\tconst auto = fn.length < 2;\n\treturn readable(initial_value, (set, update) => {\n\t\tlet started = false;\n\t\tconst values = [];\n\t\tlet pending = 0;\n\t\tlet cleanup = noop;\n\t\tconst sync = () => {\n\t\t\tif (pending) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcleanup();\n\t\t\tconst result = fn(single ? values[0] : values, set, update);\n\t\t\tif (auto) {\n\t\t\t\tset(result);\n\t\t\t} else {\n\t\t\t\tcleanup = is_function(result) ? result : noop;\n\t\t\t}\n\t\t};\n\t\tconst unsubscribers = stores_array.map((store, i) =>\n\t\t\tsubscribe(\n\t\t\t\tstore,\n\t\t\t\t(value) => {\n\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\tpending &= ~(1 << i);\n\t\t\t\t\tif (started) {\n\t\t\t\t\t\tsync();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tpending |= 1 << i;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tstarted = true;\n\t\tsync();\n\t\treturn function stop() {\n\t\t\trun_all(unsubscribers);\n\t\t\tcleanup();\n\t\t\t// We need to set this to false because callbacks can still happen despite having unsubscribed:\n\t\t\t// Callbacks might already be placed in the queue which doesn't know it should no longer\n\t\t\t// invoke this derived store.\n\t\t\tstarted = false;\n\t\t};\n\t});\n}\n\n// Reset data in all stores\nfunction resetState() {\n active.set(false);\n router.set({ ...defaultUserInterfaceRouter });\n props.set({ ...defaultUserInterfaceProps });\n prompt.reset();\n cancelablePromises.set([]);\n transactContext.set(undefined);\n loginContext.set(undefined);\n loginPromise.set(undefined);\n loginResponse.set({ ...defaultLoginResponse });\n accountCreationContext.set(undefined);\n accountCreationPromise.set(undefined);\n accountCreationResponse.set({ ...defaultAccountCreationResponse });\n errorDetails.set(undefined);\n backAction.set(undefined);\n transitionDirection.set(undefined);\n}\n/** Whether or not the interface is active in the browser */\nconst active = writable(false);\n/** Whether or not the settings button should be visable/usable */\nconst allowSettings = writable(false);\nconst defaultUserInterfaceSettings = {\n language: '',\n theme: undefined,\n animations: true,\n};\nfunction makeSettingsStore(data = defaultUserInterfaceSettings) {\n const store = writable(data);\n const { subscribe, set } = store;\n let storage;\n if (typeof localStorage !== 'undefined') {\n storage = new BrowserLocalStorage('web.renderer');\n storage.read('settings').then((existing) => {\n if (existing) {\n set(JSON.parse(existing));\n }\n });\n }\n return {\n subscribe,\n set: (n) => {\n if (storage) {\n storage.write('settings', JSON.stringify(n));\n }\n set(n);\n },\n update: (cb) => {\n const updatedStore = cb(get_store_value(store));\n if (storage) {\n storage.write('settings', JSON.stringify(updatedStore));\n }\n set(updatedStore);\n },\n };\n}\nconst settings$5 = makeSettingsStore();\nconst defaultUserInterfaceProps = {\n title: 'Wharf',\n subtitle: 'Status Message',\n};\nconst props = writable(defaultUserInterfaceProps);\nconst defaultUserInterfaceRouter = {\n path: '',\n history: [],\n};\nconst initRouter = () => {\n const { set, subscribe, update } = writable(defaultUserInterfaceRouter);\n return {\n // Method to go one back in history\n back: () => update((current) => ({\n ...current,\n path: current.history[current.history.length - 1],\n history: current.history.slice(0, -1),\n })),\n // Push a new path on to history\n push: (path) => update((current) => ({\n ...current,\n path,\n history: [...current.history, current.path],\n })),\n set,\n subscribe,\n update,\n };\n};\nconst router = initRouter();\nconst cancelablePromises = writable([]);\nconst transactContext = writable(undefined);\nconst initPrompt = () => {\n const { set, subscribe, update } = writable(undefined);\n return {\n reset: () => set(undefined),\n set,\n subscribe,\n update,\n };\n};\nconst prompt = initPrompt();\nconst defaultLoginResponse = {\n chainId: undefined,\n permissionLevel: undefined,\n walletPluginIndex: undefined,\n};\nconst loginContext = writable(undefined);\nconst loginPromise = writable(undefined);\nconst loginResponse = writable({ ...defaultLoginResponse });\nconst defaultAccountCreationResponse = {\n chain: undefined,\n pluginId: undefined,\n};\nconst accountCreationContext = writable(undefined);\nconst accountCreationResponse = writable({\n ...defaultAccountCreationResponse,\n});\nconst accountCreationPromise = writable(undefined);\nconst errorDetails = writable(undefined);\nconst backAction = writable(undefined);\nconst transitionDirection = writable(undefined);\n\n/* src/ui/Error.svelte generated by Svelte v4.2.0 */\n\nfunction create_if_block$i(ctx) {\n\tlet errormessage;\n\tlet current;\n\n\terrormessage = new ErrorMessage({\n\t\t\tprops: {\n\t\t\t\ttitle: /*$t*/ ctx[1]('error.title', { default: 'Error' }),\n\t\t\t\tdetails: /*$errorDetails*/ ctx[0]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(errormessage.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(errormessage, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst errormessage_changes = {};\n\t\t\tif (dirty & /*$t*/ 2) errormessage_changes.title = /*$t*/ ctx[1]('error.title', { default: 'Error' });\n\t\t\tif (dirty & /*$errorDetails*/ 1) errormessage_changes.details = /*$errorDetails*/ ctx[0];\n\t\t\terrormessage.$set(errormessage_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(errormessage.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(errormessage.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(errormessage, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$v(ctx) {\n\tlet div;\n\tlet current;\n\tlet if_block = /*$errorDetails*/ ctx[0] && create_if_block$i(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tif (if_block) if_block.c();\n\t\t\tattr(div, \"class\", \"error\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tif (if_block) if_block.m(div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*$errorDetails*/ ctx[0]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*$errorDetails*/ 1) {\n\t\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$i(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(div, null);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block, 1, 1, () => {\n\t\t\t\t\tif_block = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d();\n\t\t}\n\t};\n}\n\nfunction instance$v($$self, $$props, $$invalidate) {\n\tlet $errorDetails;\n\tlet $t;\n\tcomponent_subscribe($$self, errorDetails, $$value => $$invalidate(0, $errorDetails = $$value));\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(1, $t = value));\n\treturn [$errorDetails, $t, t];\n}\n\nclass Error$1 extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$v, create_fragment$v, safe_not_equal, {});\n\t}\n}\n\n/* src/ui/components/List.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$l(target) {\n\tappend_styles(target, \"svelte-1q25md2\", \"ul.svelte-1q25md2{list-style:none;padding:0;margin:0}\");\n}\n\nfunction create_fragment$u(ctx) {\n\tlet ul;\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[1].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[0], null);\n\n\treturn {\n\t\tc() {\n\t\t\tul = element(\"ul\");\n\t\t\tif (default_slot) default_slot.c();\n\t\t\tattr(ul, \"class\", \"svelte-1q25md2\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, ul, anchor);\n\n\t\t\tif (default_slot) {\n\t\t\t\tdefault_slot.m(ul, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 1)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[0],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[0])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[0], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(ul);\n\t\t\t}\n\n\t\t\tif (default_slot) default_slot.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$u($$self, $$props, $$invalidate) {\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('$$scope' in $$props) $$invalidate(0, $$scope = $$props.$$scope);\n\t};\n\n\treturn [$$scope, slots];\n}\n\nclass List extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$u, create_fragment$u, safe_not_equal, {}, add_css$l);\n\t}\n}\n\n/* src/ui/components/ListItem.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$k(target) {\n\tappend_styles(target, \"svelte-1w5zc52\", \"li.svelte-1w5zc52.svelte-1w5zc52{display:flex;height:calc(var(--space-l) * 2);align-items:center;color:var(--body-text-color);font-size:var(--fs-1);font-weight:500}li.svelte-1w5zc52.svelte-1w5zc52:not(:last-child){border-bottom:1px solid var(--list-divider-color)}button.svelte-1w5zc52.svelte-1w5zc52,a.svelte-1w5zc52.svelte-1w5zc52{flex:1;height:100%;display:flex;align-items:center;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit;font-family:inherit;font-weight:inherit;margin:0;padding:0;padding-inline-start:var(--space-3xs);text-decoration:none}.leading.svelte-1w5zc52.svelte-1w5zc52{inline-size:var(--space-xl);block-size:var(--space-xl);display:grid;place-content:center}.leading.svelte-1w5zc52>.svelte-1w5zc52{max-inline-size:30px;max-block-size:30px}.leading.svelte-1w5zc52 img.svelte-1w5zc52{width:100%;height:100%;object-fit:contain}.trailing.svelte-1w5zc52.svelte-1w5zc52{opacity:0.2;padding-inline-end:var(--space-s)}li.svelte-1w5zc52.svelte-1w5zc52:hover{background:var(--list-item-background-color-hover)}li.svelte-1w5zc52:hover .trailing.svelte-1w5zc52{opacity:1}.label.svelte-1w5zc52.svelte-1w5zc52{flex:1;text-align:start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-inline-start:var(--space-xs)}.value.svelte-1w5zc52.svelte-1w5zc52{font-weight:400;padding-inline-end:var(--space-xs)}\");\n}\n\n// (39:8) {:else}\nfunction create_else_block$5(ctx) {\n\tlet a;\n\tlet div;\n\tlet current_block_type_index;\n\tlet if_block0;\n\tlet t0;\n\tlet span;\n\tlet t1;\n\tlet t2;\n\tlet t3;\n\tlet current;\n\tconst if_block_creators = [create_if_block_7, create_if_block_8];\n\tconst if_blocks = [];\n\n\tfunction select_block_type_2(ctx, dirty) {\n\t\tif (/*logo*/ ctx[4]) return 0;\n\t\tif (/*leadingIcon*/ ctx[2]) return 1;\n\t\treturn -1;\n\t}\n\n\tif (~(current_block_type_index = select_block_type_2(ctx))) {\n\t\tif_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t}\n\n\tlet if_block1 = /*value*/ ctx[5] && create_if_block_6$1(ctx);\n\tlet if_block2 = /*trailingIcon*/ ctx[3] && create_if_block_5$1(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\ta = element(\"a\");\n\t\t\tdiv = element(\"div\");\n\t\t\tif (if_block0) if_block0.c();\n\t\t\tt0 = space();\n\t\t\tspan = element(\"span\");\n\t\t\tt1 = text(/*label*/ ctx[0]);\n\t\t\tt2 = space();\n\t\t\tif (if_block1) if_block1.c();\n\t\t\tt3 = space();\n\t\t\tif (if_block2) if_block2.c();\n\t\t\tattr(div, \"class\", \"leading svelte-1w5zc52\");\n\t\t\tattr(span, \"class\", \"label svelte-1w5zc52\");\n\t\t\tattr(a, \"href\", /*link*/ ctx[6]);\n\t\t\tattr(a, \"target\", \"_blank\");\n\t\t\tattr(a, \"rel\", \"noreferrer\");\n\t\t\tattr(a, \"class\", \"svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, a, anchor);\n\t\t\tappend(a, div);\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].m(div, null);\n\t\t\t}\n\n\t\t\tappend(a, t0);\n\t\t\tappend(a, span);\n\t\t\tappend(span, t1);\n\t\t\tappend(a, t2);\n\t\t\tif (if_block1) if_block1.m(a, null);\n\t\t\tappend(a, t3);\n\t\t\tif (if_block2) if_block2.m(a, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type_2(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (if_block0) {\n\t\t\t\t\tgroup_outros();\n\n\t\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t\t});\n\n\t\t\t\t\tcheck_outros();\n\t\t\t\t}\n\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_block0 = if_blocks[current_block_type_index];\n\n\t\t\t\t\tif (!if_block0) {\n\t\t\t\t\t\tif_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\t\tif_block0.c();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif_block0.p(ctx, dirty);\n\t\t\t\t\t}\n\n\t\t\t\t\ttransition_in(if_block0, 1);\n\t\t\t\t\tif_block0.m(div, null);\n\t\t\t\t} else {\n\t\t\t\t\tif_block0 = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*label*/ 1) set_data(t1, /*label*/ ctx[0]);\n\n\t\t\tif (/*value*/ ctx[5]) {\n\t\t\t\tif (if_block1) {\n\t\t\t\t\tif_block1.p(ctx, dirty);\n\t\t\t\t} else {\n\t\t\t\t\tif_block1 = create_if_block_6$1(ctx);\n\t\t\t\t\tif_block1.c();\n\t\t\t\t\tif_block1.m(a, t3);\n\t\t\t\t}\n\t\t\t} else if (if_block1) {\n\t\t\t\tif_block1.d(1);\n\t\t\t\tif_block1 = null;\n\t\t\t}\n\n\t\t\tif (/*trailingIcon*/ ctx[3]) {\n\t\t\t\tif (if_block2) {\n\t\t\t\t\tif_block2.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*trailingIcon*/ 8) {\n\t\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block2 = create_if_block_5$1(ctx);\n\t\t\t\t\tif_block2.c();\n\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\tif_block2.m(a, null);\n\t\t\t\t}\n\t\t\t} else if (if_block2) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block2, 1, 1, () => {\n\t\t\t\t\tif_block2 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*link*/ 64) {\n\t\t\t\tattr(a, \"href\", /*link*/ ctx[6]);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block0);\n\t\t\ttransition_in(if_block2);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block0);\n\t\t\ttransition_out(if_block2);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(a);\n\t\t\t}\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].d();\n\t\t\t}\n\n\t\t\tif (if_block1) if_block1.d();\n\t\t\tif (if_block2) if_block2.d();\n\t\t}\n\t};\n}\n\n// (13:8) {#if !link}\nfunction create_if_block$h(ctx) {\n\tlet button;\n\tlet div;\n\tlet current_block_type_index;\n\tlet if_block0;\n\tlet t0;\n\tlet span;\n\tlet t1;\n\tlet t2;\n\tlet t3;\n\tlet current;\n\tlet mounted;\n\tlet dispose;\n\tconst if_block_creators = [create_if_block_3$6, create_if_block_4$5];\n\tconst if_blocks = [];\n\n\tfunction select_block_type_1(ctx, dirty) {\n\t\tif (/*logo*/ ctx[4]) return 0;\n\t\tif (/*leadingIcon*/ ctx[2]) return 1;\n\t\treturn -1;\n\t}\n\n\tif (~(current_block_type_index = select_block_type_1(ctx))) {\n\t\tif_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t}\n\n\tlet if_block1 = /*value*/ ctx[5] && create_if_block_2$8(ctx);\n\tlet if_block2 = /*trailingIcon*/ ctx[3] && create_if_block_1$8(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tbutton = element(\"button\");\n\t\t\tdiv = element(\"div\");\n\t\t\tif (if_block0) if_block0.c();\n\t\t\tt0 = space();\n\t\t\tspan = element(\"span\");\n\t\t\tt1 = text(/*label*/ ctx[0]);\n\t\t\tt2 = space();\n\t\t\tif (if_block1) if_block1.c();\n\t\t\tt3 = space();\n\t\t\tif (if_block2) if_block2.c();\n\t\t\tattr(div, \"class\", \"leading svelte-1w5zc52\");\n\t\t\tattr(span, \"class\", \"label svelte-1w5zc52\");\n\t\t\tattr(button, \"class\", \"svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, button, anchor);\n\t\t\tappend(button, div);\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].m(div, null);\n\t\t\t}\n\n\t\t\tappend(button, t0);\n\t\t\tappend(button, span);\n\t\t\tappend(span, t1);\n\t\t\tappend(button, t2);\n\t\t\tif (if_block1) if_block1.m(button, null);\n\t\t\tappend(button, t3);\n\t\t\tif (if_block2) if_block2.m(button, null);\n\t\t\tcurrent = true;\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(button, \"click\", function () {\n\t\t\t\t\tif (is_function(/*onClick*/ ctx[1])) /*onClick*/ ctx[1].apply(this, arguments);\n\t\t\t\t});\n\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type_1(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (if_block0) {\n\t\t\t\t\tgroup_outros();\n\n\t\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t\t});\n\n\t\t\t\t\tcheck_outros();\n\t\t\t\t}\n\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_block0 = if_blocks[current_block_type_index];\n\n\t\t\t\t\tif (!if_block0) {\n\t\t\t\t\t\tif_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\t\tif_block0.c();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif_block0.p(ctx, dirty);\n\t\t\t\t\t}\n\n\t\t\t\t\ttransition_in(if_block0, 1);\n\t\t\t\t\tif_block0.m(div, null);\n\t\t\t\t} else {\n\t\t\t\t\tif_block0 = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*label*/ 1) set_data(t1, /*label*/ ctx[0]);\n\n\t\t\tif (/*value*/ ctx[5]) {\n\t\t\t\tif (if_block1) {\n\t\t\t\t\tif_block1.p(ctx, dirty);\n\t\t\t\t} else {\n\t\t\t\t\tif_block1 = create_if_block_2$8(ctx);\n\t\t\t\t\tif_block1.c();\n\t\t\t\t\tif_block1.m(button, t3);\n\t\t\t\t}\n\t\t\t} else if (if_block1) {\n\t\t\t\tif_block1.d(1);\n\t\t\t\tif_block1 = null;\n\t\t\t}\n\n\t\t\tif (/*trailingIcon*/ ctx[3]) {\n\t\t\t\tif (if_block2) {\n\t\t\t\t\tif_block2.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*trailingIcon*/ 8) {\n\t\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block2 = create_if_block_1$8(ctx);\n\t\t\t\t\tif_block2.c();\n\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\tif_block2.m(button, null);\n\t\t\t\t}\n\t\t\t} else if (if_block2) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block2, 1, 1, () => {\n\t\t\t\t\tif_block2 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block0);\n\t\t\ttransition_in(if_block2);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block0);\n\t\t\ttransition_out(if_block2);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(button);\n\t\t\t}\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].d();\n\t\t\t}\n\n\t\t\tif (if_block1) if_block1.d();\n\t\t\tif (if_block2) if_block2.d();\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\n// (46:42) \nfunction create_if_block_8(ctx) {\n\tlet div;\n\tlet icon;\n\tlet current;\n\ticon = new Icon({ props: { name: /*leadingIcon*/ ctx[2] } });\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tattr(div, \"class\", \"icon svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tmount_component(icon, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst icon_changes = {};\n\t\t\tif (dirty & /*leadingIcon*/ 4) icon_changes.name = /*leadingIcon*/ ctx[2];\n\t\t\ticon.$set(icon_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tdestroy_component(icon);\n\t\t}\n\t};\n}\n\n// (42:20) {#if logo}\nfunction create_if_block_7(ctx) {\n\tlet div;\n\tlet img;\n\tlet img_src_value;\n\tlet img_alt_value;\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\timg = element(\"img\");\n\t\t\tif (!src_url_equal(img.src, img_src_value = /*logo*/ ctx[4])) attr(img, \"src\", img_src_value);\n\t\t\tattr(img, \"alt\", img_alt_value = `${/*label*/ ctx[0]} logo`);\n\t\t\tattr(img, \"class\", \"svelte-1w5zc52\");\n\t\t\tattr(div, \"class\", \"logo svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tappend(div, img);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*logo*/ 16 && !src_url_equal(img.src, img_src_value = /*logo*/ ctx[4])) {\n\t\t\t\tattr(img, \"src\", img_src_value);\n\t\t\t}\n\n\t\t\tif (dirty & /*label*/ 1 && img_alt_value !== (img_alt_value = `${/*label*/ ctx[0]} logo`)) {\n\t\t\t\tattr(img, \"alt\", img_alt_value);\n\t\t\t}\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (55:16) {#if value}\nfunction create_if_block_6$1(ctx) {\n\tlet span;\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tspan = element(\"span\");\n\t\t\tt = text(/*value*/ ctx[5]);\n\t\t\tattr(span, \"class\", \"value svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, span, anchor);\n\t\t\tappend(span, t);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*value*/ 32) set_data(t, /*value*/ ctx[5]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(span);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (59:16) {#if trailingIcon}\nfunction create_if_block_5$1(ctx) {\n\tlet div;\n\tlet icon;\n\tlet current;\n\ticon = new Icon({ props: { name: /*trailingIcon*/ ctx[3] } });\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tattr(div, \"class\", \"trailing svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tmount_component(icon, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst icon_changes = {};\n\t\t\tif (dirty & /*trailingIcon*/ 8) icon_changes.name = /*trailingIcon*/ ctx[3];\n\t\t\ticon.$set(icon_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tdestroy_component(icon);\n\t\t}\n\t};\n}\n\n// (20:42) \nfunction create_if_block_4$5(ctx) {\n\tlet div;\n\tlet icon;\n\tlet current;\n\ticon = new Icon({ props: { name: /*leadingIcon*/ ctx[2] } });\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tattr(div, \"class\", \"icon svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tmount_component(icon, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst icon_changes = {};\n\t\t\tif (dirty & /*leadingIcon*/ 4) icon_changes.name = /*leadingIcon*/ ctx[2];\n\t\t\ticon.$set(icon_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tdestroy_component(icon);\n\t\t}\n\t};\n}\n\n// (16:20) {#if logo}\nfunction create_if_block_3$6(ctx) {\n\tlet div;\n\tlet img;\n\tlet img_src_value;\n\tlet img_alt_value;\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\timg = element(\"img\");\n\t\t\tif (!src_url_equal(img.src, img_src_value = /*logo*/ ctx[4])) attr(img, \"src\", img_src_value);\n\t\t\tattr(img, \"alt\", img_alt_value = `${/*label*/ ctx[0]} logo`);\n\t\t\tattr(img, \"class\", \"svelte-1w5zc52\");\n\t\t\tattr(div, \"class\", \"logo svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tappend(div, img);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*logo*/ 16 && !src_url_equal(img.src, img_src_value = /*logo*/ ctx[4])) {\n\t\t\t\tattr(img, \"src\", img_src_value);\n\t\t\t}\n\n\t\t\tif (dirty & /*label*/ 1 && img_alt_value !== (img_alt_value = `${/*label*/ ctx[0]} logo`)) {\n\t\t\t\tattr(img, \"alt\", img_alt_value);\n\t\t\t}\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (29:16) {#if value}\nfunction create_if_block_2$8(ctx) {\n\tlet span;\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tspan = element(\"span\");\n\t\t\tt = text(/*value*/ ctx[5]);\n\t\t\tattr(span, \"class\", \"value svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, span, anchor);\n\t\t\tappend(span, t);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*value*/ 32) set_data(t, /*value*/ ctx[5]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(span);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (33:16) {#if trailingIcon}\nfunction create_if_block_1$8(ctx) {\n\tlet div;\n\tlet icon;\n\tlet current;\n\ticon = new Icon({ props: { name: /*trailingIcon*/ ctx[3] } });\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tattr(div, \"class\", \"trailing svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tmount_component(icon, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst icon_changes = {};\n\t\t\tif (dirty & /*trailingIcon*/ 8) icon_changes.name = /*trailingIcon*/ ctx[3];\n\t\t\ticon.$set(icon_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tdestroy_component(icon);\n\t\t}\n\t};\n}\n\n// (12:10) \nfunction fallback_block$2(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\tconst if_block_creators = [create_if_block$h, create_else_block$5];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (!/*link*/ ctx[6]) return 0;\n\t\treturn 1;\n\t}\n\n\tcurrent_block_type_index = select_block_type(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t} else {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\tif (!if_block) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t} else {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t}\n\n\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$t(ctx) {\n\tlet li;\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[8].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[7], null);\n\tconst default_slot_or_fallback = default_slot || fallback_block$2(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tli = element(\"li\");\n\t\t\tif (default_slot_or_fallback) default_slot_or_fallback.c();\n\t\t\tattr(li, \"class\", \"svelte-1w5zc52\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, li, anchor);\n\n\t\t\tif (default_slot_or_fallback) {\n\t\t\t\tdefault_slot_or_fallback.m(li, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 128)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[7],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[7])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[7], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (default_slot_or_fallback && default_slot_or_fallback.p && (!current || dirty & /*onClick, trailingIcon, value, label, logo, leadingIcon, link*/ 127)) {\n\t\t\t\t\tdefault_slot_or_fallback.p(ctx, !current ? -1 : dirty);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot_or_fallback, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot_or_fallback, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(li);\n\t\t\t}\n\n\t\t\tif (default_slot_or_fallback) default_slot_or_fallback.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$t($$self, $$props, $$invalidate) {\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\tlet { label = undefined } = $$props;\n\n\tlet { onClick = () => {\n\t\t\n\t} } = $$props;\n\n\tlet { leadingIcon = undefined } = $$props;\n\tlet { trailingIcon = 'chevron-right' } = $$props;\n\tlet { logo = undefined } = $$props;\n\tlet { value = undefined } = $$props;\n\tlet { link = undefined } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('label' in $$props) $$invalidate(0, label = $$props.label);\n\t\tif ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick);\n\t\tif ('leadingIcon' in $$props) $$invalidate(2, leadingIcon = $$props.leadingIcon);\n\t\tif ('trailingIcon' in $$props) $$invalidate(3, trailingIcon = $$props.trailingIcon);\n\t\tif ('logo' in $$props) $$invalidate(4, logo = $$props.logo);\n\t\tif ('value' in $$props) $$invalidate(5, value = $$props.value);\n\t\tif ('link' in $$props) $$invalidate(6, link = $$props.link);\n\t\tif ('$$scope' in $$props) $$invalidate(7, $$scope = $$props.$$scope);\n\t};\n\n\treturn [label, onClick, leadingIcon, trailingIcon, logo, value, link, $$scope, slots];\n}\n\nclass ListItem extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\n\t\tinit(\n\t\t\tthis,\n\t\t\toptions,\n\t\t\tinstance$t,\n\t\t\tcreate_fragment$t,\n\t\t\tsafe_not_equal,\n\t\t\t{\n\t\t\t\tlabel: 0,\n\t\t\t\tonClick: 1,\n\t\t\t\tleadingIcon: 2,\n\t\t\t\ttrailingIcon: 3,\n\t\t\t\tlogo: 4,\n\t\t\t\tvalue: 5,\n\t\t\t\tlink: 6\n\t\t\t},\n\t\t\tadd_css$k\n\t\t);\n\t}\n}\n\nfunction isUrlImage(str) {\n return str.startsWith('http://') || str.startsWith('https://');\n}\nfunction isBase64Image(str) {\n return str.startsWith('data:image/');\n}\nfunction isValidIcon(str) {\n return str in icons;\n}\n// Returns a themed logo based on the wallet metadata and the current color scheme preference\nfunction getThemedLogo(metadata) {\n const { name, logo } = metadata;\n let { theme } = get_store_value(settings$5);\n const oppositeTheme = theme === 'light' ? 'dark' : 'light';\n if (!theme) {\n // if no theme is set, use the system preference for logo\n window.matchMedia('(prefers-color-scheme: dark)').matches\n ? (theme = 'dark')\n : (theme = 'light');\n }\n if (!logo) {\n if ('getLogo' in metadata) {\n return metadata.getLogo()?.[theme] ?? metadata.getLogo()?.[oppositeTheme];\n }\n console.warn(`${name} does not have a logo.`);\n return;\n }\n const image = logo[theme] ?? logo[oppositeTheme];\n if (!isUrlImage(image.toString()) && !isBase64Image(image.toString())) {\n console.warn(`${name} ${theme} logo is not a supported image format.`);\n return;\n }\n return image;\n}\n\n/* src/ui/login/Blockchain.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$j(target) {\n\tappend_styles(target, \"svelte-1d8fcdl\", \"section.svelte-1d8fcdl{display:flex;flex-direction:column;gap:var(--space-s)}\");\n}\n\nfunction get_each_context$5(ctx, list, i) {\n\tconst child_ctx = ctx.slice();\n\tchild_ctx[4] = list[i];\n\treturn child_ctx;\n}\n\n// (11:0) {#if chains}\nfunction create_if_block$g(ctx) {\n\tlet section;\n\tlet bodytitle;\n\tlet t;\n\tlet list;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$9] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tlist = new List({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$b] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tsection = element(\"section\");\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt = space();\n\t\t\tcreate_component(list.$$.fragment);\n\t\t\tattr(section, \"class\", \"svelte-1d8fcdl\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, section, anchor);\n\t\t\tmount_component(bodytitle, section, null);\n\t\t\tappend(section, t);\n\t\t\tmount_component(list, section, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, title*/ 130) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst list_changes = {};\n\n\t\t\tif (dirty & /*$$scope, chains*/ 129) {\n\t\t\t\tlist_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tlist.$set(list_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(list.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(list.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(section);\n\t\t\t}\n\n\t\t\tdestroy_component(bodytitle);\n\t\t\tdestroy_component(list);\n\t\t}\n\t};\n}\n\n// (13:8) \nfunction create_default_slot_1$9(ctx) {\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tt = text(/*title*/ ctx[1]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*title*/ 2) set_data(t, /*title*/ ctx[1]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (15:12) {#each chains as chain}\nfunction create_each_block$5(ctx) {\n\tlet listitem;\n\tlet current;\n\n\tfunction func() {\n\t\treturn /*func*/ ctx[3](/*chain*/ ctx[4]);\n\t}\n\n\tlistitem = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*chain*/ ctx[4].name,\n\t\t\t\tonClick: func,\n\t\t\t\tleadingIcon: \"wharf\",\n\t\t\t\tlogo: getThemedLogo(/*chain*/ ctx[4])\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(listitem.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(listitem, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\t\t\tconst listitem_changes = {};\n\t\t\tif (dirty & /*chains*/ 1) listitem_changes.label = /*chain*/ ctx[4].name;\n\t\t\tif (dirty & /*chains*/ 1) listitem_changes.onClick = func;\n\t\t\tif (dirty & /*chains*/ 1) listitem_changes.logo = getThemedLogo(/*chain*/ ctx[4]);\n\t\t\tlistitem.$set(listitem_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(listitem.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(listitem.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(listitem, detaching);\n\t\t}\n\t};\n}\n\n// (14:8) \nfunction create_default_slot$b(ctx) {\n\tlet each_1_anchor;\n\tlet current;\n\tlet each_value = ensure_array_like(/*chains*/ ctx[0]);\n\tlet each_blocks = [];\n\n\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\teach_blocks[i] = create_each_block$5(get_each_context$5(ctx, each_value, i));\n\t}\n\n\tconst out = i => transition_out(each_blocks[i], 1, 1, () => {\n\t\teach_blocks[i] = null;\n\t});\n\n\treturn {\n\t\tc() {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\teach_blocks[i].c();\n\t\t\t}\n\n\t\t\teach_1_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\teach_blocks[i].m(target, anchor);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinsert(target, each_1_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*chains, dispatch*/ 5) {\n\t\t\t\teach_value = ensure_array_like(/*chains*/ ctx[0]);\n\t\t\t\tlet i;\n\n\t\t\t\tfor (i = 0; i < each_value.length; i += 1) {\n\t\t\t\t\tconst child_ctx = get_each_context$5(ctx, each_value, i);\n\n\t\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\t\teach_blocks[i].p(child_ctx, dirty);\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teach_blocks[i] = create_each_block$5(child_ctx);\n\t\t\t\t\t\teach_blocks[i].c();\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t\teach_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_outros();\n\n\t\t\t\tfor (i = each_value.length; i < each_blocks.length; i += 1) {\n\t\t\t\t\tout(i);\n\t\t\t\t}\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\n\t\t\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\t\t\ttransition_in(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\teach_blocks = each_blocks.filter(Boolean);\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\ttransition_out(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(each_1_anchor);\n\t\t\t}\n\n\t\t\tdestroy_each(each_blocks, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$s(ctx) {\n\tlet if_block_anchor;\n\tlet current;\n\tlet if_block = /*chains*/ ctx[0] && create_if_block$g(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (if_block) if_block.m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*chains*/ ctx[0]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*chains*/ 1) {\n\t\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$g(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block, 1, 1, () => {\n\t\t\t\t\tif_block = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$s($$self, $$props, $$invalidate) {\n\tlet { chains } = $$props;\n\tlet { title } = $$props;\n\tconst dispatch = createEventDispatcher();\n\tconst func = chain => dispatch('select', chain.id);\n\n\t$$self.$$set = $$props => {\n\t\tif ('chains' in $$props) $$invalidate(0, chains = $$props.chains);\n\t\tif ('title' in $$props) $$invalidate(1, title = $$props.title);\n\t};\n\n\treturn [chains, title, dispatch, func];\n}\n\nclass Blockchain extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$s, create_fragment$s, safe_not_equal, { chains: 0, title: 1 }, add_css$j);\n\t}\n}\n\n/* src/ui/components/Button.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$i(target) {\n\tappend_styles(target, \"svelte-hwtk1p\", \".button.svelte-hwtk1p{--button-height:var(--space-2xl);cursor:pointer;display:flex;justify-content:center;align-items:center;gap:var(--space-2xs);height:var(--button-height);line-height:var(--button-height);text-decoration:none;text-align:center;border-radius:var(--border-radius-inner);font-size:var(--fs-1);font-weight:600;color:var(--button-color, var(--button-text-color));background:var(--button-background, var(--button-primary-background));border:none;box-shadow:var(--button-outline);flex:1}.button.svelte-hwtk1p:hover{background:var(--button-background-hover, var(--button-primary-background-hover));box-shadow:var(--button-outline-hover, var(--button-primary-outline-hover))}.button.svelte-hwtk1p:active{background:var(--button-background-active, var(--button-primary-background-active));box-shadow:var(--button-outline-active);color:var(--button-text-color-active)}.secondary.svelte-hwtk1p{--button-background:var(--button-secondary-background);--button-background-hover:var(--button-secondary-background-hover);--button-background-active:var(--button-secondary-background-active);--button-outline-hover:var(--button-secondary-outline-hover)}.outlined.svelte-hwtk1p{--button-background:transparent;--button-background-hover:transparent;--button-background-active:var(--button-outlined-background-active);--button-outline:var(--button-outlined-outline);--button-outline-hover:var(--button-outlined-outline-hover)}\");\n}\n\n// (7:4) {#if icon}\nfunction create_if_block$f(ctx) {\n\tlet icon_1;\n\tlet current;\n\ticon_1 = new Icon({ props: { name: /*icon*/ ctx[1] } });\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(icon_1.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(icon_1, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon_1.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon_1.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(icon_1, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$r(ctx) {\n\tlet button;\n\tlet t0;\n\tlet span;\n\tlet current;\n\tlet mounted;\n\tlet dispose;\n\tlet if_block = /*icon*/ ctx[1] && create_if_block$f(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tbutton = element(\"button\");\n\t\t\tif (if_block) if_block.c();\n\t\t\tt0 = space();\n\t\t\tspan = element(\"span\");\n\t\t\tspan.textContent = `${/*label*/ ctx[0]}`;\n\t\t\tattr(button, \"class\", \"button \" + /*variant*/ ctx[3] + \" svelte-hwtk1p\");\n\t\t\tbutton.autofocus = /*autofocus*/ ctx[4];\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, button, anchor);\n\t\t\tif (if_block) if_block.m(button, null);\n\t\t\tappend(button, t0);\n\t\t\tappend(button, span);\n\t\t\tcurrent = true;\n\t\t\tif (/*autofocus*/ ctx[4]) button.focus();\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(button, \"click\", /*onClick*/ ctx[2]);\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*icon*/ ctx[1]) if_block.p(ctx, dirty);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(button);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d();\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\nfunction instance$r($$self, $$props, $$invalidate) {\n\tlet { data } = $$props;\n\tconst { label, icon, onClick, variant = 'primary', autofocus } = data;\n\n\t$$self.$$set = $$props => {\n\t\tif ('data' in $$props) $$invalidate(5, data = $$props.data);\n\t};\n\n\treturn [label, icon, onClick, variant, autofocus, data];\n}\n\nclass Button extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$r, create_fragment$r, safe_not_equal, { data: 5 }, add_css$i);\n\t}\n}\n\n/* src/ui/components/TextInput.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$h(target) {\n\tappend_styles(target, \"svelte-3b7p6\", \"input.svelte-3b7p6{box-sizing:border-box;height:var(--space-2xl);border-radius:var(--border-radius-inner);border:1px solid var(--input-border-color);padding-inline:var(--space-m);color:var(--body-text-color);background-color:var(--body-background-color);font-size:var(--fs-1)}input.svelte-3b7p6::placeholder{font-size:var(--fs-1);color:var(--input-placeholder-color);font-style:italic}input.svelte-3b7p6:hover{border:1px solid transparent;outline:2px solid var(--input-border-color-hover);background-color:var(--input-background-focus)}input.svelte-3b7p6:focus-within{border:1px solid transparent;outline:2px solid var(--input-border-color-focus);background-color:var(--input-background-focus)}input.error.svelte-3b7p6{border:1px solid var(--error-color);color:var(--error-color)}input.error.svelte-3b7p6:focus-within{border:1px solid transparent;color:var(--body-text-color)}\");\n}\n\nfunction create_fragment$q(ctx) {\n\tlet input;\n\tlet mounted;\n\tlet dispose;\n\n\treturn {\n\t\tc() {\n\t\t\tinput = element(\"input\");\n\t\t\tinput.autofocus = /*autofocus*/ ctx[3];\n\t\t\tattr(input, \"type\", \"text\");\n\t\t\tattr(input, \"placeholder\", /*placeholder*/ ctx[1]);\n\t\t\tattr(input, \"class\", \"svelte-3b7p6\");\n\t\t\ttoggle_class(input, \"error\", /*error*/ ctx[4]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, input, anchor);\n\t\t\tset_input_value(input, /*value*/ ctx[0]);\n\t\t\tif (/*autofocus*/ ctx[3]) input.focus();\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = [\n\t\t\t\t\tlisten(input, \"keyup\", prevent_default(function () {\n\t\t\t\t\t\tif (is_function(/*onKeyup*/ ctx[2])) /*onKeyup*/ ctx[2].apply(this, arguments);\n\t\t\t\t\t})),\n\t\t\t\t\tlisten(input, \"input\", /*input_input_handler*/ ctx[5])\n\t\t\t\t];\n\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(new_ctx, [dirty]) {\n\t\t\tctx = new_ctx;\n\n\t\t\tif (dirty & /*autofocus*/ 8) {\n\t\t\t\tinput.autofocus = /*autofocus*/ ctx[3];\n\t\t\t}\n\n\t\t\tif (dirty & /*placeholder*/ 2) {\n\t\t\t\tattr(input, \"placeholder\", /*placeholder*/ ctx[1]);\n\t\t\t}\n\n\t\t\tif (dirty & /*value*/ 1 && input.value !== /*value*/ ctx[0]) {\n\t\t\t\tset_input_value(input, /*value*/ ctx[0]);\n\t\t\t}\n\n\t\t\tif (dirty & /*error*/ 16) {\n\t\t\t\ttoggle_class(input, \"error\", /*error*/ ctx[4]);\n\t\t\t}\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(input);\n\t\t\t}\n\n\t\t\tmounted = false;\n\t\t\trun_all(dispose);\n\t\t}\n\t};\n}\n\nfunction instance$q($$self, $$props, $$invalidate) {\n\tlet { value } = $$props;\n\tlet { placeholder } = $$props;\n\tlet { onKeyup } = $$props;\n\tlet { autofocus = false } = $$props;\n\tlet { error = false } = $$props;\n\n\tfunction input_input_handler() {\n\t\tvalue = this.value;\n\t\t$$invalidate(0, value);\n\t}\n\n\t$$self.$$set = $$props => {\n\t\tif ('value' in $$props) $$invalidate(0, value = $$props.value);\n\t\tif ('placeholder' in $$props) $$invalidate(1, placeholder = $$props.placeholder);\n\t\tif ('onKeyup' in $$props) $$invalidate(2, onKeyup = $$props.onKeyup);\n\t\tif ('autofocus' in $$props) $$invalidate(3, autofocus = $$props.autofocus);\n\t\tif ('error' in $$props) $$invalidate(4, error = $$props.error);\n\t};\n\n\treturn [value, placeholder, onKeyup, autofocus, error, input_input_handler];\n}\n\nclass TextInput extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\n\t\tinit(\n\t\t\tthis,\n\t\t\toptions,\n\t\t\tinstance$q,\n\t\t\tcreate_fragment$q,\n\t\t\tsafe_not_equal,\n\t\t\t{\n\t\t\t\tvalue: 0,\n\t\t\t\tplaceholder: 1,\n\t\t\t\tonKeyup: 2,\n\t\t\t\tautofocus: 3,\n\t\t\t\terror: 4\n\t\t\t},\n\t\t\tadd_css$h\n\t\t);\n\t}\n}\n\n/* src/ui/components/WarningMessage.svelte generated by Svelte v4.2.0 */\n\nfunction create_fragment$p(ctx) {\n\tlet message;\n\tlet current;\n\n\tmessage = new Message({\n\t\t\tprops: {\n\t\t\t\ttitle: /*title*/ ctx[0],\n\t\t\t\tdetails: /*details*/ ctx[1],\n\t\t\t\ticon: \"alert\"\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(message.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(message, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst message_changes = {};\n\t\t\tif (dirty & /*title*/ 1) message_changes.title = /*title*/ ctx[0];\n\t\t\tif (dirty & /*details*/ 2) message_changes.details = /*details*/ ctx[1];\n\t\t\tmessage.$set(message_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(message.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(message.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(message, detaching);\n\t\t}\n\t};\n}\n\nfunction instance$p($$self, $$props, $$invalidate) {\n\tlet { title } = $$props;\n\tlet { details } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('title' in $$props) $$invalidate(0, title = $$props.title);\n\t\tif ('details' in $$props) $$invalidate(1, details = $$props.details);\n\t};\n\n\treturn [title, details];\n}\n\nclass WarningMessage extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$p, create_fragment$p, safe_not_equal, { title: 0, details: 1 });\n\t}\n}\n\n/* src/ui/login/Permission.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$g(target) {\n\tappend_styles(target, \"svelte-13p224c\", \"section.svelte-13p224c{display:flex;flex-direction:column;gap:var(--space-s)}p.loading.svelte-13p224c{margin:0;text-align:center;height:var(--space-4xl)}p.error.svelte-13p224c{margin:0;text-align:center;color:var(--error-color)}.input-group.svelte-13p224c{display:flex;flex-direction:column;gap:var(--space-m);margin-top:var(--space-s)}\");\n}\n\nfunction get_each_context$4(ctx, list, i) {\n\tconst child_ctx = ctx.slice();\n\tchild_ctx[19] = list[i];\n\treturn child_ctx;\n}\n\n// (98:27) \nfunction create_if_block_3$5(ctx) {\n\tlet bodytitle;\n\tlet t0;\n\tlet div;\n\tlet textinput;\n\tlet updating_value;\n\tlet t1;\n\tlet t2;\n\tlet button;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_3$2] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tfunction textinput_value_binding(value) {\n\t\t/*textinput_value_binding*/ ctx[18](value);\n\t}\n\n\tlet textinput_props = {\n\t\tonKeyup: /*handleKeyup*/ ctx[13],\n\t\tplaceholder: \"Account name\",\n\t\tautofocus: !/*input*/ ctx[1],\n\t\terror: /*accountNotFound*/ ctx[4] && /*input*/ ctx[1] === /*prevInput*/ ctx[2]\n\t};\n\n\tif (/*input*/ ctx[1] !== void 0) {\n\t\ttextinput_props.value = /*input*/ ctx[1];\n\t}\n\n\ttextinput = new TextInput({ props: textinput_props });\n\tbinding_callbacks.push(() => bind(textinput, 'value', textinput_value_binding));\n\tlet if_block = /*accountNotFound*/ ctx[4] && create_if_block_4$4(ctx);\n\n\tbutton = new Button({\n\t\t\tprops: {\n\t\t\t\tdata: {\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tonClick: /*lookup*/ ctx[12],\n\t\t\t\t\tlabel: /*$t*/ ctx[8]('login.enter.lookup', { default: 'Lookup Account' })\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt0 = space();\n\t\t\tdiv = element(\"div\");\n\t\t\tcreate_component(textinput.$$.fragment);\n\t\t\tt1 = space();\n\t\t\tif (if_block) if_block.c();\n\t\t\tt2 = space();\n\t\t\tcreate_component(button.$$.fragment);\n\t\t\tattr(div, \"class\", \"input-group svelte-13p224c\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(bodytitle, target, anchor);\n\t\t\tinsert(target, t0, anchor);\n\t\t\tinsert(target, div, anchor);\n\t\t\tmount_component(textinput, div, null);\n\t\t\tappend(div, t1);\n\t\t\tif (if_block) if_block.m(div, null);\n\t\t\tappend(div, t2);\n\t\t\tmount_component(button, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, title*/ 4194305) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst textinput_changes = {};\n\t\t\tif (dirty & /*input*/ 2) textinput_changes.autofocus = !/*input*/ ctx[1];\n\t\t\tif (dirty & /*accountNotFound, input, prevInput*/ 22) textinput_changes.error = /*accountNotFound*/ ctx[4] && /*input*/ ctx[1] === /*prevInput*/ ctx[2];\n\n\t\t\tif (!updating_value && dirty & /*input*/ 2) {\n\t\t\t\tupdating_value = true;\n\t\t\t\ttextinput_changes.value = /*input*/ ctx[1];\n\t\t\t\tadd_flush_callback(() => updating_value = false);\n\t\t\t}\n\n\t\t\ttextinput.$set(textinput_changes);\n\n\t\t\tif (/*accountNotFound*/ ctx[4]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block_4$4(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\tif_block.m(div, t2);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tif_block.d(1);\n\t\t\t\tif_block = null;\n\t\t\t}\n\n\t\t\tconst button_changes = {};\n\n\t\t\tif (dirty & /*$t*/ 256) button_changes.data = {\n\t\t\t\tvariant: 'primary',\n\t\t\t\tonClick: /*lookup*/ ctx[12],\n\t\t\t\tlabel: /*$t*/ ctx[8]('login.enter.lookup', { default: 'Lookup Account' })\n\t\t\t};\n\n\t\t\tbutton.$set(button_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(textinput.$$.fragment, local);\n\t\t\ttransition_in(button.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(textinput.$$.fragment, local);\n\t\t\ttransition_out(button.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t0);\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tdestroy_component(bodytitle, detaching);\n\t\t\tdestroy_component(textinput);\n\t\t\tif (if_block) if_block.d();\n\t\t\tdestroy_component(button);\n\t\t}\n\t};\n}\n\n// (89:24) \nfunction create_if_block_2$7(ctx) {\n\tlet bodytitle;\n\tlet t_1;\n\tlet warningmessage;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_2$2] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\twarningmessage = new WarningMessage({\n\t\t\tprops: {\n\t\t\t\ttitle: \"\",\n\t\t\t\tdetails: /*$t*/ ctx[8]('login.select.no_match', {\n\t\t\t\t\tdefault: 'No accounts found matching {{publicKey}}',\n\t\t\t\t\tpublicKey: /*publicKey*/ ctx[6]\n\t\t\t\t})\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt_1 = space();\n\t\t\tcreate_component(warningmessage.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(bodytitle, target, anchor);\n\t\t\tinsert(target, t_1, anchor);\n\t\t\tmount_component(warningmessage, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $t*/ 4194560) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst warningmessage_changes = {};\n\n\t\t\tif (dirty & /*$t, publicKey*/ 320) warningmessage_changes.details = /*$t*/ ctx[8]('login.select.no_match', {\n\t\t\t\tdefault: 'No accounts found matching {{publicKey}}',\n\t\t\t\tpublicKey: /*publicKey*/ ctx[6]\n\t\t\t});\n\n\t\t\twarningmessage.$set(warningmessage_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(warningmessage.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(warningmessage.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\n\t\t\tdestroy_component(bodytitle, detaching);\n\t\t\tdestroy_component(warningmessage, detaching);\n\t\t}\n\t};\n}\n\n// (79:52) \nfunction create_if_block_1$7(ctx) {\n\tlet bodytitle;\n\tlet t_1;\n\tlet list;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$8] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tlist = new List({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$a] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt_1 = space();\n\t\t\tcreate_component(list.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(bodytitle, target, anchor);\n\t\t\tinsert(target, t_1, anchor);\n\t\t\tmount_component(list, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $t*/ 4194560) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst list_changes = {};\n\n\t\t\tif (dirty & /*$$scope, permissions*/ 4194336) {\n\t\t\t\tlist_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tlist.$set(list_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(list.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(list.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\n\t\t\tdestroy_component(bodytitle, detaching);\n\t\t\tdestroy_component(list, detaching);\n\t\t}\n\t};\n}\n\n// (77:4) {#if $busy}\nfunction create_if_block$e(ctx) {\n\tlet p;\n\tlet t_1_value = /*$t*/ ctx[8]('loading', { default: 'Loading...' }) + \"\";\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tt_1 = text(t_1_value);\n\t\t\tattr(p, \"class\", \"loading svelte-13p224c\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\t\t\tappend(p, t_1);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 256 && t_1_value !== (t_1_value = /*$t*/ ctx[8]('loading', { default: 'Loading...' }) + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (99:8) \nfunction create_default_slot_3$2(ctx) {\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tt_1 = text(/*title*/ ctx[0]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t_1, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*title*/ 1) set_data(t_1, /*title*/ ctx[0]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (108:12) {#if accountNotFound}\nfunction create_if_block_4$4(ctx) {\n\tlet p;\n\tlet t0_value = /*$t*/ ctx[8]('login.enter.not_found', { default: 'Unable to find account' }) + \"\";\n\tlet t0;\n\tlet t1;\n\tlet t2;\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tt0 = text(t0_value);\n\t\t\tt1 = space();\n\t\t\tt2 = text(/*prevInput*/ ctx[2]);\n\t\t\tattr(p, \"class\", \"error svelte-13p224c\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\t\t\tappend(p, t0);\n\t\t\tappend(p, t1);\n\t\t\tappend(p, t2);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 256 && t0_value !== (t0_value = /*$t*/ ctx[8]('login.enter.not_found', { default: 'Unable to find account' }) + \"\")) set_data(t0, t0_value);\n\t\t\tif (dirty & /*prevInput*/ 4) set_data(t2, /*prevInput*/ ctx[2]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (90:8) \nfunction create_default_slot_2$2(ctx) {\n\tlet t_1_value = /*$t*/ ctx[8]('login.select.no_accounts') + \"\";\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tt_1 = text(t_1_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t_1, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 256 && t_1_value !== (t_1_value = /*$t*/ ctx[8]('login.select.no_accounts') + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (80:8) \nfunction create_default_slot_1$8(ctx) {\n\tlet t_1_value = /*$t*/ ctx[8]('login.select.account') + \"\";\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tt_1 = text(t_1_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t_1, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 256 && t_1_value !== (t_1_value = /*$t*/ ctx[8]('login.select.account') + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (82:12) {#each permissions as permission}\nfunction create_each_block$4(ctx) {\n\tlet listitem;\n\tlet current;\n\n\tfunction func() {\n\t\treturn /*func*/ ctx[17](/*permission*/ ctx[19]);\n\t}\n\n\tlistitem = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: String(/*permission*/ ctx[19]),\n\t\t\t\tonClick: func\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(listitem.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(listitem, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\t\t\tconst listitem_changes = {};\n\t\t\tif (dirty & /*permissions*/ 32) listitem_changes.label = String(/*permission*/ ctx[19]);\n\t\t\tif (dirty & /*permissions*/ 32) listitem_changes.onClick = func;\n\t\t\tlistitem.$set(listitem_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(listitem.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(listitem.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(listitem, detaching);\n\t\t}\n\t};\n}\n\n// (81:8) \nfunction create_default_slot$a(ctx) {\n\tlet each_1_anchor;\n\tlet current;\n\tlet each_value = ensure_array_like(/*permissions*/ ctx[5]);\n\tlet each_blocks = [];\n\n\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\teach_blocks[i] = create_each_block$4(get_each_context$4(ctx, each_value, i));\n\t}\n\n\tconst out = i => transition_out(each_blocks[i], 1, 1, () => {\n\t\teach_blocks[i] = null;\n\t});\n\n\treturn {\n\t\tc() {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\teach_blocks[i].c();\n\t\t\t}\n\n\t\t\teach_1_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\teach_blocks[i].m(target, anchor);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinsert(target, each_1_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*String, permissions, dispatch*/ 1056) {\n\t\t\t\teach_value = ensure_array_like(/*permissions*/ ctx[5]);\n\t\t\t\tlet i;\n\n\t\t\t\tfor (i = 0; i < each_value.length; i += 1) {\n\t\t\t\t\tconst child_ctx = get_each_context$4(ctx, each_value, i);\n\n\t\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\t\teach_blocks[i].p(child_ctx, dirty);\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teach_blocks[i] = create_each_block$4(child_ctx);\n\t\t\t\t\t\teach_blocks[i].c();\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t\teach_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_outros();\n\n\t\t\t\tfor (i = each_value.length; i < each_blocks.length; i += 1) {\n\t\t\t\t\tout(i);\n\t\t\t\t}\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\n\t\t\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\t\t\ttransition_in(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\teach_blocks = each_blocks.filter(Boolean);\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\ttransition_out(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(each_1_anchor);\n\t\t\t}\n\n\t\t\tdestroy_each(each_blocks, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$o(ctx) {\n\tlet section;\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet current;\n\tconst if_block_creators = [create_if_block$e, create_if_block_1$7, create_if_block_2$7, create_if_block_3$5];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*$busy*/ ctx[7]) return 0;\n\t\tif (/*permissions*/ ctx[5] && /*permissions*/ ctx[5].length > 0) return 1;\n\t\tif (/*publicKey*/ ctx[6]) return 2;\n\t\tif (!/*accountName*/ ctx[3]) return 3;\n\t\treturn -1;\n\t}\n\n\tif (~(current_block_type_index = select_block_type(ctx))) {\n\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t}\n\n\treturn {\n\t\tc() {\n\t\t\tsection = element(\"section\");\n\t\t\tif (if_block) if_block.c();\n\t\t\tattr(section, \"class\", \"svelte-13p224c\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, section, anchor);\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].m(section, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tgroup_outros();\n\n\t\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t\t});\n\n\t\t\t\t\tcheck_outros();\n\t\t\t\t}\n\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\t\tif (!if_block) {\n\t\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\t\tif_block.c();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t\t}\n\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(section, null);\n\t\t\t\t} else {\n\t\t\t\t\tif_block = null;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(section);\n\t\t\t}\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].d();\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction instance$o($$self, $$props, $$invalidate) {\n\tlet $busy;\n\tlet $t;\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(8, $t = value));\n\tlet { chainId } = $$props;\n\tlet { client } = $$props;\n\tlet { walletPlugin } = $$props;\n\tlet { title } = $$props;\n\tconst dispatch = createEventDispatcher();\n\tlet busy = writable(true);\n\tcomponent_subscribe($$self, busy, value => $$invalidate(7, $busy = value));\n\tlet input = '';\n\tlet prevInput = '';\n\tlet accountName;\n\tlet accountNotFound = false;\n\tlet permissions;\n\tlet publicKey = walletPlugin.metadata.publicKey;\n\n\tonMount(async () => {\n\t\tif (walletPlugin.config.requiresPermissionSelect) {\n\t\t\tif (chainId && walletPlugin.retrievePublicKey) {\n\t\t\t\ttry {\n\t\t\t\t\t$$invalidate(6, publicKey = String(await walletPlugin.retrievePublicKey(chainId)));\n\t\t\t\t} catch(error) {\n\t\t\t\t\terrorDetails.set(String(error));\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst response = await client.call({\n\t\t\t\tpath: '/v1/chain/get_accounts_by_authorizers',\n\t\t\t\tparams: { keys: [publicKey] }\n\t\t\t});\n\n\t\t\tbusy.set(false);\n\t\t\t$$invalidate(5, permissions = response.accounts.map(account => PermissionLevel.from(`${account.account_name}@${account.permission_name}`)));\n\t\t} else if (walletPlugin.config.requiresPermissionEntry) {\n\t\t\tbusy.set(false);\n\t\t\t$$invalidate(5, permissions = []);\n\t\t}\n\t});\n\n\tasync function lookup() {\n\t\tbusy.set(true);\n\n\t\ttry {\n\t\t\tconst response = await client.v1.chain.get_account(input);\n\n\t\t\tif (response.account_name.equals(input)) {\n\t\t\t\t$$invalidate(3, accountName = response.account_name);\n\t\t\t\t$$invalidate(5, permissions = response.permissions.map(permission => PermissionLevel.from(`${response.account_name}@${permission.perm_name}`)));\n\t\t\t}\n\n\t\t\t$$invalidate(4, accountNotFound = false);\n\t\t} catch(error) {\n\t\t\t$$invalidate(4, accountNotFound = true);\n\t\t} finally {\n\t\t\t$$invalidate(2, prevInput = input);\n\t\t\tbusy.set(false);\n\t\t}\n\t}\n\n\tfunction handleKeyup(event) {\n\t\tif (event.code == 'Enter') {\n\t\t\tevent.preventDefault();\n\t\t\tlookup();\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tconst func = permission => dispatch('select', permission);\n\n\tfunction textinput_value_binding(value) {\n\t\tinput = value;\n\t\t$$invalidate(1, input);\n\t}\n\n\t$$self.$$set = $$props => {\n\t\tif ('chainId' in $$props) $$invalidate(14, chainId = $$props.chainId);\n\t\tif ('client' in $$props) $$invalidate(15, client = $$props.client);\n\t\tif ('walletPlugin' in $$props) $$invalidate(16, walletPlugin = $$props.walletPlugin);\n\t\tif ('title' in $$props) $$invalidate(0, title = $$props.title);\n\t};\n\n\treturn [\n\t\ttitle,\n\t\tinput,\n\t\tprevInput,\n\t\taccountName,\n\t\taccountNotFound,\n\t\tpermissions,\n\t\tpublicKey,\n\t\t$busy,\n\t\t$t,\n\t\tt,\n\t\tdispatch,\n\t\tbusy,\n\t\tlookup,\n\t\thandleKeyup,\n\t\tchainId,\n\t\tclient,\n\t\twalletPlugin,\n\t\tfunc,\n\t\ttextinput_value_binding\n\t];\n}\n\nclass Permission extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\n\t\tinit(\n\t\t\tthis,\n\t\t\toptions,\n\t\t\tinstance$o,\n\t\t\tcreate_fragment$o,\n\t\t\tsafe_not_equal,\n\t\t\t{\n\t\t\t\tchainId: 14,\n\t\t\t\tclient: 15,\n\t\t\t\twalletPlugin: 16,\n\t\t\t\ttitle: 0\n\t\t\t},\n\t\t\tadd_css$g\n\t\t);\n\t}\n}\n\n/* src/ui/login/Wallet.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$f(target) {\n\tappend_styles(target, \"svelte-lwrp5l\", \"section.svelte-lwrp5l{display:flex;flex-direction:column;gap:var(--space-s)}\");\n}\n\nfunction get_each_context$3(ctx, list, i) {\n\tconst child_ctx = ctx.slice();\n\tchild_ctx[4] = list[i];\n\tchild_ctx[6] = i;\n\treturn child_ctx;\n}\n\n// (11:0) {#if wallets}\nfunction create_if_block$d(ctx) {\n\tlet section;\n\tlet bodytitle;\n\tlet t;\n\tlet list;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$7] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tlist = new List({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$9] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tsection = element(\"section\");\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt = space();\n\t\t\tcreate_component(list.$$.fragment);\n\t\t\tattr(section, \"class\", \"svelte-lwrp5l\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, section, anchor);\n\t\t\tmount_component(bodytitle, section, null);\n\t\t\tappend(section, t);\n\t\t\tmount_component(list, section, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, title*/ 130) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst list_changes = {};\n\n\t\t\tif (dirty & /*$$scope, wallets*/ 129) {\n\t\t\t\tlist_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tlist.$set(list_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(list.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(list.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(section);\n\t\t\t}\n\n\t\t\tdestroy_component(bodytitle);\n\t\t\tdestroy_component(list);\n\t\t}\n\t};\n}\n\n// (13:8) \nfunction create_default_slot_1$7(ctx) {\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tt = text(/*title*/ ctx[1]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*title*/ 2) set_data(t, /*title*/ ctx[1]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (15:12) {#each wallets as wallet, index}\nfunction create_each_block$3(ctx) {\n\tlet listitem;\n\tlet current;\n\n\tfunction func() {\n\t\treturn /*func*/ ctx[3](/*index*/ ctx[6]);\n\t}\n\n\tlistitem = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*wallet*/ ctx[4].metadata.name,\n\t\t\t\tonClick: func,\n\t\t\t\tleadingIcon: \"wallet\",\n\t\t\t\tlogo: getThemedLogo(/*wallet*/ ctx[4].metadata)\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(listitem.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(listitem, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\t\t\tconst listitem_changes = {};\n\t\t\tif (dirty & /*wallets*/ 1) listitem_changes.label = /*wallet*/ ctx[4].metadata.name;\n\t\t\tif (dirty & /*wallets*/ 1) listitem_changes.logo = getThemedLogo(/*wallet*/ ctx[4].metadata);\n\t\t\tlistitem.$set(listitem_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(listitem.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(listitem.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(listitem, detaching);\n\t\t}\n\t};\n}\n\n// (14:8) \nfunction create_default_slot$9(ctx) {\n\tlet each_1_anchor;\n\tlet current;\n\tlet each_value = ensure_array_like(/*wallets*/ ctx[0]);\n\tlet each_blocks = [];\n\n\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\teach_blocks[i] = create_each_block$3(get_each_context$3(ctx, each_value, i));\n\t}\n\n\tconst out = i => transition_out(each_blocks[i], 1, 1, () => {\n\t\teach_blocks[i] = null;\n\t});\n\n\treturn {\n\t\tc() {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\teach_blocks[i].c();\n\t\t\t}\n\n\t\t\teach_1_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\teach_blocks[i].m(target, anchor);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinsert(target, each_1_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*wallets, dispatch*/ 5) {\n\t\t\t\teach_value = ensure_array_like(/*wallets*/ ctx[0]);\n\t\t\t\tlet i;\n\n\t\t\t\tfor (i = 0; i < each_value.length; i += 1) {\n\t\t\t\t\tconst child_ctx = get_each_context$3(ctx, each_value, i);\n\n\t\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\t\teach_blocks[i].p(child_ctx, dirty);\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teach_blocks[i] = create_each_block$3(child_ctx);\n\t\t\t\t\t\teach_blocks[i].c();\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t\teach_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_outros();\n\n\t\t\t\tfor (i = each_value.length; i < each_blocks.length; i += 1) {\n\t\t\t\t\tout(i);\n\t\t\t\t}\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\n\t\t\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\t\t\ttransition_in(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\teach_blocks = each_blocks.filter(Boolean);\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\ttransition_out(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(each_1_anchor);\n\t\t\t}\n\n\t\t\tdestroy_each(each_blocks, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$n(ctx) {\n\tlet if_block_anchor;\n\tlet current;\n\tlet if_block = /*wallets*/ ctx[0] && create_if_block$d(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (if_block) if_block.m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*wallets*/ ctx[0]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*wallets*/ 1) {\n\t\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$d(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block, 1, 1, () => {\n\t\t\t\t\tif_block = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$n($$self, $$props, $$invalidate) {\n\tlet { wallets } = $$props;\n\tlet { title } = $$props;\n\tconst dispatch = createEventDispatcher();\n\tconst func = index => dispatch('select', index);\n\n\t$$self.$$set = $$props => {\n\t\tif ('wallets' in $$props) $$invalidate(0, wallets = $$props.wallets);\n\t\tif ('title' in $$props) $$invalidate(1, title = $$props.title);\n\t};\n\n\treturn [wallets, title, dispatch, func];\n}\n\nclass Wallet extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$n, create_fragment$n, safe_not_equal, { wallets: 0, title: 1 }, add_css$f);\n\t}\n}\n\n/**\n * @param {any} obj\n * @returns {boolean}\n */\nfunction is_date(obj) {\n\treturn Object.prototype.toString.call(obj) === '[object Date]';\n}\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nfunction cubicInOut(t) {\n\treturn t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\n\n/**\n * https://svelte.dev/docs/svelte-easing\n * @param {number} t\n * @returns {number}\n */\nfunction cubicOut(t) {\n\tconst f = t - 1.0;\n\treturn f * f * f + 1.0;\n}\n\n/** @returns {(t: any) => any} */\nfunction get_interpolator(a, b) {\n\tif (a === b || a !== a) return () => a;\n\tconst type = typeof a;\n\tif (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n\t\tthrow new Error('Cannot interpolate values of different type');\n\t}\n\tif (Array.isArray(a)) {\n\t\tconst arr = b.map((bi, i) => {\n\t\t\treturn get_interpolator(a[i], bi);\n\t\t});\n\t\treturn (t) => arr.map((fn) => fn(t));\n\t}\n\tif (type === 'object') {\n\t\tif (!a || !b) throw new Error('Object cannot be null');\n\t\tif (is_date(a) && is_date(b)) {\n\t\t\ta = a.getTime();\n\t\t\tb = b.getTime();\n\t\t\tconst delta = b - a;\n\t\t\treturn (t) => new Date(a + t * delta);\n\t\t}\n\t\tconst keys = Object.keys(b);\n\t\tconst interpolators = {};\n\t\tkeys.forEach((key) => {\n\t\t\tinterpolators[key] = get_interpolator(a[key], b[key]);\n\t\t});\n\t\treturn (t) => {\n\t\t\tconst result = {};\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tresult[key] = interpolators[key](t);\n\t\t\t});\n\t\t\treturn result;\n\t\t};\n\t}\n\tif (type === 'number') {\n\t\tconst delta = b - a;\n\t\treturn (t) => a + t * delta;\n\t}\n\tthrow new Error(`Cannot interpolate ${type} values`);\n}\n\n/**\n * A tweened store in Svelte is a special type of store that provides smooth transitions between state values over time.\n *\n * https://svelte.dev/docs/svelte-motion#tweened\n * @template T\n * @param {T} [value]\n * @param {import('./private.js').TweenedOptions} [defaults]\n * @returns {import('./public.js').Tweened}\n */\nfunction tweened(value, defaults = {}) {\n\tconst store = writable(value);\n\t/** @type {import('../internal/private.js').Task} */\n\tlet task;\n\tlet target_value = value;\n\t/**\n\t * @param {T} new_value\n\t * @param {import('./private.js').TweenedOptions} [opts]\n\t */\n\tfunction set(new_value, opts) {\n\t\tif (value == null) {\n\t\t\tstore.set((value = new_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\ttarget_value = new_value;\n\t\tlet previous_task = task;\n\t\tlet started = false;\n\t\tlet {\n\t\t\tdelay = 0,\n\t\t\tduration = 400,\n\t\t\teasing = identity,\n\t\t\tinterpolate = get_interpolator\n\t\t} = assign(assign({}, defaults), opts);\n\t\tif (duration === 0) {\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tstore.set((value = target_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\tconst start = now() + delay;\n\t\tlet fn;\n\t\ttask = loop((now) => {\n\t\t\tif (now < start) return true;\n\t\t\tif (!started) {\n\t\t\t\tfn = interpolate(value, new_value);\n\t\t\t\tif (typeof duration === 'function') duration = duration(value, new_value);\n\t\t\t\tstarted = true;\n\t\t\t}\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tconst elapsed = now - start;\n\t\t\tif (elapsed > /** @type {number} */ (duration)) {\n\t\t\t\tstore.set((value = new_value));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// @ts-ignore\n\t\t\tstore.set((value = fn(easing(elapsed / duration))));\n\t\t\treturn true;\n\t\t});\n\t\treturn task.promise;\n\t}\n\treturn {\n\t\tset,\n\t\tupdate: (fn, opts) => set(fn(target_value, value), opts),\n\t\tsubscribe: store.subscribe\n\t};\n}\n\n/* src/ui/components/Countdown.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$e(target) {\n\tappend_styles(target, \"svelte-1cxfvrd\", \".loader.svelte-1cxfvrd.svelte-1cxfvrd{position:relative;display:grid;place-items:center;grid-template-areas:\\\"stack\\\" \\\"text\\\";gap:var(--space-m)}.logo.svelte-1cxfvrd.svelte-1cxfvrd{grid-area:stack;place-self:center;color:var(--body-text-color);width:var(--space-2xl);display:flex;align-items:center;justify-content:center}.logo.svelte-1cxfvrd img.svelte-1cxfvrd{width:100%;height:100%;object-fit:contain}.logo.svelte-1cxfvrd>svg{width:35%;height:35%}.text.svelte-1cxfvrd.svelte-1cxfvrd{grid-area:text;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-4xs)}.text.svelte-1cxfvrd .label.svelte-1cxfvrd{font-size:var(--fs-2);font-weight:500;color:var(--body-text-color);margin:0}.text.svelte-1cxfvrd span.svelte-1cxfvrd{font-size:var(--fs-1);font-variant-numeric:tabular-nums;color:var(--body-text-color-variant)}svg.svelte-1cxfvrd.svelte-1cxfvrd{grid-area:stack;animation:2.5s linear infinite svelte-1cxfvrd-svg-animation}@keyframes svelte-1cxfvrd-svg-animation{0%{transform:rotateZ(0deg)}100%{transform:rotateZ(360deg)}}circle.svelte-1cxfvrd.svelte-1cxfvrd{transform-origin:center}circle.spinner.svelte-1cxfvrd.svelte-1cxfvrd{stroke:var(--loading-circle-color)}circle.track.svelte-1cxfvrd.svelte-1cxfvrd{stroke:var(--loading-circle-track-color)}circle.animated.svelte-1cxfvrd.svelte-1cxfvrd{animation:svelte-1cxfvrd-dash 2.1s ease-in-out both infinite}@keyframes svelte-1cxfvrd-dash{0%{stroke-dashoffset:var(--circumference);transform:rotate(0)}50%,65%{stroke-dashoffset:70;transform:rotate(90deg)}100%{stroke-dashoffset:var(--circumference);transform:rotate(360deg)}}\");\n}\n\n// (77:4) {#if logo}\nfunction create_if_block_2$6(ctx) {\n\tlet div;\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet current;\n\tconst if_block_creators = [create_if_block_3$4, create_if_block_4$3];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (isUrlImage(/*logo*/ ctx[5]) || isBase64Image(/*logo*/ ctx[5])) return 0;\n\t\tif (isValidIcon(/*logo*/ ctx[5])) return 1;\n\t\treturn -1;\n\t}\n\n\tif (~(current_block_type_index = select_block_type(ctx))) {\n\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t}\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tif (if_block) if_block.c();\n\t\t\tattr(div, \"class\", \"logo svelte-1cxfvrd\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].m(div, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (if_block) if_block.p(ctx, dirty);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].d();\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (81:40) \nfunction create_if_block_4$3(ctx) {\n\tlet icon;\n\tlet current;\n\n\ticon = new Icon({\n\t\t\tprops: { name: /*logo*/ ctx[5], size: \"75%\" }\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(icon, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(icon, detaching);\n\t\t}\n\t};\n}\n\n// (79:12) {#if isUrlImage(logo) || isBase64Image(logo)}\nfunction create_if_block_3$4(ctx) {\n\tlet img;\n\tlet img_src_value;\n\n\treturn {\n\t\tc() {\n\t\t\timg = element(\"img\");\n\t\t\tif (!src_url_equal(img.src, img_src_value = /*logo*/ ctx[5])) attr(img, \"src\", img_src_value);\n\t\t\tattr(img, \"alt\", `loading logo`);\n\t\t\tattr(img, \"class\", \"svelte-1cxfvrd\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, img, anchor);\n\t\t},\n\t\tp: noop,\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(img);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (88:8) {#if label}\nfunction create_if_block_1$6(ctx) {\n\tlet p;\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tp.textContent = `${/*label*/ ctx[4]}`;\n\t\t\tattr(p, \"class\", \"label svelte-1cxfvrd\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\t\t},\n\t\tp: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (91:8) {#if deadline}\nfunction create_if_block$c(ctx) {\n\tlet previous_key = /*remaining*/ ctx[1];\n\tlet key_block_anchor;\n\tlet key_block = create_key_block(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tkey_block.c();\n\t\t\tkey_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tkey_block.m(target, anchor);\n\t\t\tinsert(target, key_block_anchor, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*remaining*/ 2 && safe_not_equal(previous_key, previous_key = /*remaining*/ ctx[1])) {\n\t\t\t\tkey_block.d(1);\n\t\t\t\tkey_block = create_key_block(ctx);\n\t\t\t\tkey_block.c();\n\t\t\t\tkey_block.m(key_block_anchor.parentNode, key_block_anchor);\n\t\t\t} else {\n\t\t\t\tkey_block.p(ctx, dirty);\n\t\t\t}\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(key_block_anchor);\n\t\t\t}\n\n\t\t\tkey_block.d(detaching);\n\t\t}\n\t};\n}\n\n// (92:12) {#key remaining}\nfunction create_key_block(ctx) {\n\tlet span;\n\tlet t_value = countdownFormat(/*deadline*/ ctx[0]) + \"\";\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tspan = element(\"span\");\n\t\t\tt = text(t_value);\n\t\t\tattr(span, \"class\", \"svelte-1cxfvrd\");\n\t\t\ttoggle_class(span, \"label\", !/*label*/ ctx[4]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, span, anchor);\n\t\t\tappend(span, t);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*deadline*/ 1 && t_value !== (t_value = countdownFormat(/*deadline*/ ctx[0]) + \"\")) set_data(t, t_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(span);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction create_fragment$m(ctx) {\n\tlet div1;\n\tlet svg;\n\tlet circle0;\n\tlet circle1;\n\tlet t0;\n\tlet t1;\n\tlet div0;\n\tlet t2;\n\tlet current;\n\tlet if_block0 = /*logo*/ ctx[5] && create_if_block_2$6(ctx);\n\tlet if_block1 = /*label*/ ctx[4] && create_if_block_1$6(ctx);\n\tlet if_block2 = /*deadline*/ ctx[0] && create_if_block$c(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tdiv1 = element(\"div\");\n\t\t\tsvg = svg_element(\"svg\");\n\t\t\tcircle0 = svg_element(\"circle\");\n\t\t\tcircle1 = svg_element(\"circle\");\n\t\t\tt0 = space();\n\t\t\tif (if_block0) if_block0.c();\n\t\t\tt1 = space();\n\t\t\tdiv0 = element(\"div\");\n\t\t\tif (if_block1) if_block1.c();\n\t\t\tt2 = space();\n\t\t\tif (if_block2) if_block2.c();\n\t\t\tattr(circle0, \"class\", \"track svelte-1cxfvrd\");\n\t\t\tattr(circle0, \"cx\", /*offset*/ ctx[6]);\n\t\t\tattr(circle0, \"cy\", /*offset*/ ctx[6]);\n\t\t\tattr(circle0, \"r\", /*radius*/ ctx[7]);\n\t\t\tattr(circle0, \"stroke-width\", strokeWidth - 1);\n\t\t\tattr(circle0, \"stroke-linecap\", \"round\");\n\t\t\tattr(circle0, \"stroke-dasharray\", /*$circumference*/ ctx[3]);\n\t\t\tattr(circle0, \"stroke-dashoffset\", 0);\n\t\t\tattr(circle0, \"fill\", \"none\");\n\t\t\tattr(circle1, \"class\", \"spinner svelte-1cxfvrd\");\n\t\t\tattr(circle1, \"cx\", /*offset*/ ctx[6]);\n\t\t\tattr(circle1, \"cy\", /*offset*/ ctx[6]);\n\t\t\tattr(circle1, \"r\", /*radius*/ ctx[7]);\n\t\t\tattr(circle1, \"stroke-width\", strokeWidth);\n\t\t\tattr(circle1, \"stroke-linecap\", \"round\");\n\t\t\tattr(circle1, \"stroke-dasharray\", /*$circumference*/ ctx[3]);\n\t\t\tattr(circle1, \"fill\", \"none\");\n\t\t\tset_style(circle1, \"--radius\", /*radius*/ ctx[7]);\n\t\t\tset_style(circle1, \"--circumference\", /*$circumference*/ ctx[3]);\n\t\t\ttoggle_class(circle1, \"animated\", /*animated*/ ctx[2]);\n\t\t\tattr(svg, \"width\", size);\n\t\t\tattr(svg, \"height\", size);\n\t\t\tattr(svg, \"class\", \"svelte-1cxfvrd\");\n\t\t\ttoggle_class(svg, \"animated\", /*animated*/ ctx[2]);\n\t\t\tattr(div0, \"class\", \"text svelte-1cxfvrd\");\n\t\t\tattr(div1, \"class\", \"loader svelte-1cxfvrd\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div1, anchor);\n\t\t\tappend(div1, svg);\n\t\t\tappend(svg, circle0);\n\t\t\tappend(svg, circle1);\n\t\t\tappend(div1, t0);\n\t\t\tif (if_block0) if_block0.m(div1, null);\n\t\t\tappend(div1, t1);\n\t\t\tappend(div1, div0);\n\t\t\tif (if_block1) if_block1.m(div0, null);\n\t\t\tappend(div0, t2);\n\t\t\tif (if_block2) if_block2.m(div0, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (!current || dirty & /*$circumference*/ 8) {\n\t\t\t\tattr(circle0, \"stroke-dasharray\", /*$circumference*/ ctx[3]);\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*$circumference*/ 8) {\n\t\t\t\tattr(circle1, \"stroke-dasharray\", /*$circumference*/ ctx[3]);\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*$circumference*/ 8) {\n\t\t\t\tset_style(circle1, \"--circumference\", /*$circumference*/ ctx[3]);\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*animated*/ 4) {\n\t\t\t\ttoggle_class(circle1, \"animated\", /*animated*/ ctx[2]);\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*animated*/ 4) {\n\t\t\t\ttoggle_class(svg, \"animated\", /*animated*/ ctx[2]);\n\t\t\t}\n\n\t\t\tif (/*logo*/ ctx[5]) if_block0.p(ctx, dirty);\n\t\t\tif (/*label*/ ctx[4]) if_block1.p(ctx, dirty);\n\n\t\t\tif (/*deadline*/ ctx[0]) {\n\t\t\t\tif (if_block2) {\n\t\t\t\t\tif_block2.p(ctx, dirty);\n\t\t\t\t} else {\n\t\t\t\t\tif_block2 = create_if_block$c(ctx);\n\t\t\t\t\tif_block2.c();\n\t\t\t\t\tif_block2.m(div0, null);\n\t\t\t\t}\n\t\t\t} else if (if_block2) {\n\t\t\t\tif_block2.d(1);\n\t\t\t\tif_block2 = null;\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block0);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block0);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div1);\n\t\t\t}\n\n\t\t\tif (if_block0) if_block0.d();\n\t\t\tif (if_block1) if_block1.d();\n\t\t\tif (if_block2) if_block2.d();\n\t\t}\n\t};\n}\n\nlet size = 100;\nlet strokeWidth = 8;\n\nfunction countdownFormat(date) {\n\tconst timeLeft = date.getTime() - Date.now();\n\n\tif (timeLeft > 0) {\n\t\treturn new Date(timeLeft).toISOString().slice(14, 19);\n\t}\n\n\treturn '00:00';\n}\n\nfunction instance$m($$self, $$props, $$invalidate) {\n\tlet animated;\n\tlet $circumference;\n\tlet { data = {} } = $$props;\n\tlet { label, end, logo, loading = true } = data;\n\tlet deadline;\n\tlet remaining;\n\tlet timer;\n\tlet offset = size / 2;\n\tlet radius = offset - strokeWidth;\n\tlet circumference = tweened(2 * Math.PI * radius, { duration: 500, easing: cubicOut });\n\tcomponent_subscribe($$self, circumference, value => $$invalidate(3, $circumference = value));\n\n\tonDestroy(() => {\n\t\tif (timer) {\n\t\t\tclearInterval(timer);\n\t\t}\n\t});\n\n\t$$self.$$set = $$props => {\n\t\tif ('data' in $$props) $$invalidate(9, data = $$props.data);\n\t};\n\n\t$$self.$$.update = () => {\n\t\tif ($$self.$$.dirty & /*timer, deadline, remaining*/ 2051) {\n\t\t\t{\n\t\t\t\tif (timer) {\n\t\t\t\t\tclearInterval(timer);\n\t\t\t\t}\n\n\t\t\t\tif (end) {\n\t\t\t\t\t$$invalidate(0, deadline = new Date(end));\n\n\t\t\t\t\t$$invalidate(11, timer = setInterval(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t$$invalidate(1, remaining = new Date(deadline).getTime() - Date.now());\n\n\t\t\t\t\t\t\tif (remaining <= 0) {\n\t\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t\t\tcircumference.set(1000);\n\t\t\t\t\t\t\t\t$$invalidate(10, loading = false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t200\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ($$self.$$.dirty & /*loading*/ 1024) {\n\t\t\t$$invalidate(2, animated = loading);\n\t\t}\n\t};\n\n\treturn [\n\t\tdeadline,\n\t\tremaining,\n\t\tanimated,\n\t\t$circumference,\n\t\tlabel,\n\t\tlogo,\n\t\toffset,\n\t\tradius,\n\t\tcircumference,\n\t\tdata,\n\t\tloading,\n\t\ttimer\n\t];\n}\n\nclass Countdown extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$m, create_fragment$m, safe_not_equal, { data: 9 }, add_css$e);\n\t}\n}\n\n/**\n * Animates the opacity of an element from 0 to the current opacity for `in` transitions and from the current opacity to 0 for `out` transitions.\n *\n * https://svelte.dev/docs/svelte-transition#fade\n * @param {Element} node\n * @param {import('./public').FadeParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nfunction fade(node, { delay = 0, duration = 400, easing = identity } = {}) {\n\tconst o = +getComputedStyle(node).opacity;\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t) => `opacity: ${t * o}`\n\t};\n}\n\n/**\n * Animates the x and y positions and the opacity of an element. `in` transitions animate from the provided values, passed as parameters to the element's default values. `out` transitions animate from the element's default values to the provided values.\n *\n * https://svelte.dev/docs/svelte-transition#fly\n * @param {Element} node\n * @param {import('./public').FlyParams} [params]\n * @returns {import('./public').TransitionConfig}\n */\nfunction fly(\n\tnode,\n\t{ delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}\n) {\n\tconst style = getComputedStyle(node);\n\tconst target_opacity = +style.opacity;\n\tconst transform = style.transform === 'none' ? '' : style.transform;\n\tconst od = target_opacity * (1 - opacity);\n\tconst [xValue, xUnit] = split_css_unit(x);\n\tconst [yValue, yUnit] = split_css_unit(y);\n\treturn {\n\t\tdelay,\n\t\tduration,\n\t\teasing,\n\t\tcss: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * xValue}${xUnit}, ${(1 - t) * yValue}${yUnit});\n\t\t\topacity: ${target_opacity - od * u}`\n\t};\n}\n\n/* src/ui/components/Transition.svelte generated by Svelte v4.2.0 */\n\nfunction create_else_block$4(ctx) {\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[5].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[4], null);\n\n\treturn {\n\t\tc() {\n\t\t\tif (default_slot) default_slot.c();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (default_slot) {\n\t\t\t\tdefault_slot.m(target, anchor);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 16)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[4],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[4])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[4], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (default_slot) default_slot.d(detaching);\n\t\t}\n\t};\n}\n\n// (17:0) {#if animations}\nfunction create_if_block$b(ctx) {\n\tlet div;\n\tlet div_intro;\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[5].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[4], null);\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tif (default_slot) default_slot.c();\n\t\t\tattr(div, \"class\", \"transition\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\n\t\t\tif (default_slot) {\n\t\t\t\tdefault_slot.m(div, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 16)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[4],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[4])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[4], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot, local);\n\n\t\t\tif (!div_intro) {\n\t\t\t\tadd_render_callback(() => {\n\t\t\t\t\tdiv_intro = create_in_transition(div, fly, {\n\t\t\t\t\t\tduration: 200,\n\t\t\t\t\t\tx: /*x*/ ctx[1],\n\t\t\t\t\t\ty: /*y*/ ctx[0]\n\t\t\t\t\t});\n\n\t\t\t\t\tdiv_intro.start();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tif (default_slot) default_slot.d(detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$l(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\tconst if_block_creators = [create_if_block$b, create_else_block$4];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*animations*/ ctx[2]) return 0;\n\t\treturn 1;\n\t}\n\n\tcurrent_block_type_index = select_block_type(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif_block.p(ctx, dirty);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$l($$self, $$props, $$invalidate) {\n\tlet x;\n\tlet y;\n\tlet $settings;\n\tcomponent_subscribe($$self, settings$5, $$value => $$invalidate(6, $settings = $$value));\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\tlet { direction = undefined } = $$props;\n\tconst { animations } = $settings;\n\tconst horizontal = ['ltr', 'rtl'];\n\n\t// const vertical = ['ttb', 'btt']\n\tconst getDistance = direction => {\n\t\treturn direction === 'rtl' || direction === 'btt' ? 100 : -100;\n\t};\n\n\t$$self.$$set = $$props => {\n\t\tif ('direction' in $$props) $$invalidate(3, direction = $$props.direction);\n\t\tif ('$$scope' in $$props) $$invalidate(4, $$scope = $$props.$$scope);\n\t};\n\n\t$$self.$$.update = () => {\n\t\tif ($$self.$$.dirty & /*direction*/ 8) {\n\t\t\t$$invalidate(\n\t\t\t\t1,\n\t\t\t\t[x, y] = direction\n\t\t\t\t? horizontal.includes(direction)\n\t\t\t\t\t? [getDistance(direction), 0]\n\t\t\t\t\t: [0, getDistance(direction)]\n\t\t\t\t: [0, 0],\n\t\t\t\tx,\n\t\t\t\t($$invalidate(0, y), $$invalidate(3, direction))\n\t\t\t);\n\t\t}\n\t};\n\n\treturn [y, x, animations, direction, $$scope, slots];\n}\n\nclass Transition extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$l, create_fragment$l, safe_not_equal, { direction: 3 });\n\t}\n}\n\n/* src/ui/Login.svelte generated by Svelte v4.2.0 */\n\nfunction create_else_block_1$2(ctx) {\n\tlet p;\n\tlet t_1_value = /*$t*/ ctx[4]('loading', { default: 'Loading...' }) + \"\";\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tt_1 = text(t_1_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\t\t\tappend(p, t_1);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 16 && t_1_value !== (t_1_value = /*$t*/ ctx[4]('loading', { default: 'Loading...' }) + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (154:0) {#if $props && $loginContext}\nfunction create_if_block$a(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\n\tconst if_block_creators = [\n\t\tcreate_if_block_1$5,\n\t\tcreate_if_block_2$5,\n\t\tcreate_if_block_3$3,\n\t\tcreate_if_block_4$2,\n\t\tcreate_else_block$3\n\t];\n\n\tconst if_blocks = [];\n\n\tfunction select_block_type_1(ctx, dirty) {\n\t\tif (/*$step*/ ctx[6] === /*Steps*/ ctx[0].selectWallet) return 0;\n\t\tif (/*$step*/ ctx[6] === /*Steps*/ ctx[0].selectChain && /*$chains*/ ctx[7]) return 1;\n\t\tif (/*$step*/ ctx[6] === /*Steps*/ ctx[0].enterPermission && /*$client*/ ctx[8] && /*$walletPlugin*/ ctx[9]) return 2;\n\t\tif (/*$step*/ ctx[6] === /*Steps*/ ctx[0].selectPermission && /*$client*/ ctx[8] && /*$walletPlugin*/ ctx[9]) return 3;\n\t\treturn 4;\n\t}\n\n\tcurrent_block_type_index = select_block_type_1(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type_1(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t} else {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\tif (!if_block) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t} else {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t}\n\n\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\n// (195:4) {:else}\nfunction create_else_block$3(ctx) {\n\tlet countdown;\n\tlet current;\n\n\tcountdown = new Countdown({\n\t\t\tprops: {\n\t\t\t\tdata: {\n\t\t\t\t\tlabel: /*$t*/ ctx[4]('login.complete', {\n\t\t\t\t\t\tdefault: 'Complete the login using your selected wallet.'\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(countdown.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(countdown, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst countdown_changes = {};\n\n\t\t\tif (dirty & /*$t*/ 16) countdown_changes.data = {\n\t\t\t\tlabel: /*$t*/ ctx[4]('login.complete', {\n\t\t\t\t\tdefault: 'Complete the login using your selected wallet.'\n\t\t\t\t})\n\t\t\t};\n\n\t\t\tcountdown.$set(countdown_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(countdown.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(countdown.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(countdown, detaching);\n\t\t}\n\t};\n}\n\n// (184:75) \nfunction create_if_block_4$2(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[2],\n\t\t\t\t$$slots: { default: [create_default_slot_3$1] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 4) transition_changes.direction = /*$transitionDirection*/ ctx[2];\n\n\t\t\tif (dirty & /*$$scope, $loginResponse, $client, $walletPlugin, $t*/ 268436242) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (173:74) \nfunction create_if_block_3$3(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[2],\n\t\t\t\t$$slots: { default: [create_default_slot_2$1] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 4) transition_changes.direction = /*$transitionDirection*/ ctx[2];\n\n\t\t\tif (dirty & /*$$scope, $loginResponse, $client, $walletPlugin, $t*/ 268436242) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (164:53) \nfunction create_if_block_2$5(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[2],\n\t\t\t\t$$slots: { default: [create_default_slot_1$6] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 4) transition_changes.direction = /*$transitionDirection*/ ctx[2];\n\n\t\t\tif (dirty & /*$$scope, $chains, $t*/ 268435600) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (155:4) {#if $step === Steps.selectWallet}\nfunction create_if_block_1$5(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[2],\n\t\t\t\t$$slots: { default: [create_default_slot$8] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 4) transition_changes.direction = /*$transitionDirection*/ ctx[2];\n\n\t\t\tif (dirty & /*$$scope, $loginContext, $t*/ 268435480) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (185:8) \nfunction create_default_slot_3$1(ctx) {\n\tlet permission;\n\tlet current;\n\n\tpermission = new Permission({\n\t\t\tprops: {\n\t\t\t\tchainId: /*$loginResponse*/ ctx[1].chainId,\n\t\t\t\tclient: /*$client*/ ctx[8],\n\t\t\t\twalletPlugin: /*$walletPlugin*/ ctx[9],\n\t\t\t\ttitle: /*$t*/ ctx[4]('login.select.account', { default: 'Select an Account' })\n\t\t\t}\n\t\t});\n\n\tpermission.$on(\"select\", /*selectPermission*/ ctx[17]);\n\tpermission.$on(\"cancel\", /*unselectChain*/ ctx[16]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(permission.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(permission, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst permission_changes = {};\n\t\t\tif (dirty & /*$loginResponse*/ 2) permission_changes.chainId = /*$loginResponse*/ ctx[1].chainId;\n\t\t\tif (dirty & /*$client*/ 256) permission_changes.client = /*$client*/ ctx[8];\n\t\t\tif (dirty & /*$walletPlugin*/ 512) permission_changes.walletPlugin = /*$walletPlugin*/ ctx[9];\n\t\t\tif (dirty & /*$t*/ 16) permission_changes.title = /*$t*/ ctx[4]('login.select.account', { default: 'Select an Account' });\n\t\t\tpermission.$set(permission_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(permission.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(permission.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(permission, detaching);\n\t\t}\n\t};\n}\n\n// (174:8) \nfunction create_default_slot_2$1(ctx) {\n\tlet permission;\n\tlet current;\n\n\tpermission = new Permission({\n\t\t\tprops: {\n\t\t\t\tchainId: /*$loginResponse*/ ctx[1].chainId,\n\t\t\t\tclient: /*$client*/ ctx[8],\n\t\t\t\twalletPlugin: /*$walletPlugin*/ ctx[9],\n\t\t\t\ttitle: /*$t*/ ctx[4]('login.enter.account', { default: 'Enter account name' })\n\t\t\t}\n\t\t});\n\n\tpermission.$on(\"select\", /*selectPermission*/ ctx[17]);\n\tpermission.$on(\"cancel\", /*unselectChain*/ ctx[16]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(permission.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(permission, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst permission_changes = {};\n\t\t\tif (dirty & /*$loginResponse*/ 2) permission_changes.chainId = /*$loginResponse*/ ctx[1].chainId;\n\t\t\tif (dirty & /*$client*/ 256) permission_changes.client = /*$client*/ ctx[8];\n\t\t\tif (dirty & /*$walletPlugin*/ 512) permission_changes.walletPlugin = /*$walletPlugin*/ ctx[9];\n\t\t\tif (dirty & /*$t*/ 16) permission_changes.title = /*$t*/ ctx[4]('login.enter.account', { default: 'Enter account name' });\n\t\t\tpermission.$set(permission_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(permission.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(permission.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(permission, detaching);\n\t\t}\n\t};\n}\n\n// (165:8) \nfunction create_default_slot_1$6(ctx) {\n\tlet blockchain;\n\tlet current;\n\n\tblockchain = new Blockchain({\n\t\t\tprops: {\n\t\t\t\tchains: /*$chains*/ ctx[7],\n\t\t\t\ttitle: /*$t*/ ctx[4]('login.select.blockchain', { default: 'Select a Blockchain' })\n\t\t\t}\n\t\t});\n\n\tblockchain.$on(\"select\", /*selectChain*/ ctx[15]);\n\tblockchain.$on(\"cancel\", /*unselectWallet*/ ctx[19]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(blockchain.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(blockchain, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst blockchain_changes = {};\n\t\t\tif (dirty & /*$chains*/ 128) blockchain_changes.chains = /*$chains*/ ctx[7];\n\t\t\tif (dirty & /*$t*/ 16) blockchain_changes.title = /*$t*/ ctx[4]('login.select.blockchain', { default: 'Select a Blockchain' });\n\t\t\tblockchain.$set(blockchain_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(blockchain.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(blockchain.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(blockchain, detaching);\n\t\t}\n\t};\n}\n\n// (156:8) \nfunction create_default_slot$8(ctx) {\n\tlet wallet;\n\tlet current;\n\n\twallet = new Wallet({\n\t\t\tprops: {\n\t\t\t\twallets: /*$loginContext*/ ctx[3].walletPlugins,\n\t\t\t\ttitle: /*$t*/ ctx[4]('login.select.wallet', { default: 'Select a Wallet' })\n\t\t\t}\n\t\t});\n\n\twallet.$on(\"select\", /*selectWallet*/ ctx[18]);\n\twallet.$on(\"cancel\", /*cancel*/ ctx[20]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(wallet.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(wallet, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst wallet_changes = {};\n\t\t\tif (dirty & /*$loginContext*/ 8) wallet_changes.wallets = /*$loginContext*/ ctx[3].walletPlugins;\n\t\t\tif (dirty & /*$t*/ 16) wallet_changes.title = /*$t*/ ctx[4]('login.select.wallet', { default: 'Select a Wallet' });\n\t\t\twallet.$set(wallet_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(wallet.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(wallet.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(wallet, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$k(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\tconst if_block_creators = [create_if_block$a, create_else_block_1$2];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*$props*/ ctx[5] && /*$loginContext*/ ctx[3]) return 0;\n\t\treturn 1;\n\t}\n\n\tcurrent_block_type_index = select_block_type(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t} else {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\tif (!if_block) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t} else {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t}\n\n\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$k($$self, $$props, $$invalidate) {\n\tlet $loginResponse;\n\tlet $transitionDirection;\n\tlet $backAction;\n\tlet $loginContext;\n\tlet $t;\n\tlet $props;\n\tlet $step;\n\tlet $chains;\n\tlet $client;\n\tlet $walletPlugin;\n\tcomponent_subscribe($$self, loginResponse, $$value => $$invalidate(1, $loginResponse = $$value));\n\tcomponent_subscribe($$self, transitionDirection, $$value => $$invalidate(2, $transitionDirection = $$value));\n\tcomponent_subscribe($$self, backAction, $$value => $$invalidate(22, $backAction = $$value));\n\tcomponent_subscribe($$self, loginContext, $$value => $$invalidate(3, $loginContext = $$value));\n\tcomponent_subscribe($$self, props, $$value => $$invalidate(5, $props = $$value));\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(4, $t = value));\n\tlet completed = false;\n\tconst dispatch = createEventDispatcher();\n\tvar Steps;\n\n\t(function (Steps) {\n\t\tSteps[\"done\"] = \"done\";\n\t\tSteps[\"enterPermission\"] = \"enterPermission\";\n\t\tSteps[\"selectChain\"] = \"selectChain\";\n\t\tSteps[\"selectPermission\"] = \"selectPermission\";\n\t\tSteps[\"selectWallet\"] = \"selectWallet\";\n\t})(Steps || (Steps = {}));\n\n\tconst chain = derived([loginContext, loginResponse], ([$currentContext, $currentResponse]) => {\n\t\tif (!$currentContext || $currentResponse.chainId === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ($currentContext.chain) {\n\t\t\treturn $currentContext.chain;\n\t\t}\n\n\t\treturn $currentContext.chains.find(c => c.id === $currentResponse.chainId);\n\t});\n\n\tconst client = derived([chain, loginContext], ([$currentChain, $currentContext]) => {\n\t\tif (!$currentContext || $currentChain === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn $currentContext.getClient($currentChain);\n\t});\n\n\tcomponent_subscribe($$self, client, value => $$invalidate(8, $client = value));\n\n\tconst walletPlugin = derived([loginContext, loginResponse], ([$currentContext, $currentResponse]) => {\n\t\tif (!$currentContext || $currentResponse.walletPluginIndex === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn $currentContext.walletPlugins[$currentResponse.walletPluginIndex];\n\t});\n\n\tcomponent_subscribe($$self, walletPlugin, value => $$invalidate(9, $walletPlugin = value));\n\n\tlet chains = derived([loginContext, walletPlugin], ([$currentContext, $currentWalletPlugin]) => {\n\t\tif (!$currentContext || !$currentWalletPlugin) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// If the selected WalletPlugin has an array of supported chains, filter the list of chains\n\t\tif ($currentWalletPlugin.config.supportedChains) {\n\t\t\treturn $currentContext.chains.filter(chain => {\n\t\t\t\treturn !$currentWalletPlugin.config.supportedChains || $currentWalletPlugin.config.supportedChains.includes(String(chain.id));\n\t\t\t});\n\t\t}\n\n\t\treturn $currentContext.chains;\n\t});\n\n\tcomponent_subscribe($$self, chains, value => $$invalidate(7, $chains = value));\n\n\tconst loginContextUnsubscribe = loginContext.subscribe(currentContext => {\n\t\tif (currentContext) {\n\t\t\t// If an appName is specified, set the title to it.\n\t\t\tset_store_value(\n\t\t\t\tprops,\n\t\t\t\t$props.subtitle = $t('login.title-app', {\n\t\t\t\t\tappName: currentContext.appName,\n\t\t\t\t\tdefault: 'Login to {{appName}}'\n\t\t\t\t}),\n\t\t\t\t$props\n\t\t\t);\n\n\t\t\t// If a chain is specified, set it on the response\n\t\t\tif (currentContext.chain) {\n\t\t\t\tset_store_value(loginResponse, $loginResponse.chainId = currentContext.chain.id, $loginResponse);\n\t\t\t}\n\n\t\t\t// If only one chain is provided, default to it\n\t\t\tif (currentContext.chains.length === 1) {\n\t\t\t\tset_store_value(loginResponse, $loginResponse.chainId = currentContext.chains[0].id, $loginResponse);\n\t\t\t}\n\n\t\t\t// If a permissionLevel is defined, set it on the response\n\t\t\tif (currentContext.permissionLevel) {\n\t\t\t\tset_store_value(loginResponse, $loginResponse.permissionLevel = currentContext.permissionLevel, $loginResponse);\n\t\t\t}\n\n\t\t\t// If only one wallet is provided, default to it\n\t\t\tif (currentContext.walletPlugins.length === 1) {\n\t\t\t\tset_store_value(loginResponse, $loginResponse.walletPluginIndex = 0, $loginResponse);\n\t\t\t}\n\n\t\t\t// If the walletPluginIndex is defined, set it on the response\n\t\t\tif (currentContext.walletPluginIndex !== undefined) {\n\t\t\t\tset_store_value(loginResponse, $loginResponse.walletPluginIndex = currentContext.walletPluginIndex, $loginResponse);\n\t\t\t}\n\t\t}\n\t});\n\n\tonMount(() => {\n\t\tset_store_value(props, $props.title = $t('login.title', { default: 'Login' }), $props);\n\t});\n\n\tonDestroy(loginContextUnsubscribe);\n\n\tconst step = derived([loginResponse, walletPlugin], ([$currentResponse, $currentWalletPlugin]) => {\n\t\tif (!$currentWalletPlugin) {\n\t\t\treturn Steps.selectWallet;\n\t\t}\n\n\t\tconst { requiresChainSelect, requiresPermissionEntry, requiresPermissionSelect, supportedChains } = $currentWalletPlugin.config;\n\n\t\tif (!$currentResponse.chainId && supportedChains && supportedChains.length === 1) {\n\t\t\tset_store_value(loginResponse, $loginResponse.chainId = supportedChains[0], $loginResponse);\n\t\t\treturn Steps.selectPermission;\n\t\t} else if (!$currentResponse.chainId && $loginContext && $loginContext.chain) {\n\t\t\tset_store_value(loginResponse, $loginResponse.chainId = $loginContext?.chain.id, $loginResponse);\n\t\t\treturn Steps.selectPermission;\n\t\t} else if (!$currentResponse.chainId && requiresChainSelect) {\n\t\t\treturn Steps.selectChain;\n\t\t} else if (!$currentResponse.permissionLevel && requiresPermissionSelect) {\n\t\t\treturn Steps.selectPermission;\n\t\t} else if (!$currentResponse.permissionLevel && requiresPermissionEntry) {\n\t\t\treturn Steps.enterPermission;\n\t\t}\n\n\t\t// We have completed, return response to kit for the WalletPlugin to trigger\n\t\tcomplete();\n\t});\n\n\tcomponent_subscribe($$self, step, value => $$invalidate(6, $step = value));\n\n\tconst selectChain = e => {\n\t\tset_store_value(loginResponse, $loginResponse.chainId = e.detail, $loginResponse);\n\t\tset_store_value(backAction, $backAction = unselectChain, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t};\n\n\tconst unselectChain = () => {\n\t\tset_store_value(loginResponse, $loginResponse.chainId = undefined, $loginResponse);\n\t\tset_store_value(backAction, $backAction = unselectWallet, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'ltr', $transitionDirection);\n\t};\n\n\tconst selectPermission = e => {\n\t\tset_store_value(loginResponse, $loginResponse.permissionLevel = e.detail, $loginResponse);\n\t\tset_store_value(backAction, $backAction = undefined, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t};\n\n\tconst selectWallet = e => {\n\t\tset_store_value(backAction, $backAction = unselectWallet, $backAction);\n\t\tset_store_value(loginResponse, $loginResponse.walletPluginIndex = e.detail, $loginResponse);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t};\n\n\tconst unselectWallet = () => {\n\t\tset_store_value(loginResponse, $loginResponse.walletPluginIndex = undefined, $loginResponse);\n\t\tset_store_value(backAction, $backAction = undefined, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'ltr', $transitionDirection);\n\t};\n\n\tconst complete = () => {\n\t\tif (!completed) {\n\t\t\tcompleted = true;\n\t\t\tdispatch('complete', $loginResponse);\n\t\t\tbackAction.set(undefined);\n\t\t\tallowSettings.set(false);\n\t\t}\n\t};\n\n\tconst cancel = () => {\n\t\tdispatch('cancel');\n\t};\n\n\treturn [\n\t\tSteps,\n\t\t$loginResponse,\n\t\t$transitionDirection,\n\t\t$loginContext,\n\t\t$t,\n\t\t$props,\n\t\t$step,\n\t\t$chains,\n\t\t$client,\n\t\t$walletPlugin,\n\t\tt,\n\t\tclient,\n\t\twalletPlugin,\n\t\tchains,\n\t\tstep,\n\t\tselectChain,\n\t\tunselectChain,\n\t\tselectPermission,\n\t\tselectWallet,\n\t\tunselectWallet,\n\t\tcancel\n\t];\n}\n\nclass Login extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$k, create_fragment$k, safe_not_equal, {});\n\t}\n}\n\n/* src/ui/components/ButtonGroup.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$d(target) {\n\tappend_styles(target, \"svelte-1m2zvm\", \"div.svelte-1m2zvm{flex:1;display:flex;justify-content:space-between;gap:var(--space-xs)}\");\n}\n\nfunction create_fragment$j(ctx) {\n\tlet div;\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[1].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[0], null);\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tif (default_slot) default_slot.c();\n\t\t\tattr(div, \"class\", \"svelte-1m2zvm\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\n\t\t\tif (default_slot) {\n\t\t\t\tdefault_slot.m(div, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 1)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[0],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[0])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[0], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tif (default_slot) default_slot.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$j($$self, $$props, $$invalidate) {\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('$$scope' in $$props) $$invalidate(0, $$scope = $$props.$$scope);\n\t};\n\n\treturn [$$scope, slots];\n}\n\nclass ButtonGroup extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$j, create_fragment$j, safe_not_equal, {}, add_css$d);\n\t}\n}\n\n/* src/ui/components/Accept.svelte generated by Svelte v4.2.0 */\n\nfunction create_default_slot$7(ctx) {\n\tlet button0;\n\tlet t_1;\n\tlet button1;\n\tlet current;\n\n\tbutton0 = new Button({\n\t\t\tprops: {\n\t\t\t\tdata: {\n\t\t\t\t\tvariant: 'outlined',\n\t\t\t\t\tlabel: /*$t*/ ctx[0]('decline', { default: 'Decline' }),\n\t\t\t\t\tonClick: /*func*/ ctx[3],\n\t\t\t\t\ticon: 'close'\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\tbutton1 = new Button({\n\t\t\tprops: {\n\t\t\t\tdata: {\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tlabel: /*$t*/ ctx[0]('accept', { default: 'Accept' }),\n\t\t\t\t\tonClick: /*func_1*/ ctx[4],\n\t\t\t\t\ticon: 'check',\n\t\t\t\t\tautofocus: true\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(button0.$$.fragment);\n\t\t\tt_1 = space();\n\t\t\tcreate_component(button1.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(button0, target, anchor);\n\t\t\tinsert(target, t_1, anchor);\n\t\t\tmount_component(button1, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst button0_changes = {};\n\n\t\t\tif (dirty & /*$t*/ 1) button0_changes.data = {\n\t\t\t\tvariant: 'outlined',\n\t\t\t\tlabel: /*$t*/ ctx[0]('decline', { default: 'Decline' }),\n\t\t\t\tonClick: /*func*/ ctx[3],\n\t\t\t\ticon: 'close'\n\t\t\t};\n\n\t\t\tbutton0.$set(button0_changes);\n\t\t\tconst button1_changes = {};\n\n\t\t\tif (dirty & /*$t*/ 1) button1_changes.data = {\n\t\t\t\tvariant: 'primary',\n\t\t\t\tlabel: /*$t*/ ctx[0]('accept', { default: 'Accept' }),\n\t\t\t\tonClick: /*func_1*/ ctx[4],\n\t\t\t\ticon: 'check',\n\t\t\t\tautofocus: true\n\t\t\t};\n\n\t\t\tbutton1.$set(button1_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(button0.$$.fragment, local);\n\t\t\ttransition_in(button1.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(button0.$$.fragment, local);\n\t\t\ttransition_out(button1.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\n\t\t\tdestroy_component(button0, detaching);\n\t\t\tdestroy_component(button1, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$i(ctx) {\n\tlet buttongroup;\n\tlet current;\n\n\tbuttongroup = new ButtonGroup({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$7] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(buttongroup.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(buttongroup, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst buttongroup_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $t*/ 33) {\n\t\t\t\tbuttongroup_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbuttongroup.$set(buttongroup_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(buttongroup.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(buttongroup.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(buttongroup, detaching);\n\t\t}\n\t};\n}\n\nfunction instance$i($$self, $$props, $$invalidate) {\n\tlet $t;\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(0, $t = value));\n\tconst dispatch = createEventDispatcher();\n\tconst func = () => dispatch('cancel');\n\tconst func_1 = () => dispatch('complete');\n\treturn [$t, t, dispatch, func, func_1];\n}\n\nclass Accept extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$i, create_fragment$i, safe_not_equal, {});\n\t}\n}\n\n/* src/ui/components/Asset.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$c(target) {\n\tappend_styles(target, \"svelte-1lmgxnd\", \".asset.svelte-1lmgxnd.svelte-1lmgxnd{text-align:center}.asset.svelte-1lmgxnd>.svelte-1lmgxnd{margin:0;line-height:1.5}.value.svelte-1lmgxnd.svelte-1lmgxnd{font-size:var(--fs-2);font-weight:600;color:var(--body-text-color)}.label.svelte-1lmgxnd.svelte-1lmgxnd{font-size:var(--fs-0);font-weight:400;color:var(--body-text-color-variant)}\");\n}\n\n// (8:0) {#if data}\nfunction create_if_block$9(ctx) {\n\tlet div;\n\tlet p0;\n\tlet t0_value = /*data*/ ctx[0].value + \"\";\n\tlet t0;\n\tlet t1;\n\tlet p1;\n\tlet t2_value = /*data*/ ctx[0].label + \"\";\n\tlet t2;\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tp0 = element(\"p\");\n\t\t\tt0 = text(t0_value);\n\t\t\tt1 = space();\n\t\t\tp1 = element(\"p\");\n\t\t\tt2 = text(t2_value);\n\t\t\tattr(p0, \"class\", \"value svelte-1lmgxnd\");\n\t\t\tattr(p1, \"class\", \"label svelte-1lmgxnd\");\n\t\t\tattr(div, \"class\", \"asset svelte-1lmgxnd\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tappend(div, p0);\n\t\t\tappend(p0, t0);\n\t\t\tappend(div, t1);\n\t\t\tappend(div, p1);\n\t\t\tappend(p1, t2);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*data*/ 1 && t0_value !== (t0_value = /*data*/ ctx[0].value + \"\")) set_data(t0, t0_value);\n\t\t\tif (dirty & /*data*/ 1 && t2_value !== (t2_value = /*data*/ ctx[0].label + \"\")) set_data(t2, t2_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction create_fragment$h(ctx) {\n\tlet if_block_anchor;\n\tlet if_block = /*data*/ ctx[0] && create_if_block$9(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (if_block) if_block.m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*data*/ ctx[0]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$9(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tif_block.d(1);\n\t\t\t\tif_block = null;\n\t\t\t}\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$h($$self, $$props, $$invalidate) {\n\tlet { data = {\n\t\tlabel: '[[Unknown Label]]',\n\t\tvalue: '[[Unknown Value]]'\n\t} } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('data' in $$props) $$invalidate(0, data = $$props.data);\n\t};\n\n\treturn [data];\n}\n\nclass Asset extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$h, create_fragment$h, safe_not_equal, { data: 0 }, add_css$c);\n\t}\n}\n\n/* src/ui/components/Close.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$b(target) {\n\tappend_styles(target, \"svelte-1bils14\", \"button.svelte-1bils14{cursor:pointer;display:block;width:300px;height:65px;border-radius:12px;font-size:16px;font-weight:600;color:var(--button-text-color);background-color:var(--button-tertiary-color);border:none;box-shadow:none;margin:27px auto 0}\");\n}\n\nfunction create_fragment$g(ctx) {\n\tlet button;\n\tlet t_1_value = /*$t*/ ctx[0]('close', { default: 'Close' }) + \"\";\n\tlet t_1;\n\tlet mounted;\n\tlet dispose;\n\n\treturn {\n\t\tc() {\n\t\t\tbutton = element(\"button\");\n\t\t\tt_1 = text(t_1_value);\n\t\t\tattr(button, \"class\", \"svelte-1bils14\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, button, anchor);\n\t\t\tappend(button, t_1);\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(button, \"click\", /*click_handler*/ ctx[3]);\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (dirty & /*$t*/ 1 && t_1_value !== (t_1_value = /*$t*/ ctx[0]('close', { default: 'Close' }) + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(button);\n\t\t\t}\n\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\nfunction instance$g($$self, $$props, $$invalidate) {\n\tlet $t;\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(0, $t = value));\n\tconst dispatch = createEventDispatcher();\n\tconst click_handler = () => dispatch('complete');\n\treturn [$t, t, dispatch, click_handler];\n}\n\nclass Close extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$g, create_fragment$g, safe_not_equal, {}, add_css$b);\n\t}\n}\n\n/* src/ui/components/Link.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$a(target) {\n\tappend_styles(target, \"svelte-785ja0\", \".button.svelte-785ja0{--button-height:var(--space-2xl);cursor:pointer;display:flex;justify-content:center;align-items:center;gap:var(--space-2xs);height:var(--button-height);line-height:var(--button-height);text-decoration:none;text-align:center;border-radius:var(--border-radius-inner);font-size:var(--fs-1);font-weight:600;color:var(--button-color, var(--button-text-color));background:var(--button-background, var(--button-primary-background));border:none;box-shadow:var(--button-outline);flex:1}.button.svelte-785ja0:hover{background:var(--button-background-hover, var(--button-primary-background-hover));box-shadow:var(--button-outline-hover, var(--button-primary-outline-hover))}.button.svelte-785ja0:active{background:var(--button-background-active, var(--button-primary-background-active));box-shadow:var(--button-outline-active);color:var(--button-text-color-active)}.secondary.svelte-785ja0{--button-background:var(--button-secondary-background);--button-background-hover:var(--button-secondary-background-hover);--button-background-active:var(--button-secondary-background-active);--button-outline-hover:var(--button-secondary-outline-hover)}.outlined.svelte-785ja0{--button-background:transparent;--button-background-hover:transparent;--button-background-active:var(--button-outlined-background-active);--button-outline:var(--button-outlined-outline);--button-outline-hover:var(--button-outlined-outline-hover)}a.svelte-785ja0{align-self:stretch}\");\n}\n\n// (7:4) {#if icon}\nfunction create_if_block$8(ctx) {\n\tlet icon_1;\n\tlet current;\n\ticon_1 = new Icon({ props: { name: /*icon*/ ctx[3] } });\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(icon_1.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(icon_1, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon_1.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon_1.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(icon_1, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$f(ctx) {\n\tlet a;\n\tlet t0;\n\tlet span;\n\tlet current;\n\tlet if_block = /*icon*/ ctx[3] && create_if_block$8(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\ta = element(\"a\");\n\t\t\tif (if_block) if_block.c();\n\t\t\tt0 = space();\n\t\t\tspan = element(\"span\");\n\t\t\tspan.textContent = `${/*label*/ ctx[2]}`;\n\t\t\tattr(a, \"class\", \"\" + (null_to_empty(/*variant*/ ctx[5]) + \" svelte-785ja0\"));\n\t\t\tattr(a, \"href\", /*href*/ ctx[1]);\n\t\t\tattr(a, \"target\", /*target*/ ctx[4]);\n\t\t\tattr(a, \"rel\", \"noreferrer\");\n\t\t\ttoggle_class(a, \"button\", /*button*/ ctx[0]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, a, anchor);\n\t\t\tif (if_block) if_block.m(a, null);\n\t\t\tappend(a, t0);\n\t\t\tappend(a, span);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*icon*/ ctx[3]) if_block.p(ctx, dirty);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(a);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d();\n\t\t}\n\t};\n}\n\nfunction instance$f($$self, $$props, $$invalidate) {\n\tlet { data } = $$props;\n\tlet { button = true, href, label, icon, target, variant = 'outlined' } = data;\n\n\t$$self.$$set = $$props => {\n\t\tif ('data' in $$props) $$invalidate(6, data = $$props.data);\n\t};\n\n\treturn [button, href, label, icon, target, variant, data];\n}\n\nclass Link extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$f, create_fragment$f, safe_not_equal, { data: 6 }, add_css$a);\n\t}\n}\n\nvar ErrorCorrectLevel = {\n L: 1,\n M: 0,\n Q: 3,\n H: 2,\n};\n\nvar Mode = {\n MODE_NUMBER: 1 << 0,\n MODE_ALPHA_NUM: 1 << 1,\n MODE_8BIT_BYTE: 1 << 2,\n MODE_KANJI: 1 << 3,\n};\n\nclass QR8bitByte {\n constructor(data) {\n this.mode = Mode.MODE_8BIT_BYTE;\n this.data = data;\n }\n getLength() {\n return this.data.length;\n }\n write(buffer) {\n for (let i = 0; i < this.data.length; i++) {\n // not JIS ...\n buffer.put(this.data.charCodeAt(i), 8);\n }\n }\n}\n\nclass QRBitBuffer {\n constructor() {\n this.buffer = [];\n this.length = 0;\n }\n get(index) {\n const bufIndex = Math.floor(index / 8);\n return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1;\n }\n put(num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) == 1);\n }\n }\n getLengthInBits() {\n return this.length;\n }\n putBit(bit) {\n const bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[bufIndex] |= 0x80 >>> this.length % 8;\n }\n this.length++;\n }\n}\n\nconst QRMath = {\n glog: function (n) {\n if (n < 1) {\n throw new Error('glog(' + n + ')');\n }\n return QRMath.LOG_TABLE[n];\n },\n gexp: function (n) {\n while (n < 0) {\n n += 255;\n }\n while (n >= 256) {\n n -= 255;\n }\n return QRMath.EXP_TABLE[n];\n },\n EXP_TABLE: new Array(256),\n LOG_TABLE: new Array(256),\n};\nfor (let i = 0; i < 8; i++) {\n QRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (let i = 8; i < 256; i++) {\n QRMath.EXP_TABLE[i] =\n QRMath.EXP_TABLE[i - 4] ^\n QRMath.EXP_TABLE[i - 5] ^\n QRMath.EXP_TABLE[i - 6] ^\n QRMath.EXP_TABLE[i - 8];\n}\nfor (let i = 0; i < 255; i++) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n}\n\nclass QRPolynomial {\n constructor(num, shift) {\n if (num.length == undefined) {\n throw new Error(num.length + '/' + shift);\n }\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset++;\n }\n this.num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset];\n }\n }\n get(index) {\n return this.num[index];\n }\n getLength() {\n return this.num.length;\n }\n multiply(e) {\n const num = new Array(this.getLength() + e.getLength() - 1);\n for (let i = 0; i < this.getLength(); i++) {\n for (let j = 0; j < e.getLength(); j++) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));\n }\n }\n return new QRPolynomial(num, 0);\n }\n mod(e) {\n if (this.getLength() - e.getLength() < 0) {\n return this;\n }\n const ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0));\n const num = new Array(this.getLength());\n for (let i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i);\n }\n for (let i = 0; i < e.getLength(); i++) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);\n }\n // recursive call\n return new QRPolynomial(num, 0).mod(e);\n }\n}\n\n// ErrorCorrectLevel\nclass QRRSBlock {\n constructor(totalCount, dataCount) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n static getRSBlocks(typeNumber, errorCorrectLevel) {\n const rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n if (rsBlock == undefined) {\n throw new Error('bad rs block @ typeNumber:' +\n typeNumber +\n '/errorCorrectLevel:' +\n errorCorrectLevel);\n }\n const length = rsBlock.length / 3;\n const list = [];\n for (let i = 0; i < length; i++) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n for (let j = 0; j < count; j++) {\n list.push(new QRRSBlock(totalCount, dataCount));\n }\n }\n return list;\n }\n static getRsBlockTable(typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorCorrectLevel.M:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorCorrectLevel.Q:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorCorrectLevel.H:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default:\n return undefined;\n }\n }\n}\nQRRSBlock.RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12],\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16],\n];\n\nconst QRMaskPattern = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7,\n};\nconst QRUtil = {\n PATTERN_POSITION_TABLE: [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170],\n ],\n G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),\n getBCHTypeInfo: function (data) {\n let d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15));\n }\n return ((data << 10) | d) ^ QRUtil.G15_MASK;\n },\n getBCHTypeNumber: function (data) {\n let d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18));\n }\n return (data << 12) | d;\n },\n getBCHDigit: function (data) {\n let digit = 0;\n while (data != 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n },\n getPatternPosition: function (typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n getMask: function (maskPattern, i, j) {\n switch (maskPattern) {\n case QRMaskPattern.PATTERN000:\n return (i + j) % 2 == 0;\n case QRMaskPattern.PATTERN001:\n return i % 2 == 0;\n case QRMaskPattern.PATTERN010:\n return j % 3 == 0;\n case QRMaskPattern.PATTERN011:\n return (i + j) % 3 == 0;\n case QRMaskPattern.PATTERN100:\n return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;\n case QRMaskPattern.PATTERN101:\n return ((i * j) % 2) + ((i * j) % 3) == 0;\n case QRMaskPattern.PATTERN110:\n return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;\n case QRMaskPattern.PATTERN111:\n return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;\n default:\n throw new Error('bad maskPattern:' + maskPattern);\n }\n },\n getErrorCorrectPolynomial: function (errorCorrectLength) {\n let a = new QRPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));\n }\n return a;\n },\n getLengthInBits: function (mode, type) {\n if (1 <= type && type < 10) {\n // 1 - 9\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 10;\n case Mode.MODE_ALPHA_NUM:\n return 9;\n case Mode.MODE_8BIT_BYTE:\n return 8;\n case Mode.MODE_KANJI:\n return 8;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else if (type < 27) {\n // 10 - 26\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 12;\n case Mode.MODE_ALPHA_NUM:\n return 11;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 10;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else if (type < 41) {\n // 27 - 40\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 14;\n case Mode.MODE_ALPHA_NUM:\n return 13;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 12;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else {\n throw new Error('type:' + type);\n }\n },\n getLostPoint: function (qrCode) {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n // LEVEL1\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n for (let r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n for (let c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n if (r == 0 && c == 0) {\n continue;\n }\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount++;\n }\n }\n }\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n // LEVEL2\n for (let row = 0; row < moduleCount - 1; row++) {\n for (let col = 0; col < moduleCount - 1; col++) {\n let count = 0;\n if (qrCode.isDark(row, col))\n count++;\n if (qrCode.isDark(row + 1, col))\n count++;\n if (qrCode.isDark(row, col + 1))\n count++;\n if (qrCode.isDark(row + 1, col + 1))\n count++;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n // LEVEL3\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount - 6; col++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)) {\n lostPoint += 40;\n }\n }\n }\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount - 6; row++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)) {\n lostPoint += 40;\n }\n }\n }\n // LEVEL4\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++;\n }\n }\n }\n const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n return lostPoint;\n },\n};\n\nclass QRCode {\n constructor(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n }\n addData(data) {\n const newData = new QR8bitByte(data);\n this.dataList.push(newData);\n this.dataCache = null;\n }\n isDark(row, col) {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(row + ',' + col);\n }\n return this.modules[row][col];\n }\n getModuleCount() {\n return this.moduleCount;\n }\n make() {\n // Calculate automatically typeNumber if provided is < 1\n if (this.typeNumber < 1) {\n let typeNumber = 1;\n for (typeNumber = 1; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n const buffer = new QRBitBuffer();\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n for (let i = 0; i < this.dataList.length; i++) {\n const data = this.dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n if (buffer.getLengthInBits() <= totalDataCount * 8)\n break;\n }\n this.typeNumber = typeNumber;\n }\n this.makeImpl(false, this.getBestMaskPattern());\n }\n makeImpl(test, maskPattern) {\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = new Array(this.moduleCount);\n for (let row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount);\n for (let col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null; //(col + row) % 3;\n }\n }\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n if (this.dataCache == null) {\n this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n }\n this.mapData(this.dataCache, maskPattern);\n }\n setupPositionProbePattern(row, col) {\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r)\n continue;\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c)\n continue;\n if ((0 <= r && r <= 6 && (c == 0 || c == 6)) ||\n (0 <= c && c <= 6 && (r == 0 || r == 6)) ||\n (2 <= r && r <= 4 && 2 <= c && c <= 4)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n getBestMaskPattern() {\n let minLostPoint = 0;\n let pattern = 0;\n for (let i = 0; i < 8; i++) {\n this.makeImpl(true, i);\n const lostPoint = QRUtil.getLostPoint(this);\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n return pattern;\n }\n setupTimingPattern() {\n for (let r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules[r][6] != null) {\n continue;\n }\n this.modules[r][6] = r % 2 == 0;\n }\n for (let c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules[6][c] != null) {\n continue;\n }\n this.modules[6][c] = c % 2 == 0;\n }\n }\n setupPositionAdjustPattern() {\n const pos = QRUtil.getPatternPosition(this.typeNumber);\n for (let i = 0; i < pos.length; i++) {\n for (let j = 0; j < pos.length; j++) {\n const row = pos[i];\n const col = pos[j];\n if (this.modules[row][col] != null) {\n continue;\n }\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n setupTypeNumber(test) {\n const bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n this.modules[Math.floor(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = mod;\n }\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n this.modules[(i % 3) + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n }\n setupTypeInfo(test, maskPattern) {\n const data = (this.errorCorrectLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n // vertical\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 6) {\n this.modules[i][8] = mod;\n }\n else if (i < 8) {\n this.modules[i + 1][8] = mod;\n }\n else {\n this.modules[this.moduleCount - 15 + i][8] = mod;\n }\n }\n // horizontal\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod;\n }\n else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod;\n }\n else {\n this.modules[8][15 - i - 1] = mod;\n }\n }\n // fixed module\n this.modules[this.moduleCount - 8][8] = !test;\n }\n mapData(data, maskPattern) {\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6)\n col--;\n for (;;) {\n for (let c = 0; c < 2; c++) {\n if (this.modules[row][col - c] == null) {\n let dark = false;\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;\n }\n const mask = QRUtil.getMask(maskPattern, row, col - c);\n if (mask) {\n dark = !dark;\n }\n this.modules[row][col - c] = dark;\n bitIndex--;\n if (bitIndex == -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n row += inc;\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n static createData(typeNumber, errorCorrectLevel, dataList) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new QRBitBuffer();\n for (let i = 0; i < dataList.length; i++) {\n const data = dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n // calc num max data.\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error('code length overflow. (' +\n buffer.getLengthInBits() +\n '>' +\n totalDataCount * 8 +\n ')');\n }\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n // padding\n for (;;) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCode.PAD0, 8);\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCode.PAD1, 8);\n }\n return QRCode.createBytes(buffer, rsBlocks);\n }\n static createBytes(buffer, rsBlocks) {\n let offset = 0;\n let maxDcCount = 0;\n let maxEcCount = 0;\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n for (let r = 0; r < rsBlocks.length; r++) {\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcdata[r] = new Array(dcCount);\n for (let i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 0xff & buffer.buffer[i + offset];\n }\n offset += dcCount;\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i++) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n }\n }\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n const data = new Array(totalCodeCount);\n let index = 0;\n for (let i = 0; i < maxDcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i];\n }\n }\n }\n for (let i = 0; i < maxEcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i];\n }\n }\n }\n return data;\n }\n}\nQRCode.PAD0 = 0xec;\nQRCode.PAD1 = 0x11;\n\n/**\n * Generate QR SVG\n * @author Johan Nordberg \n */\nfunction generate(text, level = 'L', version = -1) {\n try {\n const qr = new QRCode(version, ErrorCorrectLevel[level]);\n const rects = [];\n qr.addData(text);\n qr.make();\n const rows = qr.modules;\n const size = rows.length;\n for (const [y, row] of rows.entries()) {\n let rect;\n for (const [x, on] of row.entries()) {\n if (on) {\n if (!rect)\n rect = { x, y, width: 0, height: 1 };\n rect.width++;\n }\n else {\n if (rect && rect.width > 0) {\n rects.push(rect);\n }\n rect = undefined;\n }\n }\n if (rect && rect.width > 0) {\n rects.push(rect);\n }\n }\n const svg = [\n ``,\n ];\n for (const { x, y, width, height } of rects) {\n svg.push(``);\n }\n svg.push('');\n return svg.join('');\n }\n catch (e) {\n console.log('Could not render QR code: ', e);\n }\n}\n\n/* src/ui/components/Qr.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$9(target) {\n\tappend_styles(target, \"svelte-vj0cjm\", \".wrapper.svelte-vj0cjm.svelte-vj0cjm{position:relative;display:grid;background:var(--body-background-color);border-radius:var(--space-s);padding:var(--space-m);box-shadow:var(--qr-border-color);margin-bottom:var(--space-xs)}.qr.svelte-vj0cjm.svelte-vj0cjm{display:flex}.qr.svelte-vj0cjm svg{border-radius:var(--space-2xs);padding:var(--space-xs);background:white;flex:1;width:100%}dialog.svelte-vj0cjm.svelte-vj0cjm{padding:0;border-radius:var(--space-2xs);border:none}dialog.svelte-vj0cjm .qr.svelte-vj0cjm{background-color:white;width:min(800px, 80vmin);border:none}.button-group.svelte-vj0cjm.svelte-vj0cjm{display:grid;grid-template-columns:1fr 1fr;justify-items:center;gap:var(--space-s);position:absolute;top:100%;width:100%;transform:translateY(-50%)}.button-group.svelte-vj0cjm button.svelte-vj0cjm{display:flex;align-items:center;gap:var(--space-xs);border:none;cursor:pointer;background:var(--body-background-color);color:var(--body-text-color);font-size:var(--fs-0)}@media(max-width: 340px){.button-group.svelte-vj0cjm button span.svelte-vj0cjm:last-of-type{display:none}}.icon.svelte-vj0cjm.svelte-vj0cjm{display:grid;place-content:center;grid-template-areas:'stack'}.icon.svelte-vj0cjm>.svelte-vj0cjm{grid-area:stack}.check.svelte-vj0cjm.svelte-vj0cjm{background:var(--body-background-color)}\");\n}\n\n// (60:0) {#if data}\nfunction create_if_block$7(ctx) {\n\tlet div4;\n\tlet t0;\n\tlet div3;\n\tlet t1;\n\tlet button;\n\tlet div1;\n\tlet div0;\n\tlet icon;\n\tlet t2;\n\tlet t3;\n\tlet div2;\n\tlet current;\n\tlet mounted;\n\tlet dispose;\n\tlet if_block0 = /*$qrcode*/ ctx[3] && create_if_block_3$2(ctx);\n\tlet if_block1 = /*$qrcode*/ ctx[3] && create_if_block_2$4(ctx);\n\n\ticon = new Icon({\n\t\t\tprops: { name: \"copy\", size: \"var(--space-m)\" }\n\t\t});\n\n\tlet if_block2 = /*copied*/ ctx[2] && create_if_block_1$4();\n\n\treturn {\n\t\tc() {\n\t\t\tdiv4 = element(\"div\");\n\t\t\tif (if_block0) if_block0.c();\n\t\t\tt0 = space();\n\t\t\tdiv3 = element(\"div\");\n\t\t\tif (if_block1) if_block1.c();\n\t\t\tt1 = space();\n\t\t\tbutton = element(\"button\");\n\t\t\tdiv1 = element(\"div\");\n\t\t\tdiv0 = element(\"div\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tt2 = space();\n\t\t\tif (if_block2) if_block2.c();\n\t\t\tt3 = space();\n\t\t\tdiv2 = element(\"div\");\n\t\t\tdiv2.innerHTML = `Copy to clipboard`;\n\t\t\tattr(div0, \"class\", \"svelte-vj0cjm\");\n\t\t\tattr(div1, \"class\", \"icon svelte-vj0cjm\");\n\t\t\tattr(button, \"class\", \"copy svelte-vj0cjm\");\n\t\t\tattr(div3, \"class\", \"button-group svelte-vj0cjm\");\n\t\t\tattr(div4, \"class\", \"wrapper svelte-vj0cjm\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div4, anchor);\n\t\t\tif (if_block0) if_block0.m(div4, null);\n\t\t\tappend(div4, t0);\n\t\t\tappend(div4, div3);\n\t\t\tif (if_block1) if_block1.m(div3, null);\n\t\t\tappend(div3, t1);\n\t\t\tappend(div3, button);\n\t\t\tappend(button, div1);\n\t\t\tappend(div1, div0);\n\t\t\tmount_component(icon, div0, null);\n\t\t\tappend(div1, t2);\n\t\t\tif (if_block2) if_block2.m(div1, null);\n\t\t\tappend(button, t3);\n\t\t\tappend(button, div2);\n\t\t\tcurrent = true;\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(button, \"click\", /*click_handler*/ ctx[11]);\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (/*$qrcode*/ ctx[3]) {\n\t\t\t\tif (if_block0) {\n\t\t\t\t\tif_block0.p(ctx, dirty);\n\t\t\t\t} else {\n\t\t\t\t\tif_block0 = create_if_block_3$2(ctx);\n\t\t\t\t\tif_block0.c();\n\t\t\t\t\tif_block0.m(div4, t0);\n\t\t\t\t}\n\t\t\t} else if (if_block0) {\n\t\t\t\tif_block0.d(1);\n\t\t\t\tif_block0 = null;\n\t\t\t}\n\n\t\t\tif (/*$qrcode*/ ctx[3]) {\n\t\t\t\tif (if_block1) {\n\t\t\t\t\tif_block1.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*$qrcode*/ 8) {\n\t\t\t\t\t\ttransition_in(if_block1, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block1 = create_if_block_2$4(ctx);\n\t\t\t\t\tif_block1.c();\n\t\t\t\t\ttransition_in(if_block1, 1);\n\t\t\t\t\tif_block1.m(div3, t1);\n\t\t\t\t}\n\t\t\t} else if (if_block1) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block1, 1, 1, () => {\n\t\t\t\t\tif_block1 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\n\t\t\tif (/*copied*/ ctx[2]) {\n\t\t\t\tif (if_block2) {\n\t\t\t\t\tif (dirty & /*copied*/ 4) {\n\t\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block2 = create_if_block_1$4();\n\t\t\t\t\tif_block2.c();\n\t\t\t\t\ttransition_in(if_block2, 1);\n\t\t\t\t\tif_block2.m(div1, null);\n\t\t\t\t}\n\t\t\t} else if (if_block2) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block2, 1, 1, () => {\n\t\t\t\t\tif_block2 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block1);\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\ttransition_in(if_block2);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block1);\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\ttransition_out(if_block2);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div4);\n\t\t\t}\n\n\t\t\tif (if_block0) if_block0.d();\n\t\t\tif (if_block1) if_block1.d();\n\t\t\tdestroy_component(icon);\n\t\t\tif (if_block2) if_block2.d();\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\n// (62:8) {#if $qrcode}\nfunction create_if_block_3$2(ctx) {\n\tlet div;\n\tlet t;\n\tlet dialog_1;\n\tlet button;\n\tlet mounted;\n\tlet dispose;\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tt = space();\n\t\t\tdialog_1 = element(\"dialog\");\n\t\t\tbutton = element(\"button\");\n\t\t\tattr(div, \"class\", \"main qr svelte-vj0cjm\");\n\t\t\tattr(button, \"class\", \"qr svelte-vj0cjm\");\n\t\t\tattr(dialog_1, \"class\", \"svelte-vj0cjm\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tdiv.innerHTML = /*$qrcode*/ ctx[3];\n\t\t\tinsert(target, t, anchor);\n\t\t\tinsert(target, dialog_1, anchor);\n\t\t\tappend(dialog_1, button);\n\t\t\tbutton.innerHTML = /*$qrcode*/ ctx[3];\n\t\t\t/*dialog_1_binding*/ ctx[10](dialog_1);\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = [\n\t\t\t\t\tlisten(button, \"click\", /*collapse*/ ctx[6]),\n\t\t\t\t\tlisten(dialog_1, \"click\", self(/*backgroundClose*/ ctx[7])),\n\t\t\t\t\tlisten(dialog_1, \"keydown\", stop_propagation(prevent_default(/*escapeClose*/ ctx[8])), true)\n\t\t\t\t];\n\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$qrcode*/ 8) div.innerHTML = /*$qrcode*/ ctx[3];\t\t\tif (dirty & /*$qrcode*/ 8) button.innerHTML = /*$qrcode*/ ctx[3];\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t\tdetach(t);\n\t\t\t\tdetach(dialog_1);\n\t\t\t}\n\n\t\t\t/*dialog_1_binding*/ ctx[10](null);\n\t\t\tmounted = false;\n\t\t\trun_all(dispose);\n\t\t}\n\t};\n}\n\n// (78:12) {#if $qrcode}\nfunction create_if_block_2$4(ctx) {\n\tlet button;\n\tlet icon;\n\tlet t0;\n\tlet div;\n\tlet current;\n\tlet mounted;\n\tlet dispose;\n\n\ticon = new Icon({\n\t\t\tprops: { name: \"expand\", size: \"var(--space-m)\" }\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tbutton = element(\"button\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tt0 = space();\n\t\t\tdiv = element(\"div\");\n\t\t\tdiv.innerHTML = `Expand QR code`;\n\t\t\tattr(button, \"class\", \"expand svelte-vj0cjm\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, button, anchor);\n\t\t\tmount_component(icon, button, null);\n\t\t\tappend(button, t0);\n\t\t\tappend(button, div);\n\t\t\tcurrent = true;\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(button, \"click\", /*toggleExpanded*/ ctx[5]);\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(button);\n\t\t\t}\n\n\t\t\tdestroy_component(icon);\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\n// (91:20) {#if copied}\nfunction create_if_block_1$4(ctx) {\n\tlet div;\n\tlet icon;\n\tlet div_transition;\n\tlet current;\n\n\ticon = new Icon({\n\t\t\tprops: { name: \"check\", size: \"var(--space-m)\" }\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tattr(div, \"class\", \"check svelte-vj0cjm\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tmount_component(icon, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\n\t\t\tif (local) {\n\t\t\t\tadd_render_callback(() => {\n\t\t\t\t\tif (!current) return;\n\t\t\t\t\tif (!div_transition) div_transition = create_bidirectional_transition(div, fade, { duration: 180, easing: cubicInOut }, true);\n\t\t\t\t\tdiv_transition.run(1);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\n\t\t\tif (local) {\n\t\t\t\tif (!div_transition) div_transition = create_bidirectional_transition(div, fade, { duration: 180, easing: cubicInOut }, false);\n\t\t\t\tdiv_transition.run(0);\n\t\t\t}\n\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tdestroy_component(icon);\n\t\t\tif (detaching && div_transition) div_transition.end();\n\t\t}\n\t};\n}\n\nfunction create_fragment$e(ctx) {\n\tlet if_block_anchor;\n\tlet current;\n\tlet if_block = /*data*/ ctx[0] && create_if_block$7(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (if_block) if_block.m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*data*/ ctx[0]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*data*/ 1) {\n\t\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$7(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block, 1, 1, () => {\n\t\t\t\t\tif_block = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$e($$self, $$props, $$invalidate) {\n\tlet $qrcode;\n\tlet { data = '' } = $$props;\n\tlet dialog;\n\tlet expanded = false;\n\tlet copied = false;\n\tconst qrcode = writable();\n\tcomponent_subscribe($$self, qrcode, value => $$invalidate(3, $qrcode = value));\n\n\tonMount(() => {\n\t\ttry {\n\t\t\tqrcode.set(generate(data));\n\t\t} catch(e) {\n\t\t\tconsole.error('Error rendering QR code', e);\n\t\t}\n\t});\n\n\tconst toggleExpanded = () => {\n\t\tif (expanded) {\n\t\t\tcollapse();\n\t\t} else {\n\t\t\texpanded = true;\n\t\t\tdialog.showModal();\n\t\t}\n\t};\n\n\tconst collapse = () => {\n\t\tdialog.close();\n\t\texpanded = false;\n\t};\n\n\t// When background is clicked outside of modal, close\n\tfunction backgroundClose(event) {\n\t\tvar rect = dialog.getBoundingClientRect();\n\t\tvar isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;\n\n\t\tif (!isInDialog) {\n\t\t\tcollapse();\n\t\t}\n\t}\n\n\t// When escape keypress is captured, close\n\tfunction escapeClose(event) {\n\t\tif (event.key === 'Escape') {\n\t\t\tcollapse();\n\t\t}\n\t}\n\n\t// Copy data to clipboard if supported. Requires a secure context e.g. https\n\tfunction copyToClipboard(data) {\n\t\tif (!navigator.clipboard) return;\n\t\tnavigator.clipboard.writeText(data);\n\t\t$$invalidate(2, copied = true);\n\t\tsetTimeout(() => $$invalidate(2, copied = false), 1200);\n\t}\n\n\tfunction dialog_1_binding($$value) {\n\t\tbinding_callbacks[$$value ? 'unshift' : 'push'](() => {\n\t\t\tdialog = $$value;\n\t\t\t$$invalidate(1, dialog);\n\t\t});\n\t}\n\n\tconst click_handler = () => copyToClipboard(data);\n\n\t$$self.$$set = $$props => {\n\t\tif ('data' in $$props) $$invalidate(0, data = $$props.data);\n\t};\n\n\treturn [\n\t\tdata,\n\t\tdialog,\n\t\tcopied,\n\t\t$qrcode,\n\t\tqrcode,\n\t\ttoggleExpanded,\n\t\tcollapse,\n\t\tbackgroundClose,\n\t\tescapeClose,\n\t\tcopyToClipboard,\n\t\tdialog_1_binding,\n\t\tclick_handler\n\t];\n}\n\nclass Qr extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$e, create_fragment$e, safe_not_equal, { data: 0 }, add_css$9);\n\t}\n}\n\n/* src/ui/components/Textarea.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$8(target) {\n\tappend_styles(target, \"svelte-1gpx2bs\", \".wrapper.svelte-1gpx2bs{position:relative;display:flex;display:grid;background-color:var(--text-area-background);border-radius:var(--border-radius-inner);overflow:hidden}textarea.svelte-1gpx2bs{--rows:9;flex:1;color:var(--text-area-text-color);background-color:var(--text-area-background);border:none;font-size:var(--fs-0);font-weight:400;line-height:1.5;resize:none;opacity:0.75;height:calc(var(--fs-0) * 1.5 * var(--rows) - var(--fs-0) * 1.5 * 0.5);border-radius:inherit;padding-inline-start:var(--space-m);padding-block-start:var(--space-m)}.wrapper.svelte-1gpx2bs::before,.wrapper.svelte-1gpx2bs::after{content:\\\"\\\";display:block;position:absolute;z-index:2;width:100%;height:var(--space-l);background:linear-gradient(var(--deg), transparent, black 100%)}.wrapper.svelte-1gpx2bs::before{--deg:0;top:0;opacity:var(--top-shadow-opacity, 0)}.wrapper.svelte-1gpx2bs::after{--deg:180deg;bottom:0;opacity:var(--bottom-shadow-opacity, 0)}\");\n}\n\nfunction create_fragment$d(ctx) {\n\tlet div;\n\tlet textarea_1;\n\tlet textarea_1_value_value;\n\tlet mounted;\n\tlet dispose;\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\ttextarea_1 = element(\"textarea\");\n\t\t\ttextarea_1.readOnly = true;\n\t\t\ttextarea_1.value = textarea_1_value_value = /*data*/ ctx[0].content;\n\t\t\tattr(textarea_1, \"class\", \"svelte-1gpx2bs\");\n\t\t\tattr(div, \"class\", \"wrapper svelte-1gpx2bs\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tappend(div, textarea_1);\n\t\t\t/*textarea_1_binding*/ ctx[4](textarea_1);\n\t\t\t/*div_binding*/ ctx[5](div);\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(textarea_1, \"scroll\", /*handleScroll*/ ctx[3]);\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (dirty & /*data*/ 1 && textarea_1_value_value !== (textarea_1_value_value = /*data*/ ctx[0].content)) {\n\t\t\t\ttextarea_1.value = textarea_1_value_value;\n\t\t\t}\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\t/*textarea_1_binding*/ ctx[4](null);\n\t\t\t/*div_binding*/ ctx[5](null);\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\nlet maxOpacity = 0.2;\n\nfunction instance$d($$self, $$props, $$invalidate) {\n\tlet { data = {} } = $$props;\n\tlet wrapper;\n\tlet textarea;\n\n\tfunction handleScroll(event) {\n\t\tlet scrollMax = event.target.scrollHeight - event.target.clientHeight;\n\t\tlet currentScroll = event.target.scrollTop / scrollMax;\n\t\tlet topShadowOpacity = currentScroll * maxOpacity;\n\t\tlet bottomShadowOpacity = (1 - currentScroll) * maxOpacity;\n\t\twrapper.style.setProperty('--top-shadow-opacity', topShadowOpacity);\n\t\twrapper.style.setProperty('--bottom-shadow-opacity', bottomShadowOpacity);\n\t}\n\n\tonMount(() => {\n\t\tlet startingOpacity = (1 - textarea.scrollTop / (textarea.scrollHeight - textarea.clientHeight)) * maxOpacity;\n\t\twrapper.style.setProperty('--bottom-shadow-opacity', startingOpacity);\n\t});\n\n\tfunction textarea_1_binding($$value) {\n\t\tbinding_callbacks[$$value ? 'unshift' : 'push'](() => {\n\t\t\ttextarea = $$value;\n\t\t\t$$invalidate(2, textarea);\n\t\t});\n\t}\n\n\tfunction div_binding($$value) {\n\t\tbinding_callbacks[$$value ? 'unshift' : 'push'](() => {\n\t\t\twrapper = $$value;\n\t\t\t$$invalidate(1, wrapper);\n\t\t});\n\t}\n\n\t$$self.$$set = $$props => {\n\t\tif ('data' in $$props) $$invalidate(0, data = $$props.data);\n\t};\n\n\treturn [data, wrapper, textarea, handleScroll, textarea_1_binding, div_binding];\n}\n\nclass Textarea extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$d, create_fragment$d, safe_not_equal, { data: 0 }, add_css$8);\n\t}\n}\n\n/* src/ui/Prompt.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$7(target) {\n\tappend_styles(target, \"svelte-1kd5uy1\", \".prompt.svelte-1kd5uy1{display:flex;flex-direction:column;gap:var(--space-m);gap:var(--space-l)}.text.svelte-1kd5uy1{display:flex;flex-direction:column;gap:var(--space-s);text-align:center}\");\n}\n\nfunction get_each_context$2(ctx, list, i) {\n\tconst child_ctx = ctx.slice();\n\tchild_ctx[6] = list[i];\n\treturn child_ctx;\n}\n\n// (104:8) \nfunction create_default_slot_1$5(ctx) {\n\tlet t_value = /*$prompt*/ ctx[0]?.args.title + \"\";\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tt = text(t_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$prompt*/ 1 && t_value !== (t_value = /*$prompt*/ ctx[0]?.args.title + \"\")) set_data(t, t_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (105:8) \nfunction create_default_slot$6(ctx) {\n\tlet t_value = /*$prompt*/ ctx[0]?.args.body + \"\";\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tt = text(t_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$prompt*/ 1 && t_value !== (t_value = /*$prompt*/ ctx[0]?.args.body + \"\")) set_data(t, t_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (107:4) {#each $elements as component}\nfunction create_each_block$2(ctx) {\n\tlet switch_instance;\n\tlet switch_instance_anchor;\n\tlet current;\n\tconst switch_instance_spread_levels = [/*component*/ ctx[6].props];\n\tvar switch_value = /*component*/ ctx[6].component;\n\n\tfunction switch_props(ctx, dirty) {\n\t\tlet switch_instance_props = {};\n\n\t\tif (dirty !== undefined && dirty & /*$elements*/ 2) {\n\t\t\tswitch_instance_props = get_spread_update(switch_instance_spread_levels, [get_spread_object(/*component*/ ctx[6].props)]);\n\t\t} else {\n\t\t\tfor (let i = 0; i < switch_instance_spread_levels.length; i += 1) {\n\t\t\t\tswitch_instance_props = assign(switch_instance_props, switch_instance_spread_levels[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn { props: switch_instance_props };\n\t}\n\n\tif (switch_value) {\n\t\tswitch_instance = construct_svelte_component(switch_value, switch_props(ctx));\n\t\tswitch_instance.$on(\"complete\", /*complete_handler*/ ctx[4]);\n\t\tswitch_instance.$on(\"cancel\", /*cancel_handler*/ ctx[5]);\n\t}\n\n\treturn {\n\t\tc() {\n\t\t\tif (switch_instance) create_component(switch_instance.$$.fragment);\n\t\t\tswitch_instance_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (switch_instance) mount_component(switch_instance, target, anchor);\n\t\t\tinsert(target, switch_instance_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$elements*/ 2 && switch_value !== (switch_value = /*component*/ ctx[6].component)) {\n\t\t\t\tif (switch_instance) {\n\t\t\t\t\tgroup_outros();\n\t\t\t\t\tconst old_component = switch_instance;\n\n\t\t\t\t\ttransition_out(old_component.$$.fragment, 1, 0, () => {\n\t\t\t\t\t\tdestroy_component(old_component, 1);\n\t\t\t\t\t});\n\n\t\t\t\t\tcheck_outros();\n\t\t\t\t}\n\n\t\t\t\tif (switch_value) {\n\t\t\t\t\tswitch_instance = construct_svelte_component(switch_value, switch_props(ctx, dirty));\n\t\t\t\t\tswitch_instance.$on(\"complete\", /*complete_handler*/ ctx[4]);\n\t\t\t\t\tswitch_instance.$on(\"cancel\", /*cancel_handler*/ ctx[5]);\n\t\t\t\t\tcreate_component(switch_instance.$$.fragment);\n\t\t\t\t\ttransition_in(switch_instance.$$.fragment, 1);\n\t\t\t\t\tmount_component(switch_instance, switch_instance_anchor.parentNode, switch_instance_anchor);\n\t\t\t\t} else {\n\t\t\t\t\tswitch_instance = null;\n\t\t\t\t}\n\t\t\t} else if (switch_value) {\n\t\t\t\tconst switch_instance_changes = (dirty & /*$elements*/ 2)\n\t\t\t\t? get_spread_update(switch_instance_spread_levels, [get_spread_object(/*component*/ ctx[6].props)])\n\t\t\t\t: {};\n\n\t\t\t\tswitch_instance.$set(switch_instance_changes);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\tif (switch_instance) transition_in(switch_instance.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\tif (switch_instance) transition_out(switch_instance.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(switch_instance_anchor);\n\t\t\t}\n\n\t\t\tif (switch_instance) destroy_component(switch_instance, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$c(ctx) {\n\tlet div1;\n\tlet div0;\n\tlet bodytitle;\n\tlet t0;\n\tlet bodytext;\n\tlet t1;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$5] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tbodytext = new BodyText({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$6] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tlet each_value = ensure_array_like(/*$elements*/ ctx[1]);\n\tlet each_blocks = [];\n\n\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\teach_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));\n\t}\n\n\tconst out = i => transition_out(each_blocks[i], 1, 1, () => {\n\t\teach_blocks[i] = null;\n\t});\n\n\treturn {\n\t\tc() {\n\t\t\tdiv1 = element(\"div\");\n\t\t\tdiv0 = element(\"div\");\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt0 = space();\n\t\t\tcreate_component(bodytext.$$.fragment);\n\t\t\tt1 = space();\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\teach_blocks[i].c();\n\t\t\t}\n\n\t\t\tattr(div0, \"class\", \"text svelte-1kd5uy1\");\n\t\t\tattr(div1, \"class\", \"prompt svelte-1kd5uy1\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div1, anchor);\n\t\t\tappend(div1, div0);\n\t\t\tmount_component(bodytitle, div0, null);\n\t\t\tappend(div0, t0);\n\t\t\tmount_component(bodytext, div0, null);\n\t\t\tappend(div1, t1);\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\teach_blocks[i].m(div1, null);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $prompt*/ 513) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst bodytext_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $prompt*/ 513) {\n\t\t\t\tbodytext_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytext.$set(bodytext_changes);\n\n\t\t\tif (dirty & /*$elements, dispatch*/ 10) {\n\t\t\t\teach_value = ensure_array_like(/*$elements*/ ctx[1]);\n\t\t\t\tlet i;\n\n\t\t\t\tfor (i = 0; i < each_value.length; i += 1) {\n\t\t\t\t\tconst child_ctx = get_each_context$2(ctx, each_value, i);\n\n\t\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\t\teach_blocks[i].p(child_ctx, dirty);\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teach_blocks[i] = create_each_block$2(child_ctx);\n\t\t\t\t\t\teach_blocks[i].c();\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t\teach_blocks[i].m(div1, null);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_outros();\n\n\t\t\t\tfor (i = each_value.length; i < each_blocks.length; i += 1) {\n\t\t\t\t\tout(i);\n\t\t\t\t}\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(bodytext.$$.fragment, local);\n\n\t\t\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\t\t\ttransition_in(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(bodytext.$$.fragment, local);\n\t\t\teach_blocks = each_blocks.filter(Boolean);\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\ttransition_out(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div1);\n\t\t\t}\n\n\t\t\tdestroy_component(bodytitle);\n\t\t\tdestroy_component(bodytext);\n\t\t\tdestroy_each(each_blocks, detaching);\n\t\t}\n\t};\n}\n\nfunction instance$c($$self, $$props, $$invalidate) {\n\tlet $prompt;\n\tlet $elements;\n\tcomponent_subscribe($$self, prompt, $$value => $$invalidate(0, $prompt = $$value));\n\n\tconst elements = derived(prompt, $prompt => {\n\t\tconst components = [];\n\n\t\tif ($prompt) {\n\t\t\t$prompt.args.elements.forEach(element => {\n\t\t\t\tswitch (element.type) {\n\t\t\t\t\tcase 'accept':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Accept,\n\t\t\t\t\t\t\t\tprops: { data: element.data }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'asset':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Asset,\n\t\t\t\t\t\t\t\tprops: { data: element.data }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'close':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Close,\n\t\t\t\t\t\t\t\tprops: { label: element.label }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'link':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Link,\n\t\t\t\t\t\t\t\tprops: { data: element.data }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'qr':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Qr,\n\t\t\t\t\t\t\t\tprops: { data: element.data }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'countdown':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Countdown,\n\t\t\t\t\t\t\t\tprops: { data: element.data }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Textarea,\n\t\t\t\t\t\t\t\tprops: { data: element.data }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tcase 'button':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcomponents.push({\n\t\t\t\t\t\t\t\tcomponent: Button,\n\t\t\t\t\t\t\t\tprops: { data: element.data }\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthrow new Error(`Unknown element type: ${element.type}`);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn components;\n\t});\n\n\tcomponent_subscribe($$self, elements, value => $$invalidate(1, $elements = value));\n\tconst dispatch = createEventDispatcher();\n\tconst complete_handler = () => dispatch('complete');\n\tconst cancel_handler = () => dispatch('cancel');\n\treturn [$prompt, $elements, elements, dispatch, complete_handler, cancel_handler];\n}\n\nclass Prompt extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$c, create_fragment$c, safe_not_equal, {}, add_css$7);\n\t}\n}\n\nvar version = \"1.4.0-rc6\";\n\n/* src/ui/settings/About.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$6(target) {\n\tappend_styles(target, \"svelte-tj2pg7\", \"div.svelte-tj2pg7{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-m)}svg.svelte-tj2pg7{height:auto;width:100%;max-width:200px}\");\n}\n\n// (30:4) {:else}\nfunction create_else_block$2(ctx) {\n\tlet svg;\n\tlet path0;\n\tlet path1;\n\tlet path2;\n\tlet path3;\n\tlet path4;\n\tlet path5;\n\tlet path6;\n\tlet path7;\n\tlet path8;\n\tlet path9;\n\tlet path10;\n\tlet path11;\n\n\treturn {\n\t\tc() {\n\t\t\tsvg = svg_element(\"svg\");\n\t\t\tpath0 = svg_element(\"path\");\n\t\t\tpath1 = svg_element(\"path\");\n\t\t\tpath2 = svg_element(\"path\");\n\t\t\tpath3 = svg_element(\"path\");\n\t\t\tpath4 = svg_element(\"path\");\n\t\t\tpath5 = svg_element(\"path\");\n\t\t\tpath6 = svg_element(\"path\");\n\t\t\tpath7 = svg_element(\"path\");\n\t\t\tpath8 = svg_element(\"path\");\n\t\t\tpath9 = svg_element(\"path\");\n\t\t\tpath10 = svg_element(\"path\");\n\t\t\tpath11 = svg_element(\"path\");\n\t\t\tattr(path0, \"d\", \"M273.403 84.085C273.403 83.4185 272.851 82.8783 272.171 82.8783H265.007C264.327 82.8783 263.775 83.4185 263.775 84.085V106.927C263.775 110.163 263.082 112.365 261.908 113.745C260.77 115.083 259.014 115.841 256.4 115.841C253.723 115.841 251.923 115.078 250.76 113.737C249.564 112.357 248.859 110.158 248.859 106.927V96.1519C248.859 95.4854 248.307 94.9452 247.627 94.9452H240.408C239.727 94.9452 239.175 95.4854 239.175 96.1519V106.927C239.175 110.16 238.474 112.36 237.286 113.74C236.131 115.08 234.345 115.841 231.689 115.841C229.131 115.841 227.36 115.114 226.172 113.816C225.018 112.514 224.315 110.304 224.315 106.927V84.085C224.315 83.4185 223.763 82.8783 223.082 82.8783H215.863C215.183 82.8783 214.631 83.4185 214.631 84.085V107.148C214.631 112.616 216.054 116.982 219.088 120.045C222.122 123.107 226.385 124.559 231.689 124.559C234.557 124.559 237.131 124.116 239.384 123.194L239.394 123.19C241.185 122.439 242.729 121.465 244.007 120.261C245.263 121.467 246.796 122.44 248.585 123.19L248.609 123.2C250.927 124.115 253.531 124.559 256.4 124.559C261.699 124.559 265.947 123.129 268.946 120.1C271.982 117.036 273.403 112.65 273.403 107.148V84.085Z\");\n\t\t\tattr(path0, \"fill\", \"#494E62\");\n\t\t\tattr(path1, \"d\", \"M326.457 84.085C326.457 83.4185 325.905 82.8783 325.224 82.8783H318.005C317.325 82.8783 316.773 83.4185 316.773 84.085V98.8619H299.136V84.085C299.136 83.4185 298.584 82.8783 297.904 82.8783H290.685C290.004 82.8783 289.452 83.4185 289.452 84.085V122.8C289.452 123.466 290.004 124.006 290.685 124.006H297.904C298.584 124.006 299.136 123.466 299.136 122.8V107.414H316.773V122.8C316.773 123.466 317.325 124.006 318.005 124.006H325.224C325.905 124.006 326.457 123.466 326.457 122.8V84.085Z\");\n\t\t\tattr(path1, \"fill\", \"#494E62\");\n\t\t\tattr(path2, \"fill-rule\", \"evenodd\");\n\t\t\tattr(path2, \"clip-rule\", \"evenodd\");\n\t\t\tattr(path2, \"d\", \"M378.176 124.006C378.857 124.006 379.408 123.466 379.408 122.8V101.341C379.408 97.4001 378.66 93.9713 377.103 91.1039C375.588 88.2098 373.417 86.0002 370.597 84.5155C367.796 83.0409 364.552 82.3252 360.906 82.3252C357.26 82.3252 354.016 83.0409 351.215 84.5155C348.395 86.0002 346.206 88.2088 344.655 91.1009L344.652 91.1063C343.133 93.9728 342.404 97.4004 342.404 101.341V122.8C342.404 123.466 342.955 124.006 343.636 124.006H350.744C351.425 124.006 351.977 123.466 351.977 122.8V114.051H369.724V122.8C369.724 123.466 370.276 124.006 370.957 124.006H378.176ZM367.395 93.4304L367.404 93.4391C368.88 94.9405 369.724 97.2793 369.724 100.677V105.609H351.977V100.677C351.977 97.2793 352.821 94.9405 354.297 93.4392L354.306 93.4303C355.798 91.882 357.923 91.0435 360.85 91.0435C363.778 91.0435 365.903 91.882 367.395 93.4304Z\");\n\t\t\tattr(path2, \"fill\", \"#494E62\");\n\t\t\tattr(path3, \"fill-rule\", \"evenodd\");\n\t\t\tattr(path3, \"clip-rule\", \"evenodd\");\n\t\t\tattr(path3, \"d\", \"M421.019 123.482C421.249 123.81 421.63 124.006 422.036 124.006H429.81C430.268 124.006 430.688 123.758 430.901 123.361C431.114 122.964 431.085 122.485 430.826 122.116L422.723 110.587C424.933 109.494 426.707 107.983 428.005 106.045C429.603 103.717 430.376 100.969 430.376 97.8563C430.376 94.8268 429.663 92.1432 428.187 89.8559C426.712 87.5705 424.59 85.837 421.877 84.6445C419.204 83.4531 416.099 82.8783 412.596 82.8783H396.603C395.923 82.8783 395.371 83.4185 395.371 84.085V122.8C395.371 123.466 395.923 124.006 396.603 124.006H403.822C404.503 124.006 405.055 123.466 405.055 122.8V112.724H412.596C412.917 112.724 413.212 112.72 413.475 112.711L421.019 123.482ZM418.638 93.0871C419.931 94.1409 420.637 95.6687 420.637 97.8563C420.637 100.039 419.933 101.592 418.631 102.686C417.309 103.76 415.252 104.393 412.263 104.393H405.055V91.3754H412.263C415.256 91.3754 417.315 92.0098 418.638 93.0871Z\");\n\t\t\tattr(path3, \"fill\", \"#494E62\");\n\t\t\tattr(path4, \"d\", \"M453.668 122.8V109.184H469.372C470.053 109.184 470.605 108.644 470.605 107.977V101.894C470.605 101.227 470.053 100.687 469.372 100.687H453.668V98.5753C453.668 95.9375 454.441 94.1359 455.807 92.9529C457.199 91.7469 459.374 91.0435 462.542 91.0435C465.829 91.0435 468.452 91.7903 470.494 93.201C470.805 93.416 471.2 93.478 471.565 93.3691C471.929 93.2601 472.221 92.9924 472.357 92.6438L474.634 86.7813C474.839 86.251 474.64 85.6517 474.155 85.3418C472.582 84.3375 470.769 83.5885 468.732 83.0814C466.697 82.5746 464.521 82.3252 462.209 82.3252C456.701 82.3252 452.209 83.729 448.887 86.6749C445.583 89.6004 443.984 93.6202 443.984 98.5753V122.8C443.984 123.466 444.536 124.006 445.217 124.006H452.436C453.116 124.006 453.668 123.466 453.668 122.8Z\");\n\t\t\tattr(path4, \"fill\", \"#494E62\");\n\t\t\tattr(path5, \"d\", \"M177.58 117.515C177.507 121.507 174.869 124.279 172.268 125.782L166.67 129.016C163.999 130.559 160.875 131.159 158.077 131.159C155.278 131.159 152.155 130.559 149.485 129.016L143.994 125.782V136.762C143.994 140.829 141.316 143.664 138.68 145.188L133.083 148.422C130.411 149.965 127.288 150.565 124.489 150.565C121.69 150.565 118.567 149.965 115.897 148.422L107.695 143.683L99.495 148.422C96.8235 149.965 93.7002 150.565 90.9014 150.565C88.1027 150.565 84.9808 149.965 82.3093 148.422L43.1243 125.782C40.523 124.279 37.8851 121.507 37.812 117.515L37.8105 117.269V131.648L37.812 131.895C37.8851 135.886 40.523 138.659 43.1243 140.161L82.3093 162.801C84.9808 164.344 88.1027 164.944 90.9014 164.944C93.7002 164.944 96.8235 164.344 99.495 162.801L107.695 158.063L115.897 162.801C118.567 164.344 121.69 164.944 124.489 164.944C127.288 164.944 130.411 164.344 133.083 162.801L138.68 159.567C141.316 158.044 143.994 155.209 143.994 151.142V140.161L149.485 143.396C152.155 144.939 155.278 145.538 158.077 145.538C160.875 145.538 163.999 144.939 166.67 143.396L172.268 140.161C174.869 138.659 177.507 135.886 177.58 131.895L177.58 117.515Z\");\n\t\t\tattr(path5, \"fill\", \"#F4FAF4\");\n\t\t\tattr(path6, \"d\", \"M37.8456 103.768C37.8224 103.982 37.8105 104.199 37.8105 104.419V117.268L37.812 117.515C37.8851 121.507 40.523 124.279 43.1243 125.782L82.3093 148.422C84.9808 149.964 88.1027 150.564 90.9014 150.564C93.7002 150.564 96.8235 149.964 99.495 148.422L107.695 143.683L115.897 148.422C118.567 149.964 121.69 150.564 124.489 150.564C127.288 150.564 130.411 149.964 133.083 148.422L138.68 145.187C141.316 143.664 143.994 140.829 143.994 136.762V125.782L149.484 129.016C152.155 130.559 155.278 131.159 158.077 131.159C160.875 131.159 163.999 130.559 166.67 129.016L172.268 125.782C174.869 124.279 177.507 121.507 177.58 117.515V103.136C177.506 107.127 174.869 109.899 172.268 111.402L166.67 114.636C163.999 116.179 160.875 116.779 158.077 116.779C155.278 116.779 152.155 116.179 149.484 114.636L143.887 111.402C143.797 111.35 143.707 111.296 143.617 111.241C143.86 112.035 143.997 112.892 143.997 113.813C143.997 114.082 143.985 114.346 143.962 114.604C143.983 114.807 143.994 115.012 143.994 115.219V122.382C143.994 126.449 141.316 129.284 138.68 130.808L133.083 134.042C130.411 135.585 127.288 136.184 124.489 136.184C121.69 136.184 118.567 135.585 115.897 134.042L107.695 129.303L99.495 134.042C96.8235 135.585 93.7002 136.184 90.9014 136.184C88.1027 136.184 84.9808 135.585 82.3093 134.042L43.1243 111.402C40.6627 109.98 38.1684 107.421 37.8456 103.768Z\");\n\t\t\tattr(path6, \"fill\", \"#B2F2E1\");\n\t\t\tattr(path7, \"d\", \"M105.024 64.9883C105.03 65.0464 105.036 65.1046 105.043 65.1627C105.324 67.5849 106.527 69.4925 108.024 70.9048C107.915 70.903 107.807 70.9021 107.699 70.9021C106.824 70.9021 105.918 70.9607 105.003 71.0884V65.4957C105.003 65.3248 105.01 65.1556 105.024 64.9883Z\");\n\t\t\tattr(path7, \"fill\", \"#B2F2E1\");\n\t\t\tattr(path8, \"d\", \"M48.7253 82.7478L43.1274 85.9821C40.6334 87.423 38.1038 90.037 37.837 93.7573C37.8195 93.932 37.8105 94.1145 37.8105 94.3053V102.889L37.812 103.135C37.8851 107.127 40.523 109.899 43.1243 111.402L82.3093 134.042C84.9808 135.585 88.1027 136.185 90.9014 136.185C93.7001 136.185 96.8235 135.585 99.495 134.042L107.695 129.304L115.897 134.042C118.567 135.585 121.69 136.185 124.489 136.185C127.288 136.185 130.411 135.585 133.083 134.042L138.68 130.808C141.316 129.284 143.994 126.45 143.994 122.382V115.219C143.994 115.012 143.983 114.807 143.962 114.605C143.985 114.346 143.997 114.082 143.997 113.813C143.997 112.892 143.86 112.035 143.617 111.241C143.707 111.296 143.797 111.35 143.887 111.402L149.484 114.636C152.155 116.179 155.278 116.779 158.077 116.779C160.875 116.779 163.999 116.179 166.67 114.636L172.268 111.402C174.869 109.899 177.507 107.127 177.58 103.135V94.6923C177.583 94.5981 177.584 94.5031 177.584 94.4075C177.584 94.3119 177.583 94.217 177.58 94.1228L177.581 75.2371C177.583 75.1592 177.584 75.0808 177.584 75.0019C177.584 70.9348 174.908 68.0999 172.271 66.5765L133.085 43.9366C130.415 42.3936 127.292 41.7939 124.493 41.7939C121.694 41.7939 118.571 42.3936 115.9 43.9366L110.303 47.1708C107.666 48.6943 104.989 51.5291 104.989 55.5963C104.989 55.788 104.995 55.9769 105.006 56.1631C105.004 56.2285 105.003 56.2944 105.003 56.3609V63.611C104.984 63.8988 104.981 64.1871 104.992 64.4752C104.999 64.7047 105.016 64.9341 105.043 65.163C105.324 67.5851 106.527 69.4928 108.024 70.9051C107.915 70.9033 107.807 70.9024 107.699 70.9024C104.9 70.9024 101.777 71.5021 99.1067 73.045L93.5087 76.2793C90.8719 77.8027 88.1951 80.6376 88.1951 84.7047C88.1951 84.9692 88.2065 85.2285 88.2284 85.4826C88.2236 85.5807 88.2212 85.6793 88.2212 85.7785V92.5656L88.2109 92.7314L88.2007 92.9128C88.1934 93.0894 88.1919 93.2661 88.1948 93.4428C88.2007 93.8112 88.2314 94.1794 88.2855 94.5454C88.3525 94.997 88.4513 95.4299 88.5777 95.8443L65.9101 82.7478C63.2396 81.2049 60.1164 80.6052 57.3177 80.6052C54.519 80.6052 51.3958 81.2049 48.7253 82.7478Z\");\n\t\t\tattr(path8, \"fill\", \"#7BE7CE\");\n\t\t\tattr(path9, \"d\", \"M130.088 49.1268C126.997 47.3406 121.984 47.3405 118.893 49.1268L113.295 52.3611C110.203 54.1473 110.203 57.0434 113.295 58.8296L151.801 81.0771C153.286 81.9349 154.12 83.0983 154.12 84.3114V85.0962C154.12 86.3092 153.286 87.4726 151.801 88.3304L146.882 91.1723C143.791 92.9586 143.791 95.8546 146.882 97.6409L152.48 100.875C155.572 102.661 160.584 102.661 163.676 100.875L169.274 97.6409C172.366 95.8546 172.366 92.9586 169.274 91.1723L164.355 88.3304C162.87 87.4726 162.036 86.3092 162.036 85.0962V84.3114C162.036 83.0983 162.87 81.9349 164.355 81.0771L169.274 78.2352C172.366 76.449 172.366 73.5529 169.274 71.7667L130.088 49.1268Z\");\n\t\t\tattr(path9, \"fill\", \"#494E62\");\n\t\t\tattr(path10, \"d\", \"M62.9133 87.938C59.8216 86.1518 54.8091 86.1518 51.7174 87.938L46.1195 91.1723C43.0279 92.9585 43.0279 95.8546 46.1195 97.6408L85.305 120.281C88.3967 122.067 93.4092 122.067 96.5009 120.281L107.697 113.812L62.9133 87.938Z\");\n\t\t\tattr(path10, \"fill\", \"#494E62\");\n\t\t\tattr(path11, \"d\", \"M128.449 104.502C128.449 105.715 129.283 106.878 130.768 107.736L135.686 110.578C138.778 112.364 138.778 115.26 135.686 117.046L130.088 120.281C126.997 122.067 121.984 122.067 118.893 120.281L107.697 113.812L118.213 107.736C119.698 106.878 120.532 105.715 120.532 104.502L120.532 103.717C120.532 102.504 119.698 101.341 118.213 100.483L96.5009 87.938C93.4092 86.1518 93.4092 83.2557 96.5009 81.4695L102.099 78.2352C105.19 76.449 110.203 76.449 113.295 78.2352L135.686 91.1723C138.778 92.9585 138.778 95.8546 135.686 97.6409L130.768 100.483C129.283 101.341 128.449 102.504 128.449 103.717L128.449 104.502Z\");\n\t\t\tattr(path11, \"fill\", \"#494E62\");\n\t\t\tattr(svg, \"width\", \"512\");\n\t\t\tattr(svg, \"height\", \"206\");\n\t\t\tattr(svg, \"viewBox\", \"0 0 512 206\");\n\t\t\tattr(svg, \"fill\", \"none\");\n\t\t\tattr(svg, \"xmlns\", \"http://www.w3.org/2000/svg\");\n\t\t\tattr(svg, \"class\", \"svelte-tj2pg7\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, svg, anchor);\n\t\t\tappend(svg, path0);\n\t\t\tappend(svg, path1);\n\t\t\tappend(svg, path2);\n\t\t\tappend(svg, path3);\n\t\t\tappend(svg, path4);\n\t\t\tappend(svg, path5);\n\t\t\tappend(svg, path6);\n\t\t\tappend(svg, path7);\n\t\t\tappend(svg, path8);\n\t\t\tappend(svg, path9);\n\t\t\tappend(svg, path10);\n\t\t\tappend(svg, path11);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(svg);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (13:4) {#if theme === 'dark'}\nfunction create_if_block$6(ctx) {\n\tlet svg;\n\tlet path0;\n\tlet path1;\n\tlet path2;\n\tlet path3;\n\tlet path4;\n\tlet path5;\n\tlet path6;\n\tlet path7;\n\tlet path8;\n\tlet path9;\n\tlet path10;\n\tlet path11;\n\n\treturn {\n\t\tc() {\n\t\t\tsvg = svg_element(\"svg\");\n\t\t\tpath0 = svg_element(\"path\");\n\t\t\tpath1 = svg_element(\"path\");\n\t\t\tpath2 = svg_element(\"path\");\n\t\t\tpath3 = svg_element(\"path\");\n\t\t\tpath4 = svg_element(\"path\");\n\t\t\tpath5 = svg_element(\"path\");\n\t\t\tpath6 = svg_element(\"path\");\n\t\t\tpath7 = svg_element(\"path\");\n\t\t\tpath8 = svg_element(\"path\");\n\t\t\tpath9 = svg_element(\"path\");\n\t\t\tpath10 = svg_element(\"path\");\n\t\t\tpath11 = svg_element(\"path\");\n\t\t\tattr(path0, \"d\", \"M273.61 84.1001C273.61 83.4342 273.058 82.8944 272.378 82.8944H265.214C264.534 82.8944 263.982 83.4342 263.982 84.1001V106.924C263.982 110.157 263.289 112.358 262.115 113.737C260.978 115.074 259.221 115.831 256.607 115.831C253.93 115.831 252.13 115.069 250.967 113.728C249.771 112.35 249.066 110.153 249.066 106.924V96.1574C249.066 95.4915 248.514 94.9517 247.834 94.9517H240.615C239.934 94.9517 239.382 95.4915 239.382 96.1574V106.924C239.382 110.154 238.681 112.352 237.493 113.731C236.338 115.07 234.552 115.831 231.897 115.831C229.338 115.831 227.567 115.104 226.379 113.807C225.225 112.507 224.522 110.299 224.522 106.924V84.1001C224.522 83.4342 223.97 82.8944 223.289 82.8944H216.071C215.39 82.8944 214.838 83.4342 214.838 84.1001V107.145C214.838 112.609 216.261 116.971 219.295 120.031C222.329 123.091 226.593 124.542 231.897 124.542C234.764 124.542 237.338 124.099 239.591 123.178L239.601 123.174C241.392 122.423 242.936 121.451 244.214 120.248C245.47 121.452 247.003 122.424 248.792 123.174L248.816 123.184C251.134 124.098 253.738 124.542 256.607 124.542C261.906 124.542 266.154 123.113 269.153 120.086C272.189 117.025 273.61 112.643 273.61 107.145V84.1001Z\");\n\t\t\tattr(path0, \"fill\", \"white\");\n\t\t\tattr(path1, \"d\", \"M326.664 84.1001C326.664 83.4342 326.112 82.8944 325.431 82.8944H318.212C317.532 82.8944 316.98 83.4342 316.98 84.1001V98.8652H299.343V84.1001C299.343 83.4342 298.791 82.8944 298.111 82.8944H290.892C290.211 82.8944 289.659 83.4342 289.659 84.1001V122.784C289.659 123.45 290.211 123.99 290.892 123.99H298.111C298.791 123.99 299.343 123.45 299.343 122.784V107.411H316.98V122.784C316.98 123.45 317.532 123.99 318.212 123.99H325.431C326.112 123.99 326.664 123.45 326.664 122.784V84.1001Z\");\n\t\t\tattr(path1, \"fill\", \"white\");\n\t\t\tattr(path2, \"fill-rule\", \"evenodd\");\n\t\t\tattr(path2, \"clip-rule\", \"evenodd\");\n\t\t\tattr(path2, \"d\", \"M378.383 123.99C379.064 123.99 379.615 123.45 379.615 122.784V101.342C379.615 97.4046 378.867 93.9786 377.31 91.1134C375.795 88.2217 373.624 86.0139 370.804 84.5303C368.003 83.0569 364.759 82.3418 361.113 82.3418C357.467 82.3418 354.223 83.0569 351.422 84.5303C348.602 86.0138 346.413 88.2207 344.862 91.1105L344.859 91.1159C343.34 93.9801 342.611 97.4049 342.611 101.342V122.784C342.611 123.45 343.162 123.99 343.843 123.99H350.951C351.632 123.99 352.184 123.45 352.184 122.784V114.042H369.931V122.784C369.931 123.45 370.483 123.99 371.164 123.99H378.383ZM367.602 93.4381L367.611 93.4468C369.087 94.947 369.931 97.284 369.931 100.679V105.607H352.184V100.679C352.184 97.284 353.028 94.947 354.504 93.4469L354.513 93.438C356.005 91.891 358.13 91.0532 361.057 91.0532C363.985 91.0532 366.11 91.891 367.602 93.4381Z\");\n\t\t\tattr(path2, \"fill\", \"white\");\n\t\t\tattr(path3, \"fill-rule\", \"evenodd\");\n\t\t\tattr(path3, \"clip-rule\", \"evenodd\");\n\t\t\tattr(path3, \"d\", \"M421.226 123.466C421.456 123.794 421.837 123.99 422.243 123.99H430.017C430.475 123.99 430.895 123.741 431.108 123.345C431.321 122.949 431.292 122.469 431.033 122.1L422.93 110.581C425.14 109.488 426.914 107.979 428.212 106.043C429.81 103.717 430.583 100.971 430.583 97.8605C430.583 94.8334 429.87 92.152 428.394 89.8665C426.919 87.5829 424.797 85.8508 422.084 84.6593C419.411 83.4688 416.306 82.8944 412.803 82.8944H396.81C396.13 82.8944 395.578 83.4342 395.578 84.1001V122.784C395.578 123.45 396.13 123.99 396.81 123.99H404.029C404.71 123.99 405.262 123.45 405.262 122.784V112.716H412.803C413.124 112.716 413.419 112.712 413.682 112.703L421.226 123.466ZM418.845 93.0951C420.138 94.1481 420.844 95.6746 420.844 97.8605C420.844 100.042 420.14 101.594 418.838 102.686C417.516 103.76 415.459 104.391 412.47 104.391H405.262V91.3847H412.47C415.463 91.3847 417.522 92.0186 418.845 93.0951Z\");\n\t\t\tattr(path3, \"fill\", \"white\");\n\t\t\tattr(path4, \"d\", \"M453.875 122.784V109.179H469.579C470.26 109.179 470.812 108.639 470.812 107.973V101.895C470.812 101.229 470.26 100.689 469.579 100.689H453.875V98.5789C453.875 95.9432 454.648 94.1431 456.014 92.961C457.406 91.7559 459.581 91.0532 462.749 91.0532C466.036 91.0532 468.659 91.7993 470.701 93.2089C471.012 93.4237 471.408 93.4857 471.772 93.3768C472.136 93.268 472.428 93.0005 472.564 92.6522L474.841 86.7944C475.046 86.2644 474.847 85.6657 474.362 85.356C472.789 84.3525 470.976 83.6041 468.939 83.0974C466.904 82.5911 464.728 82.3418 462.416 82.3418C456.908 82.3418 452.417 83.7445 449.094 86.688C445.79 89.6112 444.191 93.6277 444.191 98.5789V122.784C444.191 123.45 444.743 123.99 445.424 123.99H452.643C453.323 123.99 453.875 123.45 453.875 122.784Z\");\n\t\t\tattr(path4, \"fill\", \"white\");\n\t\t\tattr(path5, \"d\", \"M177.787 117.503C177.714 121.492 175.076 124.262 172.475 125.763L166.877 128.995C164.206 130.537 161.082 131.136 158.284 131.136C155.485 131.136 152.362 130.537 149.692 128.995L144.201 125.763V136.735C144.201 140.799 141.523 143.631 138.887 145.154L133.29 148.385C130.618 149.927 127.495 150.526 124.696 150.526C121.897 150.526 118.774 149.927 116.104 148.385L107.902 143.651L99.702 148.385C97.0305 149.927 93.9072 150.526 91.1085 150.526C88.3098 150.526 85.1879 149.927 82.5164 148.385L43.3313 125.763C40.73 124.262 38.0922 121.492 38.019 117.503L38.0176 117.257V131.625L38.019 131.871C38.0922 135.86 40.73 138.63 43.3313 140.131L82.5164 162.753C85.1879 164.295 88.3098 164.894 91.1085 164.894C93.9072 164.894 97.0305 164.295 99.702 162.753L107.902 158.018L116.104 162.753C118.774 164.295 121.897 164.894 124.696 164.894C127.495 164.894 130.618 164.295 133.29 162.753L138.887 159.521C141.523 157.999 144.201 155.167 144.201 151.103V140.131L149.692 143.363C152.362 144.905 155.485 145.504 158.284 145.504C161.082 145.504 164.206 144.905 166.877 143.363L172.475 140.131C175.076 138.63 177.714 135.86 177.787 131.871L177.787 117.503Z\");\n\t\t\tattr(path5, \"fill\", \"#7BE7CE\");\n\t\t\tattr(path6, \"d\", \"M38.0526 103.767C38.0295 103.981 38.0176 104.198 38.0176 104.418V117.257L38.019 117.503C38.0922 121.492 40.73 124.262 43.3313 125.763L82.5164 148.385C85.1879 149.927 88.3097 150.526 91.1085 150.526C93.9072 150.526 97.0305 149.927 99.702 148.385L107.902 143.65L116.104 148.385C118.774 149.927 121.897 150.526 124.696 150.526C127.495 150.526 130.618 149.927 133.29 148.385L138.887 145.153C141.523 143.631 144.201 140.799 144.201 136.735V125.763L149.692 128.995C152.362 130.537 155.485 131.136 158.284 131.136C161.082 131.136 164.206 130.537 166.877 128.995L172.475 125.763C175.076 124.262 177.714 121.492 177.787 117.503V103.136C177.714 107.124 175.076 109.893 172.475 111.395L166.877 114.627C164.206 116.168 161.082 116.768 158.284 116.768C155.485 116.768 152.362 116.168 149.692 114.627L144.094 111.395C144.004 111.343 143.914 111.289 143.824 111.234C144.067 112.027 144.204 112.884 144.204 113.804C144.204 114.073 144.192 114.337 144.169 114.595C144.19 114.797 144.201 115.002 144.201 115.209V122.366C144.201 126.43 141.523 129.263 138.887 130.785L133.29 134.017C130.618 135.558 127.495 136.158 124.696 136.158C121.897 136.158 118.774 135.558 116.104 134.017L107.902 129.282L99.702 134.017C97.0305 135.558 93.9072 136.158 91.1085 136.158C88.3097 136.158 85.1879 135.558 82.5164 134.017L43.3313 111.395C40.8698 109.974 38.3755 107.417 38.0526 103.767Z\");\n\t\t\tattr(path6, \"fill\", \"#B2F2E1\");\n\t\t\tattr(path7, \"d\", \"M105.231 65.0186C105.237 65.0767 105.243 65.1348 105.25 65.1928C105.531 67.6131 106.734 69.5192 108.231 70.9303C108.122 70.9285 108.014 70.9276 107.906 70.9276C107.031 70.9276 106.125 70.9862 105.21 71.1138V65.5255C105.21 65.3548 105.217 65.1857 105.231 65.0186Z\");\n\t\t\tattr(path7, \"fill\", \"#B2F2E1\");\n\t\t\tattr(path8, \"d\", \"M48.9324 82.7639L43.3344 85.9955C40.8405 87.4353 38.3108 90.0472 38.044 93.7645C38.0265 93.939 38.0176 94.1214 38.0176 94.312V102.889L38.019 103.135C38.0922 107.124 40.73 109.894 43.3313 111.395L82.5164 134.017C85.1879 135.559 88.3097 136.158 91.1085 136.158C93.9072 136.158 97.0305 135.559 99.702 134.017L107.902 129.282L116.104 134.017C118.774 135.559 121.897 136.158 124.696 136.158C127.495 136.158 130.618 135.559 133.29 134.017L138.887 130.785C141.523 129.263 144.201 126.431 144.201 122.367V115.209C144.201 115.003 144.19 114.798 144.169 114.595C144.192 114.337 144.204 114.073 144.204 113.804C144.204 112.884 144.067 112.027 143.824 111.235C143.914 111.29 144.004 111.343 144.094 111.395L149.692 114.627C152.362 116.169 155.485 116.768 158.284 116.768C161.082 116.768 164.206 116.169 166.877 114.627L172.475 111.395C175.076 109.894 177.714 107.124 177.787 103.135V94.6988C177.79 94.6046 177.791 94.5098 177.791 94.4142C177.791 94.3187 177.79 94.2239 177.787 94.1297L177.788 75.2591C177.79 75.1813 177.791 75.103 177.791 75.0242C177.791 70.9603 175.115 68.1277 172.478 66.6055L133.292 43.9837C130.622 42.442 127.499 41.8428 124.7 41.8428C121.901 41.8428 118.778 42.442 116.107 43.9837L110.51 47.2154C107.873 48.7376 105.196 51.5702 105.196 55.6341C105.196 55.8256 105.202 56.0144 105.214 56.2005C105.211 56.2658 105.21 56.3317 105.21 56.3981V63.6424C105.191 63.9299 105.188 64.218 105.199 64.5058C105.206 64.7352 105.223 64.9644 105.25 65.1931C105.531 67.6133 106.734 69.5194 108.231 70.9306C108.122 70.9288 108.014 70.9279 107.906 70.9279C105.107 70.9279 101.984 71.5271 99.3137 73.0688L93.7158 76.3005C91.0789 77.8227 88.4022 80.6553 88.4022 84.7192C88.4022 84.9835 88.4135 85.2426 88.4354 85.4964C88.4306 85.5945 88.4282 85.693 88.4282 85.7922V92.5738L88.4179 92.7394L88.4077 92.9207C88.4004 93.0971 88.3989 93.2737 88.4019 93.4503C88.4077 93.8184 88.4384 94.1863 88.4925 94.552C88.5595 95.0033 88.6583 95.4358 88.7848 95.8499L66.1171 82.7639C63.4466 81.2222 60.3234 80.623 57.5247 80.623C54.726 80.623 51.6029 81.2222 48.9324 82.7639Z\");\n\t\t\tattr(path8, \"fill\", \"#F4FAF4\");\n\t\t\tattr(path9, \"d\", \"M130.295 49.1697C127.204 47.3849 122.191 47.3849 119.1 49.1697L113.502 52.4013C110.41 54.1862 110.41 57.0799 113.502 58.8647L152.008 81.0944C153.493 81.9515 154.327 83.114 154.327 84.3261V85.1102C154.327 86.3223 153.493 87.4848 152.008 88.3419L147.089 91.1815C143.998 92.9663 143.998 95.8601 147.089 97.6449L152.687 100.877C155.779 102.661 160.791 102.661 163.883 100.877L169.481 97.6449C172.573 95.8601 172.573 92.9663 169.481 91.1815L164.562 88.3419C163.077 87.4848 162.243 86.3224 162.243 85.1102V84.3261C162.243 83.114 163.077 81.9515 164.562 81.0944L169.481 78.2548C172.573 76.47 172.573 73.5762 169.481 71.7914L130.295 49.1697Z\");\n\t\t\tattr(path9, \"fill\", \"#494E62\");\n\t\t\tattr(path10, \"d\", \"M63.1203 87.9498C60.0287 86.165 55.0161 86.165 51.9245 87.9498L46.3265 91.1815C43.2349 92.9663 43.2349 95.8601 46.3265 97.6449L85.512 120.267C88.6037 122.051 93.6162 122.051 96.7079 120.267L107.904 113.803L63.1203 87.9498Z\");\n\t\t\tattr(path10, \"fill\", \"#494E62\");\n\t\t\tattr(path11, \"d\", \"M128.656 104.5C128.656 105.712 129.49 106.875 130.975 107.732L135.893 110.572C138.985 112.356 138.985 115.25 135.893 117.035L130.295 120.267C127.204 122.051 122.191 122.051 119.1 120.267L107.904 113.803L118.42 107.732C119.905 106.875 120.739 105.712 120.739 104.5L120.739 103.716C120.739 102.504 119.905 101.342 118.42 100.485L96.7079 87.9498C93.6162 86.165 93.6162 83.2713 96.7079 81.4865L102.306 78.2548C105.397 76.47 110.41 76.47 113.502 78.2548L135.893 91.1815C138.985 92.9663 138.985 95.8601 135.893 97.6449L130.975 100.485C129.49 101.342 128.656 102.504 128.656 103.716L128.656 104.5Z\");\n\t\t\tattr(path11, \"fill\", \"#494E62\");\n\t\t\tattr(svg, \"width\", \"513\");\n\t\t\tattr(svg, \"height\", \"206\");\n\t\t\tattr(svg, \"viewBox\", \"0 0 513 206\");\n\t\t\tattr(svg, \"fill\", \"none\");\n\t\t\tattr(svg, \"xmlns\", \"http://www.w3.org/2000/svg\");\n\t\t\tattr(svg, \"class\", \"svelte-tj2pg7\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, svg, anchor);\n\t\t\tappend(svg, path0);\n\t\t\tappend(svg, path1);\n\t\t\tappend(svg, path2);\n\t\t\tappend(svg, path3);\n\t\t\tappend(svg, path4);\n\t\t\tappend(svg, path5);\n\t\t\tappend(svg, path6);\n\t\t\tappend(svg, path7);\n\t\t\tappend(svg, path8);\n\t\t\tappend(svg, path9);\n\t\t\tappend(svg, path10);\n\t\t\tappend(svg, path11);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(svg);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (48:4) \nfunction create_default_slot_1$4(ctx) {\n\tlet t_1_value = /*$t*/ ctx[1]('settings.about.version', { version }) + \"\";\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tt_1 = text(t_1_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t_1, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 2 && t_1_value !== (t_1_value = /*$t*/ ctx[1]('settings.about.version', { version }) + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (49:4) \nfunction create_default_slot$5(ctx) {\n\tlet t_1_value = /*$t*/ ctx[1]('settings.about.author') + \"\";\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tt_1 = text(t_1_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t_1, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 2 && t_1_value !== (t_1_value = /*$t*/ ctx[1]('settings.about.author') + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t_1);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction create_fragment$b(ctx) {\n\tlet div;\n\tlet t0;\n\tlet bodytitle;\n\tlet t1;\n\tlet bodytext;\n\tlet t2;\n\tlet link;\n\tlet current;\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*theme*/ ctx[0] === 'dark') return create_if_block$6;\n\t\treturn create_else_block$2;\n\t}\n\n\tlet current_block_type = select_block_type(ctx);\n\tlet if_block = current_block_type(ctx);\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$4] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tbodytext = new BodyText({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$5] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tlink = new Link({\n\t\t\tprops: {\n\t\t\t\tdata: {\n\t\t\t\t\tbutton: true,\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tlabel: /*$t*/ ctx[1]('settings.about.link'),\n\t\t\t\t\thref: 'https://wharfkit.com',\n\t\t\t\t\ttarget: '_blank'\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tif_block.c();\n\t\t\tt0 = space();\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt1 = space();\n\t\t\tcreate_component(bodytext.$$.fragment);\n\t\t\tt2 = space();\n\t\t\tcreate_component(link.$$.fragment);\n\t\t\tattr(div, \"class\", \"svelte-tj2pg7\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tif_block.m(div, null);\n\t\t\tappend(div, t0);\n\t\t\tmount_component(bodytitle, div, null);\n\t\t\tappend(div, t1);\n\t\t\tmount_component(bodytext, div, null);\n\t\t\tappend(div, t2);\n\t\t\tmount_component(link, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (current_block_type !== (current_block_type = select_block_type(ctx))) {\n\t\t\t\tif_block.d(1);\n\t\t\t\tif_block = current_block_type(ctx);\n\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.c();\n\t\t\t\t\tif_block.m(div, t0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $t*/ 10) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst bodytext_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $t*/ 10) {\n\t\t\t\tbodytext_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytext.$set(bodytext_changes);\n\t\t\tconst link_changes = {};\n\n\t\t\tif (dirty & /*$t*/ 2) link_changes.data = {\n\t\t\t\tbutton: true,\n\t\t\t\tvariant: 'primary',\n\t\t\t\tlabel: /*$t*/ ctx[1]('settings.about.link'),\n\t\t\t\thref: 'https://wharfkit.com',\n\t\t\t\ttarget: '_blank'\n\t\t\t};\n\n\t\t\tlink.$set(link_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(bodytext.$$.fragment, local);\n\t\t\ttransition_in(link.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(bodytext.$$.fragment, local);\n\t\t\ttransition_out(link.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tif_block.d();\n\t\t\tdestroy_component(bodytitle);\n\t\t\tdestroy_component(bodytext);\n\t\t\tdestroy_component(link);\n\t\t}\n\t};\n}\n\nfunction instance$b($$self, $$props, $$invalidate) {\n\tlet theme;\n\tlet $t;\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(1, $t = value));\n\t$$invalidate(0, { theme } = get_store_value(settings$5), theme);\n\treturn [theme, $t, t];\n}\n\nclass About extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$b, create_fragment$b, safe_not_equal, {}, add_css$6);\n\t}\n}\n\nvar en$1 = \"English\";\nvar ko$1 = \"한국어\";\nvar zh = \"中文\";\nvar tr$1 = \"Türkçe\";\nvar lang = {\n\ten: en$1,\n\tko: ko$1,\n\tzh: zh,\n\t\"zh-Hans\": \"中文简体\",\n\t\"zh-Hant\": \"中文繁体\",\n\ttr: tr$1\n};\n\n/* src/ui/components/ListOption.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$5(target) {\n\tappend_styles(target, \"svelte-yv3ifw\", \"label.svelte-yv3ifw{flex:1;height:100%;display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding-inline:var(--space-s)}\");\n}\n\n// (17:8) {#if checked}\nfunction create_if_block$5(ctx) {\n\tlet div;\n\tlet icon;\n\tlet current;\n\ticon = new Icon({ props: { name: 'check' } });\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tcreate_component(icon.$$.fragment);\n\t\t\tattr(div, \"class\", \"trailing\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tmount_component(icon, div, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tdestroy_component(icon);\n\t\t}\n\t};\n}\n\n// (12:10) \nfunction fallback_block$1(ctx) {\n\tlet input;\n\tlet t0;\n\tlet t1;\n\tlet t2;\n\tlet if_block_anchor;\n\tlet current;\n\tlet mounted;\n\tlet dispose;\n\tlet if_block = /*checked*/ ctx[2] && create_if_block$5();\n\n\treturn {\n\t\tc() {\n\t\t\tinput = element(\"input\");\n\t\t\tt0 = space();\n\t\t\tt1 = text(/*label*/ ctx[6]);\n\t\t\tt2 = space();\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t\tattr(input, \"type\", \"radio\");\n\t\t\tattr(input, \"name\", /*name*/ ctx[0]);\n\t\t\tinput.value = /*value*/ ctx[1];\n\t\t\tinput.checked = /*checked*/ ctx[2];\n\t\t\tinput.hidden = /*hidden*/ ctx[5];\n\t\t\tattr(input, \"group\", /*group*/ ctx[3]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, input, anchor);\n\t\t\tinsert(target, t0, anchor);\n\t\t\tinsert(target, t1, anchor);\n\t\t\tinsert(target, t2, anchor);\n\t\t\tif (if_block) if_block.m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(input, \"change\", function () {\n\t\t\t\t\tif (is_function(/*onChange*/ ctx[4])) /*onChange*/ ctx[4].apply(this, arguments);\n\t\t\t\t});\n\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\n\t\t\tif (!current || dirty & /*name*/ 1) {\n\t\t\t\tattr(input, \"name\", /*name*/ ctx[0]);\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*value*/ 2) {\n\t\t\t\tinput.value = /*value*/ ctx[1];\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*checked*/ 4) {\n\t\t\t\tinput.checked = /*checked*/ ctx[2];\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*hidden*/ 32) {\n\t\t\t\tinput.hidden = /*hidden*/ ctx[5];\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*group*/ 8) {\n\t\t\t\tattr(input, \"group\", /*group*/ ctx[3]);\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*label*/ 64) set_data(t1, /*label*/ ctx[6]);\n\n\t\t\tif (/*checked*/ ctx[2]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif (dirty & /*checked*/ 4) {\n\t\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$5();\n\t\t\t\t\tif_block.c();\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block, 1, 1, () => {\n\t\t\t\t\tif_block = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(input);\n\t\t\t\tdetach(t0);\n\t\t\t\tdetach(t1);\n\t\t\t\tdetach(t2);\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d(detaching);\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\nfunction create_fragment$a(ctx) {\n\tlet label_1;\n\tlet current;\n\tconst default_slot_template = /*#slots*/ ctx[8].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[7], null);\n\tconst default_slot_or_fallback = default_slot || fallback_block$1(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tlabel_1 = element(\"label\");\n\t\t\tif (default_slot_or_fallback) default_slot_or_fallback.c();\n\t\t\tattr(label_1, \"class\", \"svelte-yv3ifw\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, label_1, anchor);\n\n\t\t\tif (default_slot_or_fallback) {\n\t\t\t\tdefault_slot_or_fallback.m(label_1, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 128)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[7],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[7])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[7], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (default_slot_or_fallback && default_slot_or_fallback.p && (!current || dirty & /*checked, label, name, value, hidden, group, onChange*/ 127)) {\n\t\t\t\t\tdefault_slot_or_fallback.p(ctx, !current ? -1 : dirty);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(default_slot_or_fallback, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(default_slot_or_fallback, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(label_1);\n\t\t\t}\n\n\t\t\tif (default_slot_or_fallback) default_slot_or_fallback.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$a($$self, $$props, $$invalidate) {\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\tlet { name } = $$props;\n\tlet { value } = $$props;\n\tlet { checked } = $$props;\n\tlet { group } = $$props;\n\tlet { onChange } = $$props;\n\tlet { hidden } = $$props;\n\tlet { label } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('name' in $$props) $$invalidate(0, name = $$props.name);\n\t\tif ('value' in $$props) $$invalidate(1, value = $$props.value);\n\t\tif ('checked' in $$props) $$invalidate(2, checked = $$props.checked);\n\t\tif ('group' in $$props) $$invalidate(3, group = $$props.group);\n\t\tif ('onChange' in $$props) $$invalidate(4, onChange = $$props.onChange);\n\t\tif ('hidden' in $$props) $$invalidate(5, hidden = $$props.hidden);\n\t\tif ('label' in $$props) $$invalidate(6, label = $$props.label);\n\t\tif ('$$scope' in $$props) $$invalidate(7, $$scope = $$props.$$scope);\n\t};\n\n\treturn [name, value, checked, group, onChange, hidden, label, $$scope, slots];\n}\n\nclass ListOption extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\n\t\tinit(\n\t\t\tthis,\n\t\t\toptions,\n\t\t\tinstance$a,\n\t\t\tcreate_fragment$a,\n\t\t\tsafe_not_equal,\n\t\t\t{\n\t\t\t\tname: 0,\n\t\t\t\tvalue: 1,\n\t\t\t\tchecked: 2,\n\t\t\t\tgroup: 3,\n\t\t\t\tonChange: 4,\n\t\t\t\thidden: 5,\n\t\t\t\tlabel: 6\n\t\t\t},\n\t\t\tadd_css$5\n\t\t);\n\t}\n}\n\n/* src/ui/settings/Selector.svelte generated by Svelte v4.2.0 */\n\nfunction get_each_context$1(ctx, list, i) {\n\tconst child_ctx = ctx.slice();\n\tchild_ctx[6] = list[i];\n\treturn child_ctx;\n}\n\n// (15:8) \nfunction create_default_slot_1$3(ctx) {\n\tlet listoption;\n\tlet updating_group;\n\tlet t;\n\tlet current;\n\n\tfunction func() {\n\t\treturn /*func*/ ctx[4](/*option*/ ctx[6]);\n\t}\n\n\tfunction listoption_group_binding(value) {\n\t\t/*listoption_group_binding*/ ctx[5](value);\n\t}\n\n\tlet listoption_props = {\n\t\tlabel: /*option*/ ctx[6].label,\n\t\tname: /*setting*/ ctx[0],\n\t\tvalue: /*option*/ ctx[6].value,\n\t\tchecked: /*$settings*/ ctx[3][/*setting*/ ctx[0]] === /*option*/ ctx[6].value,\n\t\tonChange: func,\n\t\thidden: true\n\t};\n\n\tif (/*$settings*/ ctx[3][/*setting*/ ctx[0]] !== void 0) {\n\t\tlistoption_props.group = /*$settings*/ ctx[3][/*setting*/ ctx[0]];\n\t}\n\n\tlistoption = new ListOption({ props: listoption_props });\n\tbinding_callbacks.push(() => bind(listoption, 'group', listoption_group_binding));\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(listoption.$$.fragment);\n\t\t\tt = space();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(listoption, target, anchor);\n\t\t\tinsert(target, t, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\t\t\tconst listoption_changes = {};\n\t\t\tif (dirty & /*options*/ 2) listoption_changes.label = /*option*/ ctx[6].label;\n\t\t\tif (dirty & /*setting*/ 1) listoption_changes.name = /*setting*/ ctx[0];\n\t\t\tif (dirty & /*options*/ 2) listoption_changes.value = /*option*/ ctx[6].value;\n\t\t\tif (dirty & /*$settings, setting, options*/ 11) listoption_changes.checked = /*$settings*/ ctx[3][/*setting*/ ctx[0]] === /*option*/ ctx[6].value;\n\t\t\tif (dirty & /*onChange, options*/ 6) listoption_changes.onChange = func;\n\n\t\t\tif (!updating_group && dirty & /*$settings, setting*/ 9) {\n\t\t\t\tupdating_group = true;\n\t\t\t\tlistoption_changes.group = /*$settings*/ ctx[3][/*setting*/ ctx[0]];\n\t\t\t\tadd_flush_callback(() => updating_group = false);\n\t\t\t}\n\n\t\t\tlistoption.$set(listoption_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(listoption.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(listoption.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\n\t\t\tdestroy_component(listoption, detaching);\n\t\t}\n\t};\n}\n\n// (14:4) {#each options as option}\nfunction create_each_block$1(ctx) {\n\tlet listitem;\n\tlet current;\n\n\tlistitem = new ListItem({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$3] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(listitem.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(listitem, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst listitem_changes = {};\n\n\t\t\tif (dirty & /*$$scope, options, setting, $settings, onChange*/ 527) {\n\t\t\t\tlistitem_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tlistitem.$set(listitem_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(listitem.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(listitem.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(listitem, detaching);\n\t\t}\n\t};\n}\n\n// (13:0) \nfunction create_default_slot$4(ctx) {\n\tlet each_1_anchor;\n\tlet current;\n\tlet each_value = ensure_array_like(/*options*/ ctx[1]);\n\tlet each_blocks = [];\n\n\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\teach_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));\n\t}\n\n\tconst out = i => transition_out(each_blocks[i], 1, 1, () => {\n\t\teach_blocks[i] = null;\n\t});\n\n\treturn {\n\t\tc() {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\teach_blocks[i].c();\n\t\t\t}\n\n\t\t\teach_1_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\teach_blocks[i].m(target, anchor);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinsert(target, each_1_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*options, setting, $settings, onChange*/ 15) {\n\t\t\t\teach_value = ensure_array_like(/*options*/ ctx[1]);\n\t\t\t\tlet i;\n\n\t\t\t\tfor (i = 0; i < each_value.length; i += 1) {\n\t\t\t\t\tconst child_ctx = get_each_context$1(ctx, each_value, i);\n\n\t\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\t\teach_blocks[i].p(child_ctx, dirty);\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teach_blocks[i] = create_each_block$1(child_ctx);\n\t\t\t\t\t\teach_blocks[i].c();\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t\teach_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_outros();\n\n\t\t\t\tfor (i = each_value.length; i < each_blocks.length; i += 1) {\n\t\t\t\t\tout(i);\n\t\t\t\t}\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\n\t\t\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\t\t\ttransition_in(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\teach_blocks = each_blocks.filter(Boolean);\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\ttransition_out(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(each_1_anchor);\n\t\t\t}\n\n\t\t\tdestroy_each(each_blocks, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$9(ctx) {\n\tlet list;\n\tlet current;\n\n\tlist = new List({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$4] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(list.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(list, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst list_changes = {};\n\n\t\t\tif (dirty & /*$$scope, options, setting, $settings, onChange*/ 527) {\n\t\t\t\tlist_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tlist.$set(list_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(list.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(list.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(list, detaching);\n\t\t}\n\t};\n}\n\nfunction instance$9($$self, $$props, $$invalidate) {\n\tlet $settings;\n\tcomponent_subscribe($$self, settings$5, $$value => $$invalidate(3, $settings = $$value));\n\tlet { setting } = $$props;\n\tlet { options } = $$props;\n\n\tlet { onChange = value => {\n\t\tset_store_value(settings$5, $settings[setting] = value, $settings);\n\t} } = $$props;\n\n\tconst func = option => onChange(option.value);\n\n\tfunction listoption_group_binding(value) {\n\t\tif ($$self.$$.not_equal($settings[setting], value)) {\n\t\t\t$settings[setting] = value;\n\t\t\tsettings$5.set($settings);\n\t\t}\n\t}\n\n\t$$self.$$set = $$props => {\n\t\tif ('setting' in $$props) $$invalidate(0, setting = $$props.setting);\n\t\tif ('options' in $$props) $$invalidate(1, options = $$props.options);\n\t\tif ('onChange' in $$props) $$invalidate(2, onChange = $$props.onChange);\n\t};\n\n\treturn [setting, options, onChange, $settings, func, listoption_group_binding];\n}\n\nclass Selector extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$9, create_fragment$9, safe_not_equal, { setting: 0, options: 1, onChange: 2 });\n\t}\n}\n\n/* src/ui/Settings.svelte generated by Svelte v4.2.0 */\n\nfunction create_if_block_4$1(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[4],\n\t\t\t\t$$slots: { default: [create_default_slot_4] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 16) transition_changes.direction = /*$transitionDirection*/ ctx[4];\n\n\t\t\tif (dirty & /*$$scope, $t, $settings*/ 524353) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (79:12) \nfunction create_default_slot_5(ctx) {\n\tlet listitem0;\n\tlet t0;\n\tlet listitem1;\n\tlet t1;\n\tlet listitem2;\n\tlet t2;\n\tlet listitem3;\n\tlet t3;\n\tlet listitem4;\n\tlet current;\n\n\tlistitem0 = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*$t*/ ctx[0](`settings.theme.title`),\n\t\t\t\tonClick: /*func*/ ctx[11],\n\t\t\t\tleadingIcon: \"theme\",\n\t\t\t\tvalue: /*$settings*/ ctx[6].theme\n\t\t\t\t? /*$t*/ ctx[0](`settings.theme.${/*$settings*/ ctx[6].theme}`)\n\t\t\t\t: /*$t*/ ctx[0]('settings.theme.automatic')\n\t\t\t}\n\t\t});\n\n\tlistitem1 = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*$t*/ ctx[0](`settings.language.title`),\n\t\t\t\tonClick: /*func_1*/ ctx[12],\n\t\t\t\tleadingIcon: \"globe\",\n\t\t\t\tvalue: lang[/*$settings*/ ctx[6].language]\n\t\t\t}\n\t\t});\n\n\tlistitem2 = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*$t*/ ctx[0](`settings.animations.title`),\n\t\t\t\tonClick: /*func_2*/ ctx[13],\n\t\t\t\tleadingIcon: \"waves\",\n\t\t\t\tvalue: /*$settings*/ ctx[6].animations\n\t\t\t\t? /*$t*/ ctx[0](`settings.animations.enabled`)\n\t\t\t\t: /*$t*/ ctx[0]('settings.animations.disabled')\n\t\t\t}\n\t\t});\n\n\tlistitem3 = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*$t*/ ctx[0]('settings.about.title'),\n\t\t\t\tonClick: /*func_3*/ ctx[14],\n\t\t\t\tleadingIcon: \"info\"\n\t\t\t}\n\t\t});\n\n\tlistitem4 = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*$t*/ ctx[0]('settings.github'),\n\t\t\t\tlink: \"https://www.github.com/wharfkit\",\n\t\t\t\tleadingIcon: \"github\",\n\t\t\t\ttrailingIcon: \"external-link\"\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(listitem0.$$.fragment);\n\t\t\tt0 = space();\n\t\t\tcreate_component(listitem1.$$.fragment);\n\t\t\tt1 = space();\n\t\t\tcreate_component(listitem2.$$.fragment);\n\t\t\tt2 = space();\n\t\t\tcreate_component(listitem3.$$.fragment);\n\t\t\tt3 = space();\n\t\t\tcreate_component(listitem4.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(listitem0, target, anchor);\n\t\t\tinsert(target, t0, anchor);\n\t\t\tmount_component(listitem1, target, anchor);\n\t\t\tinsert(target, t1, anchor);\n\t\t\tmount_component(listitem2, target, anchor);\n\t\t\tinsert(target, t2, anchor);\n\t\t\tmount_component(listitem3, target, anchor);\n\t\t\tinsert(target, t3, anchor);\n\t\t\tmount_component(listitem4, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst listitem0_changes = {};\n\t\t\tif (dirty & /*$t*/ 1) listitem0_changes.label = /*$t*/ ctx[0](`settings.theme.title`);\n\n\t\t\tif (dirty & /*$settings, $t*/ 65) listitem0_changes.value = /*$settings*/ ctx[6].theme\n\t\t\t? /*$t*/ ctx[0](`settings.theme.${/*$settings*/ ctx[6].theme}`)\n\t\t\t: /*$t*/ ctx[0]('settings.theme.automatic');\n\n\t\t\tlistitem0.$set(listitem0_changes);\n\t\t\tconst listitem1_changes = {};\n\t\t\tif (dirty & /*$t*/ 1) listitem1_changes.label = /*$t*/ ctx[0](`settings.language.title`);\n\t\t\tif (dirty & /*$settings*/ 64) listitem1_changes.value = lang[/*$settings*/ ctx[6].language];\n\t\t\tlistitem1.$set(listitem1_changes);\n\t\t\tconst listitem2_changes = {};\n\t\t\tif (dirty & /*$t*/ 1) listitem2_changes.label = /*$t*/ ctx[0](`settings.animations.title`);\n\n\t\t\tif (dirty & /*$settings, $t*/ 65) listitem2_changes.value = /*$settings*/ ctx[6].animations\n\t\t\t? /*$t*/ ctx[0](`settings.animations.enabled`)\n\t\t\t: /*$t*/ ctx[0]('settings.animations.disabled');\n\n\t\t\tlistitem2.$set(listitem2_changes);\n\t\t\tconst listitem3_changes = {};\n\t\t\tif (dirty & /*$t*/ 1) listitem3_changes.label = /*$t*/ ctx[0]('settings.about.title');\n\t\t\tlistitem3.$set(listitem3_changes);\n\t\t\tconst listitem4_changes = {};\n\t\t\tif (dirty & /*$t*/ 1) listitem4_changes.label = /*$t*/ ctx[0]('settings.github');\n\t\t\tlistitem4.$set(listitem4_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(listitem0.$$.fragment, local);\n\t\t\ttransition_in(listitem1.$$.fragment, local);\n\t\t\ttransition_in(listitem2.$$.fragment, local);\n\t\t\ttransition_in(listitem3.$$.fragment, local);\n\t\t\ttransition_in(listitem4.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(listitem0.$$.fragment, local);\n\t\t\ttransition_out(listitem1.$$.fragment, local);\n\t\t\ttransition_out(listitem2.$$.fragment, local);\n\t\t\ttransition_out(listitem3.$$.fragment, local);\n\t\t\ttransition_out(listitem4.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t0);\n\t\t\t\tdetach(t1);\n\t\t\t\tdetach(t2);\n\t\t\t\tdetach(t3);\n\t\t\t}\n\n\t\t\tdestroy_component(listitem0, detaching);\n\t\t\tdestroy_component(listitem1, detaching);\n\t\t\tdestroy_component(listitem2, detaching);\n\t\t\tdestroy_component(listitem3, detaching);\n\t\t\tdestroy_component(listitem4, detaching);\n\t\t}\n\t};\n}\n\n// (78:8) \nfunction create_default_slot_4(ctx) {\n\tlet list;\n\tlet current;\n\n\tlist = new List({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_5] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(list.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(list, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst list_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $t, $settings*/ 524353) {\n\t\t\t\tlist_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tlist.$set(list_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(list.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(list.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(list, detaching);\n\t\t}\n\t};\n}\n\n// (132:52) \nfunction create_if_block_3$1(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[4],\n\t\t\t\t$$slots: { default: [create_default_slot_3] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 16) transition_changes.direction = /*$transitionDirection*/ ctx[4];\n\n\t\t\tif (dirty & /*$$scope, animationOptions*/ 524296) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (124:50) \nfunction create_if_block_2$3(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[4],\n\t\t\t\t$$slots: { default: [create_default_slot_2] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 16) transition_changes.direction = /*$transitionDirection*/ ctx[4];\n\n\t\t\tif (dirty & /*$$scope, languageOptions*/ 524292) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (120:47) \nfunction create_if_block_1$3(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[4],\n\t\t\t\t$$slots: { default: [create_default_slot_1$2] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 16) transition_changes.direction = /*$transitionDirection*/ ctx[4];\n\n\t\t\tif (dirty & /*$$scope, themeOptions*/ 524290) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (116:4) {#if $settingsRouter.path === 'about'}\nfunction create_if_block$4(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[4],\n\t\t\t\t$$slots: { default: [create_default_slot$3] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 16) transition_changes.direction = /*$transitionDirection*/ ctx[4];\n\n\t\t\tif (dirty & /*$$scope*/ 524288) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (133:8) \nfunction create_default_slot_3(ctx) {\n\tlet selector;\n\tlet current;\n\n\tselector = new Selector({\n\t\t\tprops: {\n\t\t\t\tsetting: \"animations\",\n\t\t\t\toptions: /*animationOptions*/ ctx[3]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(selector.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(selector, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst selector_changes = {};\n\t\t\tif (dirty & /*animationOptions*/ 8) selector_changes.options = /*animationOptions*/ ctx[3];\n\t\t\tselector.$set(selector_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(selector.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(selector.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(selector, detaching);\n\t\t}\n\t};\n}\n\n// (125:8) \nfunction create_default_slot_2(ctx) {\n\tlet selector;\n\tlet current;\n\n\tselector = new Selector({\n\t\t\tprops: {\n\t\t\t\tsetting: \"language\",\n\t\t\t\toptions: /*languageOptions*/ ctx[2],\n\t\t\t\tonChange: /*func_4*/ ctx[15]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(selector.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(selector, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst selector_changes = {};\n\t\t\tif (dirty & /*languageOptions*/ 4) selector_changes.options = /*languageOptions*/ ctx[2];\n\t\t\tselector.$set(selector_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(selector.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(selector.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(selector, detaching);\n\t\t}\n\t};\n}\n\n// (121:8) \nfunction create_default_slot_1$2(ctx) {\n\tlet selector;\n\tlet current;\n\n\tselector = new Selector({\n\t\t\tprops: {\n\t\t\t\tsetting: \"theme\",\n\t\t\t\toptions: /*themeOptions*/ ctx[1]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(selector.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(selector, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst selector_changes = {};\n\t\t\tif (dirty & /*themeOptions*/ 2) selector_changes.options = /*themeOptions*/ ctx[1];\n\t\t\tselector.$set(selector_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(selector.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(selector.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(selector, detaching);\n\t\t}\n\t};\n}\n\n// (117:8) \nfunction create_default_slot$3(ctx) {\n\tlet about;\n\tlet current;\n\tabout = new About({});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(about.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(about, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(about.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(about.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(about, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$8(ctx) {\n\tlet div;\n\tlet t_1;\n\tlet current_block_type_index;\n\tlet if_block1;\n\tlet current;\n\tlet if_block0 = !/*$settingsRouter*/ ctx[5].path && create_if_block_4$1(ctx);\n\tconst if_block_creators = [create_if_block$4, create_if_block_1$3, create_if_block_2$3, create_if_block_3$1];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*$settingsRouter*/ ctx[5].path === 'about') return 0;\n\t\tif (/*$settingsRouter*/ ctx[5].path === 'theme') return 1;\n\t\tif (/*$settingsRouter*/ ctx[5].path === 'language') return 2;\n\t\tif (/*$settingsRouter*/ ctx[5].path === 'animations') return 3;\n\t\treturn -1;\n\t}\n\n\tif (~(current_block_type_index = select_block_type(ctx))) {\n\t\tif_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t}\n\n\treturn {\n\t\tc() {\n\t\t\tdiv = element(\"div\");\n\t\t\tif (if_block0) if_block0.c();\n\t\t\tt_1 = space();\n\t\t\tif (if_block1) if_block1.c();\n\t\t\tattr(div, \"class\", \"settings-menu\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div, anchor);\n\t\t\tif (if_block0) if_block0.m(div, null);\n\t\t\tappend(div, t_1);\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].m(div, null);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (!/*$settingsRouter*/ ctx[5].path) {\n\t\t\t\tif (if_block0) {\n\t\t\t\t\tif_block0.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*$settingsRouter*/ 32) {\n\t\t\t\t\t\ttransition_in(if_block0, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block0 = create_if_block_4$1(ctx);\n\t\t\t\t\tif_block0.c();\n\t\t\t\t\ttransition_in(if_block0, 1);\n\t\t\t\t\tif_block0.m(div, t_1);\n\t\t\t\t}\n\t\t\t} else if (if_block0) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block0, 1, 1, () => {\n\t\t\t\t\tif_block0 = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (if_block1) {\n\t\t\t\t\tgroup_outros();\n\n\t\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t\t});\n\n\t\t\t\t\tcheck_outros();\n\t\t\t\t}\n\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_block1 = if_blocks[current_block_type_index];\n\n\t\t\t\t\tif (!if_block1) {\n\t\t\t\t\t\tif_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\t\tif_block1.c();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif_block1.p(ctx, dirty);\n\t\t\t\t\t}\n\n\t\t\t\t\ttransition_in(if_block1, 1);\n\t\t\t\t\tif_block1.m(div, null);\n\t\t\t\t} else {\n\t\t\t\t\tif_block1 = null;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block0);\n\t\t\ttransition_in(if_block1);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block0);\n\t\t\ttransition_out(if_block1);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div);\n\t\t\t}\n\n\t\t\tif (if_block0) if_block0.d();\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].d();\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction instance$8($$self, $$props, $$invalidate) {\n\tlet animationOptions;\n\tlet languageOptions;\n\tlet themeOptions;\n\tlet $t;\n\tlet $props;\n\tlet $transitionDirection;\n\tlet $settingsRouter;\n\tlet $settings;\n\tcomponent_subscribe($$self, props, $$value => $$invalidate(16, $props = $$value));\n\tcomponent_subscribe($$self, transitionDirection, $$value => $$invalidate(4, $transitionDirection = $$value));\n\tcomponent_subscribe($$self, settings$5, $$value => $$invalidate(6, $settings = $$value));\n\tconst settingsRouter = initRouter();\n\tcomponent_subscribe($$self, settingsRouter, value => $$invalidate(5, $settingsRouter = value));\n\tconst { t, setLocale } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(0, $t = value));\n\n\tfunction closeSettings() {\n\t\tset_store_value(transitionDirection, $transitionDirection = 'ltr', $transitionDirection);\n\t\trouter.back();\n\t\tbackAction.set(undefined);\n\t}\n\n\tfunction navigateTo(path) {\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t\tsettingsRouter.push(path);\n\t\tset_store_value(props, $props.subtitle = $t(`settings.${path}.title`), $props);\n\n\t\tbackAction.set(() => {\n\t\t\tset_store_value(transitionDirection, $transitionDirection = 'ltr', $transitionDirection);\n\t\t\tsettingsRouter.back();\n\t\t\tbackAction.set(closeSettings);\n\t\t\tset_store_value(props, $props.subtitle = undefined, $props);\n\t\t});\n\t}\n\n\tonMount(() => {\n\t\tbackAction.set(closeSettings);\n\t\tset_store_value(props, $props.title = $t('settings.title'), $props);\n\t\tset_store_value(props, $props.subtitle = undefined, $props);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t});\n\n\tasync function changeLanguage(locale) {\n\t\tconst success = await setLocale(locale);\n\n\t\tif (success) {\n\t\t\tsettings$5.set({ ...get_store_value(settings$5), language: locale });\n\n\t\t\t// Update the header immediately\n\t\t\tset_store_value(props, $props.title = $t('settings.title'), $props);\n\n\t\t\tset_store_value(props, $props.subtitle = $t('settings.language.title'), $props);\n\t\t}\n\t}\n\n\tconst func = () => navigateTo('theme');\n\tconst func_1 = () => navigateTo('language');\n\tconst func_2 = () => navigateTo('animations');\n\tconst func_3 = () => navigateTo('about');\n\tconst func_4 = locale => changeLanguage(locale);\n\n\t$$self.$$.update = () => {\n\t\tif ($$self.$$.dirty & /*$t*/ 1) {\n\t\t\t$$invalidate(3, animationOptions = [\n\t\t\t\t{\n\t\t\t\t\tlabel: $t('settings.animations.enabled'),\n\t\t\t\t\tvalue: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $t('settings.animations.disabled'),\n\t\t\t\t\tvalue: false\n\t\t\t\t}\n\t\t\t]);\n\t\t}\n\n\t\tif ($$self.$$.dirty & /*$t*/ 1) {\n\t\t\t$$invalidate(1, themeOptions = [\n\t\t\t\t{\n\t\t\t\t\tlabel: $t('settings.theme.automatic'),\n\t\t\t\t\tvalue: undefined\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $t('settings.theme.light'),\n\t\t\t\t\tvalue: 'light'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $t('settings.theme.dark'),\n\t\t\t\t\tvalue: 'dark'\n\t\t\t\t}\n\t\t\t]);\n\t\t}\n\t};\n\n\t$$invalidate(2, languageOptions = Object.keys(lang).map(lang$1 => ({ label: lang[lang$1], value: lang$1 })));\n\n\treturn [\n\t\t$t,\n\t\tthemeOptions,\n\t\tlanguageOptions,\n\t\tanimationOptions,\n\t\t$transitionDirection,\n\t\t$settingsRouter,\n\t\t$settings,\n\t\tsettingsRouter,\n\t\tt,\n\t\tnavigateTo,\n\t\tchangeLanguage,\n\t\tfunc,\n\t\tfunc_1,\n\t\tfunc_2,\n\t\tfunc_3,\n\t\tfunc_4\n\t];\n}\n\nclass Settings extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$8, create_fragment$8, safe_not_equal, {});\n\t}\n}\n\n/* src/ui/Transact.svelte generated by Svelte v4.2.0 */\n\nfunction create_fragment$7(ctx) {\n\tlet countdown;\n\tlet current;\n\n\tcountdown = new Countdown({\n\t\t\tprops: {\n\t\t\t\tdata: {\n\t\t\t\t\tlabel: /*$t*/ ctx[0]('transact.processing', { default: 'Performing transaction...' })\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(countdown.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(countdown, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst countdown_changes = {};\n\n\t\t\tif (dirty & /*$t*/ 1) countdown_changes.data = {\n\t\t\t\tlabel: /*$t*/ ctx[0]('transact.processing', { default: 'Performing transaction...' })\n\t\t\t};\n\n\t\t\tcountdown.$set(countdown_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(countdown.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(countdown.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(countdown, detaching);\n\t\t}\n\t};\n}\n\nfunction instance$7($$self, $$props, $$invalidate) {\n\tlet $t;\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(0, $t = value));\n\tcreateEventDispatcher();\n\n\treturn [$t, t];\n}\n\nclass Transact extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$7, create_fragment$7, safe_not_equal, {});\n\t}\n}\n\n/* src/ui/createAccount/AccountPlugin.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$4(target) {\n\tappend_styles(target, \"svelte-1d8fcdl\", \"section.svelte-1d8fcdl{display:flex;flex-direction:column;gap:var(--space-s)}\");\n}\n\nfunction get_each_context(ctx, list, i) {\n\tconst child_ctx = ctx.slice();\n\tchild_ctx[4] = list[i];\n\treturn child_ctx;\n}\n\n// (11:0) {#if plugins}\nfunction create_if_block$3(ctx) {\n\tlet section;\n\tlet bodytitle;\n\tlet t;\n\tlet list;\n\tlet current;\n\n\tbodytitle = new BodyTitle({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot_1$1] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\tlist = new List({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot$2] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tsection = element(\"section\");\n\t\t\tcreate_component(bodytitle.$$.fragment);\n\t\t\tt = space();\n\t\t\tcreate_component(list.$$.fragment);\n\t\t\tattr(section, \"class\", \"svelte-1d8fcdl\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, section, anchor);\n\t\t\tmount_component(bodytitle, section, null);\n\t\t\tappend(section, t);\n\t\t\tmount_component(list, section, null);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst bodytitle_changes = {};\n\n\t\t\tif (dirty & /*$$scope, title*/ 130) {\n\t\t\t\tbodytitle_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tbodytitle.$set(bodytitle_changes);\n\t\t\tconst list_changes = {};\n\n\t\t\tif (dirty & /*$$scope, plugins*/ 129) {\n\t\t\t\tlist_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tlist.$set(list_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(bodytitle.$$.fragment, local);\n\t\t\ttransition_in(list.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(bodytitle.$$.fragment, local);\n\t\t\ttransition_out(list.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(section);\n\t\t\t}\n\n\t\t\tdestroy_component(bodytitle);\n\t\t\tdestroy_component(list);\n\t\t}\n\t};\n}\n\n// (13:8) \nfunction create_default_slot_1$1(ctx) {\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tt = text(/*title*/ ctx[1]);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, t, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*title*/ 2) set_data(t, /*title*/ ctx[1]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(t);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (15:12) {#each plugins as plugin}\nfunction create_each_block(ctx) {\n\tlet listitem;\n\tlet current;\n\n\tfunction func() {\n\t\treturn /*func*/ ctx[3](/*plugin*/ ctx[4]);\n\t}\n\n\tlistitem = new ListItem({\n\t\t\tprops: {\n\t\t\t\tlabel: /*plugin*/ ctx[4].name,\n\t\t\t\tonClick: func,\n\t\t\t\tleadingIcon: \"wharf\",\n\t\t\t\tlogo: getThemedLogo(/*plugin*/ ctx[4].metadata)\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(listitem.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(listitem, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(new_ctx, dirty) {\n\t\t\tctx = new_ctx;\n\t\t\tconst listitem_changes = {};\n\t\t\tif (dirty & /*plugins*/ 1) listitem_changes.label = /*plugin*/ ctx[4].name;\n\t\t\tif (dirty & /*plugins*/ 1) listitem_changes.onClick = func;\n\t\t\tif (dirty & /*plugins*/ 1) listitem_changes.logo = getThemedLogo(/*plugin*/ ctx[4].metadata);\n\t\t\tlistitem.$set(listitem_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(listitem.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(listitem.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(listitem, detaching);\n\t\t}\n\t};\n}\n\n// (14:8) \nfunction create_default_slot$2(ctx) {\n\tlet each_1_anchor;\n\tlet current;\n\tlet each_value = ensure_array_like(/*plugins*/ ctx[0]);\n\tlet each_blocks = [];\n\n\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\teach_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));\n\t}\n\n\tconst out = i => transition_out(each_blocks[i], 1, 1, () => {\n\t\teach_blocks[i] = null;\n\t});\n\n\treturn {\n\t\tc() {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\teach_blocks[i].c();\n\t\t\t}\n\n\t\t\teach_1_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\teach_blocks[i].m(target, anchor);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinsert(target, each_1_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*plugins, dispatch*/ 5) {\n\t\t\t\teach_value = ensure_array_like(/*plugins*/ ctx[0]);\n\t\t\t\tlet i;\n\n\t\t\t\tfor (i = 0; i < each_value.length; i += 1) {\n\t\t\t\t\tconst child_ctx = get_each_context(ctx, each_value, i);\n\n\t\t\t\t\tif (each_blocks[i]) {\n\t\t\t\t\t\teach_blocks[i].p(child_ctx, dirty);\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teach_blocks[i] = create_each_block(child_ctx);\n\t\t\t\t\t\teach_blocks[i].c();\n\t\t\t\t\t\ttransition_in(each_blocks[i], 1);\n\t\t\t\t\t\teach_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_outros();\n\n\t\t\t\tfor (i = each_value.length; i < each_blocks.length; i += 1) {\n\t\t\t\t\tout(i);\n\t\t\t\t}\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\n\t\t\tfor (let i = 0; i < each_value.length; i += 1) {\n\t\t\t\ttransition_in(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\teach_blocks = each_blocks.filter(Boolean);\n\n\t\t\tfor (let i = 0; i < each_blocks.length; i += 1) {\n\t\t\t\ttransition_out(each_blocks[i]);\n\t\t\t}\n\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(each_1_anchor);\n\t\t\t}\n\n\t\t\tdestroy_each(each_blocks, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$6(ctx) {\n\tlet if_block_anchor;\n\tlet current;\n\tlet if_block = /*plugins*/ ctx[0] && create_if_block$3(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (if_block) if_block.m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (/*plugins*/ ctx[0]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\n\t\t\t\t\tif (dirty & /*plugins*/ 1) {\n\t\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$3(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_block, 1, 1, () => {\n\t\t\t\t\tif_block = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$6($$self, $$props, $$invalidate) {\n\tlet { plugins } = $$props;\n\tlet { title } = $$props;\n\tconst dispatch = createEventDispatcher();\n\tconst func = plugin => dispatch('select', plugin.id);\n\n\t$$self.$$set = $$props => {\n\t\tif ('plugins' in $$props) $$invalidate(0, plugins = $$props.plugins);\n\t\tif ('title' in $$props) $$invalidate(1, title = $$props.title);\n\t};\n\n\treturn [plugins, title, dispatch, func];\n}\n\nclass AccountPlugin extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$6, create_fragment$6, safe_not_equal, { plugins: 0, title: 1 }, add_css$4);\n\t}\n}\n\n/* src/ui/CreateAccount.svelte generated by Svelte v4.2.0 */\n\nfunction create_else_block_1$1(ctx) {\n\tlet p;\n\tlet t_1_value = /*$t*/ ctx[2]('loading', { default: 'Loading...' }) + \"\";\n\tlet t_1;\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tt_1 = text(t_1_value);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\t\t\tappend(p, t_1);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*$t*/ 4 && t_1_value !== (t_1_value = /*$t*/ ctx[2]('loading', { default: 'Loading...' }) + \"\")) set_data(t_1, t_1_value);\n\t\t},\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (123:0) {#if $props && $accountCreationContext}\nfunction create_if_block$2(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\tconst if_block_creators = [create_if_block_1$2, create_if_block_2$2, create_else_block$1];\n\tconst if_blocks = [];\n\n\tfunction select_block_type_1(ctx, dirty) {\n\t\tif (/*$step*/ ctx[5] === /*Steps*/ ctx[0].selectPlugin) return 0;\n\t\tif (/*$step*/ ctx[5] === /*Steps*/ ctx[0].selectChain && /*$chains*/ ctx[6]) return 1;\n\t\treturn 2;\n\t}\n\n\tcurrent_block_type_index = select_block_type_1(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type_1(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t} else {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\tif (!if_block) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t} else {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t}\n\n\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\n// (144:4) {:else}\nfunction create_else_block$1(ctx) {\n\tlet countdown;\n\tlet current;\n\n\tcountdown = new Countdown({\n\t\t\tprops: {\n\t\t\t\tdata: {\n\t\t\t\t\tlabel: /*$t*/ ctx[2]('accountCreation.countdown', { default: 'Creating Account' })\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(countdown.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(countdown, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst countdown_changes = {};\n\n\t\t\tif (dirty & /*$t*/ 4) countdown_changes.data = {\n\t\t\t\tlabel: /*$t*/ ctx[2]('accountCreation.countdown', { default: 'Creating Account' })\n\t\t\t};\n\n\t\t\tcountdown.$set(countdown_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(countdown.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(countdown.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(countdown, detaching);\n\t\t}\n\t};\n}\n\n// (134:53) \nfunction create_if_block_2$2(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[1],\n\t\t\t\t$$slots: { default: [create_default_slot_1] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 2) transition_changes.direction = /*$transitionDirection*/ ctx[1];\n\n\t\t\tif (dirty & /*$$scope, $chains, $t*/ 4194372) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (124:4) {#if $step === Steps.selectPlugin}\nfunction create_if_block_1$2(ctx) {\n\tlet transition;\n\tlet current;\n\n\ttransition = new Transition({\n\t\t\tprops: {\n\t\t\t\tdirection: /*$transitionDirection*/ ctx[1],\n\t\t\t\t$$slots: { default: [create_default_slot$1] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transition.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transition, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst transition_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 2) transition_changes.direction = /*$transitionDirection*/ ctx[1];\n\n\t\t\tif (dirty & /*$$scope, $accountCreationContext, $t*/ 4194324) {\n\t\t\t\ttransition_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\ttransition.$set(transition_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transition.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transition.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transition, detaching);\n\t\t}\n\t};\n}\n\n// (135:8) \nfunction create_default_slot_1(ctx) {\n\tlet blockchain;\n\tlet current;\n\n\tblockchain = new Blockchain({\n\t\t\tprops: {\n\t\t\t\tchains: /*$chains*/ ctx[6],\n\t\t\t\ttitle: /*$t*/ ctx[2]('accountCreation.select.chain', { default: 'Select a Blockchain' })\n\t\t\t}\n\t\t});\n\n\tblockchain.$on(\"select\", /*selectChain*/ ctx[11]);\n\tblockchain.$on(\"cancel\", /*unselectChain*/ ctx[12]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(blockchain.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(blockchain, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst blockchain_changes = {};\n\t\t\tif (dirty & /*$chains*/ 64) blockchain_changes.chains = /*$chains*/ ctx[6];\n\t\t\tif (dirty & /*$t*/ 4) blockchain_changes.title = /*$t*/ ctx[2]('accountCreation.select.chain', { default: 'Select a Blockchain' });\n\t\t\tblockchain.$set(blockchain_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(blockchain.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(blockchain.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(blockchain, detaching);\n\t\t}\n\t};\n}\n\n// (125:8) \nfunction create_default_slot$1(ctx) {\n\tlet accountplugin;\n\tlet current;\n\n\taccountplugin = new AccountPlugin({\n\t\t\tprops: {\n\t\t\t\tplugins: /*$accountCreationContext*/ ctx[4].accountCreationPlugins,\n\t\t\t\ttitle: /*$t*/ ctx[2]('accountCreation.select.plugin', { default: 'Select a Service Provider' })\n\t\t\t}\n\t\t});\n\n\taccountplugin.$on(\"select\", /*selectPlugin*/ ctx[10]);\n\taccountplugin.$on(\"cancel\", /*cancel*/ ctx[13]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(accountplugin.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(accountplugin, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst accountplugin_changes = {};\n\t\t\tif (dirty & /*$accountCreationContext*/ 16) accountplugin_changes.plugins = /*$accountCreationContext*/ ctx[4].accountCreationPlugins;\n\t\t\tif (dirty & /*$t*/ 4) accountplugin_changes.title = /*$t*/ ctx[2]('accountCreation.select.plugin', { default: 'Select a Service Provider' });\n\t\t\taccountplugin.$set(accountplugin_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(accountplugin.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(accountplugin.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(accountplugin, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$5(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\tconst if_block_creators = [create_if_block$2, create_else_block_1$1];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*$props*/ ctx[3] && /*$accountCreationContext*/ ctx[4]) return 0;\n\t\treturn 1;\n\t}\n\n\tcurrent_block_type_index = select_block_type(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t} else {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\tif (!if_block) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t} else {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t}\n\n\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\nfunction instance$5($$self, $$props, $$invalidate) {\n\tlet $transitionDirection;\n\tlet $backAction;\n\tlet $accountCreationResponse;\n\tlet $t;\n\tlet $props;\n\tlet $accountCreationContext;\n\tlet $step;\n\tlet $chains;\n\tcomponent_subscribe($$self, transitionDirection, $$value => $$invalidate(1, $transitionDirection = $$value));\n\tcomponent_subscribe($$self, backAction, $$value => $$invalidate(15, $backAction = $$value));\n\tcomponent_subscribe($$self, accountCreationResponse, $$value => $$invalidate(16, $accountCreationResponse = $$value));\n\tcomponent_subscribe($$self, props, $$value => $$invalidate(3, $props = $$value));\n\tcomponent_subscribe($$self, accountCreationContext, $$value => $$invalidate(4, $accountCreationContext = $$value));\n\tconst { t } = getContext('i18n');\n\tcomponent_subscribe($$self, t, value => $$invalidate(2, $t = value));\n\tlet completed = false;\n\tconst dispatch = createEventDispatcher();\n\tvar Steps;\n\n\t(function (Steps) {\n\t\tSteps[\"done\"] = \"done\";\n\t\tSteps[\"selectPlugin\"] = \"selectPlugin\";\n\t\tSteps[\"selectChain\"] = \"selectChain\";\n\t})(Steps || (Steps = {}));\n\n\tconst accountPlugin = derived([accountCreationContext, accountCreationResponse], ([$currentContext, $currentResponse]) => {\n\t\tif (!$currentContext || !$currentResponse) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst plugin = $currentContext.accountCreationPlugins.find(plugin => plugin.id === $currentResponse.pluginId);\n\n\t\t// If the new plugin only supports one chain, set it as the current\n\t\tif (!$currentResponse.chain && plugin?.config.supportedChains?.length === 1) {\n\t\t\t$currentResponse.chain = plugin.config.supportedChains[0].id;\n\t\t}\n\n\t\treturn plugin;\n\t});\n\n\tlet chains = derived([accountCreationContext, accountPlugin], ([$currentContext, $currentAccountPlugin]) => {\n\t\tif ($currentContext && $currentAccountPlugin) {\n\t\t\t// If the selected plugin has an array of supported chains, filter the list of chains\n\t\t\tif ($currentAccountPlugin.config.supportedChains) {\n\t\t\t\tif ($currentContext.chains) {\n\t\t\t\t\treturn $currentContext.chains.filter(chain => {\n\t\t\t\t\t\treturn (// If the chain is in the list of supported chains\n\t\t\t\t\t\t$currentAccountPlugin.config.supportedChains?.find(c => c.id.equals(chain.id)));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ($currentContext) {\n\t\t\treturn $currentContext.chains;\n\t\t}\n\n\t\treturn [];\n\t});\n\n\tcomponent_subscribe($$self, chains, value => $$invalidate(6, $chains = value));\n\n\tconst accountCreationContextUnsubscribe = accountCreationContext.subscribe(currentContext => {\n\t\tif (currentContext) {\n\t\t\t// If an appName is specified, use it\n\t\t\tset_store_value(\n\t\t\t\tprops,\n\t\t\t\t$props.subtitle = $t('login.title-app', {\n\t\t\t\t\tappName: currentContext.appName,\n\t\t\t\t\tdefault: 'Login to {{appName}}'\n\t\t\t\t}),\n\t\t\t\t$props\n\t\t\t);\n\n\t\t\t// If only one account creation plugin is available, set it on the response\n\t\t\tif (currentContext.accountCreationPlugins.length === 1) {\n\t\t\t\tset_store_value(accountCreationResponse, $accountCreationResponse.pluginId = currentContext.accountCreationPlugins[0].id, $accountCreationResponse);\n\t\t\t}\n\n\t\t\t// If only one chain is available, set it on the response\n\t\t\tif (currentContext.chain) {\n\t\t\t\tset_store_value(accountCreationResponse, $accountCreationResponse.chain = currentContext.chain.id, $accountCreationResponse);\n\t\t\t} else if (currentContext.chains && currentContext.chains.length === 1) {\n\t\t\t\tset_store_value(accountCreationResponse, $accountCreationResponse.chain = currentContext.chains[0].id, $accountCreationResponse);\n\t\t\t}\n\t\t}\n\t});\n\n\tonMount(() => {\n\t\t// TODO: add translation strings\n\t\tset_store_value(props, $props.title = $t('accountCreation.title', { default: 'Create Account' }), $props);\n\t});\n\n\tonDestroy(accountCreationContextUnsubscribe);\n\n\tconst complete = () => {\n\t\tif (!completed) {\n\t\t\tcompleted = true;\n\n\t\t\t// For cases, where no UI interactions are needed,we are giving the UI a chance to set the state before completing\n\t\t\tsetTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tdispatch('complete', $accountCreationResponse);\n\t\t\t\t\tbackAction.set(undefined);\n\t\t\t\t},\n\t\t\t\t100\n\t\t\t);\n\t\t}\n\t};\n\n\tconst step = derived([accountCreationContext, accountCreationResponse, accountPlugin, chains], ([$context, $currentResponse, $currentAccountPlugin, $chains]) => {\n\t\tif (!$currentAccountPlugin && $context?.uiRequirements.requiresPluginSelect) {\n\t\t\treturn Steps.selectPlugin;\n\t\t}\n\n\t\tlet requiresChainSelect = $currentAccountPlugin?.config.requiresChainSelect;\n\n\t\t// If requiresChainSelect is specified as false, never present the chain selection UI, in all other cases, use the context\n\t\tif (requiresChainSelect !== false) {\n\t\t\trequiresChainSelect = $context?.uiRequirements.requiresChainSelect;\n\t\t}\n\n\t\tif (!$currentResponse.chain && requiresChainSelect) {\n\t\t\treturn Steps.selectChain;\n\t\t}\n\n\t\t// Return response to kit for the account creation\n\t\tcomplete();\n\t});\n\n\tcomponent_subscribe($$self, step, value => $$invalidate(5, $step = value));\n\n\t// TODO: Define the type for this event prop\n\tconst selectPlugin = e => {\n\t\tset_store_value(accountCreationResponse, $accountCreationResponse.pluginId = e.detail, $accountCreationResponse);\n\t\tset_store_value(backAction, $backAction = unselectPlugin, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t};\n\n\tconst unselectPlugin = e => {\n\t\tset_store_value(accountCreationResponse, $accountCreationResponse.pluginId = undefined, $accountCreationResponse);\n\t\tset_store_value(backAction, $backAction = undefined, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'ltr', $transitionDirection);\n\t};\n\n\tconst selectChain = e => {\n\t\tset_store_value(accountCreationResponse, $accountCreationResponse.chain = e.detail, $accountCreationResponse);\n\t\tset_store_value(backAction, $backAction = unselectChain, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t};\n\n\tconst unselectChain = e => {\n\t\tset_store_value(accountCreationResponse, $accountCreationResponse.chain = undefined, $accountCreationResponse);\n\t\tset_store_value(backAction, $backAction = unselectPlugin, $backAction);\n\t\tset_store_value(transitionDirection, $transitionDirection = 'ltr', $transitionDirection);\n\t};\n\n\tconst cancel = () => {\n\t\tdispatch('cancel');\n\t};\n\n\treturn [\n\t\tSteps,\n\t\t$transitionDirection,\n\t\t$t,\n\t\t$props,\n\t\t$accountCreationContext,\n\t\t$step,\n\t\t$chains,\n\t\tt,\n\t\tchains,\n\t\tstep,\n\t\tselectPlugin,\n\t\tselectChain,\n\t\tunselectChain,\n\t\tcancel\n\t];\n}\n\nclass CreateAccount extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$5, create_fragment$5, safe_not_equal, {});\n\t}\n}\n\n/* src/ui/components/HeaderButton.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$3(target) {\n\tappend_styles(target, \"svelte-mttle8\", \"button.svelte-mttle8.svelte-mttle8{--button-size:46px;--button-size:var(--space-2xl);position:relative;isolation:isolate;background:var(--header-button-background);border:1px solid var(--header-button-outline);border:none;box-shadow:inset 0 0 0 1px var(--header-button-outline);border-radius:var(--border-radius-inner);cursor:pointer;width:var(--button-size);height:var(--button-size);display:grid;place-content:center;color:var(--header-text-color);transition:transform 80ms ease}button.svelte-mttle8.svelte-mttle8:active{transform:scale(95%);transform-origin:center}@media(hover: hover){button.svelte-mttle8:hover .background.svelte-mttle8{opacity:1}}.background.svelte-mttle8.svelte-mttle8{position:absolute;border-radius:var(--border-radius-inner);inset:0;opacity:0;z-index:-1;transition:opacity 80ms ease;background:var(--header-button-outline)}.visually-hidden.svelte-mttle8.svelte-mttle8{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}\");\n}\n\nfunction create_fragment$4(ctx) {\n\tlet button;\n\tlet span0;\n\tlet t0;\n\tlet icon_1;\n\tlet t1;\n\tlet span1;\n\tlet t2;\n\tlet current;\n\tlet mounted;\n\tlet dispose;\n\ticon_1 = new Icon({ props: { name: /*icon*/ ctx[1] } });\n\n\treturn {\n\t\tc() {\n\t\t\tbutton = element(\"button\");\n\t\t\tspan0 = element(\"span\");\n\t\t\tt0 = space();\n\t\t\tcreate_component(icon_1.$$.fragment);\n\t\t\tt1 = space();\n\t\t\tspan1 = element(\"span\");\n\t\t\tt2 = text(/*icon*/ ctx[1]);\n\t\t\tattr(span0, \"class\", \"background svelte-mttle8\");\n\t\t\tattr(span1, \"class\", \"label visually-hidden svelte-mttle8\");\n\t\t\tattr(button, \"class\", \"svelte-mttle8\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, button, anchor);\n\t\t\tappend(button, span0);\n\t\t\tappend(button, t0);\n\t\t\tmount_component(icon_1, button, null);\n\t\t\tappend(button, t1);\n\t\t\tappend(button, span1);\n\t\t\tappend(span1, t2);\n\t\t\tcurrent = true;\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(button, \"click\", function () {\n\t\t\t\t\tif (is_function(/*onClick*/ ctx[0])) /*onClick*/ ctx[0].apply(this, arguments);\n\t\t\t\t});\n\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(new_ctx, [dirty]) {\n\t\t\tctx = new_ctx;\n\t\t\tconst icon_1_changes = {};\n\t\t\tif (dirty & /*icon*/ 2) icon_1_changes.name = /*icon*/ ctx[1];\n\t\t\ticon_1.$set(icon_1_changes);\n\t\t\tif (!current || dirty & /*icon*/ 2) set_data(t2, /*icon*/ ctx[1]);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(icon_1.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(icon_1.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(button);\n\t\t\t}\n\n\t\t\tdestroy_component(icon_1);\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\nfunction instance$4($$self, $$props, $$invalidate) {\n\tlet { onClick } = $$props;\n\tlet { icon } = $$props;\n\n\t$$self.$$set = $$props => {\n\t\tif ('onClick' in $$props) $$invalidate(0, onClick = $$props.onClick);\n\t\tif ('icon' in $$props) $$invalidate(1, icon = $$props.icon);\n\t};\n\n\treturn [onClick, icon];\n}\n\nclass HeaderButton extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$4, create_fragment$4, safe_not_equal, { onClick: 0, icon: 1 }, add_css$3);\n\t}\n}\n\n/* src/ui/components/HeaderWaves.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$2(target) {\n\tappend_styles(target, \"svelte-ajt3u\", \".wrapper.svelte-ajt3u{transform-origin:top;overflow:hidden;position:relative;height:var(--container-height);background-color:var(--header-background-color)}.clipped.svelte-ajt3u{clip-path:url(#wave-clip)}.container.svelte-ajt3u{position:absolute;left:0;bottom:0;width:200%;height:100%;transform-origin:bottom}@keyframes svelte-ajt3u-wave-slide{from{transform:translate(0)}to{transform:translate(-50%)}}.wave.svelte-ajt3u{position:absolute;bottom:-2px;opacity:0.9999;transform-origin:bottom}.wave.foreground.svelte-ajt3u{--swell:var(--foreground-swell);--swell-speed:var(--foreground-swell-speed);--swell-delay:var(--foreground-delay)}.wave.midground.svelte-ajt3u{--swell:var(--midground-swell);--swell-speed:var(--midground-swell-speed);--swell-delay:var(--midground-delay)}.wave.background.svelte-ajt3u{--swell:var(--background-swell);--swell-speed:var(--background-swell-speed);--swell-delay:var(--background-delay)}@keyframes svelte-ajt3u-wave-swell{from{transform:scaleY(1)}to{transform:scaleY(var(--swell))}}\");\n}\n\nfunction create_fragment$3(ctx) {\n\tlet div3;\n\tlet svg0;\n\tlet defs;\n\tlet clipPath;\n\tlet path;\n\tlet t0;\n\tlet div0;\n\tlet svg1;\n\tlet rect0;\n\tlet t1;\n\tlet div1;\n\tlet svg2;\n\tlet rect1;\n\tlet t2;\n\tlet div2;\n\tlet svg3;\n\tlet rect2;\n\n\treturn {\n\t\tc() {\n\t\t\tdiv3 = element(\"div\");\n\t\t\tsvg0 = svg_element(\"svg\");\n\t\t\tdefs = svg_element(\"defs\");\n\t\t\tclipPath = svg_element(\"clipPath\");\n\t\t\tpath = svg_element(\"path\");\n\t\t\tt0 = space();\n\t\t\tdiv0 = element(\"div\");\n\t\t\tsvg1 = svg_element(\"svg\");\n\t\t\trect0 = svg_element(\"rect\");\n\t\t\tt1 = space();\n\t\t\tdiv1 = element(\"div\");\n\t\t\tsvg2 = svg_element(\"svg\");\n\t\t\trect1 = svg_element(\"rect\");\n\t\t\tt2 = space();\n\t\t\tdiv2 = element(\"div\");\n\t\t\tsvg3 = svg_element(\"svg\");\n\t\t\trect2 = svg_element(\"rect\");\n\t\t\tattr(path, \"d\", \"M 0 300 V 100 Q 100 0 200 100 Q 300 200 400 100 Q 500 0 600 100 Q 700 200 800 100 V 300\");\n\t\t\tattr(clipPath, \"id\", \"wave-clip\");\n\t\t\tattr(svg0, \"height\", \"0\");\n\t\t\tattr(svg0, \"width\", \"0\");\n\t\t\tattr(rect0, \"class\", \"clipped svelte-ajt3u\");\n\t\t\tattr(rect0, \"height\", \"100%\");\n\t\t\tattr(rect0, \"width\", \"100%\");\n\t\t\tattr(rect0, \"fill\", backgroundFill);\n\t\t\tattr(svg1, \"class\", \"wave background svelte-ajt3u\");\n\t\t\tattr(svg1, \"width\", \"100%\");\n\t\t\tattr(svg1, \"height\", \"\" + (bgHeight + \"%\"));\n\t\t\tattr(svg1, \"viewBox\", \"0 0 800 300\");\n\t\t\tattr(svg1, \"preserveAspectRatio\", \"none\");\n\t\t\tattr(div0, \"class\", \"container background svelte-ajt3u\");\n\t\t\tattr(rect1, \"class\", \"clipped svelte-ajt3u\");\n\t\t\tattr(rect1, \"width\", \"100%\");\n\t\t\tattr(rect1, \"height\", \"100%\");\n\t\t\tattr(rect1, \"fill\", midgroundFill);\n\t\t\tattr(svg2, \"class\", \"wave midground svelte-ajt3u\");\n\t\t\tattr(svg2, \"width\", \"100%\");\n\t\t\tattr(svg2, \"height\", \"\" + (mgHeight + \"%\"));\n\t\t\tattr(svg2, \"viewBox\", \"0 0 800 300\");\n\t\t\tattr(svg2, \"preserveAspectRatio\", \"none\");\n\t\t\tattr(div1, \"class\", \"container midground svelte-ajt3u\");\n\t\t\tattr(rect2, \"class\", \"clipped svelte-ajt3u\");\n\t\t\tattr(rect2, \"width\", \"100%\");\n\t\t\tattr(rect2, \"height\", \"100%\");\n\t\t\tattr(rect2, \"fill\", foregroundFill);\n\t\t\tattr(svg3, \"class\", \"wave foreground svelte-ajt3u\");\n\t\t\tattr(svg3, \"width\", \"100%\");\n\t\t\tattr(svg3, \"height\", \"\" + (fgHeight + \"%\"));\n\t\t\tattr(svg3, \"viewBox\", \"0 0 800 300\");\n\t\t\tattr(svg3, \"preserveAspectRatio\", \"none\");\n\t\t\tattr(div2, \"class\", \"container foreground svelte-ajt3u\");\n\t\t\tattr(div3, \"class\", \"wrapper svelte-ajt3u\");\n\t\t\tset_style(div3, \"--frequency\", frequency + \"ms\");\n\t\t\tset_style(div3, \"--foreground-speed\", fgFrequency + \"ms\");\n\t\t\tset_style(div3, \"--midground-speed\", mgFrequency + \"ms\");\n\t\t\tset_style(div3, \"--background-speed\", bgFrequency + \"ms\");\n\t\t\tset_style(div3, \"--container-height\", containerHeight + \"px\");\n\t\t\tset_style(div3, \"--motion\", motion);\n\t\t\tset_style(div3, \"--foreground-swell\", fgSwell);\n\t\t\tset_style(div3, \"--midground-swell\", mgSwell);\n\t\t\tset_style(div3, \"--background-swell\", bgSwell);\n\t\t\tset_style(div3, \"--foreground-swell-speed\", fgSwellSpeed + \"ms\");\n\t\t\tset_style(div3, \"--midground-swell-speed\", mgSwellSpeed + \"ms\");\n\t\t\tset_style(div3, \"--background-swell-speed\", bgSwellSpeed + \"ms\");\n\t\t\tset_style(div3, \"--foreground-delay\", fgSwellDelay + \"ms\");\n\t\t\tset_style(div3, \"--midground-delay\", mgSwellDelay + \"ms\");\n\t\t\tset_style(div3, \"--background-delay\", bgSwellDelay + \"ms\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div3, anchor);\n\t\t\tappend(div3, svg0);\n\t\t\tappend(svg0, defs);\n\t\t\tappend(defs, clipPath);\n\t\t\tappend(clipPath, path);\n\t\t\tappend(div3, t0);\n\t\t\tappend(div3, div0);\n\t\t\tappend(div0, svg1);\n\t\t\tappend(svg1, rect0);\n\t\t\tappend(div3, t1);\n\t\t\tappend(div3, div1);\n\t\t\tappend(div1, svg2);\n\t\t\tappend(svg2, rect1);\n\t\t\tappend(div3, t2);\n\t\t\tappend(div3, div2);\n\t\t\tappend(div2, svg3);\n\t\t\tappend(svg3, rect2);\n\t\t},\n\t\tp: noop,\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div3);\n\t\t\t}\n\t\t}\n\t};\n}\n\nlet motion = 'linear';\nlet frequency = 7000;\nlet fgFrequency = 10000;\nlet mgFrequency = 9500;\nlet bgFrequency = 8600;\nlet containerHeight = 25;\nlet fgHeight = 50;\nlet mgHeight = 75;\nlet bgHeight = 100;\nlet fgSwell = 1.2;\nlet mgSwell = 1.4;\nlet bgSwell = 1.3;\nlet fgSwellSpeed = 3100;\nlet mgSwellSpeed = 2300;\nlet bgSwellSpeed = 1000;\nlet fgSwellDelay = 9000;\nlet mgSwellDelay = 7900;\nlet bgSwellDelay = 9100;\nconst foregroundFill = 'var(--wave-foreground-color)';\nconst midgroundFill = 'var(--wave-midground-color)';\nconst backgroundFill = 'var(--wave-background-color)';\n\nfunction instance$3($$self) {\n\treturn [];\n}\n\nclass HeaderWaves extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$3, create_fragment$3, safe_not_equal, {}, add_css$2);\n\t}\n}\n\n/* src/ui/components/Header.svelte generated by Svelte v4.2.0 */\n\nfunction add_css$1(target) {\n\tappend_styles(target, \"svelte-j6z3r6\", \".modal-header.svelte-j6z3r6.svelte-j6z3r6{box-sizing:border-box;min-height:var(--header-height);color:var(--header-text-color);background:var(--header-background-color);display:grid;grid-template-columns:1fr auto 1fr;gap:var(--space-s);padding:var(--space-m)}.modal-header.svelte-j6z3r6 .slot.svelte-j6z3r6{display:flex;align-items:center}.modal-header.svelte-j6z3r6 .center.svelte-j6z3r6{flex-direction:column;justify-content:space-around;text-align:center}.modal-header.svelte-j6z3r6 .right.svelte-j6z3r6{justify-content:flex-end}.modal-header.svelte-j6z3r6 .svelte-j6z3r6:is(h2, p){color:var(--header-text-color);margin:0;line-height:1.1em}.modal-header.svelte-j6z3r6 h2.svelte-j6z3r6{font-size:var(--fs-3);font-weight:700}.modal-header.svelte-j6z3r6 p.svelte-j6z3r6{font-size:var(--fs-0)}\");\n}\n\nconst get_right_slot_changes = dirty => ({});\nconst get_right_slot_context = ctx => ({});\nconst get_center_slot_changes = dirty => ({});\nconst get_center_slot_context = ctx => ({});\nconst get_left_slot_changes = dirty => ({});\nconst get_left_slot_context = ctx => ({});\n\n// (15:37) \nfunction create_if_block_2$1(ctx) {\n\tlet headerbutton;\n\tlet current;\n\n\theaderbutton = new HeaderButton({\n\t\t\tprops: {\n\t\t\t\ticon: \"settings\",\n\t\t\t\tonClick: /*func*/ ctx[8]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(headerbutton.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(headerbutton, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst headerbutton_changes = {};\n\t\t\tif (dirty & /*$transitionDirection*/ 16) headerbutton_changes.onClick = /*func*/ ctx[8];\n\t\t\theaderbutton.$set(headerbutton_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(headerbutton.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(headerbutton.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(headerbutton, detaching);\n\t\t}\n\t};\n}\n\n// (13:12) {#if $backAction}\nfunction create_if_block_1$1(ctx) {\n\tlet headerbutton;\n\tlet current;\n\n\theaderbutton = new HeaderButton({\n\t\t\tprops: {\n\t\t\t\ticon: \"chevron-left\",\n\t\t\t\tonClick: /*$backAction*/ ctx[2]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(headerbutton.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(headerbutton, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tconst headerbutton_changes = {};\n\t\t\tif (dirty & /*$backAction*/ 4) headerbutton_changes.onClick = /*$backAction*/ ctx[2];\n\t\t\theaderbutton.$set(headerbutton_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(headerbutton.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(headerbutton.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(headerbutton, detaching);\n\t\t}\n\t};\n}\n\n// (12:26) \nfunction fallback_block_2(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\tconst if_block_creators = [create_if_block_1$1, create_if_block_2$1];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*$backAction*/ ctx[2]) return 0;\n\t\tif (/*$allowSettings*/ ctx[3]) return 1;\n\t\treturn -1;\n\t}\n\n\tif (~(current_block_type_index = select_block_type(ctx))) {\n\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t}\n\n\treturn {\n\t\tc() {\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\t}\n\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tgroup_outros();\n\n\t\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t\t});\n\n\t\t\t\t\tcheck_outros();\n\t\t\t\t}\n\n\t\t\t\tif (~current_block_type_index) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\t\tif (!if_block) {\n\t\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\t\tif_block.c();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t\t}\n\n\t\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t} else {\n\t\t\t\t\tif_block = null;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (~current_block_type_index) {\n\t\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (29:12) {#if subtitle}\nfunction create_if_block$1(ctx) {\n\tlet p;\n\tlet t;\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tt = text(/*subtitle*/ ctx[1]);\n\t\t\tattr(p, \"class\", \"svelte-j6z3r6\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\t\t\tappend(p, t);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*subtitle*/ 2) set_data(t, /*subtitle*/ ctx[1]);\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (27:28) \nfunction fallback_block_1(ctx) {\n\tlet h2;\n\tlet t0;\n\tlet t1;\n\tlet if_block_anchor;\n\tlet if_block = /*subtitle*/ ctx[1] && create_if_block$1(ctx);\n\n\treturn {\n\t\tc() {\n\t\t\th2 = element(\"h2\");\n\t\t\tt0 = text(/*title*/ ctx[0]);\n\t\t\tt1 = space();\n\t\t\tif (if_block) if_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t\tattr(h2, \"class\", \"svelte-j6z3r6\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, h2, anchor);\n\t\t\tappend(h2, t0);\n\t\t\tinsert(target, t1, anchor);\n\t\t\tif (if_block) if_block.m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tif (dirty & /*title*/ 1) set_data(t0, /*title*/ ctx[0]);\n\n\t\t\tif (/*subtitle*/ ctx[1]) {\n\t\t\t\tif (if_block) {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t} else {\n\t\t\t\t\tif_block = create_if_block$1(ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t\t}\n\t\t\t} else if (if_block) {\n\t\t\t\tif_block.d(1);\n\t\t\t\tif_block = null;\n\t\t\t}\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(h2);\n\t\t\t\tdetach(t1);\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif (if_block) if_block.d(detaching);\n\t\t}\n\t};\n}\n\n// (35:27) \nfunction fallback_block(ctx) {\n\tlet headerbutton;\n\tlet current;\n\n\theaderbutton = new HeaderButton({\n\t\t\tprops: {\n\t\t\t\ticon: \"close\",\n\t\t\t\tonClick: /*func_1*/ ctx[9]\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(headerbutton.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(headerbutton, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(headerbutton.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(headerbutton.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(headerbutton, detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment$2(ctx) {\n\tlet div3;\n\tlet div0;\n\tlet t0;\n\tlet div1;\n\tlet t1;\n\tlet div2;\n\tlet t2;\n\tlet headerwaves;\n\tlet current;\n\tconst left_slot_template = /*#slots*/ ctx[7].left;\n\tconst left_slot = create_slot(left_slot_template, ctx, /*$$scope*/ ctx[6], get_left_slot_context);\n\tconst left_slot_or_fallback = left_slot || fallback_block_2(ctx);\n\tconst center_slot_template = /*#slots*/ ctx[7].center;\n\tconst center_slot = create_slot(center_slot_template, ctx, /*$$scope*/ ctx[6], get_center_slot_context);\n\tconst center_slot_or_fallback = center_slot || fallback_block_1(ctx);\n\tconst right_slot_template = /*#slots*/ ctx[7].right;\n\tconst right_slot = create_slot(right_slot_template, ctx, /*$$scope*/ ctx[6], get_right_slot_context);\n\tconst right_slot_or_fallback = right_slot || fallback_block(ctx);\n\theaderwaves = new HeaderWaves({});\n\n\treturn {\n\t\tc() {\n\t\t\tdiv3 = element(\"div\");\n\t\t\tdiv0 = element(\"div\");\n\t\t\tif (left_slot_or_fallback) left_slot_or_fallback.c();\n\t\t\tt0 = space();\n\t\t\tdiv1 = element(\"div\");\n\t\t\tif (center_slot_or_fallback) center_slot_or_fallback.c();\n\t\t\tt1 = space();\n\t\t\tdiv2 = element(\"div\");\n\t\t\tif (right_slot_or_fallback) right_slot_or_fallback.c();\n\t\t\tt2 = space();\n\t\t\tcreate_component(headerwaves.$$.fragment);\n\t\t\tattr(div0, \"class\", \"slot left svelte-j6z3r6\");\n\t\t\tattr(div1, \"class\", \"slot center svelte-j6z3r6\");\n\t\t\tattr(div2, \"class\", \"slot right svelte-j6z3r6\");\n\t\t\tattr(div3, \"class\", \"modal-header svelte-j6z3r6\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, div3, anchor);\n\t\t\tappend(div3, div0);\n\n\t\t\tif (left_slot_or_fallback) {\n\t\t\t\tleft_slot_or_fallback.m(div0, null);\n\t\t\t}\n\n\t\t\tappend(div3, t0);\n\t\t\tappend(div3, div1);\n\n\t\t\tif (center_slot_or_fallback) {\n\t\t\t\tcenter_slot_or_fallback.m(div1, null);\n\t\t\t}\n\n\t\t\tappend(div3, t1);\n\t\t\tappend(div3, div2);\n\n\t\t\tif (right_slot_or_fallback) {\n\t\t\t\tright_slot_or_fallback.m(div2, null);\n\t\t\t}\n\n\t\t\tinsert(target, t2, anchor);\n\t\t\tmount_component(headerwaves, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tif (left_slot) {\n\t\t\t\tif (left_slot.p && (!current || dirty & /*$$scope*/ 64)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tleft_slot,\n\t\t\t\t\t\tleft_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[6],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[6])\n\t\t\t\t\t\t: get_slot_changes(left_slot_template, /*$$scope*/ ctx[6], dirty, get_left_slot_changes),\n\t\t\t\t\t\tget_left_slot_context\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (left_slot_or_fallback && left_slot_or_fallback.p && (!current || dirty & /*$backAction, $transitionDirection, $allowSettings*/ 28)) {\n\t\t\t\t\tleft_slot_or_fallback.p(ctx, !current ? -1 : dirty);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (center_slot) {\n\t\t\t\tif (center_slot.p && (!current || dirty & /*$$scope*/ 64)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tcenter_slot,\n\t\t\t\t\t\tcenter_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[6],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[6])\n\t\t\t\t\t\t: get_slot_changes(center_slot_template, /*$$scope*/ ctx[6], dirty, get_center_slot_changes),\n\t\t\t\t\t\tget_center_slot_context\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (center_slot_or_fallback && center_slot_or_fallback.p && (!current || dirty & /*subtitle, title*/ 3)) {\n\t\t\t\t\tcenter_slot_or_fallback.p(ctx, !current ? -1 : dirty);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (right_slot) {\n\t\t\t\tif (right_slot.p && (!current || dirty & /*$$scope*/ 64)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tright_slot,\n\t\t\t\t\t\tright_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[6],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[6])\n\t\t\t\t\t\t: get_slot_changes(right_slot_template, /*$$scope*/ ctx[6], dirty, get_right_slot_changes),\n\t\t\t\t\t\tget_right_slot_context\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(left_slot_or_fallback, local);\n\t\t\ttransition_in(center_slot_or_fallback, local);\n\t\t\ttransition_in(right_slot_or_fallback, local);\n\t\t\ttransition_in(headerwaves.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(left_slot_or_fallback, local);\n\t\t\ttransition_out(center_slot_or_fallback, local);\n\t\t\ttransition_out(right_slot_or_fallback, local);\n\t\t\ttransition_out(headerwaves.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(div3);\n\t\t\t\tdetach(t2);\n\t\t\t}\n\n\t\t\tif (left_slot_or_fallback) left_slot_or_fallback.d(detaching);\n\t\t\tif (center_slot_or_fallback) center_slot_or_fallback.d(detaching);\n\t\t\tif (right_slot_or_fallback) right_slot_or_fallback.d(detaching);\n\t\t\tdestroy_component(headerwaves, detaching);\n\t\t}\n\t};\n}\n\nfunction instance$2($$self, $$props, $$invalidate) {\n\tlet $backAction;\n\tlet $allowSettings;\n\tlet $transitionDirection;\n\tcomponent_subscribe($$self, backAction, $$value => $$invalidate(2, $backAction = $$value));\n\tcomponent_subscribe($$self, allowSettings, $$value => $$invalidate(3, $allowSettings = $$value));\n\tcomponent_subscribe($$self, transitionDirection, $$value => $$invalidate(4, $transitionDirection = $$value));\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\tlet { title } = $$props;\n\tlet { subtitle } = $$props;\n\tconst dispatch = createEventDispatcher();\n\n\tconst func = () => {\n\t\trouter.push('settings');\n\t\tset_store_value(transitionDirection, $transitionDirection = 'rtl', $transitionDirection);\n\t};\n\n\tconst func_1 = () => dispatch('cancel');\n\n\t$$self.$$set = $$props => {\n\t\tif ('title' in $$props) $$invalidate(0, title = $$props.title);\n\t\tif ('subtitle' in $$props) $$invalidate(1, subtitle = $$props.subtitle);\n\t\tif ('$$scope' in $$props) $$invalidate(6, $$scope = $$props.$$scope);\n\t};\n\n\treturn [\n\t\ttitle,\n\t\tsubtitle,\n\t\t$backAction,\n\t\t$allowSettings,\n\t\t$transitionDirection,\n\t\tdispatch,\n\t\t$$scope,\n\t\tslots,\n\t\tfunc,\n\t\tfunc_1\n\t];\n}\n\nclass Header extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$2, create_fragment$2, safe_not_equal, { title: 0, subtitle: 1 }, add_css$1);\n\t}\n}\n\n/* src/ui/components/Modal.svelte generated by Svelte v4.2.0 */\n\nfunction add_css(target) {\n\tappend_styles(target, \"svelte-1ime0ob\", \":host dialog.svelte-1ime0ob{color-scheme:light;--body-background-color:white;--body-text-color:var(--color-primary-700);--body-text-color-variant:var(--color-neutral-700);--header-background-color:var(--color-primary-700);--header-text-color:var(--color-primary-50);--header-button-background:var(--header-background-color);--header-button-outline:var(--color-primary-900);--button-text-color:var(--wharf-blue);--button-text-color-active:var(--wharf-blue);--button-outline-active:inset 0 0 0 2px var(--button-text-color);--button-primary-background:var(--color-secondary-200);--button-primary-background-hover:var(--color-secondary-200);--button-primary-background-active:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)),\\n var(--color-secondary-200);--button-primary-outline-hover:inset 0 0 0 1px #00000030,\\n inset 0 0 0 1px var(--color-secondary-200);--button-secondary-background:var(--color-custom-1);--button-secondary-background-hover:var(--color-custom-1);--button-secondary-background-active:var(--color-secondary-200);--button-secondary-outline-hover:inset 0 0 0 1px #00000020,\\n inset 0 0 0 1px var(--color-secondary-200);--button-outlined-background-active:var(--color-secondary-200);--button-outlined-outline:inset 0 0 0 1px var(--color-secondary-200);--button-outlined-outline-hover:inset 0 0 0 1px #00000020,\\n inset 0 0 0 1px var(--color-secondary-200);--input-placeholder-color:var(--color-neutral-500);--input-background-focus:var(--color-neutral-100);--input-border-color:#00000030;--input-border-color-hover:var(--color-custom-5);--input-border-color-focus:var(--wharf-blue);--qr-border-color:inset 0 0 0 1px rgba(0 0 0 / 0.3), inset 0 0 0 1px var(--seafoam-mint);--checkbox-stroke:var(--wharf-blue);--checkbox-fill:var(--reef-turquoise);--error-color:var(--color-error-1);--list-item-background-color-hover:var(--color-custom-9);--list-item-text-color-hover:var(--color-secondary-500);--list-divider-color:#00000010;--text-area-background:var(--swell-mist);--text-area-text-color:#242424;--loading-circle-color:var(--reef-turquoise);--loading-circle-track-color:rgba(0 0 0 / 0.05);--wave-foreground-color:var(--body-background-color);--wave-midground-color:var(--seafoam-mint);--wave-background-color:var(--reef-turquoise)}:host dialog[data-theme=dark].svelte-1ime0ob{color-scheme:dark;--body-background-color:var(--color-primary-990);--body-text-color:white;--body-text-color-variant:var(--color-neutral-300);--header-background-color:var(--color-primary-700);--header-text-color:var(--color-primary-50);--header-button-background:var(--header-background-color);--header-button-outline:var(--color-primary-900);--button-text-color:var(--body-text-color);--button-text-color-active:var(--reef-turquoise);--button-outline-active:inset 0 0 0 2px var(--reef-turquoise);--button-primary-background:var(--color-secondary-500);--button-primary-background-hover:var(--color-secondary-500);--button-primary-background-active:var(--color-custom-2);--button-primary-outline-hover:inset 0 0 0 1px white;--button-secondary-background:var(--color-primary-800);--button-secondary-background-hover:var(--color-primary-800);--button-secondary-background-active:var(--color-primary-900);--button-secondary-outline-hover:inset 0 0 0 1px #ffffff30;--button-outlined-background-active:var(--color-primary-900);--button-outlined-outline:inset 0 0 0 1px #00000030;--button-outlined-outline-hover:inset 0 0 0 1px #ffffff30;--input-placeholder-color:#ffffff75;--input-background-focus:var(--color-custom-4);--input-border-color:#ffffff30;--input-border-color-hover:var(--color-custom-6);--input-border-color-focus:var(--reef-turquoise);--qr-border-color:inset 0 0 0 1px rgba(0 0 0 / 0.3);--checkbox-stroke:var(--reef-turquoise);--checkbox-fill:var(--color-custom-3);--error-color:var(--color-error-3);--list-item-background-color-hover:var(--color-custom-8);--list-item-text-color-hover:var(--color-secondary-400);--list-divider-color:#ffffff10;--text-area-background:var(--color-primary-900);--text-area-text-color:#ffffff;--loading-circle-color:var(--seafoam-mint);--loading-circle-track-color:rgba(0 0 0 / 0.05);--wave-foreground-color:var(--body-background-color);--wave-midground-color:#2f3445;--wave-background-color:#3e4356}@media(prefers-color-scheme: dark){:host dialog.svelte-1ime0ob{color-scheme:dark;--body-background-color:var(--color-primary-990);--body-text-color:white;--body-text-color-variant:var(--color-neutral-300);--header-background-color:var(--color-primary-700);--header-text-color:var(--color-primary-50);--header-button-background:var(--header-background-color);--header-button-outline:var(--color-primary-900);--button-text-color:var(--body-text-color);--button-text-color-active:var(--reef-turquoise);--button-outline-active:inset 0 0 0 2px var(--reef-turquoise);--button-primary-background:var(--color-secondary-500);--button-primary-background-hover:var(--color-secondary-500);--button-primary-background-active:var(--color-custom-2);--button-primary-outline-hover:inset 0 0 0 1px white;--button-secondary-background:var(--color-primary-800);--button-secondary-background-hover:var(--color-primary-800);--button-secondary-background-active:var(--color-primary-900);--button-secondary-outline-hover:inset 0 0 0 1px #ffffff30;--button-outlined-background-active:var(--color-primary-900);--button-outlined-outline:inset 0 0 0 1px #00000030;--button-outlined-outline-hover:inset 0 0 0 1px #ffffff30;--input-placeholder-color:#ffffff75;--input-background-focus:var(--color-custom-4);--input-border-color:#ffffff30;--input-border-color-hover:var(--color-custom-6);--input-border-color-focus:var(--reef-turquoise);--qr-border-color:inset 0 0 0 1px rgba(0 0 0 / 0.3);--checkbox-stroke:var(--reef-turquoise);--checkbox-fill:var(--color-custom-3);--error-color:var(--color-error-3);--list-item-background-color-hover:var(--color-custom-8);--list-item-text-color-hover:var(--color-secondary-400);--list-divider-color:#ffffff10;--text-area-background:var(--color-primary-900);--text-area-text-color:#ffffff;--loading-circle-color:var(--seafoam-mint);--loading-circle-track-color:rgba(0 0 0 / 0.05);--wave-foreground-color:var(--body-background-color);--wave-midground-color:#2f3445;--wave-background-color:#3e4356}:host dialog[data-theme=light].svelte-1ime0ob{color-scheme:light;--body-background-color:white;--body-text-color:var(--color-primary-700);--body-text-color-variant:var(--color-neutral-700);--header-background-color:var(--color-primary-700);--header-text-color:var(--color-primary-50);--header-button-background:var(--header-background-color);--header-button-outline:var(--color-primary-900);--button-text-color:var(--wharf-blue);--button-text-color-active:var(--wharf-blue);--button-outline-active:inset 0 0 0 2px var(--button-text-color);--button-primary-background:var(--color-secondary-200);--button-primary-background-hover:var(--color-secondary-200);--button-primary-background-active:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)),\\n var(--color-secondary-200);--button-primary-outline-hover:inset 0 0 0 1px #00000030,\\n inset 0 0 0 1px var(--color-secondary-200);--button-secondary-background:var(--color-custom-1);--button-secondary-background-hover:var(--color-custom-1);--button-secondary-background-active:var(--color-secondary-200);--button-secondary-outline-hover:inset 0 0 0 1px #00000020,\\n inset 0 0 0 1px var(--color-secondary-200);--button-outlined-background-active:var(--color-secondary-200);--button-outlined-outline:inset 0 0 0 1px var(--color-secondary-200);--button-outlined-outline-hover:inset 0 0 0 1px #00000020,\\n inset 0 0 0 1px var(--color-secondary-200);--input-placeholder-color:var(--color-neutral-500);--input-background-focus:var(--color-neutral-100);--input-border-color:#00000030;--input-border-color-hover:var(--color-custom-5);--input-border-color-focus:var(--wharf-blue);--qr-border-color:inset 0 0 0 1px rgba(0 0 0 / 0.3), inset 0 0 0 1px var(--seafoam-mint);--checkbox-stroke:var(--wharf-blue);--checkbox-fill:var(--reef-turquoise);--error-color:var(--color-error-1);--list-item-background-color-hover:var(--color-custom-9);--list-item-text-color-hover:var(--color-secondary-500);--list-divider-color:#00000010;--text-area-background:var(--swell-mist);--text-area-text-color:#242424;--loading-circle-color:var(--reef-turquoise);--loading-circle-track-color:rgba(0 0 0 / 0.05);--wave-foreground-color:var(--body-background-color);--wave-midground-color:var(--seafoam-mint);--wave-background-color:var(--reef-turquoise)}}:host dialog.svelte-1ime0ob{--wharf-blue:var(--color-primary-700);--reef-turquoise:var(--color-secondary-300);--seafoam-mint:var(--color-secondary-200);--swell-mist:var(--color-accent-50);--color-primary-50:#f6f7f9;--color-primary-100:#ededf1;--color-primary-200:#d6d8e1;--color-primary-300:#b3b8c6;--color-primary-400:#8991a7;--color-primary-500:#6b738c;--color-primary-600:#565c73;--color-primary-700:#494e62;--color-primary-800:#3c4050;--color-primary-900:#363944;--color-primary-990:#252835;--color-secondary-50:#f1fcf9;--color-secondary-100:#cef9ed;--color-secondary-200:#b2f2e1;--color-secondary-300:#7be7ce;--color-secondary-400:#35ccae;--color-secondary-500:#1cb095;--color-secondary-600:#148d79;--color-secondary-700:#147163;--color-secondary-800:#155a51;--color-secondary-900:#164b43;--color-accent-50:#f4faf4;--color-accent-100:#e4f4e5;--color-accent-200:#cae8cc;--color-accent-300:#a1d4a3;--color-accent-400:#70b874;--color-accent-500:#4c9b51;--color-accent-600:#3a7f3e;--color-accent-700:#306534;--color-accent-800:#2a512d;--color-accent-900:#244326;--color-neutral-100:#f7f7f7;--color-neutral-200:#e3e3e3;--color-neutral-300:#c8c8c8;--color-neutral-400:#a4a4a4;--color-neutral-500:#818181;--color-neutral-600:#666666;--color-neutral-700:#515151;--color-neutral-800:#434343;--color-neutral-900:#383838;--color-custom-1:#f3f8f3;--color-custom-2:#415e60;--color-custom-3:#344b4d;--color-custom-4:#3d435a;--color-custom-5:#8ec2b4;--color-custom-6:#777b8b;--color-custom-7:#35ccae10;--color-custom-8:#575c6e;--color-custom-9:#f4f5f7;--color-error-1:#cd3939;--color-error-2:#ff5454;--color-error-3:#ffacac;font-family:system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;--measure:35ch;--fs-0:calc(var(--fs-2) * 0.75);--fs-1:calc(var(--fs-2) * 0.875);--fs-2:var(--wharfkit-font-base, 1rem);--fs-3:calc(var(--fs-2) * 1.25);--ratio:1.5;--space-4xs:calc(var(--space-3xs) / var(--ratio));--space-3xs:calc(var(--space-2xs) / var(--ratio));--space-2xs:calc(var(--space-xs) / var(--ratio));--space-xs:calc(var(--space-s) / var(--ratio));--space-s:calc(var(--space-m) / var(--ratio));--space-m:var(--wharfkit-space-base, 1rem);--space-l:calc(var(--space-m) * var(--ratio));--space-xl:calc(var(--space-l) * var(--ratio));--space-2xl:calc(var(--space-xl) * var(--ratio));--space-3xl:calc(var(--space-2xl) * var(--ratio));--space-4xl:calc(var(--space-3xl) * var(--ratio));--space-5xl:calc(var(--space-4xl) * var(--ratio));--space-6xl:calc(var(--space-5xl) * var(--ratio));--space-7xl:calc(var(--space-6xl) * var(--ratio));--space-8xl:calc(var(--space-7xl) * var(--ratio));--space-9xl:calc(var(--space-8xl) * var(--ratio));--border-radius-outer:1.5rem;--border-radius-inner:0.75rem;--header-height:var(--space-3xl)}.svelte-1ime0ob{box-sizing:border-box}.svelte-1ime0ob::selection{color:var(--wharf-blue);background-color:var(--seafoam-mint)}dialog.svelte-1ime0ob{--margin-top:var(--space-xl);font-family:system-ui, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\"Open Sans\\\", \\\"Helvetica Neue\\\", sans-serif;margin-bottom:0;margin-top:var(--margin-top);margin-inline:auto;border:none !important;border-radius:var(--border-radius-outer);padding:0;width:min(var(--space-7xl), 100vw - var(--space-m));box-shadow:0px 4px 154px rgba(0, 0, 0, 0.35);background:none}dialog.svelte-1ime0ob::backdrop{background:rgba(0, 0, 0, 0.75)}.modal-content.svelte-1ime0ob{--max-modal-content-height:calc(\\n 100svh - var(--header-height) - var(--margin-top) - var(--margin-top)\\n );padding:var(--space-m);padding-bottom:var(--space-l);background-color:var(--body-background-color);overflow:hidden;overflow-y:scroll;max-height:var(--max-modal-content-height);scrollbar-gutter:stable both-edges;scrollbar-color:var(--header-background-color)}.modal-content.svelte-1ime0ob::-webkit-scrollbar{width:2px;background-color:var(--body-background-color)}.modal-content.svelte-1ime0ob::-webkit-scrollbar-thumb{background:var(--header-background-color)}\");\n}\n\nfunction create_fragment$1(ctx) {\n\tlet dialog_1;\n\tlet header;\n\tlet t;\n\tlet div;\n\tlet dialog_1_data_theme_value;\n\tlet current;\n\tlet mounted;\n\tlet dispose;\n\n\theader = new Header({\n\t\t\tprops: {\n\t\t\t\ttitle: /*$props*/ ctx[2].title,\n\t\t\t\tsubtitle: /*$props*/ ctx[2].subtitle\n\t\t\t}\n\t\t});\n\n\theader.$on(\"cancel\", /*cancelRequest*/ ctx[3]);\n\tconst default_slot_template = /*#slots*/ ctx[6].default;\n\tconst default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[5], null);\n\n\treturn {\n\t\tc() {\n\t\t\tdialog_1 = element(\"dialog\");\n\t\t\tcreate_component(header.$$.fragment);\n\t\t\tt = space();\n\t\t\tdiv = element(\"div\");\n\t\t\tif (default_slot) default_slot.c();\n\t\t\tattr(div, \"class\", \"modal-content svelte-1ime0ob\");\n\t\t\tattr(dialog_1, \"data-theme\", dialog_1_data_theme_value = /*$settings*/ ctx[1].theme);\n\t\t\tattr(dialog_1, \"class\", \"svelte-1ime0ob\");\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, dialog_1, anchor);\n\t\t\tmount_component(header, dialog_1, null);\n\t\t\tappend(dialog_1, t);\n\t\t\tappend(dialog_1, div);\n\n\t\t\tif (default_slot) {\n\t\t\t\tdefault_slot.m(div, null);\n\t\t\t}\n\n\t\t\t/*dialog_1_binding*/ ctx[7](dialog_1);\n\t\t\tcurrent = true;\n\n\t\t\tif (!mounted) {\n\t\t\t\tdispose = listen(dialog_1, \"mousedown\", self(prevent_default(/*backgroundClose*/ ctx[4])), { passive: false, capture: true });\n\t\t\t\tmounted = true;\n\t\t\t}\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst header_changes = {};\n\t\t\tif (dirty & /*$props*/ 4) header_changes.title = /*$props*/ ctx[2].title;\n\t\t\tif (dirty & /*$props*/ 4) header_changes.subtitle = /*$props*/ ctx[2].subtitle;\n\t\t\theader.$set(header_changes);\n\n\t\t\tif (default_slot) {\n\t\t\t\tif (default_slot.p && (!current || dirty & /*$$scope*/ 32)) {\n\t\t\t\t\tupdate_slot_base(\n\t\t\t\t\t\tdefault_slot,\n\t\t\t\t\t\tdefault_slot_template,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t/*$$scope*/ ctx[5],\n\t\t\t\t\t\t!current\n\t\t\t\t\t\t? get_all_dirty_from_scope(/*$$scope*/ ctx[5])\n\t\t\t\t\t\t: get_slot_changes(default_slot_template, /*$$scope*/ ctx[5], dirty, null),\n\t\t\t\t\t\tnull\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!current || dirty & /*$settings*/ 2 && dialog_1_data_theme_value !== (dialog_1_data_theme_value = /*$settings*/ ctx[1].theme)) {\n\t\t\t\tattr(dialog_1, \"data-theme\", dialog_1_data_theme_value);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(header.$$.fragment, local);\n\t\t\ttransition_in(default_slot, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(header.$$.fragment, local);\n\t\t\ttransition_out(default_slot, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(dialog_1);\n\t\t\t}\n\n\t\t\tdestroy_component(header);\n\t\t\tif (default_slot) default_slot.d(detaching);\n\t\t\t/*dialog_1_binding*/ ctx[7](null);\n\t\t\tmounted = false;\n\t\t\tdispose();\n\t\t}\n\t};\n}\n\nfunction instance$1($$self, $$props, $$invalidate) {\n\tlet $cancelablePromises;\n\tlet $settings;\n\tlet $props;\n\tcomponent_subscribe($$self, cancelablePromises, $$value => $$invalidate(8, $cancelablePromises = $$value));\n\tcomponent_subscribe($$self, settings$5, $$value => $$invalidate(1, $settings = $$value));\n\tcomponent_subscribe($$self, props, $$value => $$invalidate(2, $props = $$value));\n\tlet { $$slots: slots = {}, $$scope } = $$props;\n\tlet dialog;\n\n\t// Control the dialog element display based on state.active\n\tconst unsubscribe = active.subscribe(current => {\n\t\tif (dialog) {\n\t\t\tif (current && !dialog.open) {\n\t\t\t\tdialog.showModal();\n\t\t\t} else if (!current && dialog.open) {\n\t\t\t\tdialog.close();\n\t\t\t\tresetState();\n\t\t\t}\n\t\t}\n\t});\n\n\tonDestroy(unsubscribe);\n\n\t// Perform work required to cancel request\n\tfunction cancelRequest() {\n\t\t// Cancel any pending promises\n\t\t$cancelablePromises.map(f => f('Modal closed', true));\n\n\t\t// Update state to close the modal\n\t\tactive.set(false);\n\t}\n\n\t// When background is clicked outside of modal, close\n\tfunction backgroundClose(event) {\n\t\tvar rect = dialog.getBoundingClientRect();\n\t\tvar isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;\n\n\t\tif (!isInDialog) {\n\t\t\tcancelRequest();\n\t\t}\n\t}\n\n\t// When escape keypress is captured, close\n\tdocument.addEventListener('keydown', event => {\n\t\tif (event.key === 'Escape' && dialog.open) {\n\t\t\tcancelRequest();\n\t\t}\n\t});\n\n\tfunction dialog_1_binding($$value) {\n\t\tbinding_callbacks[$$value ? 'unshift' : 'push'](() => {\n\t\t\tdialog = $$value;\n\t\t\t$$invalidate(0, dialog);\n\t\t});\n\t}\n\n\t$$self.$$set = $$props => {\n\t\tif ('$$scope' in $$props) $$invalidate(5, $$scope = $$props.$$scope);\n\t};\n\n\treturn [\n\t\tdialog,\n\t\t$settings,\n\t\t$props,\n\t\tcancelRequest,\n\t\tbackgroundClose,\n\t\t$$scope,\n\t\tslots,\n\t\tdialog_1_binding\n\t];\n}\n\nclass Modal extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance$1, create_fragment$1, safe_not_equal, {}, add_css);\n\t}\n}\n\n/* src/ui/App.svelte generated by Svelte v4.2.0 */\n\nfunction create_else_block_1(ctx) {\n\tlet p;\n\n\treturn {\n\t\tc() {\n\t\t\tp = element(\"p\");\n\t\t\tp.textContent = \"Modal inactive\";\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tinsert(target, p, anchor);\n\t\t},\n\t\tp: noop,\n\t\ti: noop,\n\t\to: noop,\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(p);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// (53:4) {#if $active}\nfunction create_if_block(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\n\tconst if_block_creators = [\n\t\tcreate_if_block_1,\n\t\tcreate_if_block_2,\n\t\tcreate_if_block_3,\n\t\tcreate_if_block_4,\n\t\tcreate_if_block_5,\n\t\tcreate_if_block_6,\n\t\tcreate_else_block\n\t];\n\n\tconst if_blocks = [];\n\n\tfunction select_block_type_1(ctx, dirty) {\n\t\tif (/*$errorDetails*/ ctx[2]) return 0;\n\t\tif (/*$prompt*/ ctx[0]) return 1;\n\t\tif (/*$router*/ ctx[3].path === 'login') return 2;\n\t\tif (/*$router*/ ctx[3].path === 'transact') return 3;\n\t\tif (/*$router*/ ctx[3].path === 'settings') return 4;\n\t\tif (/*$router*/ ctx[3].path === 'create-account') return 5;\n\t\treturn 6;\n\t}\n\n\tcurrent_block_type_index = select_block_type_1(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type_1(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t} else {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\tif (!if_block) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t} else {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t}\n\n\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\n// (66:8) {:else}\nfunction create_else_block(ctx) {\n\tlet countdown;\n\tlet current;\n\tcountdown = new Countdown({});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(countdown.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(countdown, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(countdown.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(countdown.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(countdown, detaching);\n\t\t}\n\t};\n}\n\n// (64:52) \nfunction create_if_block_6(ctx) {\n\tlet createaccount;\n\tlet current;\n\tcreateaccount = new CreateAccount({});\n\tcreateaccount.$on(\"cancel\", /*cancel*/ ctx[4]);\n\tcreateaccount.$on(\"complete\", /*complete*/ ctx[5]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(createaccount.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(createaccount, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(createaccount.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(createaccount.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(createaccount, detaching);\n\t\t}\n\t};\n}\n\n// (62:46) \nfunction create_if_block_5(ctx) {\n\tlet settings;\n\tlet current;\n\tsettings = new Settings({});\n\tsettings.$on(\"cancel\", /*cancel*/ ctx[4]);\n\tsettings.$on(\"complete\", /*complete*/ ctx[5]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(settings.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(settings, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(settings.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(settings.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(settings, detaching);\n\t\t}\n\t};\n}\n\n// (60:46) \nfunction create_if_block_4(ctx) {\n\tlet transact;\n\tlet current;\n\ttransact = new Transact({});\n\ttransact.$on(\"cancel\", /*cancel*/ ctx[4]);\n\ttransact.$on(\"complete\", /*complete*/ ctx[5]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(transact.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(transact, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(transact.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(transact.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(transact, detaching);\n\t\t}\n\t};\n}\n\n// (58:43) \nfunction create_if_block_3(ctx) {\n\tlet login;\n\tlet current;\n\tlogin = new Login({});\n\tlogin.$on(\"cancel\", /*cancel*/ ctx[4]);\n\tlogin.$on(\"complete\", /*complete*/ ctx[5]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(login.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(login, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(login.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(login.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(login, detaching);\n\t\t}\n\t};\n}\n\n// (56:26) \nfunction create_if_block_2(ctx) {\n\tlet prompt_1;\n\tlet current;\n\tprompt_1 = new Prompt({});\n\tprompt_1.$on(\"cancel\", /*cancel*/ ctx[4]);\n\tprompt_1.$on(\"complete\", /*complete*/ ctx[5]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(prompt_1.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(prompt_1, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(prompt_1.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(prompt_1.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(prompt_1, detaching);\n\t\t}\n\t};\n}\n\n// (54:8) {#if $errorDetails}\nfunction create_if_block_1(ctx) {\n\tlet error;\n\tlet current;\n\terror = new Error$1({});\n\terror.$on(\"cancel\", /*cancel*/ ctx[4]);\n\terror.$on(\"complete\", /*complete*/ ctx[5]);\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(error.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(error, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp: noop,\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(error.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(error.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(error, detaching);\n\t\t}\n\t};\n}\n\n// (52:0) \nfunction create_default_slot(ctx) {\n\tlet current_block_type_index;\n\tlet if_block;\n\tlet if_block_anchor;\n\tlet current;\n\tconst if_block_creators = [create_if_block, create_else_block_1];\n\tconst if_blocks = [];\n\n\tfunction select_block_type(ctx, dirty) {\n\t\tif (/*$active*/ ctx[1]) return 0;\n\t\treturn 1;\n\t}\n\n\tcurrent_block_type_index = select_block_type(ctx);\n\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\n\treturn {\n\t\tc() {\n\t\t\tif_block.c();\n\t\t\tif_block_anchor = empty();\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tif_blocks[current_block_type_index].m(target, anchor);\n\t\t\tinsert(target, if_block_anchor, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, dirty) {\n\t\t\tlet previous_block_index = current_block_type_index;\n\t\t\tcurrent_block_type_index = select_block_type(ctx);\n\n\t\t\tif (current_block_type_index === previous_block_index) {\n\t\t\t\tif_blocks[current_block_type_index].p(ctx, dirty);\n\t\t\t} else {\n\t\t\t\tgroup_outros();\n\n\t\t\t\ttransition_out(if_blocks[previous_block_index], 1, 1, () => {\n\t\t\t\t\tif_blocks[previous_block_index] = null;\n\t\t\t\t});\n\n\t\t\t\tcheck_outros();\n\t\t\t\tif_block = if_blocks[current_block_type_index];\n\n\t\t\t\tif (!if_block) {\n\t\t\t\t\tif_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);\n\t\t\t\t\tif_block.c();\n\t\t\t\t} else {\n\t\t\t\t\tif_block.p(ctx, dirty);\n\t\t\t\t}\n\n\t\t\t\ttransition_in(if_block, 1);\n\t\t\t\tif_block.m(if_block_anchor.parentNode, if_block_anchor);\n\t\t\t}\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(if_block);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(if_block);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tif (detaching) {\n\t\t\t\tdetach(if_block_anchor);\n\t\t\t}\n\n\t\t\tif_blocks[current_block_type_index].d(detaching);\n\t\t}\n\t};\n}\n\nfunction create_fragment(ctx) {\n\tlet modal;\n\tlet current;\n\n\tmodal = new Modal({\n\t\t\tprops: {\n\t\t\t\t$$slots: { default: [create_default_slot] },\n\t\t\t\t$$scope: { ctx }\n\t\t\t}\n\t\t});\n\n\treturn {\n\t\tc() {\n\t\t\tcreate_component(modal.$$.fragment);\n\t\t},\n\t\tm(target, anchor) {\n\t\t\tmount_component(modal, target, anchor);\n\t\t\tcurrent = true;\n\t\t},\n\t\tp(ctx, [dirty]) {\n\t\t\tconst modal_changes = {};\n\n\t\t\tif (dirty & /*$$scope, $errorDetails, $prompt, $router, $active*/ 1039) {\n\t\t\t\tmodal_changes.$$scope = { dirty, ctx };\n\t\t\t}\n\n\t\t\tmodal.$set(modal_changes);\n\t\t},\n\t\ti(local) {\n\t\t\tif (current) return;\n\t\t\ttransition_in(modal.$$.fragment, local);\n\t\t\tcurrent = true;\n\t\t},\n\t\to(local) {\n\t\t\ttransition_out(modal.$$.fragment, local);\n\t\t\tcurrent = false;\n\t\t},\n\t\td(detaching) {\n\t\t\tdestroy_component(modal, detaching);\n\t\t}\n\t};\n}\n\nfunction instance($$self, $$props, $$invalidate) {\n\tlet $prompt;\n\tlet $accountCreationPromise;\n\tlet $loginPromise;\n\tlet $active;\n\tlet $errorDetails;\n\tlet $router;\n\tcomponent_subscribe($$self, prompt, $$value => $$invalidate(0, $prompt = $$value));\n\tcomponent_subscribe($$self, accountCreationPromise, $$value => $$invalidate(7, $accountCreationPromise = $$value));\n\tcomponent_subscribe($$self, loginPromise, $$value => $$invalidate(8, $loginPromise = $$value));\n\tcomponent_subscribe($$self, active, $$value => $$invalidate(1, $active = $$value));\n\tcomponent_subscribe($$self, errorDetails, $$value => $$invalidate(2, $errorDetails = $$value));\n\tcomponent_subscribe($$self, router, $$value => $$invalidate(3, $router = $$value));\n\tlet { i18n } = $$props;\n\tsetContext('i18n', i18n);\n\n\tfunction cancel({ detail }) {\n\t\t// Reject any promises that are waiting for a response\n\t\tif ($loginPromise) {\n\t\t\t$loginPromise.reject(detail);\n\t\t}\n\n\t\tif ($prompt) {\n\t\t\t$prompt.reject(detail);\n\t\t\tprompt.reset();\n\t\t}\n\n\t\trouter.back();\n\t}\n\n\tfunction complete({ detail }) {\n\t\t// Reject any promises that are waiting for a response\n\t\tif ($loginPromise) {\n\t\t\t$loginPromise.resolve(detail);\n\t\t}\n\n\t\tif ($accountCreationPromise) {\n\t\t\t$accountCreationPromise.resolve(detail);\n\t\t}\n\n\t\tif ($prompt) {\n\t\t\t$prompt.resolve(detail);\n\t\t\tprompt.reset();\n\t\t\trouter.back();\n\t\t}\n\t}\n\n\tconst unsubscribe = router.subscribe(current => {\n\t\tif (current && current.path === 'login') {\n\t\t\tallowSettings.set(true);\n\t\t} else {\n\t\t\tallowSettings.set(false);\n\t\t}\n\t});\n\n\tonDestroy(unsubscribe);\n\n\t$$self.$$set = $$props => {\n\t\tif ('i18n' in $$props) $$invalidate(6, i18n = $$props.i18n);\n\t};\n\n\treturn [$prompt, $active, $errorDetails, $router, cancel, complete, i18n];\n}\n\nclass App extends SvelteComponent {\n\tconstructor(options) {\n\t\tsuper();\n\t\tinit(this, options, instance, create_fragment, safe_not_equal, { i18n: 6 });\n\t}\n}\n\nvar H$1=Object.defineProperty,q=Object.defineProperties;var B$1=Object.getOwnPropertyDescriptors;var S$1=Object.getOwnPropertySymbols;var A$1=Object.prototype.hasOwnProperty,N$1=Object.prototype.propertyIsEnumerable;var j$1=(o,t,e)=>t in o?H$1(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e,n$1=(o,t)=>{for(var e in t||(t={}))A$1.call(t,e)&&j$1(o,e,t[e]);if(S$1)for(var e of S$1(t))N$1.call(t,e)&&j$1(o,e,t[e]);return o},u$2=(o,t)=>q(o,B$1(t));var T$1=(o,t)=>{var e={};for(var a in o)A$1.call(o,a)&&t.indexOf(a)<0&&(e[a]=o[a]);if(o!=null&&S$1)for(var a of S$1(o))t.indexOf(a)<0&&N$1.call(o,a)&&(e[a]=o[a]);return e};var C$1=[\"error\",\"warn\",\"debug\"],z$1=({logger:o=console,level:t=C$1[1],prefix:e=\"[i18n]: \"})=>C$1.reduce((a,r,s)=>u$2(n$1({},a),{[r]:i=>C$1.indexOf(t)>=s&&o[r](`${e}${i}`)}),{}),d$1=z$1({}),V$1=o=>{d$1=o;};var F$1=l=>{var c=l,{parser:o,key:t,params:e,translations:a,locale:r,fallbackLocale:s}=c,i=T$1(c,[\"parser\",\"key\",\"params\",\"translations\",\"locale\",\"fallbackLocale\"]);if(!t)return d$1.warn(`No translation key provided ('${r}' locale). Skipping translation...`),\"\";if(!r)return d$1.warn(`No locale provided for '${t}' key. Skipping translation...`),\"\";let f=(a[r]||{})[t];return s&&f===void 0&&(f=(a[s]||{})[t]),i.hasOwnProperty(\"fallbackValue\")&&f===void 0?i.fallbackValue:o.parse(f,e,r,t)},h$1=(...o)=>o.length?o.filter(t=>!!t).map(t=>{let e=`${t}`.toLowerCase();try{let[a]=Intl.Collator.supportedLocalesOf(t);if(!a)throw new Error;e=a;}catch(a){d$1.warn(`'${t}' locale is non-standard.`);}return e}):[],x$1=(o,t,e)=>Object.keys(o||{}).reduce((a,r)=>{let s=o[r],i=e?`${e}.${r}`:`${r}`;return t&&Array.isArray(s)?u$2(n$1({},a),{[i]:s.map(l=>x$1(l,t))}):s&&typeof s==\"object\"?n$1(n$1({},a),x$1(s,t,i)):u$2(n$1({},a),{[i]:s})},{}),G$1=o=>o.reduce((t,{key:e,data:a,locale:r})=>{if(!a)return t;let[s]=h$1(r),i=u$2(n$1({},t[s]||{}),{[e]:a});return u$2(n$1({},t),{[s]:i})},{}),E$1=async o=>{try{let t=await Promise.all(o.map(r=>{var s=r,{loader:e}=s,a=T$1(s,[\"loader\"]);return new Promise(async i=>{let l;try{l=await e();}catch(c){d$1.error(`Failed to load translation. Verify your '${a.locale}' > '${a.key}' Loader.`),d$1.error(c);}i(u$2(n$1({loader:e},a),{data:l}));})}));return G$1(t)}catch(t){d$1.error(t);}return {}},W$1=o=>t=>{try{if(typeof t==\"string\")return t===o;if(typeof t==\"object\")return t.test(o)}catch(e){d$1.error(\"Invalid route config!\");}return !1},O$1=(o,t)=>{let e=!0;try{e=Object.keys(o).filter(a=>o[a]!==void 0).every(a=>o[a]===t[a]);}catch(a){}return e};var D$2=1e3*60*60*24,K=class{constructor(t){this.cachedAt=0;this.loadedKeys={};this.currentRoute=writable();this.config=writable();this.isLoading=writable(!1);this.promises=new Set;this.loading={subscribe:this.isLoading.subscribe,toPromise:(t,e)=>{let{fallbackLocale:a}=get_store_value(this.config),r=Array.from(this.promises).filter(s=>{let i=O$1({locale:h$1(t)[0],route:e},s);return a&&(i=i||O$1({locale:h$1(a)[0],route:e},s)),i}).map(({promise:s})=>s);return Promise.all(r)},get:()=>get_store_value(this.isLoading)};this.privateRawTranslations=writable({});this.rawTranslations={subscribe:this.privateRawTranslations.subscribe,get:()=>get_store_value(this.rawTranslations)};this.privateTranslations=writable({});this.translations={subscribe:this.privateTranslations.subscribe,get:()=>get_store_value(this.translations)};this.locales=u$2(n$1({},derived([this.config,this.privateTranslations],([t,e])=>{if(!t)return [];let{loaders:a=[]}=t,r=a.map(({locale:i})=>i),s=Object.keys(e).map(i=>i);return Array.from(new Set([...h$1(...r),...h$1(...s)]))},[])),{get:()=>get_store_value(this.locales)});this.internalLocale=writable();this.loaderTrigger=derived([this.internalLocale,this.currentRoute],([t,e],a)=>{var r,s;t!==void 0&&e!==void 0&&!(t===((r=get_store_value(this.loaderTrigger))==null?void 0:r[0])&&e===((s=get_store_value(this.loaderTrigger))==null?void 0:s[1]))&&(d$1.debug(\"Triggering translation load...\"),a([t,e]));},[]);this.localeHelper=writable();this.locale={subscribe:this.localeHelper.subscribe,forceSet:this.localeHelper.set,set:this.internalLocale.set,update:this.internalLocale.update,get:()=>get_store_value(this.locale)};this.initialized=derived([this.locale,this.currentRoute,this.privateTranslations],([t,e,a],r)=>{get_store_value(this.initialized)||r(t!==void 0&&e!==void 0&&!!Object.keys(a).length);});this.translation=derived([this.privateTranslations,this.locale,this.isLoading],([t,e,a],r)=>{let s=t[e];s&&Object.keys(s).length&&!a&&r(s);},{});this.t=u$2(n$1({},derived([this.config,this.translation],r=>{var[s]=r,i=s,{parser:t,fallbackLocale:e}=i,a=T$1(i,[\"parser\",\"fallbackLocale\"]);return (l,...c)=>F$1(n$1({parser:t,key:l,params:c,translations:this.translations.get(),locale:this.locale.get(),fallbackLocale:e},a.hasOwnProperty(\"fallbackValue\")?{fallbackValue:a.fallbackValue}:{}))})),{get:(t,...e)=>get_store_value(this.t)(t,...e)});this.l=u$2(n$1({},derived([this.config,this.translations],s=>{var[i,...l]=s,c=i,{parser:t,fallbackLocale:e}=c,a=T$1(c,[\"parser\",\"fallbackLocale\"]),[r]=l;return (f,b,...R)=>F$1(n$1({parser:t,key:b,params:R,translations:r,locale:f,fallbackLocale:e},a.hasOwnProperty(\"fallbackValue\")?{fallbackValue:a.fallbackValue}:{}))})),{get:(t,e,...a)=>get_store_value(this.l)(t,e,...a)});this.getLocale=t=>{let{fallbackLocale:e}=get_store_value(this.config)||{},a=t||e;if(!a)return;let r=this.locales.get();return r.find(i=>h$1(a).includes(i))||r.find(i=>h$1(e).includes(i))};this.setLocale=t=>{if(t&&t!==get_store_value(this.internalLocale))return d$1.debug(`Setting '${t}' locale.`),this.internalLocale.set(t),this.loading.toPromise(t,get_store_value(this.currentRoute))};this.setRoute=t=>{if(t!==get_store_value(this.currentRoute)){d$1.debug(`Setting '${t}' route.`),this.currentRoute.set(t);let e=get_store_value(this.internalLocale);return this.loading.toPromise(e,t)}};this.loadConfig=async t=>{await this.configLoader(t);};this.getTranslationProps=async(t=this.locale.get(),e=get_store_value(this.currentRoute))=>{let a=get_store_value(this.config);if(!a||!t)return [];let r=this.translations.get(),{loaders:s,fallbackLocale:i=\"\",cache:l=D$2}=a||{},c=Number.isNaN(+l)?D$2:+l;this.cachedAt?Date.now()>c+this.cachedAt&&(d$1.debug(\"Refreshing cache.\"),this.loadedKeys={},this.cachedAt=0):(d$1.debug(\"Setting cache timestamp.\"),this.cachedAt=Date.now());let[f,b]=h$1(t,i),R=r[f],I=r[b],k=(s||[]).map($=>{var L=$,{locale:p}=L,y=T$1(L,[\"locale\"]);return u$2(n$1({},y),{locale:h$1(p)[0]})}).filter(({routes:p})=>!p||(p||[]).some(W$1(e))).filter(({key:p,locale:y})=>y===f&&(!R||!(this.loadedKeys[f]||[]).includes(p))||i&&y===b&&(!I||!(this.loadedKeys[b]||[]).includes(p)));if(k.length){this.isLoading.set(!0),d$1.debug(\"Fetching translations...\");let p=await E$1(k);this.isLoading.set(!1);let y=Object.keys(p).reduce((L,P)=>u$2(n$1({},L),{[P]:Object.keys(p[P])}),{}),$=k.filter(({key:L,locale:P})=>(y[P]||[]).some(w=>`${w}`.startsWith(L))).reduce((L,{key:P,locale:w})=>u$2(n$1({},L),{[w]:[...L[w]||[],P]}),{});return [p,$]}return []};this.addTranslations=(t,e)=>{if(!t)return;let a=get_store_value(this.config),{preprocess:r}=a||{};d$1.debug(\"Adding translations...\");let s=Object.keys(t||{});this.privateRawTranslations.update(i=>s.reduce((l,c)=>u$2(n$1({},l),{[c]:n$1(n$1({},l[c]||{}),t[c])}),i)),this.privateTranslations.update(i=>s.reduce((l,c)=>{let f=!0,b=t[c];return typeof r==\"function\"&&(b=r(b)),(typeof r==\"function\"||r===\"none\")&&(f=!1),u$2(n$1({},l),{[c]:n$1(n$1({},l[c]||{}),f?x$1(b,r===\"preserveArrays\"):b)})},i)),s.forEach(i=>{let l=Object.keys(t[i]).map(c=>`${c}`.split(\".\")[0]);e&&(l=e[i]),this.loadedKeys[i]=Array.from(new Set([...this.loadedKeys[i]||[],...l||[]]));});};this.loader=async([t,e])=>{let a=this.getLocale(t)||void 0;d$1.debug(`Adding loader promise for '${a}' locale and '${e}' route.`);let r=(async()=>{let s=await this.getTranslationProps(a,e);s.length&&this.addTranslations(...s);})();this.promises.add({locale:a,route:e,promise:r}),r.then(()=>{a&&this.locale.get()!==a&&this.locale.forceSet(a);});};this.loadTranslations=(t,e=get_store_value(this.currentRoute)||\"\")=>{let a=this.getLocale(t);if(a)return this.setRoute(e),this.setLocale(a),this.loading.toPromise(a,e)};this.loaderTrigger.subscribe(this.loader),this.isLoading.subscribe(async e=>{e&&this.promises.size&&(await this.loading.toPromise(),this.promises.clear(),d$1.debug(\"Loader promises have been purged.\"));}),t&&this.loadConfig(t);}async configLoader(t){if(!t)return d$1.error(\"No config provided!\");let l=t,{initLocale:e,fallbackLocale:a,translations:r,log:s}=l,i=T$1(l,[\"initLocale\",\"fallbackLocale\",\"translations\",\"log\"]);s&&V$1(z$1(s)),[e]=h$1(e),[a]=h$1(a),d$1.debug(\"Setting config.\"),this.config.set(n$1({initLocale:e,fallbackLocale:a,translations:r},i)),r&&this.addTranslations(r),e&&await this.loadTranslations(e);}};\n\nvar R=Object.defineProperty,A=Object.defineProperties;var E=Object.getOwnPropertyDescriptors;var x=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var p$1=(t,e,r)=>e in t?R(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,u$1=(t,e)=>{for(var r in e||(e={}))C.call(e,r)&&p$1(t,r,e[r]);if(x)for(var r of x(e))O.call(e,r)&&p$1(t,r,e[r]);return t},T=(t,e)=>A(t,E(e));var c=(t,e)=>{var r={};for(var i in t)C.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&x)for(var i of x(t))e.indexOf(i)<0&&O.call(t,i)&&(r[i]=t[i]);return r};var j=(t,e)=>{for(var r in e)R(t,r,{get:e[r],enumerable:!0});};var h={};j(h,{ago:()=>Q,currency:()=>W,date:()=>G,eq:()=>$,gt:()=>L,gte:()=>z,lt:()=>V,lte:()=>v,ne:()=>S,number:()=>B});var g=(t,e)=>{let{modifierDefaults:r}=e||{},{[t]:i}=r||{};return i||{}};var $=({value:t,options:e=[],defaultValue:r=\"\"})=>(e.find(({key:i})=>`${i}`.toLowerCase()===`${t}`.toLowerCase())||{}).value||r,S=({value:t,options:e=[],defaultValue:r=\"\"})=>(e.find(({key:i})=>`${i}`.toLowerCase()!==`${t}`.toLowerCase())||{}).value||r,V=({value:t,options:e=[],defaultValue:r=\"\"})=>(e.sort((o,n)=>+o.key-+n.key).find(({key:o})=>+t<+o)||{}).value||r,L=({value:t,options:e=[],defaultValue:r=\"\"})=>(e.sort((o,n)=>+n.key-+o.key).find(({key:o})=>+t>+o)||{}).value||r,v=({value:t,options:e=[],defaultValue:r=\"\"})=>$({value:t,options:e,defaultValue:V({value:t,options:e,defaultValue:r})}),z=({value:t,options:e=[],defaultValue:r=\"\"})=>$({value:t,options:e,defaultValue:L({value:t,options:e,defaultValue:r})}),B=({value:t,props:e,defaultValue:r=\"\",locale:i=\"\",parserOptions:o})=>{if(!i)return \"\";let s=g(\"number\",o),{maximumFractionDigits:n}=s,m=c(s,[\"maximumFractionDigits\"]),d=(e==null?void 0:e.number)||{},{maximumFractionDigits:f=n||2}=d,a=c(d,[\"maximumFractionDigits\"]);return new Intl.NumberFormat(i,u$1(T(u$1({},m),{maximumFractionDigits:f}),a)).format(+t||+r)},G=({value:t,props:e,defaultValue:r=\"\",locale:i=\"\",parserOptions:o})=>{if(!i)return \"\";let n=c(g(\"date\",o),[]),m=c((e==null?void 0:e.date)||{},[]);return new Intl.DateTimeFormat(i,u$1(u$1({},n),m)).format(+t||+r)},D$1=[{key:\"second\",multiplier:1e3},{key:\"minute\",multiplier:60},{key:\"hour\",multiplier:60},{key:\"day\",multiplier:24},{key:\"week\",multiplier:7},{key:\"month\",multiplier:13/3},{key:\"year\",multiplier:12}],N=(t=\"\",e=\"\")=>new RegExp(`^${t}s?$`).test(e),H=t=>D$1.indexOf(D$1.find(({key:e})=>N(e,t))),J=(t,e)=>D$1.reduce(([r,i],{key:o,multiplier:n},m)=>{if(N(i,e))return [r,i];if(!i||m===H(i)+1){let f=Math.round(r/n);if(!i||Math.abs(f)>=1||e!==\"auto\")return [f,o]}return [r,i]},[t,\"\"]),Q=({value:t,defaultValue:e=\"\",locale:r=\"\",props:i,parserOptions:o})=>{if(!r)return \"\";let k=g(\"ago\",o),{format:n,numeric:m}=k,f=c(k,[\"format\",\"numeric\"]),y=(i==null?void 0:i.ago)||{},{format:a=n||\"auto\",numeric:s=m||\"auto\"}=y,d=c(y,[\"format\",\"numeric\"]),M=+t||+e,l=J(M,a);return new Intl.RelativeTimeFormat(r,u$1(T(u$1({},f),{numeric:s}),d)).format(...l)},W=({value:t,defaultValue:e=\"\",locale:r=\"\",props:i,parserOptions:o})=>{if(!r)return \"\";let M=g(\"currency\",o),{ratio:n,currency:m}=M,f=c(M,[\"ratio\",\"currency\"]),l=(i==null?void 0:i.currency)||{},{ratio:a=n||1,currency:s=m}=l,d=c(l,[\"ratio\",\"currency\"]);return new Intl.NumberFormat(r,u$1(T(u$1({},f),{style:\"currency\",currency:s}),d)).format(a*(t||e))};var X=t=>typeof t==\"string\"&&/{{(?:(?!{{|}}).)+}}/.test(t),F=t=>typeof t==\"string\"?t.replace(/\\\\(?=:|;|{|})/g,\"\"):t,Y=({value:t,props:e,payload:r,parserOptions:i,locale:o})=>`${t}`.replace(/{{\\s*(?:(?!{{|}}).)+\\s*}}/g,n=>{let m=F(`${n.match(/(?!{|\\s).+?(?!\\\\[:;]).(?=\\s*(?:[:;]|}}$))/)}`),f=r==null?void 0:r[m],[,a=\"\"]=n.match(/.+?(?!\\\\;).;\\s*default\\s*:\\s*([^\\s:;].+?(?:\\\\[:;]|[^;}])*)(?=\\s*(?:;|}}$))/i)||[];a=a||(r==null?void 0:r.default)||\"\";let[,s=\"\"]=n.match(/{{\\s*(?:[^;]|(?:\\\\;))+\\s*(?:(?!\\\\:).[:])\\s*(?!\\s)((?:\\\\;|[^;])+?)(?=\\s*(?:[;]|}}$))/i)||[];if(f===void 0&&s!==\"ne\")return a;let d=!!s,{customModifiers:M}=i||{},l=u$1(u$1({},h),M||{});s=Object.keys(l).includes(s)?s:\"eq\";let k=l[s],y=(n.match(/[^\\s:;{](?:[^;]|\\\\[;])+[^:;}]/gi)||[]).reduce((b,I,q)=>{if(q>0){let P=F(`${I.match(/(?:(?:\\\\:)|[^:])+/)}`.trim()),w=`${I.match(/(?:(?:\\\\:)|[^:])+$/)}`.trimStart();if(P&&P!==\"default\"&&w)return [...b,{key:P,value:w}]}return b},[]);return !d&&!y.length?f:k({value:f,options:y,props:e,defaultValue:a,locale:o,parserOptions:i})}),U=({value:t,props:e,payload:r,parserOptions:i,locale:o})=>{if(X(t)){let n=Y({value:t,payload:r,props:e,parserOptions:i,locale:o});return U({value:n,payload:r,props:e,parserOptions:i,locale:o})}else return F(t)},Z=t=>({parse:(e,[r,i],o,n)=>(r!=null&&r.default&&e===void 0&&(e=r.default),e===void 0&&(e=n),U({value:e,payload:r,props:i,parserOptions:t,locale:o}))}),rt=Z;\n\nvar n=Object.defineProperty,M=Object.defineProperties;var u=Object.getOwnPropertyDescriptors;var s=Object.getOwnPropertySymbols;var f=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var i=(r,o,e)=>o in r?n(r,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[o]=e,p=(r,o)=>{for(var e in o||(o={}))f.call(o,e)&&i(r,e,o[e]);if(s)for(var e of s(o))P.call(o,e)&&i(r,e,o[e]);return r},d=(r,o)=>M(r,u(o));var l=(r,o)=>{var e={};for(var a in r)f.call(r,a)&&o.indexOf(a)<0&&(e[a]=r[a]);if(r!=null&&s)for(var a of s(r))o.indexOf(a)<0&&P.call(r,a)&&(e[a]=r[a]);return e};var m=e=>{var a=e,{parserOptions:r={}}=a,o=l(a,[\"parserOptions\"]);return d(p({},o),{parser:rt(r)})},t=class extends K{constructor(e){super(e&&m(e));this.loadConfig=e=>super.configLoader(m(e));}},D=t;\n\nvar accept$4 = \"Accept\";\nvar cancel$4 = \"Cancel\";\nvar close$4 = \"Close\";\nvar decline$4 = \"Decline\";\nvar error$4 = {\n\ttitle: \"Error\",\n\tsubtitle: \"An Error happened.\"\n};\nvar loading$4 = \"Loading…\";\nvar login$4 = {\n\tcomplete: \"Awaiting response from your wallet.\",\n\tenter: {\n\t\taccount: \"Enter account name\",\n\t\tlookup: \"Lookup Account\",\n\t\tnot_found: \"Unable to find account\"\n\t},\n\tselect: {\n\t\taccount: \"Select an available account\",\n\t\tblockchain: \"Select which blockchain to login with\",\n\t\twallet: \"Connect your wallet to login\",\n\t\tno_accounts: \"No accounts found\",\n\t\tno_match: \"No accounts found matching {{publicKey}}\"\n\t},\n\ttitle: \"Login\",\n\t\"title-app\": \"{{appName}}\"\n};\nvar transact$4 = {\n\ttitle: \"Transact\",\n\tsubtitle: \" \",\n\tprocessing: \"Processing transaction…\",\n\tsigning: \"Signing transaction\",\n\tsigned: \"Transaction signed\",\n\tbroadcasting: \"Broadcasting transaction\",\n\tbroadcasted: \"Transaction sent\"\n};\nvar settings$4 = {\n\ttitle: \"Settings\",\n\tlanguage: {\n\t\ttitle: \"Language\"\n\t},\n\ttheme: {\n\t\ttitle: \"Theme\",\n\t\tautomatic: \"Automatic\",\n\t\tlight: \"Light\",\n\t\tdark: \"Dark\"\n\t},\n\tanimations: {\n\t\ttitle: \"Animations\",\n\t\tenabled: \"Enabled\",\n\t\tdisabled: \"Disabled\"\n\t},\n\tgithub: \"Report an issue on Github\",\n\tabout: {\n\t\ttitle: \"About\",\n\t\tversion: \"Version {{version}}\",\n\t\tauthor: \"An open source SDK for Antelope-based blockchains created by Greymass and made possible through funding by the Antelope Coalition (EOS, Telos, UX, and WAX).\",\n\t\tlink: \"Read more about Wharf\"\n\t}\n};\nvar en = {\n\taccept: accept$4,\n\tcancel: cancel$4,\n\tclose: close$4,\n\tdecline: decline$4,\n\terror: error$4,\n\tloading: loading$4,\n\tlogin: login$4,\n\ttransact: transact$4,\n\tsettings: settings$4\n};\n\nvar accept$3 = \"받아들이다\";\nvar cancel$3 = \"취소\";\nvar close$3 = \"닫다\";\nvar decline$3 = \"거절하다\";\nvar error$3 = {\n\ttitle: \"오류\",\n\tsubtitle: \"오류가 발생했습니다.\"\n};\nvar loading$3 = \"로드...\";\nvar login$3 = {\n\tcomplete: \"\",\n\tenter: {\n\t\taccount: \"Enter account name\",\n\t\tlookup: \"Lookup Account\",\n\t\tnot_found: \"Unable to find account\"\n\t},\n\tselect: {\n\t\taccount: \"계정 선택\",\n\t\tblockchain: \"블록체인 선택\",\n\t\twallet: \"지갑 선택\",\n\t\tno_match: \"{{publicKey}}와 일치하는 계정을 찾을 수 없습니다.\"\n\t},\n\ttitle: \"로그인\",\n\t\"title-app\": \"{{appName}}에 로그인\"\n};\nvar transact$3 = {\n\ttitle: \"거래하다\",\n\tsubtitle: \" \",\n\tprocessing: \"Performing transaction...\",\n\tsigning: \"서명 트랜잭션\",\n\tsigned: \"트랜잭션 서명\",\n\tbroadcasting: \"방송 거래\",\n\tbroadcasted: \"거래 방송\"\n};\nvar settings$3 = {\n\ttitle: \"설정\",\n\tlanguage: {\n\t\ttitle: \"언어\"\n\t},\n\ttheme: {\n\t\ttitle: \"테마\",\n\t\tautomatic: \"자동\",\n\t\tlight: \"밝은 테마\",\n\t\tdark: \"어두운 테마\"\n\t},\n\tanimations: {\n\t\ttitle: \"애니메이션\",\n\t\tenabled: \"활성화\",\n\t\tdisabled: \"비활성화\"\n\t},\n\tgithub: \"Github에서 문제 보고\",\n\tabout: {\n\t\ttitle: \"정보\",\n\t\tversion: \"{{version}} 버전\",\n\t\tauthor: \"\",\n\t\tlink: \"부두에 대해 자세히 알아보기\"\n\t}\n};\nvar ko = {\n\taccept: accept$3,\n\tcancel: cancel$3,\n\tclose: close$3,\n\tdecline: decline$3,\n\terror: error$3,\n\tloading: loading$3,\n\tlogin: login$3,\n\ttransact: transact$3,\n\tsettings: settings$3\n};\n\nvar accept$2 = \"接受\";\nvar cancel$2 = \"取消\";\nvar close$2 = \"关闭\";\nvar decline$2 = \"下降\";\nvar error$2 = {\n\ttitle: \"错误\",\n\tsubtitle: \"发生错误。\"\n};\nvar loading$2 = \"加载中。。。\";\nvar login$2 = {\n\tcomplete: \"\",\n\tenter: {\n\t\taccount: \"Enter account name\",\n\t\tlookup: \"Lookup Account\",\n\t\tnot_found: \"Unable to find account\"\n\t},\n\tselect: {\n\t\taccount: \"选择一个帐户\",\n\t\tblockchain: \"选择一个区块链\",\n\t\twallet: \"选择一个钱包\",\n\t\tno_match: \"未找到与 {{publicKey}} 匹配的帐户。\"\n\t},\n\ttitle: \"登陆\",\n\t\"title-app\": \"登陆到 {{appName}}\"\n};\nvar transact$2 = {\n\ttitle: \"办理\",\n\tsubtitle: \" \",\n\tprocessing: \"Performing transaction...\",\n\tsigning: \"签署交易\",\n\tsigned: \"交易已签署\",\n\tbroadcasting: \"广播交易\",\n\tbroadcasted: \"交易广播\"\n};\nvar settings$2 = {\n\ttitle: \"设置\",\n\tlanguage: {\n\t\ttitle: \"语言\"\n\t},\n\ttheme: {\n\t\ttitle: \"主题\",\n\t\tautomatic: \"自动\",\n\t\tlight: \"浅色\",\n\t\tdark: \"深色\"\n\t},\n\tanimations: {\n\t\ttitle: \"动画\",\n\t\tenabled: \"启用\",\n\t\tdisabled: \"禁用\"\n\t},\n\tgithub: \"在 Github 上报告问题\",\n\tabout: {\n\t\ttitle: \"关于\",\n\t\tversion: \"版本 {{version}}\",\n\t\tauthor: \"\",\n\t\tlink: \"阅读更多关于码头的信息\"\n\t}\n};\nvar zh_hans = {\n\taccept: accept$2,\n\tcancel: cancel$2,\n\tclose: close$2,\n\tdecline: decline$2,\n\terror: error$2,\n\tloading: loading$2,\n\tlogin: login$2,\n\ttransact: transact$2,\n\tsettings: settings$2\n};\n\nvar accept$1 = \"接受\";\nvar cancel$1 = \"取消\";\nvar close$1 = \"關閉\";\nvar decline$1 = \"下降\";\nvar error$1 = {\n\ttitle: \"錯誤\",\n\tsubtitle: \"發生錯誤。\"\n};\nvar loading$1 = \"裝載。。。\";\nvar login$1 = {\n\tcomplete: \"\",\n\tenter: {\n\t\taccount: \"Enter account name\",\n\t\tlookup: \"Lookup Account\",\n\t\tnot_found: \"Unable to find account\"\n\t},\n\tselect: {\n\t\taccount: \"選擇一個帳戶\",\n\t\tblockchain: \"選擇一個區塊鏈\",\n\t\twallet: \"選擇一個錢包\",\n\t\tno_match: \"未找到與 {{publicKey}} 匹配的帳戶。\"\n\t},\n\ttitle: \"登錄\",\n\t\"title-app\": \"登錄到 {{appName}}\"\n};\nvar transact$1 = {\n\ttitle: \"辦理\",\n\tsubtitle: \"\",\n\tprocessing: \"Performing transaction...\",\n\tsigning: \"簽署交易\",\n\tsigned: \"交易已簽署\",\n\tbroadcasting: \"廣播交易\",\n\tbroadcasted: \"交易廣播\"\n};\nvar settings$1 = {\n\ttitle: \"設置\",\n\tlanguage: {\n\t\ttitle: \"語言\"\n\t},\n\ttheme: {\n\t\ttitle: \"主題\",\n\t\tautomatic: \"自動\",\n\t\tlight: \"光\",\n\t\tdark: \"暗\"\n\t},\n\tanimations: {\n\t\ttitle: \"動畫\",\n\t\tenabled: \"啟用\",\n\t\tdisabled: \"殘\"\n\t},\n\tgithub: \"在 Github 上報告問題\",\n\tabout: {\n\t\ttitle: \"關於\",\n\t\tversion: \"版本 {{version}}\",\n\t\tauthor: \"\",\n\t\tlink: \"閱讀更多關於碼頭的資訊\"\n\t}\n};\nvar zh_hant = {\n\taccept: accept$1,\n\tcancel: cancel$1,\n\tclose: close$1,\n\tdecline: decline$1,\n\terror: error$1,\n\tloading: loading$1,\n\tlogin: login$1,\n\ttransact: transact$1,\n\tsettings: settings$1\n};\n\nvar accept = \"Kabul Et\";\nvar cancel = \"İptal\";\nvar close = \"Kapat\";\nvar decline = \"Reddet\";\nvar error = {\n\ttitle: \"Hata\",\n\tsubtitle: \"Bir Hata meydana geldi.\"\n};\nvar loading = \"Yükleniyor...\";\nvar login = {\n\tcomplete: \"Cüzdanınızdan yanıt bekleniyor.\",\n\tenter: {\n\t\taccount: \"Hesap adını girin\",\n\t\tlookup: \"Hesap Ara\",\n\t\tnot_found: \"Hesap bulunamadı\"\n\t},\n\tselect: {\n\t\taccount: \"Mevcut bir hesap seçin\",\n\t\tblockchain: \"Hangi blockchain ile giriş yapılacağını seçin\",\n\t\twallet: \"Cüzdanınızı bağlayarak giriş yapın\",\n\t\tno_match: \"{{publicKey}} ile eşleşen hesap bulunamadı\"\n\t},\n\ttitle: \"Giriş\",\n\t\"title-app\": \"{{appName}}\"\n};\nvar transact = {\n\ttitle: \"İşlem\",\n\tsubtitle: \" \",\n\tprocessing: \"İşlem yapılıyor...\",\n\tsigning: \"İşlem imzalanıyor\",\n\tsigned: \"İşlem imzalandı\",\n\tbroadcasting: \"İşlem yayınlanıyor\",\n\tbroadcasted: \"İşlem gönderildi\"\n};\nvar settings = {\n\ttitle: \"Ayarlar\",\n\tlanguage: {\n\t\ttitle: \"Dil\"\n\t},\n\ttheme: {\n\t\ttitle: \"Tema\",\n\t\tautomatic: \"Otomatik\",\n\t\tlight: \"Açık\",\n\t\tdark: \"Koyu\"\n\t},\n\tanimations: {\n\t\ttitle: \"Animasyonlar\",\n\t\tenabled: \"Etkin\",\n\t\tdisabled: \"Devre Dışı\"\n\t},\n\tgithub: \"Github üzerinde bir sorun bildir\",\n\tabout: {\n\t\ttitle: \"Hakkında\",\n\t\tversion: \"Sürüm {{version}}\",\n\t\tauthor: \"Greymass tarafından oluşturulan ve Antelope tabanlı blockchain'ler için bir açık kaynak SDK olan Wharf'ı, Antelope Koalisyonu (EOS, Telos, UX ve WAX) tarafından finanse edilerek mümkün kılınmıştır.\",\n\t\tlink: \"Wharf hakkında daha fazla bilgi edinin\"\n\t}\n};\nvar tr = {\n\taccept: accept,\n\tcancel: cancel,\n\tclose: close,\n\tdecline: decline,\n\terror: error,\n\tloading: loading,\n\tlogin: login,\n\ttransact: transact,\n\tsettings: settings\n};\n\nconst translations = {\n en: { ...lang, ...en },\n ko: { ...lang, ...ko },\n zh: { ...lang, ...zh_hans },\n 'zh-Hans': { ...lang, ...zh_hans },\n 'zh-Hant': { ...lang, ...zh_hant },\n tr: { ...lang, ...tr },\n};\nconst config = {\n initLocale: 'en',\n translations,\n};\nconst makeLocalization = (options = {}) => {\n const params = {\n ...config,\n ...options,\n };\n return new D(params);\n};\nnew D(config);\n\nconst defaultWebRendererOptions = {\n id: 'wharfkit-web-ui',\n minimal: false,\n};\nconst getNavigatorLanguage = () => (navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language || 'en').split('-')[0];\nclass WebRenderer extends AbstractUserInterface {\n constructor(options = defaultWebRendererOptions) {\n super();\n this.elementId = 'wharfkit-web-ui';\n this.initialized = false;\n this.logging = false;\n this.minimal = false;\n // Add every cancelable promise to the list of cancelable promises\n this.addCancelablePromise = (promise) => cancelablePromises.update((current) => [...current, promise]);\n this.options = options;\n if (typeof document !== 'undefined') {\n this.initialize();\n }\n }\n initialize() {\n // Prevent multiple initializations\n if (this.initialized) {\n return;\n }\n const { options } = this;\n // Create the dialog element and its shadow root\n this.element = document.createElement('div');\n this.elementId = options.id || defaultWebRendererOptions.id;\n this.element.id = this.elementId;\n this.shadow = this.element.attachShadow({ mode: 'closed' });\n // Load translations for the current locale\n this.i18n = makeLocalization();\n let lang = getNavigatorLanguage();\n this.minimal = options.minimal || false;\n const settingsLanguage = get_store_value(settings$5).language;\n if (settingsLanguage) {\n lang = settingsLanguage;\n }\n if (options.logging !== undefined) {\n this.logging = options.logging;\n }\n this.log(`Setting language to ${lang}`);\n settings$5.update((current) => ({ ...current, language: lang }));\n this.i18n.loadTranslations(lang);\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // Document is ready, append element\n this.appendDialogElement();\n }\n else {\n // Add listener to append to body\n document.addEventListener('DOMContentLoaded', () => this.appendDialogElement());\n }\n this.initialized = true;\n }\n appendDialogElement() {\n const existing = document.getElementById(this.elementId);\n if (!this.element || !this.shadow) {\n throw new Error('The WebRenderer is not initialized. Call the initialize method first.');\n }\n if (!existing) {\n document.body.append(this.element);\n document.removeEventListener('DOMContentLoaded', () => this.appendDialogElement());\n new App({\n target: this.shadow,\n props: {\n i18n: this.i18n,\n },\n });\n }\n }\n log(...args) {\n if (this.logging) {\n // eslint-disable-next-line no-console\n console.log('WebRenderer, LOG:', ...args);\n }\n }\n async login(context) {\n this.log('login', context);\n prompt.set(undefined);\n router.push('login');\n const promise = cancelable(new Promise((resolve, reject) => loginPromise.set({\n reject,\n resolve,\n })));\n this.addCancelablePromise(promise.cancel);\n loginContext.set(context);\n await promise;\n if (this.minimal) {\n active.set(false);\n }\n return promise;\n }\n async onError(error) {\n // Determine if this was a silent/cancelable error\n const isCancelable = error instanceof Canceled;\n const isSilent = isCancelable && error.silent === true;\n this.log('onError', {\n isCancelable,\n isSilent,\n error,\n });\n // If it was, don't display the error\n if (isSilent) {\n return;\n }\n if (this.minimal) {\n active.set(false);\n }\n else {\n // Make sure the dialog is active\n active.set(true);\n // Set the error state\n errorDetails.set(String(error));\n // Push the new path to the router\n router.push('error');\n }\n }\n async onAccountCreate(context) {\n this.log('onAccountCreate', context);\n // Make sure the dialog is active\n active.set(true);\n // Push the new path to the router\n router.push('create-account');\n const promise = cancelable(new Promise((resolve, reject) => accountCreationPromise.set({\n reject,\n resolve,\n })));\n this.addCancelablePromise(promise.cancel);\n accountCreationContext.set(context);\n return promise;\n }\n async onAccountCreateComplete() {\n this.log('onAccountCreateComplete');\n // Close the dialog once the login completes\n active.set(false);\n // Reset all data in the state\n resetState();\n }\n async onLogin() {\n this.log('onLogin');\n // Make sure the dialog is active\n active.set(true);\n // Set the title/subtitle to match the login state\n props.update((current) => ({\n ...current,\n title: this.i18n.t.get('login.title', { default: 'Login' }),\n subtitle: '',\n }));\n // Push the new path to the router\n router.push('login');\n }\n async onLoginComplete() {\n this.log('onLoginResult');\n // Close the dialog once the login completes\n active.set(false);\n // Reset all data in the state\n resetState();\n }\n async onTransact() {\n this.log('onTransact');\n // Make sure the dialog is active\n if (!this.minimal) {\n active.set(true);\n }\n // Set the title/subtitle to match the transact state\n props.update((c) => ({\n ...c,\n title: this.i18n.t.get('transact.title', { default: 'Transact' }),\n subtitle: '',\n }));\n // Push the new path to the router\n router.push('transact');\n }\n async onTransactComplete() {\n this.log('onTransactResult');\n // Reset all data in the state\n resetState();\n // Close the dialog once the transact completes\n active.set(false);\n }\n async onSign() {\n this.log('onSign');\n }\n async onSignComplete() {\n this.log('onSignComplete');\n }\n async onBroadcast() {\n this.log('onBroadcast');\n }\n async onBroadcastComplete() {\n this.log('onBroadcastComplete');\n }\n prompt(args) {\n this.log('prompt', args);\n // Make sure the dialog is active\n if (!this.minimal || (this.minimal && !args.optional)) {\n active.set(true);\n // Push the new path to the router\n router.push('prompt');\n }\n // Setup the promise to return to the session kit\n const promise = cancelable(new Promise((resolve, reject) => {\n prompt.set({\n args,\n resolve,\n reject,\n });\n }), (canceled) => {\n throw canceled;\n });\n // Save a copy of the promise to reference if canceled\n this.addCancelablePromise(promise.cancel);\n // Return the promise to the session kit\n return promise;\n }\n status(message) {\n // Make sure the dialog is active\n if (!this.minimal) {\n active.set(true);\n }\n // Update the subtitle to match the message\n props.update((current) => ({\n ...current,\n subtitle: message,\n }));\n }\n // Map the UserInterface translate call to our i18n instance\n translate(key, options, namespace) {\n if (namespace) {\n return this.i18n.t.get(`${namespace}.${key}`, options);\n }\n return this.i18n.t.get(key, options);\n }\n addTranslations(translations) {\n this.i18n.addTranslations(translations);\n }\n}\nWebRenderer.version = '1.4.0-rc6'; // replaced by build script\n\nexport { WebRenderer, WebRenderer as default, defaultWebRendererOptions };\n//# sourceMappingURL=web-renderer.m.js.map\n","/**\n * Anchor Link Browser Transport v3.6.1\n * https://github.com/greymass/anchor-link-browser-transport\n *\n * @license\n * Copyright (c) 2020 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport { Signature, SigningRequest, PlaceholderName, Link, SessionError, Base64u, isInstanceOf, APIError } from 'anchor-link';\n\nvar styleText = `\n/* Anchor Link */\n\n.%prefix% * {\n box-sizing: border-box;\n line-height: 1;\n font-variant-numeric: tabular-nums;\n}\n\n.%prefix% {\n font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n Arial, sans-serif;\n font-size: 13px;\n background: rgba(0, 0, 0, 0.65);\n position: fixed;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n z-index: 2147483647;\n display: none;\n align-items: center;\n justify-content: center;\n}\n\n.%prefix%-active {\n display: flex;\n}\n\n.%prefix%-inner {\n background: #EFF1F7;\n margin: 20px;\n padding-top: 50px;\n border-radius: 20px;\n box-shadow: 0px 4px 100px rgba(0, 0, 0, .5);\n width: 340px;\n position: relative;\n}\n\n.%prefix%-close {\n display: block;\n position: absolute;\n top: 11px;\n right: 16px;\n width: 28px;\n height: 28px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.57 12.1a.96.96 0 000 1.34c.37.36 1 .36 1.34 0L7 8.37l5.09 5.09c.36.35.97.35 1.34-.01a.96.96 0 000-1.34L8.34 7.01l5.08-5.08a.95.95 0 000-1.33.97.97 0 00-1.34-.01L6.99 5.68 1.91.59a.96.96 0 00-1.33 0 .97.97 0 00-.01 1.34l5.09 5.08-5.1 5.1z' fill='%23007AFF'/%3E%3C/svg%3E\");\n background-size: 14px;\n background-repeat: no-repeat;\n background-position: 50% 7px;\n border-radius: 100%;\n cursor: pointer;\n}\n\n.%prefix%-close:hover {\n background-color: white;\n}\n\n.%prefix%-version {\n position: absolute;\n top: 19px;\n left: 20px;\n cursor: help;\n color: #B8C0DA;\n opacity: 0.1;\n}\n\n.%prefix%-version:hover {\n opacity: 1;\n}\n\n.%prefix%-logo {\n width: 70px;\n height: 70px;\n margin: 0 auto;\n margin-top: -56px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M18.81 9.19h33.25V59.5H18.81z'/%3E%3Cpath d='M38.45 28.88h-6.9L35 21.77l3.45 7.1z' fill='%233650A2'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M35 70a35 35 0 100-70 35 35 0 000 70zm2.36-55.4a2.62 2.62 0 00-4.72 0L21.9 36.75h5.84l1.7-3.5h11.13l1.7 3.5h5.83L37.36 14.6zM48.13 44.2h-5.26a7.76 7.76 0 01-5.24 7v-10.5a2.62 2.62 0 10-5.25 0v10.5a7.76 7.76 0 01-5.25-7h-5.25c.16 7.06 6 12.69 13.12 12.69 7.12 0 12.97-5.63 13.13-12.7z' fill='%233650A2'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.loading {\n border-radius: 100%;\n background-color: #3650A2;\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0.5 0.5 45 45' xmlns='http://www.w3.org/2000/svg' stroke='%23fff'%3E%3Cg fill='none' fill-rule='evenodd' transform='translate(1 1)' stroke-width='2'%3E%3Ccircle cx='22' cy='22' r='6' stroke-opacity='0'%3E%3Canimate attributeName='r' begin='1.5s' dur='3s' values='6;22' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-opacity' begin='1.5s' dur='3s' values='1;0' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-width' begin='1.5s' dur='3s' values='2;0' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='6' stroke-opacity='0'%3E%3Canimate attributeName='r' begin='3s' dur='3s' values='6;22' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-opacity' begin='3s' dur='3s' values='1;0' calcMode='linear' repeatCount='indefinite' /%3E%3Canimate attributeName='stroke-width' begin='3s' dur='3s' values='2;0' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3Ccircle cx='22' cy='22' r='8'%3E%3Canimate attributeName='r' begin='0s' dur='1.5s' values='6;1;2;3;4;5;6' calcMode='linear' repeatCount='indefinite' /%3E%3C/circle%3E%3C/g%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.error {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70' fill='none'%3E%3Ccircle cx='35' cy='35' r='35' fill='%23fc3d39'/%3E%3Cpath fill-rule='evenodd' d='M32.88 17.614c.715-.403 1.522-.614 2.343-.614s1.628.212 2.343.614 1.314.983 1.74 1.685l.005.008 13.483 22.508.013.022c.417.722.638 1.541.64 2.375s-.214 1.654-.627 2.378-1.008 1.328-1.727 1.751-1.535.65-2.369.659h-.017-26.983c-.834-.009-1.651-.237-2.369-.659s-1.314-1.027-1.727-1.751-.629-1.544-.627-2.378.223-1.653.64-2.375l.013-.022L31.14 19.299c.426-.702 1.025-1.282 1.74-1.685zm2.343 2.569a1.59 1.59 0 0 0-1.359.763L20.392 43.438a1.59 1.59 0 0 0-.208.782c-.001.278.071.551.209.793a1.59 1.59 0 0 0 1.358.803h26.945a1.59 1.59 0 0 0 1.358-.803 1.59 1.59 0 0 0 .209-.793c-.001-.274-.073-.544-.208-.782L36.584 20.95c-.144-.236-.343-.428-.58-.561a1.59 1.59 0 0 0-.781-.205zm0 6.531a1.59 1.59 0 0 1 1.592 1.592v6.367a1.59 1.59 0 1 1-3.184 0v-6.367a1.59 1.59 0 0 1 1.592-1.592zm-1.592 14.326a1.59 1.59 0 0 1 1.592-1.592h.016a1.59 1.59 0 1 1 0 3.184h-.016a1.59 1.59 0 0 1-1.592-1.592z' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.warning {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='70' height='70' fill='none' %3E%3Ccircle cx='35' cy='35' r='35' fill='%23f8b826'/%3E%3Cpath d='M35 20c-8.284 0-15 6.716-15 15s6.716 15 15 15 15-6.716 15-15-6.716-15-15-15zM16.667 35c0-10.125 8.208-18.333 18.333-18.333S53.333 24.875 53.333 35 45.125 53.334 35 53.334 16.667 45.126 16.667 35zM35 26.667c.921 0 1.667.746 1.667 1.667V35A1.67 1.67 0 0 1 35 36.667c-.921 0-1.667-.746-1.667-1.667v-6.667c0-.921.746-1.667 1.667-1.667zm-1.667 15A1.67 1.67 0 0 1 35 40h.017c.921 0 1.667.746 1.667 1.667s-.746 1.667-1.667 1.667H35a1.67 1.67 0 0 1-1.667-1.667z' fill-rule='evenodd' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.success {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 70 70'%3E%3Cdefs/%3E%3Ccircle cx='35' cy='35' r='35' fill='%233DC55D'/%3E%3Cpath fill='%23fff' d='M30.9 49.7a2 2 0 001.8-1L48 24.9c.3-.5.4-1 .4-1.4 0-1-.7-1.7-1.7-1.7-.8 0-1.2.3-1.6 1L30.8 45.4 23.5 36c-.5-.6-1-.9-1.6-.9-1 0-1.8.8-1.8 1.8 0 .4.2.9.6 1.3L29 48.7c.6.7 1.1 1 1.9 1z'/%3E%3C/svg%3E\");\n}\n\n.%prefix%-logo.fuel {\n background-image: url(\"data:image/svg+xml,%3Csvg width='70' height='70' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0)'%3E%3Cpath d='M69.23 30.31l-8.46-11a6.58 6.58 0 00-3.4-2.19L35.91 12.1a7.16 7.16 0 00-1.6-.16 7.73 7.73 0 00-2.18.28l-5.1 1.57a1.76 1.76 0 00-.17-1.4l-1.46-2.5a1.76 1.76 0 00-2.06-.8l-9.98 3.2a1.76 1.76 0 00-1.23 1.74l.13 3.39c.01.27.09.54.22.78l-2.28.7a5.85 5.85 0 00-3.24 2.7L.48 34.23a4.96 4.96 0 00.14 4.53l3.5 5.83a4.49 4.49 0 004.19 2.05l9.29-1.13a4.79 4.79 0 002.54 3.78l3.55 1.68a8.9 8.9 0 003.39.73h.27l8.06-.45c.26.04.5.13.73.28l8.02 8c1 .92 2.3 1.45 3.67 1.47.14 0 .28 0 .42-.03l6.6-.68a2.85 2.85 0 002.5-1.8c.36-1 .1-2.12-.73-3l-2.78-2.96 5.26-1.56a4.35 4.35 0 003-3.64l.41-4.29c.09-.42.26-.82.52-1.16l6-6.66a3.91 3.91 0 00.2-4.9z' fill='%23fff'/%3E%3Cpath d='M49.08 29.96a1.72 1.72 0 00-.92-2.25 1.72 1.72 0 00-1.3 3.17 1.7 1.7 0 002.22-.92zM27.54 26.41a1.02 1.02 0 001-1.23 1.02 1.02 0 00-1.85-.37 1.03 1.03 0 00.46 1.52c.12.05.25.08.39.08zM37.05 21.67a1.03 1.03 0 000-2.06 1.03 1.03 0 000 2.06zM21.54 35c-4.62 0-10.44 2.04-13.52 3.24a.68.68 0 00-.24.16.68.68 0 00-.18.53c.01.1.04.19.1.27l1.28 2.16c.07.1.17.2.28.25.11.06.24.08.37.07l9.15-1.13.45-.03a3.64 3.64 0 013.67 3.55v.3a.67.67 0 00.39.59l2.9 1.38c.42.16.86.26 1.3.28h.05l7.74-.45h.23c1.45.03 2.83.59 3.9 1.58l7.68 7.65c.1.06.22.1.35.12l1.67-.2c.06-.01.12-.03.16-.07a.32.32 0 00.1-.13.33.33 0 00-.03-.33l-.82-1.21a3.22 3.22 0 01-.01-4.58c.4-.4.9-.68 1.45-.82l6.47-1.92a.4.4 0 00.19-.13.41.41 0 00.08-.22l.35-3.53c.01-.06 0-.13-.02-.2a.41.41 0 00-.28-.24.37.37 0 00-.2.01c-2.27.62-6.27 1.6-8.73 1.6C37.4 43.53 29.68 35 21.54 35zm8.97 7.49a.8.8 0 01-.27.28c-.2.13-.45.19-.68.17a1.05 1.05 0 01-.77-1.62.73.73 0 01.28-.28 1.05 1.05 0 011.44 1.45zm17.6 3.72a.76.76 0 01-.27.28 1.05 1.05 0 01-1.17-1.73 1.05 1.05 0 011.32.13 1.04 1.04 0 01.13 1.32z' fill='%23F8B826'/%3E%3Cpath d='M21.54 35c-4.85 0-11.03 2.25-13.96 3.42a.29.29 0 00-.15.16c-.01.03-.02.07-.01.11 0 .04.01.07.03.1L9 41.38c.06.11.16.2.27.26.12.05.25.07.37.06l9.15-1.13c.15-.02.3-.02.46-.03a3.63 3.63 0 013.66 3.54l.02.56c0 .04.02.09.05.13.02.04.06.07.1.1l3.13 1.48c.41.16.85.26 1.3.28h.04l7.74-.45h.23c1.45.03 2.84.59 3.9 1.58l7.68 7.65c.1.06.23.1.35.12l2.22-.27-1.58-1.66c-.82-.88-.7-2.05-.4-3.13a3.28 3.28 0 012.3-2.27l6.71-2 .38-3.8.06-.58c-2.13.59-6.6 1.74-9.3 1.74C37.4 43.54 29.69 35 21.54 35zm8.89 7.62a.38.38 0 01-.07.07c-1.07.77-2.26-.42-1.49-1.5a.25.25 0 01.06-.07c1.08-.77 2.27.42 1.5 1.5zm17.6 3.72a.25.25 0 01-.06.06c-1.07.78-2.26-.42-1.49-1.5a.25.25 0 01.07-.06c1.07-.78 2.26.42 1.49 1.5z' fill='%23E99123'/%3E%3Cpath d='M47.53 34.9c-10.41 0-19.22-4.65-25.54-4.65-4.44 0-11.97 3.38-15.28 5.83a.55.55 0 00-.18.69l.35.78a.55.55 0 00.72.28c2.84-1.18 8.9-3.42 13.94-3.42 8.4 0 16.15 7.48 25.16 7.48 4 0 9.88-1.58 11.41-2.82.67-.7 2.86-3.32 4.4-4.93a.67.67 0 00.1-.8.67.67 0 00-.32-.28.65.65 0 00-.42-.03 64.85 64.85 0 01-14.34 1.86zm-.47 3.95c-.14.3-.38.55-.68.7a1.73 1.73 0 01-2.34-2.36c.14-.3.38-.55.68-.7a1.72 1.72 0 012.04.32 1.75 1.75 0 01.3 2.04z' fill='%23F8B826'/%3E%3Cpath d='M68.34 30.87l-8.46-11a5.52 5.52 0 00-2.77-1.78l-21.46-5.03a7.08 7.08 0 00-3.2.1l-7.55 2.3-.01.01h-.01l-.5-1.3v-.01l1.13-.4a.65.65 0 00.36-.93l-1.47-2.5a.64.64 0 00-.73-.27l-9.98 3.17a.64.64 0 00-.44.63l.13 3.39a.64.64 0 00.63.6c.07 0 .15-.02.22-.04l2.53-.91h.02l.44.87v.02l-6.7 2.05c-1.08.38-2 1.15-2.56 2.15L1.47 34.61a3.8 3.8 0 00.11 3.43l3.5 5.84a3.32 3.32 0 003.1 1.51l10.23-1.26a.2.2 0 01.2.04.2.2 0 01.06.08l.02.1.03.9a3.69 3.69 0 001.9 2.88l3.56 1.69c.98.42 2.05.63 3.12.61l8.06-.44c.58.02 1.13.23 1.57.6l8.03 8a4.38 4.38 0 003.18 1.12l6.6-.69c.77-.07 1.33-.46 1.55-1.07.23-.6.05-1.26-.48-1.82l-4.02-4.26-.01-.01v-.01l7-2.09a3.25 3.25 0 002.2-2.66l.43-4.3a4 4 0 01.8-1.81l6.01-6.67a2.76 2.76 0 00.12-3.45zM15.14 15.2l-.03-.51c0-.08.02-.16.06-.22.04-.07.1-.11.18-.14l7.73-2.5a.35.35 0 01.41.16l.13.23c.03.05.04.1.05.15 0 .05 0 .1-.02.14a.35.35 0 01-.08.13.38.38 0 01-.12.09L15.6 15.5a.34.34 0 01-.31-.04.36.36 0 01-.16-.27zm51.53 17.75l-6 6.66a5.95 5.95 0 00-1.32 3l-.42 4.3a1.22 1.22 0 01-.73.87l-7.32 2.17a1.8 1.8 0 00-1.34 2.28c.1.32.27.6.52.83l3.19 3.37a.4.4 0 01.09.43.42.42 0 01-.14.19.42.42 0 01-.21.08l-5.06.53c-.55 0-1.09-.19-1.51-.54l-8.03-8a4.62 4.62 0 00-3.14-1.2l-8.07.45c-.73.01-1.45-.13-2.12-.41l-3.56-1.7a1.4 1.4 0 01-.72-1.08l-.04-.9a2.35 2.35 0 00-.8-1.68 2.24 2.24 0 00-1.78-.53L7.92 43.32a1.32 1.32 0 01-1.07-.53l-3.49-5.82a1.78 1.78 0 01-.05-1.4L9.8 22.94c.32-.5.78-.89 1.33-1.1l21.94-6.67c.69-.18 1.42-.2 2.12-.07l21.46 5.02c.62.19 1.18.55 1.6 1.03l8.47 11c.08.11.12.25.12.4a.69.69 0 01-.16.39z' fill='%2329363F'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0'%3E%3Cpath fill='%23fff' transform='translate(0 9)' d='M0 0h70v52H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\");\n}\n\n.%prefix%-request {\n padding: 20px;\n border-radius: 20px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n background: white;\n}\n\n.%prefix%-info {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.%prefix%-title {\n color: #000000;\n font-size: 25px;\n margin-top: 14px;\n font-weight: 700;\n line-height: 30px;\n letter-spacing: 0.5px;\n}\n\n.%prefix%-subtitle {\n margin-top: 14px;\n color: #5C5C5C;\n text-align: center;\n line-height: 1.4;\n word-break: break-word;\n}\n\n.%prefix%-subtitle a {\n color: #000000;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.%prefix%-manual {\n color: #007AFF;\n cursor: pointer;\n}\n\n.%prefix%-info hr {\n border: 0;\n height: 1px;\n width: 100%;\n background: #EFF1F7;\n margin: 24px 0 14px;\n}\n\n.%prefix%-uri {\n width: 100%;\n}\n\n.%prefix%-button {\n color: #007AFF;\n background: #EFF1F7;\n border: 1px solid #EFF1F7;\n text-decoration: none;\n font-size: 17px;\n flex-grow: 1;\n flex: 1;\n width: 100%;\n line-height: 1;\n padding: 20px 18px;\n border-radius: 12px;\n font-weight: 400;\n text-align: center;\n display: block;\n margin-top: 21px;\n cursor: pointer;\n}\n\n.%prefix%-button:hover {\n border: 1px solid #007AFF;\n}\n\n.%prefix%-qr {\n position: relative;\n margin-top: 21px;\n border: 4px solid #EFF1F7;\n padding: 11px;\n border-radius: 12px;\n background: #FFFFFF;\n transition: all 400ms ease-in-out;\n transform: scale(1) translateY(0);\n}\n\n.%prefix%-qr svg {\n width: 100%;\n display: block;\n cursor: zoom-in;\n shape-rendering: crispEdges;\n}\n\n.%prefix%-qr.zoom {\n transform: scale(2) translateY(-25px);\n border: 2px solid #1E89FE;\n box-sizing: border-box;\n box-shadow: 0px 4px 154px rgba(0, 0, 0, 0.35);\n border-radius: 10px;\n padding: 5px;\n z-index: 2147483647;\n}\n\n.%prefix%-qr.zoom svg {\n cursor: zoom-out;\n}\n\n.%prefix%-qr svg rect {\n fill: black;\n}\n\n.%prefix%-copy {\n position: absolute;\n bottom: -10px;\n left: 0px;\n width: 100%;\n color: green;\n text-align: center;\n opacity: 1;\n transition: all 200ms ease-in-out;\n transition-delay: 400ms;\n}\n\n.%prefix%-qr.zoom .%prefix%-copy {\n transition-delay: 0ms;\n background: transparent;\n opacity: 0;\n}\n\n.%prefix%-copy span,\n.%prefix%-copy a {\n display: inline-block;\n background: white;\n padding: 0 20px;\n color: #007AFF;\n cursor: pointer;\n text-decoration: none;\n}\n\n.%prefix%-copy span {\n display: none;\n color: #5C5C5C;\n cursor: default;\n}\n\n.%prefix%-copy.copied a {\n display: none;\n}\n\n.%prefix%-copy.copied span {\n display: inline-block;\n}\n\n.%prefix%-copy span:before,\n.%prefix%-copy a:before {\n content: '';\n display: inline-block;\n width: 26px;\n height: 16px;\n position: relative;\n top: 2px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' fill='none'%3E%3Cg clip-path='url(%23A)' stroke='%23157efa' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M13.83 6.5h-6c-.73 0-1.33.6-1.33 1.33v6c0 .74.6 1.34 1.33 1.34h6c.74 0 1.34-.6 1.34-1.34v-6c0-.73-.6-1.33-1.34-1.33z'/%3E%3Cpath d='M3.83 10.5h-.66a1.33 1.33 0 01-1.34-1.33v-6a1.33 1.33 0 011.34-1.34h6a1.33 1.33 0 011.33 1.34v.66' stroke-linecap='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='A'%3E%3Cpath fill='%23fff' transform='translate(.5 .5)' d='M0 0h16v16H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n}\n\n.%prefix%-copy span:before {\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.33 4L6 11.33 2.67 8' stroke='%23157EFA' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n top: 3.5px;\n}\n\n.%prefix%-footnote {\n text-align: center;\n width: 100%;\n position: absolute;\n bottom: -26px;\n left: 0;\n color: white;\n}\n\n.%prefix%-footnote a {\n color: white;\n text-decoration: underline;\n}\n\n.%prefix%-wskeepalive {\n display: none;\n}\n\n@media (prefers-color-scheme: dark) {\n .%prefix%-info hr,\n .%prefix%-inner {\n background: #262D43;\n color: white;\n }\n .%prefix%-request,\n .%prefix%-qr a,\n .%prefix%-qr span,\n .%prefix%-qr {\n background: #131B33;\n }\n .%prefix%-title {\n color: #FCFCFC;\n }\n .%prefix%-qr span,\n .%prefix%-subtitle {\n color: #B8C0DA;\n }\n .%prefix%-subtitle a {\n color: #FCFCFC;\n }\n .%prefix%-qr svg rect {\n fill: white;\n }\n .%prefix%-version {\n color: #546AAF;\n }\n .%prefix%-qr a,\n .%prefix%-manual,\n .%prefix%-button {\n color: #FCFCFC;\n }\n .%prefix%-button {\n background: #262D43;\n border: 1px solid #262D43;\n }\n .%prefix%-qr {\n border-color: #262D43;\n }\n .%prefix%-qr.zoom {\n border-color: #131B33;\n }\n .%prefix%-copy a:before {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' fill='none'%3E%3Cg clip-path='url(%23A)' stroke='%23fff' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M13.83 6.5h-6c-.73 0-1.33.6-1.33 1.33v6c0 .74.6 1.34 1.33 1.34h6c.74 0 1.34-.6 1.34-1.34v-6c0-.73-.6-1.33-1.34-1.33z'/%3E%3Cpath d='M3.83 10.5h-.66a1.33 1.33 0 01-1.34-1.33v-6a1.33 1.33 0 011.34-1.34h6a1.33 1.33 0 011.33 1.34v.66' stroke-linecap='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='A'%3E%3Cpath fill='%23fff' transform='translate(.5 .5)' d='M0 0h16v16H0z'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\");\n }\n .%prefix%-copy span:before {\n background-image: url(\"data:image/svg+xml,%3Csvg width='16' height='16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.33 4L6 11.33 2.67 8' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");\n }\n .%prefix%-button:hover {\n color: #FCFCFC;\n border: 1px solid #FCFCFC;\n background: #333A50;\n }\n .%prefix%-close {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M.57 12.1a.96.96 0 000 1.34c.37.36 1 .36 1.34 0L7 8.37l5.09 5.09c.36.35.97.35 1.34-.01a.96.96 0 000-1.34L8.34 7.01l5.08-5.08a.95.95 0 000-1.33.97.97 0 00-1.34-.01L6.99 5.68 1.91.59a.96.96 0 00-1.33 0 .97.97 0 00-.01 1.34l5.09 5.08-5.1 5.1z' fill='%23FCFCFC'/%3E%3C/svg%3E\");\n }\n .%prefix%-close:hover {\n background-color: black;\n }\n}\n\n@media (max-height: 600px) { .%prefix%-inner { transform: scale(0.9); } }\n@media (max-height: 540px) { .%prefix%-inner { transform: scale(0.8); } }\n@media (max-height: 480px) { .%prefix%-inner { transform: scale(0.7); } }\n@media (max-height: 420px) { .%prefix%-inner { transform: scale(0.6); } }\n@media (max-height: 360px) { .%prefix%-inner { transform: scale(0.5); } }\n@media (max-height: 300px) { .%prefix%-inner { transform: scale(0.4); } }\n\n@media (max-width: 600px) and (orientation: portrait) {\n .%prefix%-qr.zoom {\n transform: scale(1.5) translateY(-25px);\n }\n}\n\n@media (max-width: 450px) and (orientation: portrait) {\n .%prefix%-qr.zoom {\n transform: scale(1.3) translateY(-25px);\n }\n}\n\n`;\n\nvar ErrorCorrectLevel = {\n L: 1,\n M: 0,\n Q: 3,\n H: 2,\n};\n\nvar Mode = {\n MODE_NUMBER: 1 << 0,\n MODE_ALPHA_NUM: 1 << 1,\n MODE_8BIT_BYTE: 1 << 2,\n MODE_KANJI: 1 << 3,\n};\n\nclass QR8bitByte {\n constructor(data) {\n this.mode = Mode.MODE_8BIT_BYTE;\n this.data = data;\n }\n getLength() {\n return this.data.length;\n }\n write(buffer) {\n for (let i = 0; i < this.data.length; i++) {\n // not JIS ...\n buffer.put(this.data.charCodeAt(i), 8);\n }\n }\n}\n\nclass QRBitBuffer {\n constructor() {\n this.buffer = [];\n this.length = 0;\n }\n get(index) {\n const bufIndex = Math.floor(index / 8);\n return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1;\n }\n put(num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) == 1);\n }\n }\n getLengthInBits() {\n return this.length;\n }\n putBit(bit) {\n const bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[bufIndex] |= 0x80 >>> this.length % 8;\n }\n this.length++;\n }\n}\n\nconst QRMath = {\n glog: function (n) {\n if (n < 1) {\n throw new Error('glog(' + n + ')');\n }\n return QRMath.LOG_TABLE[n];\n },\n gexp: function (n) {\n while (n < 0) {\n n += 255;\n }\n while (n >= 256) {\n n -= 255;\n }\n return QRMath.EXP_TABLE[n];\n },\n EXP_TABLE: new Array(256),\n LOG_TABLE: new Array(256),\n};\nfor (let i = 0; i < 8; i++) {\n QRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (let i = 8; i < 256; i++) {\n QRMath.EXP_TABLE[i] =\n QRMath.EXP_TABLE[i - 4] ^\n QRMath.EXP_TABLE[i - 5] ^\n QRMath.EXP_TABLE[i - 6] ^\n QRMath.EXP_TABLE[i - 8];\n}\nfor (let i = 0; i < 255; i++) {\n QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;\n}\n\nclass QRPolynomial {\n constructor(num, shift) {\n if (num.length == undefined) {\n throw new Error(num.length + '/' + shift);\n }\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset++;\n }\n this.num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i++) {\n this.num[i] = num[i + offset];\n }\n }\n get(index) {\n return this.num[index];\n }\n getLength() {\n return this.num.length;\n }\n multiply(e) {\n const num = new Array(this.getLength() + e.getLength() - 1);\n for (let i = 0; i < this.getLength(); i++) {\n for (let j = 0; j < e.getLength(); j++) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));\n }\n }\n return new QRPolynomial(num, 0);\n }\n mod(e) {\n if (this.getLength() - e.getLength() < 0) {\n return this;\n }\n const ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0));\n const num = new Array(this.getLength());\n for (let i = 0; i < this.getLength(); i++) {\n num[i] = this.get(i);\n }\n for (let i = 0; i < e.getLength(); i++) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);\n }\n // recursive call\n return new QRPolynomial(num, 0).mod(e);\n }\n}\n\n// ErrorCorrectLevel\nclass QRRSBlock {\n constructor(totalCount, dataCount) {\n this.totalCount = totalCount;\n this.dataCount = dataCount;\n }\n static getRSBlocks(typeNumber, errorCorrectLevel) {\n const rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n if (rsBlock == undefined) {\n throw new Error('bad rs block @ typeNumber:' +\n typeNumber +\n '/errorCorrectLevel:' +\n errorCorrectLevel);\n }\n const length = rsBlock.length / 3;\n const list = [];\n for (let i = 0; i < length; i++) {\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n for (let j = 0; j < count; j++) {\n list.push(new QRRSBlock(totalCount, dataCount));\n }\n }\n return list;\n }\n static getRsBlockTable(typeNumber, errorCorrectLevel) {\n switch (errorCorrectLevel) {\n case ErrorCorrectLevel.L:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case ErrorCorrectLevel.M:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case ErrorCorrectLevel.Q:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case ErrorCorrectLevel.H:\n return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default:\n return undefined;\n }\n }\n}\nQRRSBlock.RS_BLOCK_TABLE = [\n // L\n // M\n // Q\n // H\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12],\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16],\n];\n\nconst QRMaskPattern = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7,\n};\nconst QRUtil = {\n PATTERN_POSITION_TABLE: [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170],\n ],\n G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),\n getBCHTypeInfo: function (data) {\n let d = data << 10;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n d ^= QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15));\n }\n return ((data << 10) | d) ^ QRUtil.G15_MASK;\n },\n getBCHTypeNumber: function (data) {\n let d = data << 12;\n while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n d ^= QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18));\n }\n return (data << 12) | d;\n },\n getBCHDigit: function (data) {\n let digit = 0;\n while (data != 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n },\n getPatternPosition: function (typeNumber) {\n return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n getMask: function (maskPattern, i, j) {\n switch (maskPattern) {\n case QRMaskPattern.PATTERN000:\n return (i + j) % 2 == 0;\n case QRMaskPattern.PATTERN001:\n return i % 2 == 0;\n case QRMaskPattern.PATTERN010:\n return j % 3 == 0;\n case QRMaskPattern.PATTERN011:\n return (i + j) % 3 == 0;\n case QRMaskPattern.PATTERN100:\n return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;\n case QRMaskPattern.PATTERN101:\n return ((i * j) % 2) + ((i * j) % 3) == 0;\n case QRMaskPattern.PATTERN110:\n return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;\n case QRMaskPattern.PATTERN111:\n return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;\n default:\n throw new Error('bad maskPattern:' + maskPattern);\n }\n },\n getErrorCorrectPolynomial: function (errorCorrectLength) {\n let a = new QRPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i++) {\n a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));\n }\n return a;\n },\n getLengthInBits: function (mode, type) {\n if (1 <= type && type < 10) {\n // 1 - 9\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 10;\n case Mode.MODE_ALPHA_NUM:\n return 9;\n case Mode.MODE_8BIT_BYTE:\n return 8;\n case Mode.MODE_KANJI:\n return 8;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else if (type < 27) {\n // 10 - 26\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 12;\n case Mode.MODE_ALPHA_NUM:\n return 11;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 10;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else if (type < 41) {\n // 27 - 40\n switch (mode) {\n case Mode.MODE_NUMBER:\n return 14;\n case Mode.MODE_ALPHA_NUM:\n return 13;\n case Mode.MODE_8BIT_BYTE:\n return 16;\n case Mode.MODE_KANJI:\n return 12;\n default:\n throw new Error('mode:' + mode);\n }\n }\n else {\n throw new Error('type:' + type);\n }\n },\n getLostPoint: function (qrCode) {\n const moduleCount = qrCode.getModuleCount();\n let lostPoint = 0;\n // LEVEL1\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount; col++) {\n let sameCount = 0;\n const dark = qrCode.isDark(row, col);\n for (let r = -1; r <= 1; r++) {\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n for (let c = -1; c <= 1; c++) {\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n if (r == 0 && c == 0) {\n continue;\n }\n if (dark == qrCode.isDark(row + r, col + c)) {\n sameCount++;\n }\n }\n }\n if (sameCount > 5) {\n lostPoint += 3 + sameCount - 5;\n }\n }\n }\n // LEVEL2\n for (let row = 0; row < moduleCount - 1; row++) {\n for (let col = 0; col < moduleCount - 1; col++) {\n let count = 0;\n if (qrCode.isDark(row, col))\n count++;\n if (qrCode.isDark(row + 1, col))\n count++;\n if (qrCode.isDark(row, col + 1))\n count++;\n if (qrCode.isDark(row + 1, col + 1))\n count++;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n // LEVEL3\n for (let row = 0; row < moduleCount; row++) {\n for (let col = 0; col < moduleCount - 6; col++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row, col + 1) &&\n qrCode.isDark(row, col + 2) &&\n qrCode.isDark(row, col + 3) &&\n qrCode.isDark(row, col + 4) &&\n !qrCode.isDark(row, col + 5) &&\n qrCode.isDark(row, col + 6)) {\n lostPoint += 40;\n }\n }\n }\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount - 6; row++) {\n if (qrCode.isDark(row, col) &&\n !qrCode.isDark(row + 1, col) &&\n qrCode.isDark(row + 2, col) &&\n qrCode.isDark(row + 3, col) &&\n qrCode.isDark(row + 4, col) &&\n !qrCode.isDark(row + 5, col) &&\n qrCode.isDark(row + 6, col)) {\n lostPoint += 40;\n }\n }\n }\n // LEVEL4\n let darkCount = 0;\n for (let col = 0; col < moduleCount; col++) {\n for (let row = 0; row < moduleCount; row++) {\n if (qrCode.isDark(row, col)) {\n darkCount++;\n }\n }\n }\n const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n return lostPoint;\n },\n};\n\nclass QRCode {\n constructor(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n }\n addData(data) {\n const newData = new QR8bitByte(data);\n this.dataList.push(newData);\n this.dataCache = null;\n }\n isDark(row, col) {\n if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n throw new Error(row + ',' + col);\n }\n return this.modules[row][col];\n }\n getModuleCount() {\n return this.moduleCount;\n }\n make() {\n // Calculate automatically typeNumber if provided is < 1\n if (this.typeNumber < 1) {\n let typeNumber = 1;\n for (typeNumber = 1; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n const buffer = new QRBitBuffer();\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n for (let i = 0; i < this.dataList.length; i++) {\n const data = this.dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n if (buffer.getLengthInBits() <= totalDataCount * 8)\n break;\n }\n this.typeNumber = typeNumber;\n }\n this.makeImpl(false, this.getBestMaskPattern());\n }\n makeImpl(test, maskPattern) {\n this.moduleCount = this.typeNumber * 4 + 17;\n this.modules = new Array(this.moduleCount);\n for (let row = 0; row < this.moduleCount; row++) {\n this.modules[row] = new Array(this.moduleCount);\n for (let col = 0; col < this.moduleCount; col++) {\n this.modules[row][col] = null; //(col + row) % 3;\n }\n }\n this.setupPositionProbePattern(0, 0);\n this.setupPositionProbePattern(this.moduleCount - 7, 0);\n this.setupPositionProbePattern(0, this.moduleCount - 7);\n this.setupPositionAdjustPattern();\n this.setupTimingPattern();\n this.setupTypeInfo(test, maskPattern);\n if (this.typeNumber >= 7) {\n this.setupTypeNumber(test);\n }\n if (this.dataCache == null) {\n this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n }\n this.mapData(this.dataCache, maskPattern);\n }\n setupPositionProbePattern(row, col) {\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || this.moduleCount <= row + r)\n continue;\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || this.moduleCount <= col + c)\n continue;\n if ((0 <= r && r <= 6 && (c == 0 || c == 6)) ||\n (0 <= c && c <= 6 && (r == 0 || r == 6)) ||\n (2 <= r && r <= 4 && 2 <= c && c <= 4)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n getBestMaskPattern() {\n let minLostPoint = 0;\n let pattern = 0;\n for (let i = 0; i < 8; i++) {\n this.makeImpl(true, i);\n const lostPoint = QRUtil.getLostPoint(this);\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n return pattern;\n }\n setupTimingPattern() {\n for (let r = 8; r < this.moduleCount - 8; r++) {\n if (this.modules[r][6] != null) {\n continue;\n }\n this.modules[r][6] = r % 2 == 0;\n }\n for (let c = 8; c < this.moduleCount - 8; c++) {\n if (this.modules[6][c] != null) {\n continue;\n }\n this.modules[6][c] = c % 2 == 0;\n }\n }\n setupPositionAdjustPattern() {\n const pos = QRUtil.getPatternPosition(this.typeNumber);\n for (let i = 0; i < pos.length; i++) {\n for (let j = 0; j < pos.length; j++) {\n const row = pos[i];\n const col = pos[j];\n if (this.modules[row][col] != null) {\n continue;\n }\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {\n this.modules[row + r][col + c] = true;\n }\n else {\n this.modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n }\n setupTypeNumber(test) {\n const bits = QRUtil.getBCHTypeNumber(this.typeNumber);\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n this.modules[Math.floor(i / 3)][(i % 3) + this.moduleCount - 8 - 3] = mod;\n }\n for (let i = 0; i < 18; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n this.modules[(i % 3) + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n }\n setupTypeInfo(test, maskPattern) {\n const data = (this.errorCorrectLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n // vertical\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 6) {\n this.modules[i][8] = mod;\n }\n else if (i < 8) {\n this.modules[i + 1][8] = mod;\n }\n else {\n this.modules[this.moduleCount - 15 + i][8] = mod;\n }\n }\n // horizontal\n for (let i = 0; i < 15; i++) {\n const mod = !test && ((bits >> i) & 1) == 1;\n if (i < 8) {\n this.modules[8][this.moduleCount - i - 1] = mod;\n }\n else if (i < 9) {\n this.modules[8][15 - i - 1 + 1] = mod;\n }\n else {\n this.modules[8][15 - i - 1] = mod;\n }\n }\n // fixed module\n this.modules[this.moduleCount - 8][8] = !test;\n }\n mapData(data, maskPattern) {\n let inc = -1;\n let row = this.moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n for (let col = this.moduleCount - 1; col > 0; col -= 2) {\n if (col == 6)\n col--;\n for (;;) {\n for (let c = 0; c < 2; c++) {\n if (this.modules[row][col - c] == null) {\n let dark = false;\n if (byteIndex < data.length) {\n dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;\n }\n const mask = QRUtil.getMask(maskPattern, row, col - c);\n if (mask) {\n dark = !dark;\n }\n this.modules[row][col - c] = dark;\n bitIndex--;\n if (bitIndex == -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n row += inc;\n if (row < 0 || this.moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n }\n static createData(typeNumber, errorCorrectLevel, dataList) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n const buffer = new QRBitBuffer();\n for (let i = 0; i < dataList.length; i++) {\n const data = dataList[i];\n buffer.put(data.mode, 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));\n data.write(buffer);\n }\n // calc num max data.\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw new Error('code length overflow. (' +\n buffer.getLengthInBits() +\n '>' +\n totalDataCount * 8 +\n ')');\n }\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n // padding\n for (;;) {\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCode.PAD0, 8);\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(QRCode.PAD1, 8);\n }\n return QRCode.createBytes(buffer, rsBlocks);\n }\n static createBytes(buffer, rsBlocks) {\n let offset = 0;\n let maxDcCount = 0;\n let maxEcCount = 0;\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n for (let r = 0; r < rsBlocks.length; r++) {\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n dcdata[r] = new Array(dcCount);\n for (let i = 0; i < dcdata[r].length; i++) {\n dcdata[r][i] = 0xff & buffer.buffer[i + offset];\n }\n offset += dcCount;\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i++) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;\n }\n }\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n const data = new Array(totalCodeCount);\n let index = 0;\n for (let i = 0; i < maxDcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < dcdata[r].length) {\n data[index++] = dcdata[r][i];\n }\n }\n }\n for (let i = 0; i < maxEcCount; i++) {\n for (let r = 0; r < rsBlocks.length; r++) {\n if (i < ecdata[r].length) {\n data[index++] = ecdata[r][i];\n }\n }\n }\n return data;\n }\n}\nQRCode.PAD0 = 0xec;\nQRCode.PAD1 = 0x11;\n\n/**\n * Generate QR SVG\n * @author Johan Nordberg \n */\nfunction generate(text, level = 'L', version = -1) {\n const qr = new QRCode(version, ErrorCorrectLevel[level]);\n const rects = [];\n qr.addData(text);\n qr.make();\n const rows = qr.modules;\n const size = rows.length;\n for (const [y, row] of rows.entries()) {\n let rect;\n for (const [x, on] of row.entries()) {\n if (on) {\n if (!rect)\n rect = { x, y, width: 0, height: 1 };\n rect.width++;\n }\n else {\n if (rect && rect.width > 0) {\n rects.push(rect);\n }\n rect = undefined;\n }\n }\n if (rect && rect.width > 0) {\n rects.push(rect);\n }\n }\n const svg = [``];\n for (const { x, y, width, height } of rects) {\n svg.push(``);\n }\n svg.push('');\n return svg.join('');\n}\n\nasync function apiCall(url, body) {\n return (await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: body ? JSON.stringify(body) : undefined,\n })).json();\n}\nconst version = 'fuel/2';\n/** Return true if otherVersion is same or greater than current fuel version. */\nfunction compareVersion(otherVersion) {\n return parseVersion(otherVersion) >= parseVersion(version);\n}\nfunction parseVersion(string) {\n const parts = string.trim().split('/');\n if (parts.length === 2 && parts[0] === 'fuel') {\n return parseInt(parts[1]) || 0;\n }\n return -1;\n}\nasync function fuel(request, session, updatePrepareStatus, supportedChains, referrer) {\n assertEligible(request, session);\n updatePrepareStatus('Detecting if network resources are required.');\n const chainId = request.getChainId();\n const nodeUrl = supportedChains[String(chainId)];\n if (!nodeUrl) {\n throw new Error(`Blockchain not supported by this resource provider.`);\n }\n const result = await apiCall(nodeUrl + '/v1/resource_provider/request_transaction', {\n ref: referrer,\n request,\n signer: session.auth,\n });\n if (!result || !result.data) {\n throw new Error('Invalid response from resource provider.');\n }\n if (!result.data.signatures || !result.data.signatures[0]) {\n throw new Error('No signature returned from resource provider.');\n }\n if (result.code === 402 && !result.data.fee) {\n throw new Error('Resource provider returned a response indicating required payment, but provided no fee amount.');\n }\n // Clone the request for modification\n const cloned = request.clone();\n // Set the required fee onto the request for signature providers\n if (result.code === 402) {\n if (request.getInfoKey('no_fee')) {\n throw new Error('Fee required but sender opted out.');\n }\n cloned.setInfoKey('txfee', result.data.fee);\n }\n // If the fee costs exist, set them on the request for the signature provider to consume\n if (result.data.costs) {\n cloned.setInfoKey('txfeecpu', result.data.costs.cpu);\n cloned.setInfoKey('txfeenet', result.data.costs.net);\n cloned.setInfoKey('txfeeram', result.data.costs.ram);\n }\n // Set the cosigner signature onto the request for signature providers\n const signatures = result.data.signatures.map((s) => Signature.from(s));\n cloned.setInfoKey('cosig', signatures, { type: Signature, array: true });\n // Modify the request based on the response from the API\n cloned.data.req = (await SigningRequest.create({ transaction: { ...result.data.request[1] } }, { abiProvider: request.abiProvider })).data.req;\n return cloned;\n}\nfunction assertEligible(request, session) {\n if (request.getRawInfoKey('no_modify')) {\n throw new Error('Request cannot be modified.');\n }\n if (request.isIdentity()) {\n throw new Error('Identity requests cannot be co-signed.');\n }\n const firstAction = request.getRawActions()[0];\n if (!firstAction) {\n throw new Error('No actions in request.');\n }\n const firstAuthorizer = firstAction.authorization[0];\n if (!firstAction) {\n throw new Error('First authorization missing.');\n }\n if (!firstAuthorizer.actor.equals(session.auth.actor) &&\n !firstAuthorizer.actor.equals(PlaceholderName)) {\n throw new Error('Not first authorizer.');\n }\n}\n\nconst AbortPrepare = Symbol();\nconst SkipFee = Symbol();\nconst SkipToManual = Symbol();\nconst defaultSupportedChains = {\n aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906: 'https://eos.greymass.com',\n '2a02a0053e5a8cf73a56ba0fda11e4d92e0238a4a2aa74fccf46d5a910746840': 'https://jungle3.greymass.com',\n '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11': 'https://telos.greymass.com',\n '1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4': 'https://wax.greymass.com',\n};\nclass Storage {\n constructor(keyPrefix) {\n this.keyPrefix = keyPrefix;\n }\n async write(key, data) {\n localStorage.setItem(this.storageKey(key), data);\n }\n async read(key) {\n return localStorage.getItem(this.storageKey(key));\n }\n async remove(key) {\n localStorage.removeItem(this.storageKey(key));\n }\n storageKey(key) {\n return `${this.keyPrefix}-${key}`;\n }\n}\nclass BrowserTransport {\n constructor(options = {}) {\n this.options = options;\n this.classPrefix = options.classPrefix || 'anchor-link';\n this.injectStyles = !(options.injectStyles === false);\n this.importantStyles = !(options.importantStyles === false);\n this.requestStatus = !(options.requestStatus === false);\n this.fuelEnabled = options.disableGreymassFuel !== true;\n this.fuelReferrer = options.fuelReferrer || 'teamgreymass';\n this.storage = new Storage(options.storagePrefix || 'anchor-link');\n this.supportedChains = options.supportedChains || defaultSupportedChains;\n this.showingManual = false;\n }\n closeModal() {\n this.hide();\n if (this.activeCancel) {\n this.activeRequest = undefined;\n this.activeCancel('Modal closed');\n this.activeCancel = undefined;\n }\n }\n setupElements() {\n this.showingManual = false;\n if (this.injectStyles && !this.styleEl) {\n this.styleEl = document.createElement('style');\n this.styleEl.type = 'text/css';\n let css = styleText.replace(/%prefix%/g, this.classPrefix);\n if (this.importantStyles) {\n css = css\n .split('\\n')\n .map((line) => line.replace(/;$/i, ' !important;'))\n .join('\\n');\n }\n this.styleEl.appendChild(document.createTextNode(css));\n document.head.appendChild(this.styleEl);\n }\n if (!this.containerEl) {\n this.containerEl = this.createEl();\n this.containerEl.className = this.classPrefix;\n this.containerEl.onclick = (event) => {\n if (event.target === this.containerEl) {\n event.stopPropagation();\n this.closeModal();\n }\n };\n document.body.appendChild(this.containerEl);\n }\n if (!this.requestEl) {\n const wrapper = this.createEl({ class: 'inner' });\n const closeButton = this.createEl({ class: 'close' });\n closeButton.onclick = (event) => {\n event.stopPropagation();\n this.closeModal();\n };\n this.requestEl = this.createEl({ class: 'request' });\n wrapper.appendChild(this.requestEl);\n wrapper.appendChild(closeButton);\n const version = this.createEl({\n class: 'version',\n text: `${BrowserTransport.version} (${Link.version})`,\n });\n version.onclick = (event) => {\n event.stopPropagation();\n window.open('https://github.com/greymass/anchor-link', '_blank');\n };\n wrapper.appendChild(version);\n this.containerEl.appendChild(wrapper);\n }\n }\n createEl(attrs) {\n if (!attrs)\n attrs = {};\n const el = document.createElement(attrs.tag || 'div');\n for (const attr of Object.keys(attrs)) {\n const value = attrs[attr];\n switch (attr) {\n case 'src':\n el.setAttribute(attr, value);\n break;\n case 'tag':\n break;\n case 'content':\n if (typeof value === 'string') {\n el.appendChild(document.createTextNode(value));\n }\n else {\n el.appendChild(value);\n }\n break;\n case 'text':\n el.appendChild(document.createTextNode(value));\n break;\n case 'class':\n el.className = `${this.classPrefix}-${value}`;\n break;\n default:\n el.setAttribute(attr, value);\n }\n }\n return el;\n }\n hide() {\n if (this.containerEl) {\n this.containerEl.classList.remove(`${this.classPrefix}-active`);\n }\n this.clearTimers();\n }\n show() {\n if (this.containerEl) {\n this.containerEl.classList.add(`${this.classPrefix}-active`);\n }\n }\n showDialog(args) {\n this.setupElements();\n const infoEl = this.createEl({ class: 'info' });\n const infoTitle = this.createEl({ class: 'title', tag: 'span', content: args.title });\n const infoSubtitle = this.createEl({\n class: 'subtitle',\n tag: 'span',\n content: args.subtitle,\n });\n infoEl.appendChild(infoTitle);\n infoEl.appendChild(infoSubtitle);\n const logoEl = this.createEl({ class: 'logo' });\n if (args.type) {\n logoEl.classList.add(args.type);\n }\n emptyElement(this.requestEl);\n this.requestEl.appendChild(logoEl);\n this.requestEl.appendChild(infoEl);\n if (args.content) {\n this.requestEl.appendChild(args.content);\n }\n if (args.action) {\n const buttonEl = this.createEl({ tag: 'a', class: 'button', text: args.action.text });\n buttonEl.addEventListener('click', (event) => {\n event.preventDefault();\n args.action.callback();\n });\n this.requestEl.appendChild(buttonEl);\n }\n if (args.footnote) {\n const footnoteEl = this.createEl({ class: 'footnote', content: args.footnote });\n this.requestEl.appendChild(footnoteEl);\n }\n this.show();\n }\n async displayRequest(request, title, subtitle, showFooter = true) {\n const sameDeviceRequest = request.clone();\n const returnUrl = generateReturnUrl();\n sameDeviceRequest.setInfoKey('same_device', true);\n sameDeviceRequest.setInfoKey('return_path', returnUrl);\n const sameDeviceUri = sameDeviceRequest.encode(true, false);\n const crossDeviceUri = request.encode(true, false);\n const qrEl = this.createEl({ class: 'qr' });\n try {\n qrEl.innerHTML = generate(crossDeviceUri);\n }\n catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Unable to generate QR code', error);\n }\n const copyEl = this.createEl({ class: 'copy' });\n const copyA = this.createEl({ tag: 'a', text: 'Copy request link' });\n const copySpan = this.createEl({ tag: 'span', text: 'Link copied - Paste in Anchor' });\n copyEl.appendChild(copyA);\n copyEl.appendChild(copySpan);\n qrEl.appendChild(copyEl);\n copyA.addEventListener('click', (event) => {\n event.preventDefault();\n copyToClipboard(crossDeviceUri);\n copyEl.classList.add('copied');\n setTimeout(() => {\n copyEl.classList.remove('copied');\n }, 2000);\n });\n const svg = qrEl.querySelector('svg');\n if (svg) {\n svg.addEventListener('click', (event) => {\n event.preventDefault();\n qrEl.classList.toggle('zoom');\n });\n }\n const linkEl = this.createEl({ class: 'uri' });\n const linkA = this.createEl({\n tag: 'a',\n class: 'button',\n href: crossDeviceUri,\n text: 'Launch Anchor',\n });\n linkEl.appendChild(linkA);\n if (isFirefox() || isBrave()) {\n // this prevents firefox/brave from killing the websocket connection once the link is clicked\n const iframe = this.createEl({\n class: 'wskeepalive',\n src: 'about:blank',\n tag: 'iframe',\n });\n linkEl.appendChild(iframe);\n linkA.addEventListener('click', (event) => {\n event.preventDefault();\n iframe.setAttribute('src', sameDeviceUri);\n window.location.href = sameDeviceUri;\n });\n }\n else {\n linkA.addEventListener('click', (event) => {\n event.preventDefault();\n window.location.href = sameDeviceUri;\n });\n }\n const content = this.createEl({ class: 'info' });\n content.appendChild(qrEl);\n content.appendChild(linkEl);\n let footnote;\n if (showFooter) {\n footnote = this.createEl({ text: \"Don't have Anchor yet? \" });\n const footnoteLink = this.createEl({\n tag: 'a',\n target: '_blank',\n href: 'https://greymass.com/anchor',\n text: 'Download now',\n });\n footnote.appendChild(footnoteLink);\n }\n this.showDialog({\n title,\n subtitle,\n footnote,\n content,\n });\n }\n async showLoading() {\n const status = this.createEl({\n tag: 'span',\n text: 'Preparing request...',\n });\n this.prepareStatusEl = status;\n this.showDialog({\n title: 'Loading',\n subtitle: status,\n type: 'loading',\n });\n }\n onRequest(request, cancel) {\n this.clearTimers();\n this.activeRequest = request;\n this.activeCancel = cancel;\n const title = request.isIdentity() ? 'Login' : 'Sign';\n const subtitle = 'Scan the QR-code with Anchor on another device or use the button to open it here.';\n this.displayRequest(request, title, subtitle).catch(cancel);\n }\n onSessionRequest(session, request, cancel) {\n if (session.metadata.sameDevice) {\n request.setInfoKey('return_path', generateReturnUrl());\n }\n if (session.type === 'fallback') {\n this.onRequest(request, cancel);\n if (session.metadata.sameDevice) {\n // trigger directly on a fallback same-device session\n window.location.href = request.encode();\n }\n return;\n }\n this.clearTimers();\n this.activeRequest = request;\n this.activeCancel = cancel;\n const timeout = session.metadata.timeout || 60 * 1000 * 2;\n const deviceName = session.metadata.name;\n let subtitle;\n if (deviceName && deviceName.length > 0) {\n subtitle = `Please open Anchor Wallet on “${deviceName}” to review and sign the transaction.`;\n }\n else {\n subtitle = 'Please review and sign the transaction in the linked wallet.';\n }\n const title = this.createEl({ tag: 'span', text: 'Sign' });\n const expires = new Date(Date.now() + timeout);\n const updateCountdown = () => {\n title.textContent = `Sign - ${countdownFormat(expires)}`;\n };\n this.countdownTimer = setInterval(updateCountdown, 200);\n updateCountdown();\n const content = this.createEl({ class: 'info' });\n const manualHr = this.createEl({ tag: 'hr' });\n const manualA = this.createEl({\n tag: 'a',\n text: 'Sign manually or with another device',\n class: 'manual',\n });\n manualA.addEventListener('click', (event) => {\n event.preventDefault();\n const error = new SessionError('Manual', 'E_TIMEOUT', session);\n error[SkipToManual] = true;\n cancel(error);\n });\n content.appendChild(manualHr);\n content.appendChild(manualA);\n this.showDialog({\n title,\n subtitle,\n content,\n });\n if (session.metadata.sameDevice) {\n if (session.metadata.launchUrl) {\n window.location.href = session.metadata.launchUrl;\n }\n else if (isAppleHandheld()) {\n window.location.href = 'anchor://link';\n }\n }\n }\n sendSessionPayload(payload, session) {\n if (!session.metadata.triggerUrl || !session.metadata.sameDevice) {\n // not same device or no trigger url supported\n return false;\n }\n if (payload.array.length > 700) {\n // url could be clipped by iOS\n return false;\n }\n window.location.href = session.metadata.triggerUrl.replace('%s', Base64u.encode(payload.array));\n return true;\n }\n clearTimers() {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = undefined;\n }\n if (this.countdownTimer) {\n clearTimeout(this.countdownTimer);\n this.countdownTimer = undefined;\n }\n }\n async showFee(request, fee) {\n this.activeRequest = request;\n const cancelPromise = new Promise((resolve, reject) => {\n this.activeCancel = (reason) => {\n let error;\n if (typeof reason === 'string') {\n error = new Error(reason);\n }\n else {\n error = reason;\n }\n error[AbortPrepare] = true;\n reject(error);\n };\n });\n const content = this.createEl({ class: 'info' });\n const feePart1 = this.createEl({\n tag: 'span',\n text: 'You can try to ',\n });\n const feeBypass = this.createEl({\n tag: 'a',\n text: 'proceed without the fee',\n });\n const feePart2 = this.createEl({\n tag: 'span',\n text: ' or accept the fee shown below to pay for these costs.',\n });\n const feeDescription = this.createEl({\n class: 'subtitle',\n tag: 'span',\n });\n feeDescription.appendChild(feePart1);\n feeDescription.appendChild(feeBypass);\n feeDescription.appendChild(feePart2);\n content.appendChild(feeDescription);\n const expireEl = this.createEl({\n tag: 'span',\n class: 'subtitle',\n text: 'Offer expires in --:--',\n });\n content.appendChild(expireEl);\n const expires = request.getRawTransaction().expiration.toDate();\n const expireTimer = setInterval(() => {\n expireEl.textContent = `Offer expires in ${countdownFormat(expires)}`;\n if (expires.getTime() < Date.now()) {\n this.activeCancel('Offer expired');\n }\n }, 200);\n const footnote = this.createEl({\n tag: 'span',\n text: 'Resources offered by ',\n });\n const footnoteLink = this.createEl({\n tag: 'a',\n target: '_blank',\n href: 'https://greymass.com/en/fuel',\n text: 'Greymass Fuel',\n });\n footnote.appendChild(footnoteLink);\n const skipPromise = waitForEvent(feeBypass, 'click').then(() => {\n const error = new Error('Skipped fee');\n error[SkipFee] = true;\n throw error;\n });\n const confirmPromise = new Promise((resolve) => {\n this.showDialog({\n title: 'Transaction Fee',\n subtitle: 'Your account lacks the network resources for this transaction and it cannot be covered for free.',\n type: 'fuel',\n content,\n action: {\n text: `Accept Fee of ${fee}`,\n callback: resolve,\n },\n footnote,\n });\n });\n await Promise.race([confirmPromise, skipPromise, cancelPromise]).finally(() => {\n clearInterval(expireTimer);\n });\n }\n showRecovery(request, session) {\n request.data.info = request.data.info.filter((pair) => pair.key !== 'return_path');\n if (session.type === 'channel') {\n const channelSession = session;\n if (channelSession.addLinkInfo) {\n channelSession.addLinkInfo(request);\n }\n }\n this.displayRequest(request, 'Sign manually', 'Want to sign with another device or didn’t get the signing request in your wallet, scan this QR or copy request and paste in app.', false);\n this.showingManual = true;\n }\n async prepare(request, session) {\n this.showLoading();\n if (!this.fuelEnabled || !session || request.isIdentity()) {\n // don't attempt to cosign id request or if we don't have a session attached\n return request;\n }\n if (typeof session.metadata.cosignerVersion === 'string' &&\n compareVersion(session.metadata.cosignerVersion)) {\n // if signer has cosigner, only attempt to cosign here if we have a newer version\n return request;\n }\n try {\n const result = fuel(request, session, (message) => {\n if (this.prepareStatusEl) {\n this.prepareStatusEl.textContent = message;\n }\n }, this.supportedChains, this.fuelReferrer);\n const timeout = new Promise((r) => setTimeout(r, 5000)).then(() => {\n throw new Error('API timeout after 5000ms');\n });\n const modified = await Promise.race([result, timeout]);\n const fee = modified.getInfoKey('txfee');\n if (fee) {\n await this.showFee(modified, String(fee));\n }\n return modified;\n }\n catch (error) {\n if (error[AbortPrepare]) {\n this.hide();\n throw error;\n }\n else {\n // eslint-disable-next-line no-console\n console.info(`Skipping resource provider: ${error.message || error}`);\n if (error[SkipFee]) {\n const modified = request.clone();\n modified.setInfoKey('no_fee', true, 'bool');\n return modified;\n }\n }\n }\n return request;\n }\n recoverError(error, request) {\n if (request === this.activeRequest &&\n (error['code'] === 'E_DELIVERY' || error['code'] === 'E_TIMEOUT') &&\n error['session']) {\n // recover from session errors by displaying a manual sign dialog\n if (this.showingManual) {\n // already showing recovery sign\n return true;\n }\n const session = error['session'];\n if (error[SkipToManual]) {\n this.showRecovery(request, session);\n return true;\n }\n const deviceName = session.metadata.name;\n let subtitle;\n if (deviceName && deviceName.length > 0) {\n subtitle = `Unable to deliver the request to “${deviceName}”.`;\n }\n else {\n subtitle = 'Unable to deliver the request to the linked wallet.';\n }\n subtitle += ` ${error.message}.`;\n this.showDialog({\n title: 'Unable to reach device',\n subtitle,\n type: 'warning',\n action: {\n text: 'Sign manually',\n callback: () => {\n this.showRecovery(request, session);\n },\n },\n });\n return true;\n }\n return false;\n }\n onSuccess(request) {\n if (request === this.activeRequest) {\n this.clearTimers();\n if (this.requestStatus) {\n this.showDialog({\n title: 'Success!',\n subtitle: request.isIdentity() ? 'Login completed.' : 'Transaction signed.',\n type: 'success',\n });\n this.closeTimer = setTimeout(() => {\n this.hide();\n }, 1.5 * 1000);\n }\n else {\n this.hide();\n }\n }\n }\n onFailure(request, error) {\n if (request === this.activeRequest && error['code'] !== 'E_CANCEL') {\n this.clearTimers();\n if (this.requestStatus) {\n let errorMessage;\n if (isInstanceOf(error, APIError)) {\n if (error.name === 'eosio_assert_message_exception') {\n errorMessage = error.details[0].message;\n }\n else if (error.details.length > 0) {\n errorMessage = error.details.map((d) => d.message).join('\\n');\n }\n else {\n errorMessage = error.message;\n }\n }\n else {\n errorMessage = error.message || String(error);\n }\n this.showDialog({\n title: 'Transaction Error',\n subtitle: errorMessage,\n type: 'error',\n });\n }\n else {\n this.hide();\n }\n }\n else {\n this.hide();\n }\n }\n userAgent() {\n return `BrowserTransport/${BrowserTransport.version} ${navigator.userAgent}`;\n }\n}\n/** Package version. */\nBrowserTransport.version = '3.6.1'; // replaced by build script\nfunction waitForEvent(element, eventName, timeout) {\n return new Promise((resolve, reject) => {\n const listener = (event) => {\n element.removeEventListener(eventName, listener);\n resolve(event);\n };\n element.addEventListener(eventName, listener);\n if (timeout) {\n setTimeout(() => {\n element.removeEventListener(eventName, listener);\n reject(new Error(`Timed out waiting for ${eventName}`));\n }, timeout);\n }\n });\n}\nfunction countdownFormat(date) {\n const timeLeft = date.getTime() - Date.now();\n if (timeLeft > 0) {\n return new Date(timeLeft).toISOString().substr(14, 5);\n }\n return '00:00';\n}\nfunction emptyElement(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n/** Generate a return url that Anchor will redirect back to w/o reload. */\nfunction generateReturnUrl() {\n if (isChromeiOS()) {\n // google chrome on iOS will always open new tab so we just ask it to open again as a workaround\n return 'googlechrome://';\n }\n if (isFirefoxiOS()) {\n // same for firefox\n return 'firefox:://';\n }\n if (isAppleHandheld() && isBrave()) {\n // and brave ios\n return 'brave://';\n }\n if (isAppleHandheld()) {\n // return url with unique fragment required for iOS safari to trigger the return url\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let rv = window.location.href.split('#')[0] + '#';\n for (let i = 0; i < 8; i++) {\n rv += alphabet.charAt(Math.floor(Math.random() * alphabet.length));\n }\n return rv;\n }\n if (isAndroid() && isFirefox()) {\n return 'android-intent://org.mozilla.firefox';\n }\n if (isAndroid() && isEdge()) {\n return 'android-intent://com.microsoft.emmx';\n }\n if (isAndroid() && isOpera()) {\n return 'android-intent://com.opera.browser';\n }\n if (isAndroid() && isBrave()) {\n return 'android-intent://com.brave.browser';\n }\n if (isAndroid() && isAndroidWebView()) {\n return 'android-intent://webview';\n }\n if (isAndroid() && isChromeMobile()) {\n return 'android-intent://com.android.chrome';\n }\n return window.location.href;\n}\nfunction isAppleHandheld() {\n return /iP(ad|od|hone)/i.test(navigator.userAgent);\n}\nfunction isChromeiOS() {\n return /CriOS/.test(navigator.userAgent);\n}\nfunction isChromeMobile() {\n return /Chrome\\/[.0-9]* Mobile/i.test(navigator.userAgent);\n}\nfunction isFirefox() {\n return /Firefox/i.test(navigator.userAgent);\n}\nfunction isFirefoxiOS() {\n return /FxiOS/.test(navigator.userAgent);\n}\nfunction isOpera() {\n return /OPR/.test(navigator.userAgent) || /Opera/.test(navigator.userAgent);\n}\nfunction isEdge() {\n return /Edg/.test(navigator.userAgent);\n}\nfunction isBrave() {\n return navigator['brave'] && typeof navigator['brave'].isBrave === 'function';\n}\nfunction isAndroid() {\n return /Android/.test(navigator.userAgent);\n}\nfunction isAndroidWebView() {\n return /wv/.test(navigator.userAgent) || /Android.*AppleWebKit/.test(navigator.userAgent);\n}\nfunction copyToClipboard(text) {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(text);\n }\n else {\n const el = document.createElement('textarea');\n try {\n el.setAttribute('contentEditable', '');\n el.value = text;\n document.body.appendChild(el);\n el.select();\n const range = document.createRange();\n range.selectNodeContents(el);\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n el.setSelectionRange(0, el.value.length);\n document.execCommand('copy');\n }\n finally {\n document.body.removeChild(el);\n }\n }\n}\n\nexport { BrowserTransport as default };\n//# sourceMappingURL=anchor-link-browser-transport.m.js.map\n","\n/*! pako 2.0.3 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES = 30;\n/* number of distance codes */\n\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) =>\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n const next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nconst copy_block = (s, buf, len, header) =>\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending);\n s.pending += len;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) =>\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let lx = 0; /* running index in l_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) =>\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let black_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nconst _tr_flush_block = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally = (s, dist, lc) =>\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //let out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n};\n\nvar _tr_init_1 = _tr_init;\nvar _tr_stored_block_1 = _tr_stored_block;\nvar _tr_flush_block_1 = _tr_flush_block;\nvar _tr_tally_1 = _tr_tally;\nvar _tr_align_1 = _tr_align;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init: _tr_init$1, _tr_stored_block: _tr_stored_block$1, _tr_flush_block: _tr_flush_block$1, _tr_tally: _tr_tally$1, _tr_align: _tr_align$1 } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_PARTIAL_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_BLOCK,\n Z_OK, Z_STREAM_END, Z_STREAM_ERROR, Z_DATA_ERROR, Z_BUF_ERROR,\n Z_DEFAULT_COMPRESSION,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED: Z_FIXED$1, Z_DEFAULT_STRATEGY,\n Z_UNKNOWN: Z_UNKNOWN$1,\n Z_DEFLATED\n} = constants;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES$1 = 30;\n/* number of distance codes */\nconst BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nconst MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH$1 = 3;\nconst MAX_MATCH$1 = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42;\nconst EXTRA_STATE = 69;\nconst NAME_STATE = 73;\nconst COMMENT_STATE = 91;\nconst HCRC_STATE = 103;\nconst BUSY_STATE = 113;\nconst FINISH_STATE = 666;\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = messages[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero$1 = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block$1(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32_1(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32_1(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH$1;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH$1 - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n let max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n const max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n};\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally$1(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally$1(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally$1(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH$1 - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally$1(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally$1(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally$1(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally$1(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally$1(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE$1 * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nconst deflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN$1;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init$1(s);\n return Z_OK;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED$1) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n};\n\n\nconst deflate = (strm, flush) => {\n\n let beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n let header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n let bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align$1(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block$1(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n const status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH$1 - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2 = deflate;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n let i, out;\n const len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$1,\n Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1,\n Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n Z_DEFLATED: Z_DEFLATED$1\n} = constants;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n this.options = common.assign({\n level: Z_DEFAULT_COMPRESSION$1,\n method: Z_DEFLATED$1,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY$1\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = deflate_1.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK$1) {\n throw new Error(messages[status]);\n }\n\n if (opt.header) {\n deflate_1.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflate_1.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK$1) {\n throw new Error(messages[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH$1 : Z_NO_FLUSH$1;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH$1) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = deflate_1.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END$1) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = deflate_1.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK$1;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK$1) {\n this.result = common.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n const deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\n\nvar Deflate_1 = Deflate;\nvar deflate_2$1 = deflate$1;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar constants$1 = constants;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_2$1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD = 30; /* got a data error -- remain here until reset */\nconst TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n let base_index = 0;\n// let shoextra; /* extra bits table to use */\n let end; /* use base and extra for symbol > end */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n let extra_index = 0;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH: Z_FINISH$2, Z_BLOCK: Z_BLOCK$1, Z_TREES,\n Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2, Z_NEED_DICT, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR, Z_BUF_ERROR: Z_BUF_ERROR$1,\n Z_DEFLATED: Z_DEFLATED$2\n} = constants;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 1; /* i: waiting for magic header */\nconst FLAGS = 2; /* i: waiting for method and flags (gzip) */\nconst TIME = 3; /* i: waiting for modification time (gzip) */\nconst OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 5; /* i: waiting for extra length (gzip) */\nconst EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nconst NAME = 7; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 8; /* i: waiting for end of comment (gzip) */\nconst HCRC = 9; /* i: waiting for header crc (gzip) */\nconst DICTID = 10; /* i: waiting for dictionary check value */\nconst DICT = 11; /* waiting for inflateSetDictionary() call */\nconst TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 14; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 17; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 18; /* i: waiting for code length code lengths */\nconst CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 20; /* i: same as LEN below, but only first time in */\nconst LEN = 21; /* i: waiting for length/lit/eob code */\nconst LENEXT = 22; /* i: waiting for length extra bits */\nconst DIST = 23; /* i: waiting for distance code */\nconst DISTEXT = 24; /* i: waiting for distance extra bits */\nconst MATCH = 25; /* o: waiting for output space to copy string */\nconst LIT = 26; /* o: waiting for output space to write literal */\nconst CHECK = 27; /* i: waiting for 32-bit check value */\nconst LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 29; /* finished check, done -- remain here until reset */\nconst BAD$1 = 30; /* got a data error -- remain here until reset */\nconst MEM = 31; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS$1;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS$1);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$2;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$2) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inftrees(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inftrees(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$2;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$2) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$2) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32_1(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32_1(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32_1(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inftrees(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inftrees(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inftrees(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inffast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$2;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$2))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$2) && ret === Z_OK$2) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$2;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$2;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32_1(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$2;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2 = inflate;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\n*/\n\nvar inflate_1 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH: Z_NO_FLUSH$2, Z_FINISH: Z_FINISH$3,\n Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_MEM_ERROR: Z_MEM_ERROR$1\n} = constants;\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n this.options = common.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new zstream();\n this.strm.avail_out = 0;\n\n let status = inflate_1.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK$3) {\n throw new Error(messages[status]);\n }\n\n this.header = new gzheader();\n\n inflate_1.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflate_1.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK$3) {\n throw new Error(messages[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH$3 : Z_NO_FLUSH$2;\n\n // Convert data if needed\n if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate_1.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT$1 && dictionary) {\n status = inflate_1.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK$3) {\n status = inflate_1.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR$2) {\n // Replace code with more verbose\n status = Z_NEED_DICT$1;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END$3 &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n inflate_1.inflateReset(strm);\n status = inflate_1.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR$2:\n case Z_DATA_ERROR$2:\n case Z_NEED_DICT$1:\n case Z_MEM_ERROR$1:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END$3) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK$3 && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END$3) {\n status = inflate_1.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK$3) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = common.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n const inflator = new Inflate(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1 = Inflate;\nvar inflate_2$1 = inflate$1;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip = inflate$1;\nvar constants$2 = constants;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1,\n\tinflate: inflate_2$1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip,\n\tconstants: constants$2\n};\n\nconst { Deflate: Deflate$1, deflate: deflate$2, deflateRaw: deflateRaw$1, gzip: gzip$1 } = deflate_1$1;\n\nconst { Inflate: Inflate$1, inflate: inflate$2, inflateRaw: inflateRaw$1, ungzip: ungzip$1 } = inflate_1$1;\n\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_1$2 = deflate$2;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar Inflate_1$1 = Inflate$1;\nvar inflate_1$2 = inflate$2;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip_1 = ungzip$1;\nvar constants_1 = constants;\n\nvar pako = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_1$2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tInflate: Inflate_1$1,\n\tinflate: inflate_1$2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport default pako;\nexport { Deflate_1$1 as Deflate, Inflate_1$1 as Inflate, constants_1 as constants, deflate_1$2 as deflate, deflateRaw_1$1 as deflateRaw, gzip_1$1 as gzip, inflate_1$2 as inflate, inflateRaw_1$1 as inflateRaw, ungzip_1 as ungzip };\n","/**\n * Anchor Link v3.6.0\n * https://github.com/greymass/anchor-link\n *\n * @license\n * Copyright (c) 2020 Greymass Inc. All Rights Reserved.\n * \n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n * \n * 1. Redistribution of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n * \n * 2. Redistribution in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n * \n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n * \n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n * OF THE POSSIBILITY OF SUCH DAMAGE.\n * \n * YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE\n * IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.\n */\nimport zlib from 'pako';\nimport { Struct, UInt64, Checksum512, Serializer, Bytes, Checksum256, PermissionLevel, PublicKey, Name, PrivateKey, APIClient, Signature, SignedTransaction } from '@wharfkit/antelope';\nexport * from '@wharfkit/antelope';\nimport { ChainId, SigningRequest, ResolvedSigningRequest, PlaceholderName, PlaceholderPermission } from '@wharfkit/signing-request';\nexport * from '@wharfkit/signing-request';\nexport { ChainId, ChainName, IdentityProof } from '@wharfkit/signing-request';\nimport { __decorate } from 'tslib';\nimport makeFetch from 'fetch-ponyfill';\nimport { AES_CBC } from '@greymass/miniaes';\nimport { v4 } from 'uuid';\nimport WebSocket from 'isomorphic-ws';\n\n/**\n * Error that is thrown if a [[LinkTransport]] cancels a request.\n * @internal\n */\nclass CancelError extends Error {\n constructor(reason) {\n super(`User canceled request ${reason ? '(' + reason + ')' : ''}`);\n this.code = 'E_CANCEL';\n }\n}\n/**\n * Error that is thrown if an identity request fails to verify.\n * @internal\n */\nclass IdentityError extends Error {\n constructor(reason) {\n super(`Unable to verify identity ${reason ? '(' + reason + ')' : ''}`);\n this.code = 'E_IDENTITY';\n }\n}\n/**\n * Error originating from a [[LinkSession]].\n * @internal\n */\nclass SessionError extends Error {\n constructor(reason, code, session) {\n super(reason);\n this.code = code;\n this.session = session;\n }\n}\n\n/** @internal */\nvar LinkOptions;\n(function (LinkOptions) {\n /** @internal */\n LinkOptions.defaults = {\n service: 'https://cb.anchor.link',\n verifyProofs: false,\n encodeChainIds: true,\n };\n})(LinkOptions || (LinkOptions = {}));\n\nlet SealedMessage = class SealedMessage extends Struct {\n};\n__decorate([\n Struct.field('public_key')\n], SealedMessage.prototype, \"from\", void 0);\n__decorate([\n Struct.field('uint64')\n], SealedMessage.prototype, \"nonce\", void 0);\n__decorate([\n Struct.field('bytes')\n], SealedMessage.prototype, \"ciphertext\", void 0);\n__decorate([\n Struct.field('uint32')\n], SealedMessage.prototype, \"checksum\", void 0);\nSealedMessage = __decorate([\n Struct.type('sealed_message')\n], SealedMessage);\nlet LinkCreate = class LinkCreate extends Struct {\n};\n__decorate([\n Struct.field('name')\n], LinkCreate.prototype, \"session_name\", void 0);\n__decorate([\n Struct.field('public_key')\n], LinkCreate.prototype, \"request_key\", void 0);\n__decorate([\n Struct.field('string', { extension: true })\n], LinkCreate.prototype, \"user_agent\", void 0);\nLinkCreate = __decorate([\n Struct.type('link_create')\n], LinkCreate);\nlet LinkInfo = class LinkInfo extends Struct {\n};\n__decorate([\n Struct.field('time_point_sec')\n], LinkInfo.prototype, \"expiration\", void 0);\nLinkInfo = __decorate([\n Struct.type('link_info')\n], LinkInfo);\n\n/** @internal */\nconst fetch = makeFetch().fetch;\n/**\n * Encrypt a message using AES and shared secret derived from given keys.\n * @internal\n */\nfunction sealMessage(message, privateKey, publicKey, nonce) {\n const secret = privateKey.sharedSecret(publicKey);\n if (!nonce) {\n nonce = UInt64.random();\n }\n const key = Checksum512.hash(Serializer.encode({ object: nonce }).appending(secret.array));\n const cbc = new AES_CBC(key.array.slice(0, 32), key.array.slice(32, 48));\n const ciphertext = Bytes.from(cbc.encrypt(Bytes.from(message, 'utf8').array));\n const checksumView = new DataView(Checksum256.hash(key.array).array.buffer);\n const checksum = checksumView.getUint32(0, true);\n return SealedMessage.from({\n from: privateKey.toPublic(),\n nonce,\n ciphertext,\n checksum,\n });\n}\n/**\n * Extract session metadata from a callback payload and request.\n * @internal\n */\nfunction sessionMetadata(payload, request) {\n const metadata = {\n // backwards compat, can be removed next major release\n sameDevice: request.getRawInfo()['return_path'] !== undefined,\n };\n // append extra metadata from the signer\n if (payload.link_meta) {\n try {\n const parsed = JSON.parse(payload.link_meta);\n for (const key of Object.keys(parsed)) {\n // normalize key names to camelCase\n metadata[snakeToCamel(key)] = parsed[key];\n }\n }\n catch (error) {\n logWarn('Unable to parse link metadata', error, payload.link_meta);\n }\n }\n return metadata;\n}\n/**\n * Return PascalCase version of snake_case string.\n * @internal\n */\nfunction snakeToPascal(name) {\n return name\n .split('_')\n .map((v) => (v[0] ? v[0].toUpperCase() : '_') + v.slice(1))\n .join('');\n}\n/**\n * Return camelCase version of snake_case string.\n * @internal\n */\nfunction snakeToCamel(name) {\n const pascal = snakeToPascal(name);\n return pascal[0].toLowerCase() + pascal.slice(1);\n}\n/**\n * Print a warning message to console.\n * @internal\n **/\nfunction logWarn(...args) {\n // eslint-disable-next-line no-console\n console.warn('[anchor-link]', ...args);\n}\n\n/**\n * Type describing a link session that can create a eosjs compatible\n * signature provider and transact for a specific auth.\n */\nclass LinkSession {\n /** @internal */\n constructor() { } // eslint-disable-line @typescript-eslint/no-empty-function\n /**\n * Convenience, remove this session from associated [[Link]] storage if set.\n * Equivalent to:\n * ```ts\n * session.link.removeSession(session.identifier, session.auth, session.chainId)\n * ```\n */\n async remove() {\n if (this.link.storage) {\n await this.link.removeSession(this.identifier, this.auth, this.chainId);\n }\n }\n /** API client for the chain this session is valid on. */\n get client() {\n return this.link.getChain(this.chainId).client;\n }\n /** Restore a previously serialized session. */\n static restore(link, data) {\n switch (data.type) {\n case 'channel':\n return new LinkChannelSession(link, data.data, data.metadata);\n case 'fallback':\n return new LinkFallbackSession(link, data.data, data.metadata);\n default:\n throw new Error('Unable to restore, session data invalid');\n }\n }\n}\n/**\n * Link session that pushes requests over a channel.\n * @internal\n */\nclass LinkChannelSession extends LinkSession {\n constructor(link, data, metadata) {\n super();\n this.type = 'channel';\n this.timeout = 2 * 60 * 1000; // ms\n this.link = link;\n this.chainId = ChainId.from(data.chainId);\n this.auth = PermissionLevel.from(data.auth);\n this.publicKey = PublicKey.from(data.publicKey);\n this.identifier = Name.from(data.identifier);\n const privateKey = PrivateKey.from(data.requestKey);\n this.channelKey = PublicKey.from(data.channel.key);\n this.channelUrl = data.channel.url;\n this.channelName = data.channel.name;\n this.encrypt = (request) => {\n return sealMessage(request.encode(true, false), privateKey, this.channelKey);\n };\n this.metadata = {\n ...(metadata || {}),\n timeout: this.timeout,\n name: this.channelName,\n request_key: privateKey.toPublic(),\n };\n this.serialize = () => ({\n type: 'channel',\n data: {\n ...data,\n channel: {\n url: this.channelUrl,\n key: this.channelKey,\n name: this.channelName,\n },\n },\n metadata: this.metadata,\n });\n }\n onSuccess(request, result) {\n if (this.link.transport.onSuccess) {\n this.link.transport.onSuccess(request, result);\n }\n }\n onFailure(request, error) {\n if (this.link.transport.onFailure) {\n this.link.transport.onFailure(request, error);\n }\n }\n onRequest(request, cancel) {\n const info = LinkInfo.from({\n expiration: new Date(Date.now() + this.timeout),\n });\n if (this.link.transport.onSessionRequest) {\n this.link.transport.onSessionRequest(this, request, cancel);\n }\n const timer = setTimeout(() => {\n cancel(new SessionError('Wallet did not respond in time', 'E_TIMEOUT', this));\n }, this.timeout);\n request.setInfoKey('link', info);\n let payloadSent = false;\n const payload = Serializer.encode({ object: this.encrypt(request) });\n if (this.link.transport.sendSessionPayload) {\n try {\n payloadSent = this.link.transport.sendSessionPayload(payload, this);\n }\n catch (error) {\n logWarn('Unexpected error when transport tried to send session payload', error);\n }\n }\n if (payloadSent) {\n return;\n }\n fetch(this.channelUrl, {\n method: 'POST',\n headers: {\n 'X-Buoy-Soft-Wait': '10',\n },\n body: payload.array,\n })\n .then((response) => {\n if (Math.floor(response.status / 100) !== 2) {\n clearTimeout(timer);\n if (response.status === 202) {\n logWarn('Missing delivery ack from session channel');\n }\n cancel(new SessionError('Unable to push message', 'E_DELIVERY', this));\n }\n })\n .catch((error) => {\n clearTimeout(timer);\n cancel(new SessionError(`Unable to reach link service (${error.message || String(error)})`, 'E_DELIVERY', this));\n });\n }\n addLinkInfo(request) {\n const createInfo = LinkCreate.from({\n session_name: this.identifier,\n request_key: this.metadata.request_key,\n user_agent: this.link.getUserAgent(),\n });\n request.setInfoKey('link', createInfo);\n }\n prepare(request) {\n if (this.link.transport.prepare) {\n return this.link.transport.prepare(request, this);\n }\n return Promise.resolve(request);\n }\n showLoading() {\n if (this.link.transport.showLoading) {\n return this.link.transport.showLoading();\n }\n }\n recoverError(error, request) {\n if (this.link.transport.recoverError) {\n return this.link.transport.recoverError(error, request);\n }\n return false;\n }\n makeSignatureProvider() {\n return this.link.makeSignatureProvider([this.publicKey.toString()], this.chainId, this);\n }\n async transact(args, options) {\n const res = await this.link.transact(args, { ...options, chain: this.chainId }, this);\n // update session if callback payload contains new channel info\n if (res.payload.link_ch && res.payload.link_key && res.payload.link_name) {\n try {\n const metadata = {\n ...this.metadata,\n ...sessionMetadata(res.payload, res.resolved.request),\n };\n this.channelUrl = res.payload.link_ch;\n this.channelKey = PublicKey.from(res.payload.link_key);\n this.channelName = res.payload.link_name;\n metadata.name = res.payload.link_name;\n this.metadata = metadata;\n }\n catch (error) {\n logWarn('Unable to recover link session', error);\n }\n }\n return res;\n }\n}\n/**\n * Link session that sends every request over the transport.\n * @internal\n */\nclass LinkFallbackSession extends LinkSession {\n constructor(link, data, metadata) {\n super();\n this.type = 'fallback';\n this.link = link;\n this.auth = PermissionLevel.from(data.auth);\n this.publicKey = PublicKey.from(data.publicKey);\n this.chainId = ChainId.from(data.chainId);\n this.metadata = metadata || {};\n this.identifier = Name.from(data.identifier);\n this.serialize = () => ({\n type: this.type,\n data,\n metadata: this.metadata,\n });\n }\n onSuccess(request, result) {\n if (this.link.transport.onSuccess) {\n this.link.transport.onSuccess(request, result);\n }\n }\n onFailure(request, error) {\n if (this.link.transport.onFailure) {\n this.link.transport.onFailure(request, error);\n }\n }\n onRequest(request, cancel) {\n if (this.link.transport.onSessionRequest) {\n this.link.transport.onSessionRequest(this, request, cancel);\n }\n else {\n this.link.transport.onRequest(request, cancel);\n }\n }\n prepare(request) {\n if (this.link.transport.prepare) {\n return this.link.transport.prepare(request, this);\n }\n return Promise.resolve(request);\n }\n showLoading() {\n if (this.link.transport.showLoading) {\n return this.link.transport.showLoading();\n }\n }\n makeSignatureProvider() {\n return this.link.makeSignatureProvider([this.publicKey.toString()], this.chainId, this);\n }\n transact(args, options) {\n return this.link.transact(args, { ...options, chain: this.chainId }, this);\n }\n}\n\n/** @internal */\nclass BuoyCallbackService {\n constructor(address) {\n this.address = address.trim().replace(/\\/$/, '');\n }\n create() {\n const url = `${this.address}/${v4()}`;\n return new BuoyCallback(url);\n }\n}\n/** @internal */\nclass BuoyCallback {\n constructor(url) {\n this.url = url;\n this.ctx = {};\n }\n wait() {\n if (this.url.includes('hyperbuoy')) {\n return pollForCallback(this.url, this.ctx);\n }\n else {\n return waitForCallback(this.url, this.ctx);\n }\n }\n cancel() {\n if (this.ctx.cancel) {\n this.ctx.cancel();\n }\n }\n}\n/**\n * Connect to a WebSocket channel and wait for a message.\n * @internal\n */\nfunction waitForCallback(url, ctx) {\n return new Promise((resolve, reject) => {\n let active = true;\n let retries = 0;\n const socketUrl = url.replace(/^http/, 'ws');\n const handleResponse = (response) => {\n try {\n resolve(JSON.parse(response));\n }\n catch (error) {\n error.message = 'Unable to parse callback JSON: ' + error.message;\n reject(error);\n }\n };\n const connect = () => {\n const socket = new WebSocket(socketUrl);\n ctx.cancel = () => {\n active = false;\n if (socket.readyState === WebSocket.OPEN ||\n socket.readyState === WebSocket.CONNECTING) {\n socket.close();\n }\n };\n socket.onmessage = (event) => {\n active = false;\n if (socket.readyState === WebSocket.OPEN) {\n socket.close();\n }\n if (typeof Blob !== 'undefined' && event.data instanceof Blob) {\n const reader = new FileReader();\n reader.onload = () => {\n handleResponse(reader.result);\n };\n reader.onerror = (error) => {\n reject(error);\n };\n reader.readAsText(event.data);\n }\n else {\n if (typeof event.data === 'string') {\n handleResponse(event.data);\n }\n else {\n handleResponse(event.data.toString());\n }\n }\n };\n socket.onopen = () => {\n retries = 0;\n };\n socket.onclose = () => {\n if (active) {\n setTimeout(connect, backoff(retries++));\n }\n };\n };\n connect();\n });\n}\n/**\n * Long-poll for message.\n * @internal\n */\nasync function pollForCallback(url, ctx) {\n let active = true;\n ctx.cancel = () => {\n active = false;\n };\n while (active) {\n try {\n const res = await fetch(url);\n if (res.status === 408) {\n continue;\n }\n else if (res.status === 200) {\n return await res.json();\n }\n else {\n throw new Error(`HTTP ${res.status}: ${res.statusText}`);\n }\n }\n catch (error) {\n logWarn('Unexpected hyperbuoy error', error);\n }\n await sleep(1000);\n }\n return null;\n}\n/**\n * Exponential backoff function that caps off at 10s after 10 tries.\n * https://i.imgur.com/IrUDcJp.png\n * @internal\n */\nfunction backoff(tries) {\n return Math.min(Math.pow(tries * 10, 2), 10 * 1000);\n}\n/**\n * Return promise that resolves after given milliseconds.\n * @internal\n */\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Class representing a EOSIO chain.\n */\nclass LinkChain {\n /** @internal */\n constructor(chainId, clientOrUrl) {\n this.abiCache = new Map();\n this.pendingAbis = new Map();\n this.chainId = ChainId.from(chainId);\n this.client =\n typeof clientOrUrl === 'string' ? new APIClient({ url: clientOrUrl }) : clientOrUrl;\n }\n /**\n * Fetch the ABI for given account, cached.\n * @internal\n */\n async getAbi(account) {\n const key = String(account);\n let rv = this.abiCache.get(key);\n if (!rv) {\n let getAbi = this.pendingAbis.get(key);\n if (!getAbi) {\n getAbi = this.client.v1.chain.get_abi(account);\n this.pendingAbis.set(key, getAbi);\n }\n rv = (await getAbi).abi;\n this.pendingAbis.delete(key);\n if (rv) {\n this.abiCache.set(key, rv);\n }\n }\n return rv;\n }\n}\n/**\n * Anchor Link main class.\n *\n * @example\n *\n * ```ts\n * import AnchorLink from 'anchor-link'\n * import ConsoleTransport from 'anchor-link-console-transport'\n *\n * const link = new AnchorLink({\n * transport: new ConsoleTransport(),\n * chains: [\n * {\n * chainId: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',\n * nodeUrl: 'https://eos.greymass.com',\n * },\n * ],\n * })\n *\n * const result = await link.transact({actions: myActions})\n * ```\n */\nclass Link {\n /** Create a new link instance. */\n constructor(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Missing options object');\n }\n if (!options.transport) {\n throw new TypeError('options.transport is required');\n }\n let chains = options.chains || [];\n if (options.chainId && options.client) {\n if (options.chains.length > 0) {\n throw new TypeError('options.chainId and options.client are deprecated and cannot be used together with options.chains');\n }\n chains = [{ chainId: options.chainId, nodeUrl: options.client }];\n }\n if (chains.length === 0) {\n throw new TypeError('options.chains is required');\n }\n this.chains = chains.map((chain) => {\n if (chain instanceof LinkChain) {\n return chain;\n }\n if (!chain.chainId) {\n throw new TypeError('options.chains[].chainId is required');\n }\n if (!chain.nodeUrl) {\n throw new TypeError('options.chains[].nodeUrl is required');\n }\n return new LinkChain(chain.chainId, chain.nodeUrl);\n });\n if (options.service === undefined || typeof options.service === 'string') {\n this.callbackService = new BuoyCallbackService(options.service || LinkOptions.defaults.service);\n }\n else {\n this.callbackService = options.service;\n }\n this.transport = options.transport;\n if (options.storage !== null) {\n this.storage = options.storage || this.transport.storage;\n }\n this.verifyProofs =\n options.verifyProofs !== undefined\n ? options.verifyProofs\n : LinkOptions.defaults.verifyProofs;\n this.encodeChainIds =\n options.encodeChainIds !== undefined\n ? options.encodeChainIds\n : LinkOptions.defaults.encodeChainIds;\n }\n /**\n * The APIClient instance for communicating with the node.\n * @note This returns the first APIClient when link is configured with multiple chains.\n */\n get client() {\n return this.chains[0].client;\n }\n /**\n * Return a [[LinkChain]] object for given chainId or chain reference.\n * @throws If this link instance has no configured chain for given reference.\n * @internal\n */\n getChain(chain) {\n if (chain instanceof LinkChain) {\n return chain;\n }\n if (typeof chain === 'number') {\n const rv = this.chains[chain];\n if (!rv) {\n throw new Error(`Invalid chain index: ${chain}`);\n }\n return rv;\n }\n const id = ChainId.from(chain);\n const rv = this.chains.find((c) => c.chainId.equals(id));\n if (!rv) {\n throw new Error(`Unsupported chain: ${id}`);\n }\n return rv;\n }\n /**\n * Create a SigningRequest instance configured for this link.\n * @internal\n */\n async createRequest(args, chain, transport) {\n const t = transport || this.transport;\n let request;\n if (chain || this.chains.length === 1) {\n const c = chain || this.chains[0];\n request = await SigningRequest.create({\n ...args,\n chainId: c.chainId,\n broadcast: false,\n }, { abiProvider: c, zlib });\n }\n else {\n // multi-chain request\n request = await SigningRequest.create({\n ...args,\n chainId: null,\n chainIds: this.encodeChainIds ? this.chains.map((c) => c.chainId) : undefined,\n broadcast: false,\n }, \n // abi's will be pulled from the first chain and assumed to be identical on all chains\n { abiProvider: this.chains[0], zlib });\n }\n if (t.prepare) {\n request = await t.prepare(request);\n }\n const callback = this.callbackService.create();\n request.setCallback(callback.url, true);\n return { request, callback };\n }\n /**\n * Send a SigningRequest instance using this link.\n * @internal\n */\n async sendRequest(request, callback, chain, transport, broadcast = false) {\n const t = transport || this.transport;\n try {\n const linkUrl = request.data.callback;\n if (linkUrl !== callback.url) {\n throw new Error('Invalid request callback');\n }\n if (request.data.flags.broadcast === true || request.data.flags.background === false) {\n throw new Error('Invalid request flags');\n }\n // wait for callback or user cancel\n let done = false;\n const cancel = new Promise((resolve, reject) => {\n t.onRequest(request, (reason) => {\n if (done) {\n // ignore any cancel calls once callbackResponse below has resolved\n return;\n }\n const error = typeof reason === 'string' ? new CancelError(reason) : reason;\n if (t.recoverError && t.recoverError(error, request) === true) {\n // transport was able to recover from the error\n return;\n }\n callback.cancel();\n reject(error);\n });\n });\n const callbackResponse = await Promise.race([callback.wait(), cancel]);\n done = true;\n if (typeof callbackResponse.rejected === 'string') {\n throw new CancelError(callbackResponse.rejected);\n }\n const payload = callbackResponse;\n const signer = PermissionLevel.from({\n actor: payload.sa,\n permission: payload.sp,\n });\n const signatures = Object.keys(payload)\n .filter((key) => key.startsWith('sig') && key !== 'sig0')\n .map((key) => Signature.from(payload[key]));\n let c;\n if (!chain && this.chains.length > 1) {\n if (!payload.cid) {\n throw new Error('Multi chain response payload must specify resolved chain id (cid)');\n }\n c = this.getChain(payload.cid);\n }\n else {\n c = chain || this.getChain(0);\n if (payload.cid && !c.chainId.equals(payload.cid)) {\n throw new Error('Got response for wrong chain id');\n }\n }\n // recreate transaction from request response\n const resolved = await ResolvedSigningRequest.fromPayload(payload, {\n zlib,\n abiProvider: c,\n });\n // prepend cosigner signature if present\n const cosignerSig = resolved.request.getInfoKey('cosig', {\n type: Signature,\n array: true,\n });\n if (cosignerSig) {\n signatures.unshift(...cosignerSig);\n }\n const result = {\n resolved,\n chain: c,\n transaction: resolved.transaction,\n resolvedTransaction: resolved.resolvedTransaction,\n signatures,\n payload,\n signer,\n };\n if (broadcast) {\n const signedTx = SignedTransaction.from({\n ...resolved.transaction,\n signatures,\n });\n const res = await c.client.v1.chain.push_transaction(signedTx);\n result.processed = res.processed;\n }\n if (t.onSuccess) {\n t.onSuccess(request, result);\n }\n return result;\n }\n catch (error) {\n if (t.onFailure) {\n t.onFailure(request, error);\n }\n throw error;\n }\n }\n /**\n * Sign and optionally broadcast a EOSIO transaction, action or actions.\n *\n * Example:\n *\n * ```ts\n * let result = await myLink.transact({transaction: myTx})\n * ```\n *\n * @param args The action, actions or transaction to use.\n * @param options Options for this transact call.\n * @param transport Transport override, for internal use.\n */\n async transact(args, options, transport) {\n const o = options || {};\n const t = transport || this.transport;\n const c = o.chain !== undefined ? this.getChain(o.chain) : undefined;\n const broadcast = o.broadcast !== false;\n const noModify = o.noModify !== undefined ? o.noModify : !broadcast;\n // Initialize the loading state of the transport\n if (t && t.showLoading) {\n t.showLoading();\n }\n // eosjs transact compat: upgrade to transaction if args have any header fields\n const anyArgs = args;\n if (args.actions &&\n (anyArgs.expiration ||\n anyArgs.ref_block_num ||\n anyArgs.ref_block_prefix ||\n anyArgs.max_net_usage_words ||\n anyArgs.max_cpu_usage_ms ||\n anyArgs.delay_sec)) {\n args = {\n transaction: {\n expiration: '1970-01-01T00:00:00',\n ref_block_num: 0,\n ref_block_prefix: 0,\n max_net_usage_words: 0,\n max_cpu_usage_ms: 0,\n delay_sec: 0,\n ...anyArgs,\n },\n };\n }\n const { request, callback } = await this.createRequest(args, c, t);\n if (noModify) {\n request.setInfoKey('no_modify', true, 'bool');\n }\n const result = await this.sendRequest(request, callback, c, t, broadcast);\n return result;\n }\n /**\n * Send an identity request and verify the identity proof if [[LinkOptions.verifyProofs]] is true.\n * @param args.scope The scope of the identity request.\n * @param args.requestPermission Optional request permission if the request is for a specific account or permission.\n * @param args.info Metadata to add to the request.\n * @note This is for advanced use-cases, you probably want to use [[Link.login]] instead.\n */\n async identify(args) {\n const { request, callback } = await this.createRequest({\n identity: { permission: args.requestPermission, scope: args.scope },\n info: args.info,\n });\n const res = await this.sendRequest(request, callback);\n if (!res.resolved.request.isIdentity()) {\n throw new IdentityError('Unexpected response');\n }\n let account;\n const proof = res.resolved.getIdentityProof(res.signatures[0]);\n if (this.verifyProofs) {\n account = await res.chain.client.v1.chain.get_account(res.signer.actor);\n if (!account) {\n throw new IdentityError(`Signature from unknown account: ${proof.signer.actor}`);\n }\n const accountPermission = account.permissions.find(({ perm_name }) => proof.signer.permission.equals(perm_name));\n if (!accountPermission) {\n throw new IdentityError(`${proof.signer.actor} signed for unknown permission: ${proof.signer.permission}`);\n }\n const proofValid = proof.verify(accountPermission.required_auth, account.head_block_time);\n if (!proofValid) {\n throw new IdentityError(`Invalid identify proof for: ${proof.signer}`);\n }\n }\n if (args.requestPermission) {\n const perm = PermissionLevel.from(args.requestPermission);\n if ((!perm.actor.equals(PlaceholderName) && !perm.actor.equals(proof.signer.actor)) ||\n (!perm.permission.equals(PlaceholderPermission) &&\n !perm.permission.equals(proof.signer.permission))) {\n throw new IdentityError(`Identity proof singed by ${proof.signer}, expected: ${formatAuth(perm)} `);\n }\n }\n return {\n ...res,\n account,\n proof,\n };\n }\n /**\n * Login and create a persistent session.\n * @param identifier The session identifier, an EOSIO name (`[a-z1-5]{1,12}`).\n * Should be set to the contract account if applicable.\n */\n async login(identifier) {\n const privateKey = PrivateKey.generate('K1');\n const requestKey = privateKey.toPublic();\n const createInfo = LinkCreate.from({\n session_name: identifier,\n request_key: requestKey,\n user_agent: this.getUserAgent(),\n });\n const res = await this.identify({\n scope: identifier,\n info: {\n link: createInfo,\n scope: identifier,\n },\n });\n const metadata = sessionMetadata(res.payload, res.resolved.request);\n const signerKey = res.proof.recover();\n let session;\n if (res.payload.link_ch && res.payload.link_key && res.payload.link_name) {\n session = new LinkChannelSession(this, {\n identifier,\n chainId: res.chain.chainId,\n auth: res.signer,\n publicKey: signerKey,\n channel: {\n url: res.payload.link_ch,\n key: res.payload.link_key,\n name: res.payload.link_name,\n },\n requestKey: privateKey,\n }, metadata);\n }\n else {\n session = new LinkFallbackSession(this, {\n identifier,\n chainId: res.chain.chainId,\n auth: res.signer,\n publicKey: signerKey,\n }, metadata);\n }\n await this.storeSession(session);\n return {\n ...res,\n session,\n };\n }\n /**\n * Restore previous session, use [[login]] to create a new session.\n * @param identifier The session identifier, must be same as what was used when creating the session with [[login]].\n * @param auth A specific session auth to restore, if omitted the most recently used session will be restored.\n * @param chainId If given function will only consider that specific chain when restoring session.\n * @returns A [[LinkSession]] instance or null if no session can be found.\n * @throws If no [[LinkStorage]] adapter is configured or there was an error retrieving the session data.\n **/\n async restoreSession(identifier, auth, chainId) {\n if (!this.storage) {\n throw new Error('Unable to restore session: No storage adapter configured');\n }\n let key;\n if (auth && chainId) {\n // both auth and chain id given, we can look up on specific key\n key = this.sessionKey(identifier, formatAuth(PermissionLevel.from(auth)), String(ChainId.from(chainId)));\n }\n else {\n // otherwise we use the session list to filter down to most recently used matching given params\n let list = await this.listSessions(identifier);\n if (auth) {\n list = list.filter((item) => item.auth.equals(auth));\n }\n if (chainId) {\n const id = ChainId.from(chainId);\n list = list.filter((item) => item.chainId.equals(id));\n }\n const latest = list[0];\n if (!latest) {\n return null;\n }\n key = this.sessionKey(identifier, formatAuth(latest.auth), String(latest.chainId));\n }\n const data = await this.storage.read(key);\n if (!data) {\n return null;\n }\n let sessionData;\n try {\n sessionData = JSON.parse(data);\n }\n catch (error) {\n throw new Error(`Unable to restore session: Stored JSON invalid (${error.message || String(error)})`);\n }\n const session = LinkSession.restore(this, sessionData);\n if (auth || chainId) {\n // update latest used\n await this.touchSession(identifier, session.auth, session.chainId);\n }\n return session;\n }\n /**\n * List stored session auths for given identifier.\n * The most recently used session is at the top (index 0).\n * @throws If no [[LinkStorage]] adapter is configured or there was an error retrieving the session list.\n **/\n async listSessions(identifier) {\n if (!this.storage) {\n throw new Error('Unable to list sessions: No storage adapter configured');\n }\n const key = this.sessionKey(identifier, 'list');\n let list;\n try {\n list = JSON.parse((await this.storage.read(key)) || '[]');\n }\n catch (error) {\n throw new Error(`Unable to list sessions: ${error.message || String(error)}`);\n }\n return list.map(({ auth, chainId }) => ({\n auth: PermissionLevel.from(auth),\n chainId: ChainId.from(chainId),\n }));\n }\n /**\n * Remove stored session for given identifier and auth.\n * @throws If no [[LinkStorage]] adapter is configured or there was an error removing the session data.\n */\n async removeSession(identifier, auth, chainId) {\n if (!this.storage) {\n throw new Error('Unable to remove session: No storage adapter configured');\n }\n const key = this.sessionKey(identifier, formatAuth(auth), String(chainId));\n await this.storage.remove(key);\n await this.touchSession(identifier, auth, chainId, true);\n }\n /**\n * Remove all stored sessions for given identifier.\n * @throws If no [[LinkStorage]] adapter is configured or there was an error removing the session data.\n */\n async clearSessions(identifier) {\n if (!this.storage) {\n throw new Error('Unable to clear sessions: No storage adapter configured');\n }\n for (const { auth, chainId } of await this.listSessions(identifier)) {\n await this.removeSession(identifier, auth, chainId);\n }\n }\n /**\n * Create an eosjs compatible signature provider using this link.\n * @param availableKeys Keys the created provider will claim to be able to sign for.\n * @param chain Chain to use when configured with multiple chains.\n * @param transport (internal) Transport override for this call.\n * @note We don't know what keys are available so those have to be provided,\n * to avoid this use [[LinkSession.makeSignatureProvider]] instead. Sessions can be created with [[Link.login]].\n */\n makeSignatureProvider(availableKeys, chain, transport) {\n return {\n getAvailableKeys: async () => availableKeys,\n sign: async (args) => {\n const t = transport || this.transport;\n const c = chain ? this.getChain(chain) : this.chains[0];\n let request = SigningRequest.fromTransaction(args.chainId, args.serializedTransaction, { abiProvider: c, zlib });\n const callback = this.callbackService.create();\n request.setCallback(callback.url, true);\n request.setBroadcast(false);\n if (t.prepare) {\n request = await t.prepare(request);\n }\n const { transaction, signatures } = await this.sendRequest(request, callback, c, t);\n const serializedTransaction = Serializer.encode({ object: transaction });\n return {\n ...args,\n serializedTransaction,\n signatures,\n };\n },\n };\n }\n /** Makes sure session is in storage list of sessions and moves it to top (most recently used). */\n async touchSession(identifier, auth, chainId, remove = false) {\n const list = await this.listSessions(identifier);\n const existing = list.findIndex((item) => item.auth.equals(auth) && item.chainId.equals(chainId));\n if (existing >= 0) {\n list.splice(existing, 1);\n }\n if (remove === false) {\n list.unshift({ auth, chainId });\n }\n const key = this.sessionKey(identifier, 'list');\n await this.storage.write(key, JSON.stringify(list));\n }\n /**\n * Makes sure session is in storage list of sessions and moves it to top (most recently used).\n * @internal\n */\n async storeSession(session) {\n if (this.storage) {\n const key = this.sessionKey(session.identifier, formatAuth(session.auth), String(session.chainId));\n const data = JSON.stringify(session.serialize());\n await this.storage.write(key, data);\n await this.touchSession(session.identifier, session.auth, session.chainId);\n }\n }\n /** Session storage key for identifier and suffix. */\n sessionKey(identifier, ...suffix) {\n return [String(Name.from(identifier)), ...suffix].join('-');\n }\n /**\n * Return user agent of this link.\n * @internal\n */\n getUserAgent() {\n let rv = `AnchorLink/${Link.version}`;\n if (this.transport.userAgent) {\n rv += ' ' + this.transport.userAgent();\n }\n return rv;\n }\n}\n/** Package version. */\nLink.version = '3.6.0'; // eslint-disable-line @typescript-eslint/no-inferrable-types\n/**\n * Format a EOSIO permission level in the format `actor@permission` taking placeholders into consideration.\n * @internal\n */\nfunction formatAuth(auth) {\n const a = PermissionLevel.from(auth);\n const actor = a.actor.equals(PlaceholderName) ? '' : String(a.actor);\n let permission;\n if (a.permission.equals(PlaceholderName) || a.permission.equals(PlaceholderPermission)) {\n permission = '';\n }\n else {\n permission = String(a.permission);\n }\n return `${actor}@${permission}`;\n}\n\n// export library\n\nexport { CancelError, IdentityError, Link, LinkChain, LinkChannelSession, LinkFallbackSession, LinkSession, SessionError, Link as default };\n//# sourceMappingURL=anchor-link.m.js.map\n","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nmodule.exports = ws\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\nvar AssertionError = require('./internal/assert/assertion_error');\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\nvar objectAssign = require('object.assign/polyfill')();\nvar objectIs = require('object-is/polyfill')();\nvar RegExpPrototypeTest = require('call-bind/callBound')('RegExp.prototype.test');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n}\n\n// Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\nvar warned = false;\n\n// The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {};\n\n// All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n if (argsLen === 2) operator = '!=';\n }\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n if (message !== undefined) {\n errArgs.message = message;\n }\n var err = new AssertionError(errArgs);\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n throw err;\n}\nassert.fail = fail;\n\n// The AssertionError is defined in internal/error.\nassert.AssertionError = AssertionError;\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\n\n// Pure assertion tests whether a value is truthy, as determined\n// by !!value.\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\nassert.ok = ok;\n\n// The equality assertion tests shallow, coercive equality with ==.\n/* eslint-disable no-restricted-properties */\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n};\n\n// The non-equality assertion tests for whether two objects are not\n// equal with !=.\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n};\n\n// The equivalence assertion tests a deep equality relation.\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n};\n\n// The non-equivalence assertion tests for any deep inequality.\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\nvar Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {\n var _this = this;\n _classCallCheck(this, Comparison);\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n});\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n // assert.doesNotThrow does not accept objects.\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n }\n\n // Handle primitives properly.\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n var keys = Object.keys(expected);\n // Special handle errors to make sure the name and the message are compared\n // as well.\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n return;\n }\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n }\n // Guard instanceof against arrow functions as they don't have a prototype.\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n}\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n try {\n fn();\n } catch (e) {\n return e;\n }\n return NO_EXCEPTION_SENTINEL;\n}\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn();\n // Fail in case no promise is returned.\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n throw actual;\n}\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n });\n\n // Make sure we actually have a stack trace!\n var origStack = err.stack;\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift();\n // Filter all frames existing in err.stack.\n var tmp1 = newErr.stack.split('\\n');\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n throw newErr;\n }\n};\n\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb\nfunction internalMatch(string, regexp, message, fn, fnName) {\n if (!isRegExp(regexp)) {\n throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);\n }\n var match = fnName === 'match';\n if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {\n if (message instanceof Error) {\n throw message;\n }\n var generatedMessage = !message;\n\n // 'The input was expected to not match the regular expression ' +\n message = message || (typeof string !== 'string' ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n var err = new AssertionError({\n actual: string,\n expected: regexp,\n message: message,\n operator: fnName,\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\nassert.match = function match(string, regexp, message) {\n internalMatch(string, regexp, message, match, 'match');\n};\nassert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');\n};\n\n// Expose a strict only variant of assert\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n'use strict';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\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); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _require = require('util/'),\n inspect = _require.inspect;\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n}\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n};\n\n// Comparing short primitives should just show === / !== instead of using the\n// diff.\nvar kMaxShortLength = 10;\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = '';\n\n // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n }\n\n // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length;\n // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n }\n // Ignore the first characters.\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n }\n\n // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n var maxLines = Math.max(actualLines.length, expectedLines.length);\n // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n');\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the expected line to the cache.\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++;\n // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++;\n // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i];\n // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);\n // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2;\n // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = '';\n // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n }\n // Inspected object to big (Show ~20 rows max)\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\nvar AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {\n _inherits(AssertionError, _Error);\n var _super = _createSuper(AssertionError);\n function AssertionError(options) {\n var _this;\n _classCallCheck(this, AssertionError);\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n if (message != null) {\n _this = _super.call(this, String(message));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n }\n // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _super.call(this, createErrDiff(actual, expected, operator));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n');\n\n // In case \"actual\" is an object, it should not be reference equal.\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n }\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n while (res.length > 27) {\n res.pop();\n }\n }\n\n // Only print a single input.\n if (res.length === 1) {\n _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n } else {\n _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\"));\n }\n } else {\n var _res = inspectValue(actual);\n var other = '';\n var knownOperators = kReadableOperator[operator];\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n _this = _super.call(this, \"\".concat(_res).concat(other));\n }\n }\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n }\n // Create error message including the error code in the name.\n _this.stack;\n // Reset the name.\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: _inspect$custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n return AssertionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n/* eslint node-core/alphabetize-errors: \"error\" */\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n\n'use strict';\n\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar codes = {};\n\n// Lazy loaded\nvar assert;\nvar util;\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\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 var NodeError = /*#__PURE__*/function (_Base) {\n _inherits(NodeError, _Base);\n var _super = _createSuper(NodeError);\n function NodeError(arg1, arg2, arg3) {\n var _this;\n _classCallCheck(this, NodeError);\n _this = _super.call(this, getMessage(arg1, arg2, arg3));\n _this.code = code;\n return _this;\n }\n return _createClass(NodeError);\n }(Base);\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\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 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}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\");\n\n // determiner: 'must be' or 'must not be'\n var determiner;\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 var msg;\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 // TODO(BridgeAR): Improve the output by showing `null` and similar.\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar regexFlagsSupported = /a/g.flags !== undefined;\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n }\n // The maximum size for an array is 2 ** 32 -1.\n return key.length === 10 && key >= Math.pow(2, 32);\n}\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n}\n\n// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3;\n\n// Check if they have the same source and flags\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n return true;\n}\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n}\n\n// Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n }\n\n // Check more closely if val1 and val2 are equal.\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n return false;\n }\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n if (val1Tag !== val2Tag) {\n return false;\n }\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n }\n // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n }\n // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (_keys.length !== _keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2);\n\n // The pair must have the same number of owned properties.\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n }\n\n // Cheap key test\n var i = 0;\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n if (symbolKeysA.length !== 0) {\n var count = 0;\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n }\n\n // Use memos to handle cycles.\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n memos.position++;\n }\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n return false;\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n case 'object':\n // Only pass in null as object!\n return undefined;\n case 'symbol':\n return false;\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n }\n return true;\n}\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = b.get(altValue);\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i];\n // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n }\n // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false;\n\n // Fast path to detect missing string, symbol, undefined and null values.\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n if (set === null) {\n set = new Set();\n }\n set.add(val);\n }\n }\n if (set !== null) {\n var bValues = arrayFromSet(b);\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i];\n // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n return false;\n}\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false;\n // Fast path to detect missing string, symbol, undefined and null\n // keys.\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n }\n }\n }\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n _key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n if (_typeof(_key) === 'object' && _key !== null) {\n if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n return true;\n }\n }\n }\n\n // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n for (i = 0; i < keys.length; i++) {\n var _key2 = keys[i];\n if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n return false;\n }\n }\n return true;\n}\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (psz < source.length) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","// (public) Constructor\nfunction BigInteger(a, b, c) {\n if (!(this instanceof BigInteger))\n return new BigInteger(a, b, c)\n\n if (a != null) {\n if (\"number\" == typeof a) this.fromNumber(a, b, c)\n else if (b == null && \"string\" != typeof a) this.fromString(a, 256)\n else this.fromString(a, b)\n }\n}\n\nvar proto = BigInteger.prototype\n\n// duck-typed isBigInteger\nproto.__bigi = require('../package.json').version\nBigInteger.isBigInteger = function (obj, check_ver) {\n return obj && obj.__bigi && (!check_ver || obj.__bigi === proto.__bigi)\n}\n\n// Bits per digit\nvar dbits\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c\n c = Math.floor(v / 0x4000000)\n w[j++] = v & 0x3ffffff\n }\n return c\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff,\n xh = x >> 15\n while (--n >= 0) {\n var l = this[i] & 0x7fff\n var h = this[i++] >> 15\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)\n w[j++] = l & 0x3fffffff\n }\n return c\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff,\n xh = x >> 14\n while (--n >= 0) {\n var l = this[i] & 0x3fff\n var h = this[i++] >> 14\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c\n c = (l >> 28) + (m >> 14) + xh * h\n w[j++] = l & 0xfffffff\n }\n return c\n}\n\n// wtf?\nBigInteger.prototype.am = am1\ndbits = 26\n\nBigInteger.prototype.DB = dbits\nBigInteger.prototype.DM = ((1 << dbits) - 1)\nvar DV = BigInteger.prototype.DV = (1 << dbits)\n\nvar BI_FP = 52\nBigInteger.prototype.FV = Math.pow(2, BI_FP)\nBigInteger.prototype.F1 = BI_FP - dbits\nBigInteger.prototype.F2 = 2 * dbits - BI_FP\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\"\nvar BI_RC = new Array()\nvar rr, vv\nrr = \"0\".charCodeAt(0)\nfor (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv\nrr = \"a\".charCodeAt(0)\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv\nrr = \"A\".charCodeAt(0)\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv\n\nfunction int2char(n) {\n return BI_RM.charAt(n)\n}\n\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)]\n return (c == null) ? -1 : c\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) r[i] = this[i]\n r.t = this.t\n r.s = this.s\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1\n this.s = (x < 0) ? -1 : 0\n if (x > 0) this[0] = x\n else if (x < -1) this[0] = x + DV\n else this.t = 0\n}\n\n// return bigint initialized to value\nfunction nbv(i) {\n var r = new BigInteger()\n r.fromInt(i)\n return r\n}\n\n// (protected) set from string and radix\nfunction bnpFromString(s, b) {\n var self = this\n\n var k\n if (b == 16) k = 4\n else if (b == 8) k = 3\n else if (b == 256) k = 8; // byte array\n else if (b == 2) k = 1\n else if (b == 32) k = 5\n else if (b == 4) k = 2\n else {\n self.fromRadix(s, b)\n return\n }\n self.t = 0\n self.s = 0\n var i = s.length,\n mi = false,\n sh = 0\n while (--i >= 0) {\n var x = (k == 8) ? s[i] & 0xff : intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == \"-\") mi = true\n continue\n }\n mi = false\n if (sh == 0)\n self[self.t++] = x\n else if (sh + k > self.DB) {\n self[self.t - 1] |= (x & ((1 << (self.DB - sh)) - 1)) << sh\n self[self.t++] = (x >> (self.DB - sh))\n } else\n self[self.t - 1] |= x << sh\n sh += k\n if (sh >= self.DB) sh -= self.DB\n }\n if (k == 8 && (s[0] & 0x80) != 0) {\n self.s = -1\n if (sh > 0) self[self.t - 1] |= ((1 << (self.DB - sh)) - 1) << sh\n }\n self.clamp()\n if (mi) BigInteger.ZERO.subTo(self, self)\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n var c = this.s & this.DM\n while (this.t > 0 && this[this.t - 1] == c)--this.t\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n var self = this\n if (self.s < 0) return \"-\" + self.negate()\n .toString(b)\n var k\n if (b == 16) k = 4\n else if (b == 8) k = 3\n else if (b == 2) k = 1\n else if (b == 32) k = 5\n else if (b == 4) k = 2\n else return self.toRadix(b)\n var km = (1 << k) - 1,\n d, m = false,\n r = \"\",\n i = self.t\n var p = self.DB - (i * self.DB) % k\n if (i-- > 0) {\n if (p < self.DB && (d = self[i] >> p) > 0) {\n m = true\n r = int2char(d)\n }\n while (i >= 0) {\n if (p < k) {\n d = (self[i] & ((1 << p) - 1)) << (k - p)\n d |= self[--i] >> (p += self.DB - k)\n } else {\n d = (self[i] >> (p -= k)) & km\n if (p <= 0) {\n p += self.DB\n --i\n }\n }\n if (d > 0) m = true\n if (m) r += int2char(d)\n }\n }\n return m ? r : \"0\"\n}\n\n// (public) -this\nfunction bnNegate() {\n var r = new BigInteger()\n BigInteger.ZERO.subTo(this, r)\n return r\n}\n\n// (public) |this|\nfunction bnAbs() {\n return (this.s < 0) ? this.negate() : this\n}\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s - a.s\n if (r != 0) return r\n var i = this.t\n r = i - a.t\n if (r != 0) return (this.s < 0) ? -r : r\n while (--i >= 0)\n if ((r = this[i] - a[i]) != 0) return r\n return 0\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1,\n t\n if ((t = x >>> 16) != 0) {\n x = t\n r += 16\n }\n if ((t = x >> 8) != 0) {\n x = t\n r += 8\n }\n if ((t = x >> 4) != 0) {\n x = t\n r += 4\n }\n if ((t = x >> 2) != 0) {\n x = t\n r += 2\n }\n if ((t = x >> 1) != 0) {\n x = t\n r += 1\n }\n return r\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if (this.t <= 0) return 0\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))\n}\n\n// (public) return the number of bytes in \"this\"\nfunction bnByteLength() {\n return this.bitLength() >> 3\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n, r) {\n var i\n for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i]\n for (i = n - 1; i >= 0; --i) r[i] = 0\n r.t = this.t + n\n r.s = this.s\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) r[i - n] = this[i]\n r.t = Math.max(this.t - n, 0)\n r.s = this.s\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n, r) {\n var self = this\n var bs = n % self.DB\n var cbs = self.DB - bs\n var bm = (1 << cbs) - 1\n var ds = Math.floor(n / self.DB),\n c = (self.s << bs) & self.DM,\n i\n for (i = self.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (self[i] >> cbs) | c\n c = (self[i] & bm) << bs\n }\n for (i = ds - 1; i >= 0; --i) r[i] = 0\n r[ds] = c\n r.t = self.t + ds + 1\n r.s = self.s\n r.clamp()\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n, r) {\n var self = this\n r.s = self.s\n var ds = Math.floor(n / self.DB)\n if (ds >= self.t) {\n r.t = 0\n return\n }\n var bs = n % self.DB\n var cbs = self.DB - bs\n var bm = (1 << bs) - 1\n r[0] = self[ds] >> bs\n for (var i = ds + 1; i < self.t; ++i) {\n r[i - ds - 1] |= (self[i] & bm) << cbs\n r[i - ds] = self[i] >> bs\n }\n if (bs > 0) r[self.t - ds - 1] |= (self.s & bm) << cbs\n r.t = self.t - ds\n r.clamp()\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a, r) {\n var self = this\n var i = 0,\n c = 0,\n m = Math.min(a.t, self.t)\n while (i < m) {\n c += self[i] - a[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n if (a.t < self.t) {\n c -= a.s\n while (i < self.t) {\n c += self[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c += self.s\n } else {\n c += self.s\n while (i < a.t) {\n c -= a[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c -= a.s\n }\n r.s = (c < 0) ? -1 : 0\n if (c < -1) r[i++] = self.DV + c\n else if (c > 0) r[i++] = c\n r.t = i\n r.clamp()\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(),\n y = a.abs()\n var i = x.t\n r.t = i + y.t\n while (--i >= 0) r[i] = 0\n for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)\n r.s = 0\n r.clamp()\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r)\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs()\n var i = r.t = 2 * x.t\n while (--i >= 0) r[i] = 0\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1)\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV\n r[i + x.t + 1] = 1\n }\n }\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)\n r.s = 0\n r.clamp()\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m, q, r) {\n var self = this\n var pm = m.abs()\n if (pm.t <= 0) return\n var pt = self.abs()\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0)\n if (r != null) self.copyTo(r)\n return\n }\n if (r == null) r = new BigInteger()\n var y = new BigInteger(),\n ts = self.s,\n ms = m.s\n var nsh = self.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y)\n pt.lShiftTo(nsh, r)\n } else {\n pm.copyTo(y)\n pt.copyTo(r)\n }\n var ys = y.t\n var y0 = y[ys - 1]\n if (y0 == 0) return\n var yt = y0 * (1 << self.F1) + ((ys > 1) ? y[ys - 2] >> self.F2 : 0)\n var d1 = self.FV / yt,\n d2 = (1 << self.F1) / yt,\n e = 1 << self.F2\n var i = r.t,\n j = i - ys,\n t = (q == null) ? new BigInteger() : q\n y.dlShiftTo(j, t)\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1\n r.subTo(t, r)\n }\n BigInteger.ONE.dlShiftTo(ys, t)\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) y[y.t++] = 0\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? self.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t)\n r.subTo(t, r)\n while (r[i] < --qd) r.subTo(t, r)\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q)\n if (ts != ms) BigInteger.ZERO.subTo(q, q)\n }\n r.t = ys\n r.clamp()\n if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder\n if (ts < 0) BigInteger.ZERO.subTo(r, r)\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = new BigInteger()\n this.abs()\n .divRemTo(a, null, r)\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r)\n return r\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) {\n this.m = m\n}\n\nfunction cConvert(x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m)\n else return x\n}\n\nfunction cRevert(x) {\n return x\n}\n\nfunction cReduce(x) {\n x.divRemTo(this.m, null, x)\n}\n\nfunction cMulTo(x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n}\n\nfunction cSqrTo(x, r) {\n x.squareTo(r)\n this.reduce(r)\n}\n\nClassic.prototype.convert = cConvert\nClassic.prototype.revert = cRevert\nClassic.prototype.reduce = cReduce\nClassic.prototype.mulTo = cMulTo\nClassic.prototype.sqrTo = cSqrTo\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if (this.t < 1) return 0\n var x = this[0]\n if ((x & 1) == 0) return 0\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m\n this.mp = m.invDigit()\n this.mpl = this.mp & 0x7fff\n this.mph = this.mp >> 15\n this.um = (1 << (m.DB - 15)) - 1\n this.mt2 = 2 * m.t\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = new BigInteger()\n x.abs()\n .dlShiftTo(this.m.t, r)\n r.divRemTo(this.m, null, r)\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r)\n return r\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = new BigInteger()\n x.copyTo(r)\n this.reduce(r)\n return r\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while (x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t)\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV\n x[++j]++\n }\n }\n x.clamp()\n x.drShiftTo(this.m.t, x)\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x)\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x, r) {\n x.squareTo(r)\n this.reduce(r)\n}\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n}\n\nMontgomery.prototype.convert = montConvert\nMontgomery.prototype.revert = montRevert\nMontgomery.prototype.reduce = montReduce\nMontgomery.prototype.mulTo = montMulTo\nMontgomery.prototype.sqrTo = montSqrTo\n\n// (protected) true iff this is even\nfunction bnpIsEven() {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0\n}\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e, z) {\n if (e > 0xffffffff || e < 1) return BigInteger.ONE\n var r = new BigInteger(),\n r2 = new BigInteger(),\n g = z.convert(this),\n i = nbits(e) - 1\n g.copyTo(r)\n while (--i >= 0) {\n z.sqrTo(r, r2)\n if ((e & (1 << i)) > 0) z.mulTo(r2, g, r)\n else {\n var t = r\n r = r2\n r2 = t\n }\n }\n return z.revert(r)\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e, m) {\n var z\n if (e < 256 || m.isEven()) z = new Classic(m)\n else z = new Montgomery(m)\n return this.exp(e, z)\n}\n\n// protected\nproto.copyTo = bnpCopyTo\nproto.fromInt = bnpFromInt\nproto.fromString = bnpFromString\nproto.clamp = bnpClamp\nproto.dlShiftTo = bnpDLShiftTo\nproto.drShiftTo = bnpDRShiftTo\nproto.lShiftTo = bnpLShiftTo\nproto.rShiftTo = bnpRShiftTo\nproto.subTo = bnpSubTo\nproto.multiplyTo = bnpMultiplyTo\nproto.squareTo = bnpSquareTo\nproto.divRemTo = bnpDivRemTo\nproto.invDigit = bnpInvDigit\nproto.isEven = bnpIsEven\nproto.exp = bnpExp\n\n// public\nproto.toString = bnToString\nproto.negate = bnNegate\nproto.abs = bnAbs\nproto.compareTo = bnCompareTo\nproto.bitLength = bnBitLength\nproto.byteLength = bnByteLength\nproto.mod = bnMod\nproto.modPowInt = bnModPowInt\n\n// (public)\nfunction bnClone() {\n var r = new BigInteger()\n this.copyTo(r)\n return r\n}\n\n// (public) return value as integer\nfunction bnIntValue() {\n if (this.s < 0) {\n if (this.t == 1) return this[0] - this.DV\n else if (this.t == 0) return -1\n } else if (this.t == 1) return this[0]\n else if (this.t == 0) return 0\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]\n}\n\n// (public) return value as byte\nfunction bnByteValue() {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24\n}\n\n// (public) return value as short (assumes DB>=16)\nfunction bnShortValue() {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16\n}\n\n// (protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r))\n}\n\n// (public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\n if (this.s < 0) return -1\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0\n else return 1\n}\n\n// (protected) convert to radix string\nfunction bnpToRadix(b) {\n if (b == null) b = 10\n if (this.signum() == 0 || b < 2 || b > 36) return \"0\"\n var cs = this.chunkSize(b)\n var a = Math.pow(b, cs)\n var d = nbv(a),\n y = new BigInteger(),\n z = new BigInteger(),\n r = \"\"\n this.divRemTo(d, y, z)\n while (y.signum() > 0) {\n r = (a + z.intValue())\n .toString(b)\n .substr(1) + r\n y.divRemTo(d, y, z)\n }\n return z.intValue()\n .toString(b) + r\n}\n\n// (protected) convert from radix string\nfunction bnpFromRadix(s, b) {\n var self = this\n self.fromInt(0)\n if (b == null) b = 10\n var cs = self.chunkSize(b)\n var d = Math.pow(b, cs),\n mi = false,\n j = 0,\n w = 0\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == \"-\" && self.signum() == 0) mi = true\n continue\n }\n w = b * w + x\n if (++j >= cs) {\n self.dMultiply(d)\n self.dAddOffset(w, 0)\n j = 0\n w = 0\n }\n }\n if (j > 0) {\n self.dMultiply(Math.pow(b, j))\n self.dAddOffset(w, 0)\n }\n if (mi) BigInteger.ZERO.subTo(self, self)\n}\n\n// (protected) alternate constructor\nfunction bnpFromNumber(a, b, c) {\n var self = this\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) self.fromInt(1)\n else {\n self.fromNumber(a, c)\n if (!self.testBit(a - 1)) // force MSB set\n self.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, self)\n if (self.isEven()) self.dAddOffset(1, 0); // force odd\n while (!self.isProbablePrime(b)) {\n self.dAddOffset(2, 0)\n if (self.bitLength() > a) self.subTo(BigInteger.ONE.shiftLeft(a - 1), self)\n }\n }\n } else {\n // new BigInteger(int,RNG)\n var x = new Array(),\n t = a & 7\n x.length = (a >> 3) + 1\n b.nextBytes(x)\n if (t > 0) x[0] &= ((1 << t) - 1)\n else x[0] = 0\n self.fromString(x, 256)\n }\n}\n\n// (public) convert to bigendian byte array\nfunction bnToByteArray() {\n var self = this\n var i = self.t,\n r = new Array()\n r[0] = self.s\n var p = self.DB - (i * self.DB) % 8,\n d, k = 0\n if (i-- > 0) {\n if (p < self.DB && (d = self[i] >> p) != (self.s & self.DM) >> p)\n r[k++] = d | (self.s << (self.DB - p))\n while (i >= 0) {\n if (p < 8) {\n d = (self[i] & ((1 << p) - 1)) << (8 - p)\n d |= self[--i] >> (p += self.DB - 8)\n } else {\n d = (self[i] >> (p -= 8)) & 0xff\n if (p <= 0) {\n p += self.DB\n --i\n }\n }\n if ((d & 0x80) != 0) d |= -256\n if (k === 0 && (self.s & 0x80) != (d & 0x80))++k\n if (k > 0 || d != self.s) r[k++] = d\n }\n }\n return r\n}\n\nfunction bnEquals(a) {\n return (this.compareTo(a) == 0)\n}\n\nfunction bnMin(a) {\n return (this.compareTo(a) < 0) ? this : a\n}\n\nfunction bnMax(a) {\n return (this.compareTo(a) > 0) ? this : a\n}\n\n// (protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a, op, r) {\n var self = this\n var i, f, m = Math.min(a.t, self.t)\n for (i = 0; i < m; ++i) r[i] = op(self[i], a[i])\n if (a.t < self.t) {\n f = a.s & self.DM\n for (i = m; i < self.t; ++i) r[i] = op(self[i], f)\n r.t = self.t\n } else {\n f = self.s & self.DM\n for (i = m; i < a.t; ++i) r[i] = op(f, a[i])\n r.t = a.t\n }\n r.s = op(self.s, a.s)\n r.clamp()\n}\n\n// (public) this & a\nfunction op_and(x, y) {\n return x & y\n}\n\nfunction bnAnd(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_and, r)\n return r\n}\n\n// (public) this | a\nfunction op_or(x, y) {\n return x | y\n}\n\nfunction bnOr(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_or, r)\n return r\n}\n\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y\n}\n\nfunction bnXor(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_xor, r)\n return r\n}\n\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y\n}\n\nfunction bnAndNot(a) {\n var r = new BigInteger()\n this.bitwiseTo(a, op_andnot, r)\n return r\n}\n\n// (public) ~this\nfunction bnNot() {\n var r = new BigInteger()\n for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i]\n r.t = this.t\n r.s = ~this.s\n return r\n}\n\n// (public) this << n\nfunction bnShiftLeft(n) {\n var r = new BigInteger()\n if (n < 0) this.rShiftTo(-n, r)\n else this.lShiftTo(n, r)\n return r\n}\n\n// (public) this >> n\nfunction bnShiftRight(n) {\n var r = new BigInteger()\n if (n < 0) this.lShiftTo(-n, r)\n else this.rShiftTo(n, r)\n return r\n}\n\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) return -1\n var r = 0\n if ((x & 0xffff) == 0) {\n x >>= 16\n r += 16\n }\n if ((x & 0xff) == 0) {\n x >>= 8\n r += 8\n }\n if ((x & 0xf) == 0) {\n x >>= 4\n r += 4\n }\n if ((x & 3) == 0) {\n x >>= 2\n r += 2\n }\n if ((x & 1) == 0)++r\n return r\n}\n\n// (public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\n for (var i = 0; i < this.t; ++i)\n if (this[i] != 0) return i * this.DB + lbit(this[i])\n if (this.s < 0) return this.t * this.DB\n return -1\n}\n\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0\n while (x != 0) {\n x &= x - 1\n ++r\n }\n return r\n}\n\n// (public) return number of set bits\nfunction bnBitCount() {\n var r = 0,\n x = this.s & this.DM\n for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x)\n return r\n}\n\n// (public) true iff nth bit is set\nfunction bnTestBit(n) {\n var j = Math.floor(n / this.DB)\n if (j >= this.t) return (this.s != 0)\n return ((this[j] & (1 << (n % this.DB))) != 0)\n}\n\n// (protected) this op (1<>= self.DB\n }\n if (a.t < self.t) {\n c += a.s\n while (i < self.t) {\n c += self[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c += self.s\n } else {\n c += self.s\n while (i < a.t) {\n c += a[i]\n r[i++] = c & self.DM\n c >>= self.DB\n }\n c += a.s\n }\n r.s = (c < 0) ? -1 : 0\n if (c > 0) r[i++] = c\n else if (c < -1) r[i++] = self.DV + c\n r.t = i\n r.clamp()\n}\n\n// (public) this + a\nfunction bnAdd(a) {\n var r = new BigInteger()\n this.addTo(a, r)\n return r\n}\n\n// (public) this - a\nfunction bnSubtract(a) {\n var r = new BigInteger()\n this.subTo(a, r)\n return r\n}\n\n// (public) this * a\nfunction bnMultiply(a) {\n var r = new BigInteger()\n this.multiplyTo(a, r)\n return r\n}\n\n// (public) this^2\nfunction bnSquare() {\n var r = new BigInteger()\n this.squareTo(r)\n return r\n}\n\n// (public) this / a\nfunction bnDivide(a) {\n var r = new BigInteger()\n this.divRemTo(a, r, null)\n return r\n}\n\n// (public) this % a\nfunction bnRemainder(a) {\n var r = new BigInteger()\n this.divRemTo(a, null, r)\n return r\n}\n\n// (public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\n var q = new BigInteger(),\n r = new BigInteger()\n this.divRemTo(a, q, r)\n return new Array(q, r)\n}\n\n// (protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)\n ++this.t\n this.clamp()\n}\n\n// (protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n, w) {\n if (n == 0) return\n while (this.t <= w) this[this.t++] = 0\n this[w] += n\n while (this[w] >= this.DV) {\n this[w] -= this.DV\n if (++w >= this.t) this[this.t++] = 0\n ++this[w]\n }\n}\n\n// A \"null\" reducer\nfunction NullExp() {}\n\nfunction nNop(x) {\n return x\n}\n\nfunction nMulTo(x, y, r) {\n x.multiplyTo(y, r)\n}\n\nfunction nSqrTo(x, r) {\n x.squareTo(r)\n}\n\nNullExp.prototype.convert = nNop\nNullExp.prototype.revert = nNop\nNullExp.prototype.mulTo = nMulTo\nNullExp.prototype.sqrTo = nSqrTo\n\n// (public) this^e\nfunction bnPow(e) {\n return this.exp(e, new NullExp())\n}\n\n// (protected) r = lower n words of \"this * a\", a.t <= n\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a, n, r) {\n var i = Math.min(this.t + a.t, n)\n r.s = 0; // assumes a,this >= 0\n r.t = i\n while (i > 0) r[--i] = 0\n var j\n for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)\n for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i)\n r.clamp()\n}\n\n// (protected) r = \"this * a\" without lower n words, n > 0\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a, n, r) {\n --n\n var i = r.t = this.t + a.t - n\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) r[i] = 0\n for (i = Math.max(n - this.t, 0); i < a.t; ++i)\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)\n r.clamp()\n r.drShiftTo(1, r)\n}\n\n// Barrett modular reduction\nfunction Barrett(m) {\n // setup Barrett\n this.r2 = new BigInteger()\n this.q3 = new BigInteger()\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)\n this.mu = this.r2.divide(m)\n this.m = m\n}\n\nfunction barrettConvert(x) {\n if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m)\n else if (x.compareTo(this.m) < 0) return x\n else {\n var r = new BigInteger()\n x.copyTo(r)\n this.reduce(r)\n return r\n }\n}\n\nfunction barrettRevert(x) {\n return x\n}\n\n// x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\n var self = this\n x.drShiftTo(self.m.t - 1, self.r2)\n if (x.t > self.m.t + 1) {\n x.t = self.m.t + 1\n x.clamp()\n }\n self.mu.multiplyUpperTo(self.r2, self.m.t + 1, self.q3)\n self.m.multiplyLowerTo(self.q3, self.m.t + 1, self.r2)\n while (x.compareTo(self.r2) < 0) x.dAddOffset(1, self.m.t + 1)\n x.subTo(self.r2, x)\n while (x.compareTo(self.m) >= 0) x.subTo(self.m, x)\n}\n\n// r = x^2 mod m; x != r\nfunction barrettSqrTo(x, r) {\n x.squareTo(r)\n this.reduce(r)\n}\n\n// r = x*y mod m; x,y != r\nfunction barrettMulTo(x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n}\n\nBarrett.prototype.convert = barrettConvert\nBarrett.prototype.revert = barrettRevert\nBarrett.prototype.reduce = barrettReduce\nBarrett.prototype.mulTo = barrettMulTo\nBarrett.prototype.sqrTo = barrettSqrTo\n\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e, m) {\n var i = e.bitLength(),\n k, r = nbv(1),\n z\n if (i <= 0) return r\n else if (i < 18) k = 1\n else if (i < 48) k = 3\n else if (i < 144) k = 4\n else if (i < 768) k = 5\n else k = 6\n if (i < 8)\n z = new Classic(m)\n else if (m.isEven())\n z = new Barrett(m)\n else\n z = new Montgomery(m)\n\n // precomputation\n var g = new Array(),\n n = 3,\n k1 = k - 1,\n km = (1 << k) - 1\n g[1] = z.convert(this)\n if (k > 1) {\n var g2 = new BigInteger()\n z.sqrTo(g[1], g2)\n while (n <= km) {\n g[n] = new BigInteger()\n z.mulTo(g2, g[n - 2], g[n])\n n += 2\n }\n }\n\n var j = e.t - 1,\n w, is1 = true,\n r2 = new BigInteger(),\n t\n i = nbits(e[j]) - 1\n while (j >= 0) {\n if (i >= k1) w = (e[j] >> (i - k1)) & km\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)\n if (j > 0) w |= e[j - 1] >> (this.DB + i - k1)\n }\n\n n = k\n while ((w & 1) == 0) {\n w >>= 1\n --n\n }\n if ((i -= n) < 0) {\n i += this.DB\n --j\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r)\n is1 = false\n } else {\n while (n > 1) {\n z.sqrTo(r, r2)\n z.sqrTo(r2, r)\n n -= 2\n }\n if (n > 0) z.sqrTo(r, r2)\n else {\n t = r\n r = r2\n r2 = t\n }\n z.mulTo(r2, g[w], r)\n }\n\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2)\n t = r\n r = r2\n r2 = t\n if (--i < 0) {\n i = this.DB - 1\n --j\n }\n }\n }\n return z.revert(r)\n}\n\n// (public) gcd(this,a) (HAC 14.54)\nfunction bnGCD(a) {\n var x = (this.s < 0) ? this.negate() : this.clone()\n var y = (a.s < 0) ? a.negate() : a.clone()\n if (x.compareTo(y) < 0) {\n var t = x\n x = y\n y = t\n }\n var i = x.getLowestSetBit(),\n g = y.getLowestSetBit()\n if (g < 0) return x\n if (i < g) g = i\n if (g > 0) {\n x.rShiftTo(g, x)\n y.rShiftTo(g, y)\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x)\n if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y)\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x)\n x.rShiftTo(1, x)\n } else {\n y.subTo(x, y)\n y.rShiftTo(1, y)\n }\n }\n if (g > 0) y.lShiftTo(g, y)\n return y\n}\n\n// (protected) this % n, n < 2^26\nfunction bnpModInt(n) {\n if (n <= 0) return 0\n var d = this.DV % n,\n r = (this.s < 0) ? n - 1 : 0\n if (this.t > 0)\n if (d == 0) r = this[0] % n\n else\n for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n\n return r\n}\n\n// (public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\n var ac = m.isEven()\n if (this.signum() === 0) throw new Error('division by zero')\n if ((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO\n var u = m.clone(),\n v = this.clone()\n var a = nbv(1),\n b = nbv(0),\n c = nbv(0),\n d = nbv(1)\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u)\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a)\n b.subTo(m, b)\n }\n a.rShiftTo(1, a)\n } else if (!b.isEven()) b.subTo(m, b)\n b.rShiftTo(1, b)\n }\n while (v.isEven()) {\n v.rShiftTo(1, v)\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c)\n d.subTo(m, d)\n }\n c.rShiftTo(1, c)\n } else if (!d.isEven()) d.subTo(m, d)\n d.rShiftTo(1, d)\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u)\n if (ac) a.subTo(c, a)\n b.subTo(d, b)\n } else {\n v.subTo(u, v)\n if (ac) c.subTo(a, c)\n d.subTo(b, d)\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO\n while (d.compareTo(m) >= 0) d.subTo(m, d)\n while (d.signum() < 0) d.addTo(m, d)\n return d\n}\n\nvar lowprimes = [\n 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,\n 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,\n 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,\n 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,\n 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,\n 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,\n 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,\n 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,\n 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,\n 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,\n 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997\n]\n\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1]\n\n// (public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\n var i, x = this.abs()\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i)\n if (x[0] == lowprimes[i]) return true\n return false\n }\n if (x.isEven()) return false\n i = 1\n while (i < lowprimes.length) {\n var m = lowprimes[i],\n j = i + 1\n while (j < lowprimes.length && m < lplim) m *= lowprimes[j++]\n m = x.modInt(m)\n while (i < j) if (m % lowprimes[i++] == 0) return false\n }\n return x.millerRabin(t)\n}\n\n// (protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE)\n var k = n1.getLowestSetBit()\n if (k <= 0) return false\n var r = n1.shiftRight(k)\n t = (t + 1) >> 1\n if (t > lowprimes.length) t = lowprimes.length\n var a = new BigInteger(null)\n var j, bases = []\n for (var i = 0; i < t; ++i) {\n for (;;) {\n j = lowprimes[Math.floor(Math.random() * lowprimes.length)]\n if (bases.indexOf(j) == -1) break\n }\n bases.push(j)\n a.fromInt(j)\n var y = a.modPow(r, this)\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this)\n if (y.compareTo(BigInteger.ONE) == 0) return false\n }\n if (y.compareTo(n1) != 0) return false\n }\n }\n return true\n}\n\n// protected\nproto.chunkSize = bnpChunkSize\nproto.toRadix = bnpToRadix\nproto.fromRadix = bnpFromRadix\nproto.fromNumber = bnpFromNumber\nproto.bitwiseTo = bnpBitwiseTo\nproto.changeBit = bnpChangeBit\nproto.addTo = bnpAddTo\nproto.dMultiply = bnpDMultiply\nproto.dAddOffset = bnpDAddOffset\nproto.multiplyLowerTo = bnpMultiplyLowerTo\nproto.multiplyUpperTo = bnpMultiplyUpperTo\nproto.modInt = bnpModInt\nproto.millerRabin = bnpMillerRabin\n\n// public\nproto.clone = bnClone\nproto.intValue = bnIntValue\nproto.byteValue = bnByteValue\nproto.shortValue = bnShortValue\nproto.signum = bnSigNum\nproto.toByteArray = bnToByteArray\nproto.equals = bnEquals\nproto.min = bnMin\nproto.max = bnMax\nproto.and = bnAnd\nproto.or = bnOr\nproto.xor = bnXor\nproto.andNot = bnAndNot\nproto.not = bnNot\nproto.shiftLeft = bnShiftLeft\nproto.shiftRight = bnShiftRight\nproto.getLowestSetBit = bnGetLowestSetBit\nproto.bitCount = bnBitCount\nproto.testBit = bnTestBit\nproto.setBit = bnSetBit\nproto.clearBit = bnClearBit\nproto.flipBit = bnFlipBit\nproto.add = bnAdd\nproto.subtract = bnSubtract\nproto.multiply = bnMultiply\nproto.divide = bnDivide\nproto.remainder = bnRemainder\nproto.divideAndRemainder = bnDivideAndRemainder\nproto.modPow = bnModPow\nproto.modInverse = bnModInverse\nproto.pow = bnPow\nproto.gcd = bnGCD\nproto.isProbablePrime = bnIsProbablePrime\n\n// JSBN-specific extension\nproto.square = bnSquare\n\n// constants\nBigInteger.ZERO = nbv(0)\nBigInteger.ONE = nbv(1)\nBigInteger.valueOf = nbv\n\nmodule.exports = BigInteger\n","// FIXME: Kind of a weird way to throw exceptions, consider removing\nvar assert = require('assert')\nvar BigInteger = require('./bigi')\n\n/**\n * Turns a byte array into a big integer.\n *\n * This function will interpret a byte array as a big integer in big\n * endian notation.\n */\nBigInteger.fromByteArrayUnsigned = function(byteArray) {\n // BigInteger expects a DER integer conformant byte array\n if (byteArray[0] & 0x80) {\n return new BigInteger([0].concat(byteArray))\n }\n\n return new BigInteger(byteArray)\n}\n\n/**\n * Returns a byte array representation of the big integer.\n *\n * This returns the absolute of the contained value in big endian\n * form. A value of zero results in an empty array.\n */\nBigInteger.prototype.toByteArrayUnsigned = function() {\n var byteArray = this.toByteArray()\n return byteArray[0] === 0 ? byteArray.slice(1) : byteArray\n}\n\nBigInteger.fromDERInteger = function(byteArray) {\n return new BigInteger(byteArray)\n}\n\n/*\n * Converts BigInteger to a DER integer representation.\n *\n * The format for this value uses the most significant bit as a sign\n * bit. If the most significant bit is already set and the integer is\n * positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nBigInteger.prototype.toDERInteger = BigInteger.prototype.toByteArray\n\nBigInteger.fromBuffer = function(buffer) {\n // BigInteger expects a DER integer conformant byte array\n if (buffer[0] & 0x80) {\n var byteArray = Array.prototype.slice.call(buffer)\n\n return new BigInteger([0].concat(byteArray))\n }\n\n return new BigInteger(buffer)\n}\n\nBigInteger.fromHex = function(hex) {\n if (hex === '') return BigInteger.ZERO\n\n assert.equal(hex, hex.match(/^[A-Fa-f0-9]+/), 'Invalid hex string')\n assert.equal(hex.length % 2, 0, 'Incomplete hex')\n return new BigInteger(hex, 16)\n}\n\nBigInteger.prototype.toBuffer = function(size) {\n var byteArray = this.toByteArrayUnsigned()\n var zeros = []\n\n var padding = size - byteArray.length\n while (zeros.length < padding) zeros.push(0)\n\n return new Buffer(zeros.concat(byteArray))\n}\n\nBigInteger.prototype.toHex = function(size) {\n return this.toBuffer(size).toString('hex')\n}\n","var BigInteger = require('./bigi')\n\n//addons\nrequire('./convert')\n\nmodule.exports = BigInteger","(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 if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\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","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\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar uint_max = Math.pow(2, 32)\nfunction fixup_uint32 (x) {\n var ret, x_pos\n ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x\n return ret\n}\nfunction scrub_vec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n return false\n}\n\nfunction Global () {\n this.SBOX = []\n this.INV_SBOX = []\n this.SUB_MIX = [[], [], [], []]\n this.INV_SUB_MIX = [[], [], [], []]\n this.init()\n this.RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\n}\n\nGlobal.prototype.init = function () {\n var d, i, sx, t, x, x2, x4, x8, xi, _i\n d = (function () {\n var _i, _results\n _results = []\n for (i = _i = 0; _i < 256; i = ++_i) {\n if (i < 128) {\n _results.push(i << 1)\n } else {\n _results.push((i << 1) ^ 0x11b)\n }\n }\n return _results\n })()\n x = 0\n xi = 0\n for (i = _i = 0; _i < 256; i = ++_i) {\n sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n this.SBOX[x] = sx\n this.INV_SBOX[sx] = x\n x2 = d[x]\n x4 = d[x2]\n x8 = d[x4]\n t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n this.SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n this.SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n this.SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n this.SUB_MIX[3][x] = t\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n this.INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n this.INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n this.INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n this.INV_SUB_MIX[3][sx] = t\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 return true\n}\n\nvar G = new Global()\n\nAES.blockSize = 4 * 4\n\nAES.prototype.blockSize = AES.blockSize\n\nAES.keySize = 256 / 8\n\nAES.prototype.keySize = AES.keySize\n\nfunction bufferToArray (buf) {\n var len = buf.length / 4\n var out = new Array(len)\n var i = -1\n while (++i < len) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n return out\n}\nfunction AES (key) {\n this._key = bufferToArray(key)\n this._doReset()\n}\n\nAES.prototype._doReset = function () {\n var invKsRow, keySize, keyWords, ksRow, ksRows, t\n keyWords = this._key\n keySize = keyWords.length\n this._nRounds = keySize + 6\n ksRows = (this._nRounds + 1) * 4\n this._keySchedule = []\n for (ksRow = 0; ksRow < ksRows; ksRow++) {\n this._keySchedule[ksRow] = ksRow < keySize ? keyWords[ksRow] : (t = this._keySchedule[ksRow - 1], (ksRow % keySize) === 0 ? (t = (t << 8) | (t >>> 24), t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff], t ^= G.RCON[(ksRow / keySize) | 0] << 24) : keySize > 6 && ksRow % keySize === 4 ? t = (G.SBOX[t >>> 24] << 24) | (G.SBOX[(t >>> 16) & 0xff] << 16) | (G.SBOX[(t >>> 8) & 0xff] << 8) | G.SBOX[t & 0xff] : void 0, this._keySchedule[ksRow - keySize] ^ t)\n }\n this._invKeySchedule = []\n for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n ksRow = ksRows - invKsRow\n t = this._keySchedule[ksRow - (invKsRow % 4 ? 0 : 4)]\n this._invKeySchedule[invKsRow] = invKsRow < 4 || ksRow <= 4 ? t : G.INV_SUB_MIX[0][G.SBOX[t >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[(t >>> 16) & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[(t >>> 8) & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[t & 0xff]]\n }\n return true\n}\n\nAES.prototype.encryptBlock = function (M) {\n M = bufferToArray(new Buffer(M))\n var out = this._doCryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX)\n var buf = new Buffer(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 = bufferToArray(new Buffer(M))\n var temp = [M[3], M[1]]\n M[1] = temp[0]\n M[3] = temp[1]\n var out = this._doCryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX)\n var buf = new Buffer(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 scrub_vec(this._keySchedule)\n scrub_vec(this._invKeySchedule)\n scrub_vec(this._key)\n}\n\nAES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) {\n var ksRow, s0, s1, s2, s3, t0, t1, t2, t3\n\n s0 = M[0] ^ keySchedule[0]\n s1 = M[1] ^ keySchedule[1]\n s2 = M[2] ^ keySchedule[2]\n s3 = M[3] ^ keySchedule[3]\n ksRow = 4\n for (var round = 1; round < this._nRounds; round++) {\n t0 = SUB_MIX[0][s0 >>> 24] ^ SUB_MIX[1][(s1 >>> 16) & 0xff] ^ SUB_MIX[2][(s2 >>> 8) & 0xff] ^ SUB_MIX[3][s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX[0][s1 >>> 24] ^ SUB_MIX[1][(s2 >>> 16) & 0xff] ^ SUB_MIX[2][(s3 >>> 8) & 0xff] ^ SUB_MIX[3][s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX[0][s2 >>> 24] ^ SUB_MIX[1][(s3 >>> 16) & 0xff] ^ SUB_MIX[2][(s0 >>> 8) & 0xff] ^ SUB_MIX[3][s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX[0][s3 >>> 24] ^ SUB_MIX[1][(s0 >>> 16) & 0xff] ^ SUB_MIX[2][(s1 >>> 8) & 0xff] ^ SUB_MIX[3][s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\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 return [\n fixup_uint32(t0),\n fixup_uint32(t1),\n fixup_uint32(t2),\n fixup_uint32(t3)\n ]\n}\n\nexports.AES = AES\n","var aes = require('./aes')\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\ninherits(StreamCipher, Transform)\nmodule.exports = StreamCipher\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n if (!(this instanceof StreamCipher)) {\n return new StreamCipher(mode, key, iv)\n }\n Transform.call(this)\n this._finID = Buffer.concat([iv, new Buffer([0, 0, 0, 1])])\n iv = Buffer.concat([iv, new Buffer([0, 0, 0, 2])])\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n this._cache = new Buffer('')\n this._secCache = new Buffer('')\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n iv.copy(this._prev)\n this._mode = mode\n var h = new Buffer(4)\n h.fill(0)\n this._ghash = new GHASH(this._cipher.encryptBlock(h))\n this._authTag = null\n this._called = false\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 = new Buffer(rump)\n rump.fill(0)\n this._ghash.update(rump)\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}\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) {\n 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) {\n if (xorTest(tag, this._authTag)) {\n throw new Error('Unsupported state or unable to authenticate data')\n }\n } else {\n this._authTag = tag\n }\n this._cipher.scrub()\n}\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (!this._decrypt && Buffer.isBuffer(this._authTag)) {\n return this._authTag\n } else {\n throw new Error('Attempting to get auth tag in unsupported state')\n }\n}\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (this._decrypt) {\n this._authTag = tag\n } else {\n throw new Error('Attempting to set auth tag in unsupported state')\n }\n}\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (!this._called) {\n this._ghash.update(buf)\n this._alen += buf.length\n } else {\n throw new Error('Attempting to set AAD in unsupported state')\n }\n}\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) {\n out++\n }\n var len = Math.min(a.length, b.length)\n var i = -1\n while (++i < len) {\n out += (a[i] ^ b[i])\n }\n return out\n}\n","var ciphers = require('./encrypter')\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nvar deciphers = require('./decrypter')\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nvar modes = require('./modes')\nfunction getCiphers () {\n return Object.keys(modes)\n}\nexports.listCiphers = exports.getCiphers = getCiphers\n","var aes = require('./aes')\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar modes = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar AuthCipher = require('./authCipher')\nvar ebtk = require('evp_bytestokey')\n\ninherits(Decipher, Transform)\nfunction Decipher (mode, key, iv) {\n if (!(this instanceof Decipher)) {\n return new Decipher(mode, key, iv)\n }\n Transform.call(this)\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n iv.copy(this._prev)\n this._mode = mode\n this._autopadding = true\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}\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}\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\nfunction Splitter () {\n if (!(this instanceof Splitter)) {\n return new Splitter()\n }\n this.cache = new Buffer('')\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 return null\n}\nSplitter.prototype.flush = function () {\n if (this.cache.length) {\n return this.cache\n }\n}\nfunction unpad (last) {\n var padded = last[15]\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) {\n return\n }\n return last.slice(0, 16 - padded)\n}\n\nvar modelist = {\n ECB: require('./modes/ecb'),\n CBC: require('./modes/cbc'),\n CFB: require('./modes/cfb'),\n CFB8: require('./modes/cfb8'),\n CFB1: require('./modes/cfb1'),\n OFB: require('./modes/ofb'),\n CTR: require('./modes/ctr'),\n GCM: require('./modes/ctr')\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n throw new TypeError('invalid suite type')\n }\n if (typeof iv === 'string') {\n iv = new Buffer(iv)\n }\n if (typeof password === 'string') {\n password = new Buffer(password)\n }\n if (password.length !== config.key / 8) {\n throw new TypeError('invalid key length ' + password.length)\n }\n if (iv.length !== config.iv) {\n throw new TypeError('invalid iv length ' + iv.length)\n }\n if (config.type === 'stream') {\n return new StreamCipher(modelist[config.mode], password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(modelist[config.mode], password, iv, true)\n }\n return new Decipher(modelist[config.mode], password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n 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}\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var aes = require('./aes')\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar modes = require('./modes')\nvar ebtk = require('evp_bytestokey')\nvar StreamCipher = require('./streamCipher')\nvar AuthCipher = require('./authCipher')\ninherits(Cipher, Transform)\nfunction Cipher (mode, key, iv) {\n if (!(this instanceof Cipher)) {\n return new Cipher(mode, key, iv)\n }\n Transform.call(this)\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n iv.copy(this._prev)\n this._mode = mode\n this._autopadding = true\n}\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\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 } else if (chunk.toString('hex') !== '10101010101010101010101010101010') {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n if (!(this instanceof Splitter)) {\n return new Splitter()\n }\n this.cache = new Buffer('')\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}\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = new Buffer(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n var out = Buffer.concat([this.cache, padBuff])\n return out\n}\nvar modelist = {\n ECB: require('./modes/ecb'),\n CBC: require('./modes/cbc'),\n CFB: require('./modes/cfb'),\n CFB8: require('./modes/cfb8'),\n CFB1: require('./modes/cfb1'),\n OFB: require('./modes/ofb'),\n CTR: require('./modes/ctr'),\n GCM: require('./modes/ctr')\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n throw new TypeError('invalid suite type')\n }\n if (typeof iv === 'string') {\n iv = new Buffer(iv)\n }\n if (typeof password === 'string') {\n password = new Buffer(password)\n }\n if (password.length !== config.key / 8) {\n throw new TypeError('invalid key length ' + password.length)\n }\n if (iv.length !== config.iv) {\n throw new TypeError('invalid iv length ' + iv.length)\n }\n if (config.type === 'stream') {\n return new StreamCipher(modelist[config.mode], password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(modelist[config.mode], password, iv)\n }\n return new Cipher(modelist[config.mode], password, iv)\n}\nfunction createCipher (suite, password) {\n var config = modes[suite.toLowerCase()]\n if (!config) {\n 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 zeros = new Buffer(16)\nzeros.fill(0)\nmodule.exports = GHASH\nfunction GHASH (key) {\n this.h = key\n this.state = new Buffer(16)\n this.state.fill(0)\n this.cache = new Buffer('')\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, lsb_Vi\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 = xor(Zi, Vi)\n }\n\n // Store the value of LSB(V_i)\n lsb_Vi = (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 (lsb_Vi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\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}\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, zeros], 16))\n }\n this.ghash(fromArray([\n 0, abl,\n 0, bl\n ]))\n return this.state\n}\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\nfunction fromArray (out) {\n out = out.map(fixup_uint32)\n var buf = new Buffer(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}\nvar uint_max = Math.pow(2, 32)\nfunction fixup_uint32 (x) {\n var ret, x_pos\n ret = x > uint_max || x < 0 ? (x_pos = Math.abs(x) % uint_max, x < 0 ? uint_max - x_pos : x_pos) : x\n return ret\n}\nfunction xor (a, b) {\n return [\n a[0] ^ b[0],\n a[1] ^ b[1],\n a[2] ^ b[2],\n a[3] ^ b[3]\n ]\n}\n","exports['aes-128-ecb'] = {\n cipher: 'AES',\n key: 128,\n iv: 0,\n mode: 'ECB',\n type: 'block'\n}\nexports['aes-192-ecb'] = {\n cipher: 'AES',\n key: 192,\n iv: 0,\n mode: 'ECB',\n type: 'block'\n}\nexports['aes-256-ecb'] = {\n cipher: 'AES',\n key: 256,\n iv: 0,\n mode: 'ECB',\n type: 'block'\n}\nexports['aes-128-cbc'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CBC',\n type: 'block'\n}\nexports['aes-192-cbc'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CBC',\n type: 'block'\n}\nexports['aes-256-cbc'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CBC',\n type: 'block'\n}\nexports['aes128'] = exports['aes-128-cbc']\nexports['aes192'] = exports['aes-192-cbc']\nexports['aes256'] = exports['aes-256-cbc']\nexports['aes-128-cfb'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CFB',\n type: 'stream'\n}\nexports['aes-192-cfb'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CFB',\n type: 'stream'\n}\nexports['aes-256-cfb'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CFB',\n type: 'stream'\n}\nexports['aes-128-cfb8'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CFB8',\n type: 'stream'\n}\nexports['aes-192-cfb8'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CFB8',\n type: 'stream'\n}\nexports['aes-256-cfb8'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CFB8',\n type: 'stream'\n}\nexports['aes-128-cfb1'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CFB1',\n type: 'stream'\n}\nexports['aes-192-cfb1'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CFB1',\n type: 'stream'\n}\nexports['aes-256-cfb1'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CFB1',\n type: 'stream'\n}\nexports['aes-128-ofb'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'OFB',\n type: 'stream'\n}\nexports['aes-192-ofb'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'OFB',\n type: 'stream'\n}\nexports['aes-256-ofb'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'OFB',\n type: 'stream'\n}\nexports['aes-128-ctr'] = {\n cipher: 'AES',\n key: 128,\n iv: 16,\n mode: 'CTR',\n type: 'stream'\n}\nexports['aes-192-ctr'] = {\n cipher: 'AES',\n key: 192,\n iv: 16,\n mode: 'CTR',\n type: 'stream'\n}\nexports['aes-256-ctr'] = {\n cipher: 'AES',\n key: 256,\n iv: 16,\n mode: 'CTR',\n type: 'stream'\n}\nexports['aes-128-gcm'] = {\n cipher: 'AES',\n key: 128,\n iv: 12,\n mode: 'GCM',\n type: 'auth'\n}\nexports['aes-192-gcm'] = {\n cipher: 'AES',\n key: 192,\n iv: 12,\n mode: 'GCM',\n type: 'auth'\n}\nexports['aes-256-gcm'] = {\n cipher: 'AES',\n key: 256,\n iv: 12,\n mode: 'GCM',\n type: 'auth'\n}\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 xor = require('buffer-xor')\n\nexports.encrypt = function (self, data, decrypt) {\n var out = new Buffer('')\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 = new Buffer('')\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}\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","function 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}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = new Buffer(len)\n var i = -1\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n return out\n}\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = new Buffer(buffer.length)\n buffer = Buffer.concat([buffer, new Buffer([value])])\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n return out\n}\n","function encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n self._prev = Buffer.concat([self._prev.slice(1), new Buffer([decrypt ? byteParam : out])])\n return out\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = new Buffer(len)\n var i = -1\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n return out\n}\n","var xor = require('buffer-xor')\n\nfunction 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}\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlock(self._prev)\n incr32(self._prev)\n return out\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 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}\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\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 Transform = require('cipher-base')\nvar inherits = require('inherits')\n\ninherits(StreamCipher, Transform)\nmodule.exports = StreamCipher\nfunction StreamCipher (mode, key, iv, decrypt) {\n if (!(this instanceof StreamCipher)) {\n return new StreamCipher(mode, key, iv)\n }\n Transform.call(this)\n this._cipher = new aes.AES(key)\n this._prev = new Buffer(iv.length)\n this._cache = new Buffer('')\n this._secCache = new Buffer('')\n this._decrypt = decrypt\n iv.copy(this._prev)\n this._mode = mode\n}\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n * bulma-toast 2.4.4 \n * (c) 2018-present @rfoel \n * Released under the MIT License.\n */\n(function(a,b){\"object\"==typeof exports&&\"undefined\"!=typeof module?b(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],b):(a=\"undefined\"==typeof globalThis?a||self:globalThis,b(a.bulmaToast={}))})(this,function(a){'use strict';function b(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function c(a){for(var c,d=1;d=a.children.length&&(a.remove(),delete n.position)}},{key:\"onAnimationEnd\",value:function(){var a=0\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz \r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var 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 Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict'\nvar inherits = require('inherits')\nvar md5 = require('./md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\n\nvar Base = require('cipher-base')\n\nfunction HashNoConstructor (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n this.buffers = []\n}\n\ninherits(HashNoConstructor, Base)\n\nHashNoConstructor.prototype._update = function (data) {\n this.buffers.push(data)\n}\n\nHashNoConstructor.prototype._final = function () {\n var buf = Buffer.concat(this.buffers)\n var r = this._hash(buf)\n this.buffers = null\n\n return r\n}\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 HashNoConstructor(md5)\n if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())\n\n return new Hash(sha(alg))\n}\n","'use strict'\nvar intSize = 4\nvar zeroBuffer = new Buffer(intSize)\nzeroBuffer.fill(0)\n\nvar charSize = 8\nvar hashSize = 16\n\nfunction toArray (buf) {\n if ((buf.length % intSize) !== 0) {\n var len = buf.length + (intSize - (buf.length % intSize))\n buf = Buffer.concat([buf, zeroBuffer], len)\n }\n\n var arr = new Array(buf.length >>> 2)\n for (var i = 0, j = 0; i < buf.length; i += intSize, j++) {\n arr[j] = buf.readInt32LE(i)\n }\n\n return arr\n}\n\nmodule.exports = function hash (buf, fn) {\n var arr = fn(toArray(buf), buf.length * charSize)\n buf = new Buffer(hashSize)\n for (var i = 0; i < arr.length; i++) {\n buf.writeInt32LE(arr[i], i << 2, true)\n }\n return buf\n}\n","'use strict'\n/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.1 Copyright (C) Paul Johnston 1999 - 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 more info.\n */\n\nvar makeHash = require('./make-hash')\n\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length\n */\nfunction core_md5 (x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << ((len) % 32)\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a\n var oldb = b\n var oldc = c\n var oldd = d\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936)\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302)\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222)\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844)\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safe_add(a, olda)\n b = safe_add(b, oldb)\n c = safe_add(c, oldc)\n d = safe_add(d, oldd)\n }\n\n return [a, b, c, d]\n}\n\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\nfunction md5_cmn (q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)\n}\n\nfunction md5_ff (a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)\n}\n\nfunction md5_gg (a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)\n}\n\nfunction md5_hh (a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t)\n}\n\nfunction md5_ii (a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xFFFF)\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n}\n\nmodule.exports = function md5 (buf) {\n return makeHash(buf, core_md5)\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",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\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\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst client_1 = __importDefault(require(\"./parsers/client\"));\nconst device_1 = __importDefault(require(\"./parsers/device\"));\nconst operating_system_1 = __importDefault(require(\"./parsers/operating-system\"));\nconst vendor_fragment_1 = __importDefault(require(\"./parsers/vendor-fragment\"));\nconst browser_1 = __importDefault(require(\"./parsers/client/browser\"));\nconst BotParser = require(\"./parsers/bot\");\nconst user_agent_1 = require(\"./utils/user-agent\");\nconst version_compare_1 = require(\"./utils/version-compare\");\nclass DeviceDetector {\n constructor(options) {\n // Default options\n this.options = {\n skipBotDetection: false,\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n const result = {\n client: this.clientParser.parse(userAgent),\n os: this.operatingSystemParser.parse(userAgent),\n device: this.deviceParser.parse(userAgent),\n bot: this.options.skipBotDetection ? null : this.botParser.parse(userAgent)\n };\n const osName = (_a = result.os) === null || _a === void 0 ? void 0 : _a.name;\n const osVersion = (_b = result.os) === null || _b === void 0 ? void 0 : _b.version;\n const osFamily = operating_system_1.default.getOsFamily(osName || \"\");\n if (!((_c = result.device) === null || _c === void 0 ? void 0 : _c.brand)) {\n const brand = this.vendorFragmentParser.parse(userAgent);\n if (brand) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.brand = brand;\n }\n }\n /**\n * Assume all devices running iOS / Mac OS are from Apple\n */\n if (!((_d = result.device) === null || _d === void 0 ? void 0 : _d.brand) && [\"Apple TV\", \"watchOS\", \"iOS\", \"Mac\"].includes(osName || \"\")) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.brand = \"Apple\";\n }\n /**\n * Chrome on Android passes the device type based on the keyword 'Mobile'\n * If it is present the device should be a smartphone, otherwise it's a tablet\n * See https://developer.chrome.com/multidevice/user-agent#chrome_for_android_user_agent\n * Note: We do not check for browser (family) here, as there might be mobile apps using Chrome, that won't have\n * a detected browser, but can still be detected. So we check the useragent for Chrome instead.\n */\n if (!((_e = result.device) === null || _e === void 0 ? void 0 : _e.type) && osFamily === \"Android\" && user_agent_1.userAgentParser(\"Chrome/[\\\\.0-9]*\", userAgent)) {\n if (user_agent_1.userAgentParser(\"Chrome/[.0-9]* (?:Mobile|eliboM)\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"smartphone\";\n }\n else if (user_agent_1.userAgentParser(\"Chrome/[.0-9]* (?!Mobile)\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n }\n /**\n * Some user agents simply contain the fragment 'Android; Tablet;' or 'Opera Tablet', so we assume those devices are tablets\n */\n if (!((_f = result.device) === null || _f === void 0 ? void 0 : _f.type) && this.hasAndroidTabletFragment(userAgent) || user_agent_1.userAgentParser(\"Opera Tablet\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n /**\n * Some user agents simply contain the fragment 'Android; Mobile;', so we assume those devices are smartphones\n */\n if (!((_g = result.device) === null || _g === void 0 ? void 0 : _g.type) && this.hasAndroidMobileFragment(userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"smartphone\";\n }\n /**\n * Android up to 3.0 was designed for smartphones only. But as 3.0, which was tablet only, was published\n * too late, there were a bunch of tablets running with 2.x\n * With 4.0 the two trees were merged and it is for smartphones and tablets\n *\n * So were are expecting that all devices running Android < 2 are smartphones\n * Devices running Android 3.X are tablets. Device type of Android 2.X and 4.X+ are unknown\n */\n if (!((_h = result.device) === null || _h === void 0 ? void 0 : _h.type) && osName === \"Android\" && osVersion !== \"\") {\n if (version_compare_1.versionCompare(osVersion, \"2.0\") === -1) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"smartphone\";\n }\n else if (version_compare_1.versionCompare(osVersion, \"3.0\") >= 0 && version_compare_1.versionCompare(osVersion, \"4.0\") === -1) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n }\n /**\n * All detected feature phones running android are more likely smartphones\n */\n if (((_j = result.device) === null || _j === void 0 ? void 0 : _j.type) === \"feature phone\" && osFamily === \"Android\") {\n result.device.type = \"smartphone\";\n }\n /**\n * According to http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx\n * Internet Explorer 10 introduces the \"Touch\" UA string token. If this token is present at the end of the\n * UA string, the computer has touch capability, and is running Windows 8 (or later).\n * This UA string will be transmitted on a touch-enabled system running Windows 8 (RT)\n *\n * As most touch enabled devices are tablets and only a smaller part are desktops/notebooks we assume that\n * all Windows 8 touch devices are tablets.\n */\n if (!((_k = result.device) === null || _k === void 0 ? void 0 : _k.type)\n && this.isToucheEnabled(userAgent)\n && (osName === \"Windows RT\"\n || (osName === \"Windows\"\n && version_compare_1.versionCompare(osVersion, \"8.0\") >= 0))) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n /**\n * All devices running Opera TV Store are assumed to be televisions\n */\n if (user_agent_1.userAgentParser(\"Opera TV Store\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"television\";\n }\n /**\n * All devices running Tizen TV or SmartTV are assumed to be televisions\n */\n if (user_agent_1.userAgentParser(\"SmartTV|Tizen.+ TV .+$\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"television\";\n }\n /**\n * Devices running Kylo or Espital TV Browsers are assumed to be televisions\n */\n if (!((_l = result.device) === null || _l === void 0 ? void 0 : _l.type) && [\"Kylo\", \"Espial TV Browser\"].includes(((_m = result.client) === null || _m === void 0 ? void 0 : _m.name) || \"\")) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"television\";\n }\n /**\n * Set device type to desktop if string ua contains desktop\n */\n const hasDesktop = \"desktop\" !== ((_o = result.device) === null || _o === void 0 ? void 0 : _o.type)\n && null !== user_agent_1.userAgentParser(\"Desktop\", userAgent)\n && this.hasDesktopFragment(userAgent);\n if (hasDesktop) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"desktop\";\n }\n // set device type to desktop for all devices running a desktop os that were not detected as an other device type\n if (!((_p = result.device) === null || _p === void 0 ? void 0 : _p.type) && this.isDesktop(result, osFamily)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"desktop\";\n }\n return result;\n };\n this.hasAndroidMobileFragment = (userAgent) => {\n return user_agent_1.userAgentParser(\"Android( [\\.0-9]+)?; Mobile;\", userAgent);\n };\n this.hasAndroidTabletFragment = (userAgent) => {\n return user_agent_1.userAgentParser(\"Android( [\\.0-9]+)?; Tablet;\", userAgent);\n };\n this.hasDesktopFragment = (userAgent) => {\n return user_agent_1.userAgentParser(\"Desktop (x(?:32|64)|WOW64);\", userAgent);\n };\n this.isDesktop = (result, osFamily) => {\n if (!result.os) {\n return false;\n }\n // Check for browsers available for mobile devices only\n if (this.usesMobileBrowser(result.client)) {\n return false;\n }\n return operating_system_1.default.getDesktopOsArray().includes(osFamily);\n };\n this.usesMobileBrowser = (client) => {\n var _a, _b;\n if (!client)\n return false;\n return ((_a = client) === null || _a === void 0 ? void 0 : _a.type) === \"browser\" && browser_1.default.isMobileOnlyBrowser((_b = client) === null || _b === void 0 ? void 0 : _b.name);\n };\n this.isToucheEnabled = (userAgent) => {\n return user_agent_1.userAgentParser(\"Touch\", userAgent);\n };\n this.createDeviceObject = () => ({\n type: \"\",\n brand: \"\",\n model: \"\"\n });\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.clientParser = new client_1.default(this.options);\n this.deviceParser = new device_1.default();\n this.operatingSystemParser = new operating_system_1.default(this.options);\n this.vendorFragmentParser = new vendor_fragment_1.default();\n this.botParser = new BotParser();\n }\n}\nmodule.exports = DeviceDetector;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst bots_json_1 = __importDefault(require(\"../../fixtures/regexes/bots.json\"));\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass BotParser {\n constructor() {\n this.parse = (userAgent) => {\n var _a, _b, _c, _d;\n for (const bot of bots_json_1.default) {\n const match = user_agent_1.userAgentParser(bot.regex, userAgent);\n if (!match)\n continue;\n return {\n name: bot.name,\n category: bot.category || \"\",\n url: bot.url || \"\",\n producer: {\n name: ((_b = (_a = bot) === null || _a === void 0 ? void 0 : _a.producer) === null || _b === void 0 ? void 0 : _b.name) || \"\",\n url: ((_d = (_c = bot) === null || _c === void 0 ? void 0 : _c.producer) === null || _d === void 0 ? void 0 : _d.url) || \"\"\n }\n };\n }\n return null;\n };\n }\n}\nmodule.exports = BotParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst browsers_json_1 = __importDefault(require(\"../../fixtures/regexes/client/browsers.json\"));\nconst browser_engine_json_1 = __importDefault(require(\"../../fixtures/regexes/client/browser_engine.json\"));\nconst available_browsers_json_1 = __importDefault(require(\"./fixtures/available-browsers.json\"));\nconst mobile_only_browsers_json_1 = __importDefault(require(\"./fixtures/mobile-only-browsers.json\"));\nclass BrowserParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\",\n engine: \"\",\n engineVersion: \"\"\n };\n for (const browser of browsers_json_1.default) {\n const match = user_agent_1.userAgentParser(browser.regex, userAgent);\n if (!match)\n continue;\n const vrpVersion = variable_replacement_1.variableReplacement(browser.version, match);\n const version = version_1.formatVersion(vrpVersion, this.options.versionTruncation);\n const shortVersion = version && parseFloat(version_1.formatVersion(vrpVersion, 1)) || \"\";\n if (browser.engine) {\n result.engine = browser.engine.default;\n if (browser.engine && browser.engine.versions && shortVersion) {\n const sortedEngineVersions = Object.entries(browser.engine.versions).sort((a, b) => {\n return parseFloat(a[0]) > parseFloat(b[0]) ? 1 : -1;\n });\n for (const [versionThreshold, engineByVersion] of sortedEngineVersions) {\n if (parseFloat(versionThreshold) <= shortVersion) {\n result.engine = engineByVersion || \"\";\n }\n }\n }\n }\n result.type = \"browser\";\n result.name = variable_replacement_1.variableReplacement(browser.name, match);\n result.version = version;\n break;\n }\n if (!result.engine) {\n for (const browserEngine of browser_engine_json_1.default) {\n let match = null;\n try {\n match = RegExp(browserEngine.regex, \"i\").exec(userAgent);\n }\n catch (_a) {\n // TODO: find out why it fails in some browsers\n }\n if (!match)\n continue;\n result.engine = browserEngine.name;\n break;\n }\n }\n result.engineVersion = version_1.formatVersion(version_1.parseBrowserEngineVersion(userAgent, result.engine), this.options.versionTruncation);\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = BrowserParser;\nBrowserParser.getBrowserShortName = (browserName) => {\n for (const [shortName, name] of Object.entries(available_browsers_json_1.default)) {\n if (name === browserName) {\n return shortName;\n }\n }\n return \"\";\n};\nBrowserParser.isMobileOnlyBrowser = (browserName) => {\n return mobile_only_browsers_json_1.default.includes(BrowserParser.getBrowserShortName(browserName));\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst feed_readers_json_1 = __importDefault(require(\"../../fixtures/regexes/client/feed_readers.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass FeedReaderParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\",\n url: \"\"\n };\n for (const feedReader of feed_readers_json_1.default) {\n const match = user_agent_1.userAgentParser(feedReader.regex, userAgent);\n if (!match)\n continue;\n result.type = \"feed reader\";\n result.name = variable_replacement_1.variableReplacement(feedReader.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(feedReader.version, match), this.options.versionTruncation);\n result.url = feedReader.url;\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = FeedReaderParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst browser_1 = __importDefault(require(\"./browser\"));\nconst mobile_apps_1 = __importDefault(require(\"./mobile-apps\"));\nconst feed_readers_1 = __importDefault(require(\"./feed-readers\"));\nconst libraries_1 = __importDefault(require(\"./libraries\"));\nconst media_players_1 = __importDefault(require(\"./media-players\"));\nconst personal_information_managers_1 = __importDefault(require(\"./personal-information-managers\"));\nconst clientParsers = [\n feed_readers_1.default,\n mobile_apps_1.default,\n media_players_1.default,\n personal_information_managers_1.default,\n browser_1.default,\n libraries_1.default\n];\nclass ClientParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n for (const Parser of clientParsers) {\n const parser = new Parser(this.options);\n const client = parser.parse(userAgent);\n if (client.type !== \"\")\n return client;\n }\n return null;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = ClientParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst libraries_json_1 = __importDefault(require(\"../../fixtures/regexes/client/libraries.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass LibraryParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\",\n url: \"\"\n };\n for (const library of libraries_json_1.default) {\n const match = user_agent_1.userAgentParser(library.regex, userAgent);\n if (!match)\n continue;\n result.type = \"library\";\n result.name = variable_replacement_1.variableReplacement(library.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(library.version, match), this.options.versionTruncation);\n result.url = library.url || \"\";\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = LibraryParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mediaplayers_json_1 = __importDefault(require(\"../../fixtures/regexes/client/mediaplayers.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass MediaPlayerParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\"\n };\n for (const mediaPlayer of mediaplayers_json_1.default) {\n const match = user_agent_1.userAgentParser(mediaPlayer.regex, userAgent);\n if (!match)\n continue;\n result.type = \"media player\";\n result.name = variable_replacement_1.variableReplacement(mediaPlayer.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(mediaPlayer.version, match), this.options.versionTruncation);\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = MediaPlayerParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mobile_apps_json_1 = __importDefault(require(\"../../fixtures/regexes/client/mobile_apps.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass MobileAppParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\"\n };\n for (const mobileApp of mobile_apps_json_1.default) {\n const match = user_agent_1.userAgentParser(mobileApp.regex, userAgent);\n if (!match)\n continue;\n result.type = \"mobile app\";\n result.name = variable_replacement_1.variableReplacement(mobileApp.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(mobileApp.version, match), this.options.versionTruncation);\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = MobileAppParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst pim_json_1 = __importDefault(require(\"../../fixtures/regexes/client/pim.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass PersonalInformationManagerParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\"\n };\n for (const personalInformationManager of pim_json_1.default) {\n const match = user_agent_1.userAgentParser(personalInformationManager.regex, userAgent);\n if (!match)\n continue;\n result.type = \"personal information manager\";\n result.name = variable_replacement_1.variableReplacement(personalInformationManager.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(personalInformationManager.version, match), this.options.versionTruncation);\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = PersonalInformationManagerParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cameras_json_1 = __importDefault(require(\"../../fixtures/regexes/device/cameras.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass CameraParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, camera] of Object.entries(cameras_json_1.default)) {\n const match = user_agent_1.userAgentParser(camera.regex, userAgent);\n if (!match)\n continue;\n result.type = \"camera\";\n result.brand = brand;\n if (\"model\" in camera && camera.model) {\n result.model = variable_replacement_1.variableReplacement(camera.model, match).trim();\n }\n else if (\"models\" in camera && camera.models) {\n for (const model of camera.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, modelMatch).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = CameraParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst car_browsers_json_1 = __importDefault(require(\"../../fixtures/regexes/device/car_browsers.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass CarParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, car] of Object.entries(car_browsers_json_1.default)) {\n const match = user_agent_1.userAgentParser(car.regex, userAgent);\n if (!match)\n continue;\n result.type = \"car\";\n result.brand = brand;\n for (const model of car.models) {\n const match = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!match)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, match).trim();\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = CarParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst consoles_json_1 = __importDefault(require(\"../../fixtures/regexes/device/consoles.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass ConsoleParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, gameConsole] of Object.entries(consoles_json_1.default)) {\n const match = user_agent_1.userAgentParser(gameConsole.regex, userAgent);\n if (!match)\n continue;\n result.type = gameConsole.device;\n result.brand = brand;\n if (\"model\" in gameConsole && gameConsole.model) {\n result.model = variable_replacement_1.variableReplacement(gameConsole.model, match).trim();\n }\n else if (\"models\" in gameConsole && gameConsole.models) {\n for (const model of gameConsole.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, modelMatch).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = ConsoleParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cameras_1 = __importDefault(require(\"./cameras\"));\nconst mobiles_1 = __importDefault(require(\"./mobiles\"));\nconst televisions_1 = __importDefault(require(\"./televisions\"));\nconst cars_1 = __importDefault(require(\"./cars\"));\nconst consoles_1 = __importDefault(require(\"./consoles\"));\nconst notebooks_1 = __importDefault(require(\"./notebooks\"));\nconst portable_media_players_1 = __importDefault(require(\"./portable-media-players\"));\nconst deviceParsers = [\n consoles_1.default,\n cars_1.default,\n cameras_1.default,\n televisions_1.default,\n portable_media_players_1.default,\n mobiles_1.default,\n notebooks_1.default\n];\nclass ClientParser {\n constructor() {\n this.parse = (userAgent) => {\n for (const Parser of deviceParsers) {\n const parser = new Parser();\n const device = parser.parse(userAgent);\n if (device.type !== \"\") {\n return device;\n }\n }\n return null;\n };\n }\n}\nexports.default = ClientParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mobiles_json_1 = __importDefault(require(\"../../fixtures/regexes/device/mobiles.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst model_1 = require(\"../../utils/model\");\nclass MobileParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n let resultType = \"\";\n for (const [brand, mobile] of Object.entries(mobiles_json_1.default)) {\n const match = user_agent_1.userAgentParser(mobile.regex, userAgent);\n if (!match)\n continue;\n resultType = \"device\" in mobile && mobile.device || \"\";\n result.brand = brand;\n if (\"model\" in mobile && mobile.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(mobile.model, match)).trim();\n }\n else if (\"models\" in mobile && mobile.models) {\n for (const model of mobile.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(model.model, modelMatch)).trim();\n if (\"device\" in model && model.device) {\n resultType = model.device;\n }\n if (\"brand\" in model) {\n result.brand = model.brand || \"\";\n }\n break;\n }\n }\n break;\n }\n // Sanitize device type\n if (resultType === \"tv\") {\n result.type = \"television\";\n }\n else if (resultType === \"car browser\") {\n result.type = \"car\";\n }\n else {\n result.type = resultType;\n }\n // Sanitize device brand\n if (result.brand === \"Unknown\") {\n result.brand = \"\";\n }\n return result;\n };\n }\n}\nexports.default = MobileParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst notebooks_json_1 = __importDefault(require(\"../../fixtures/regexes/device/notebooks.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst model_1 = require(\"../../utils/model\");\nclass NotebooksParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n if (!user_agent_1.userAgentParser(\"FBMD/\", userAgent)) {\n return result;\n }\n for (const [brand, notebook] of Object.entries(notebooks_json_1.default)) {\n const match = user_agent_1.userAgentParser(notebook.regex, userAgent);\n if (!match)\n continue;\n result.type = \"desktop\";\n result.brand = brand;\n if (\"model\" in notebook && notebook.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(notebook.model, match)).trim();\n }\n else if (\"models\" in notebook && notebook.models) {\n for (const model of notebook.models) {\n const match = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!match)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, match).trim();\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = NotebooksParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst portable_media_player_json_1 = __importDefault(require(\"../../fixtures/regexes/device/portable_media_player.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass PortableMediaPlayersParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, portableMediaPlayer] of Object.entries(portable_media_player_json_1.default)) {\n const match = user_agent_1.userAgentParser(portableMediaPlayer.regex, userAgent);\n if (!match)\n continue;\n result.type = portableMediaPlayer.device;\n result.brand = brand;\n if (\"model\" in portableMediaPlayer && portableMediaPlayer.model) {\n result.model = variable_replacement_1.variableReplacement(portableMediaPlayer.model, match).trim();\n }\n else if (\"models\" in portableMediaPlayer && portableMediaPlayer.models) {\n for (const model of portableMediaPlayer.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, modelMatch).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = PortableMediaPlayersParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst televisions_json_1 = __importDefault(require(\"../../fixtures/regexes/device/televisions.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst model_1 = require(\"../../utils/model\");\nclass TelevisionParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n if (!this.isHbbTv(userAgent))\n return result;\n result.type = \"television\";\n for (const [brand, television] of Object.entries(televisions_json_1.default)) {\n const match = user_agent_1.userAgentParser(television.regex, userAgent);\n if (!match)\n continue;\n result.brand = brand;\n if (\"model\" in television && television.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(television.model, match)).trim();\n }\n else if (\"models\" in television && television.models) {\n for (const model of television.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(model.model, modelMatch)).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n this.isHbbTv = (userAgent) => {\n return user_agent_1.userAgentParser(\"HbbTV\\/([1-9]{1}(?:\\.[0-9]{1}){1,2})\", userAgent);\n };\n }\n}\nexports.default = TelevisionParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst oss_json_1 = __importDefault(require(\"../../fixtures/regexes/oss.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst operating_system_json_1 = __importDefault(require(\"./fixtures/operating-system.json\"));\nconst desktopOsArray = [\"AmigaOS\", \"IBM\", \"GNU/Linux\", \"Mac\", \"Unix\", \"Windows\", \"BeOS\", \"Chrome OS\"];\nconst shortOsNames = operating_system_json_1.default.operatingSystem;\nconst osFamilies = operating_system_json_1.default.osFamilies;\nclass OperatingSystemParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n name: \"\",\n version: \"\",\n platform: this.parsePlatform(userAgent)\n };\n for (const operatingSystem of oss_json_1.default) {\n const match = user_agent_1.userAgentParser(operatingSystem.regex, userAgent);\n if (!match)\n continue;\n result.name = variable_replacement_1.variableReplacement(operatingSystem.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(operatingSystem.version, match), this.options.versionTruncation);\n if (result.name === \"lubuntu\") {\n result.name = \"Lubuntu\";\n }\n if (result.name === \"debian\") {\n result.name = \"Debian\";\n }\n if (result.name === \"YunOS\") {\n result.name = \"YunOs\";\n }\n return result;\n }\n return null;\n };\n this.parsePlatform = (userAgent) => {\n if (user_agent_1.userAgentParser(\"arm|aarch64|Watch ?OS|Watch1,[12]\", userAgent)) {\n return \"ARM\";\n }\n if (user_agent_1.userAgentParser(\"mips\", userAgent)) {\n return \"MIPS\";\n }\n if (user_agent_1.userAgentParser(\"sh4\", userAgent)) {\n return \"SuperH\";\n }\n if (user_agent_1.userAgentParser(\"WOW64|x64|win64|amd64|x86_?64\", userAgent)) {\n return \"x64\";\n }\n if (user_agent_1.userAgentParser(\"(?:i[0-9]|x)86|i86pc\", userAgent)) {\n return \"x86\";\n }\n return \"\";\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = OperatingSystemParser;\nOperatingSystemParser.getDesktopOsArray = () => desktopOsArray;\nOperatingSystemParser.getOsFamily = (osName) => {\n const osShortName = OperatingSystemParser.getOsShortName(osName);\n for (const [osFamily, shortNames] of Object.entries(osFamilies)) {\n if (shortNames.includes(osShortName)) {\n return osFamily;\n }\n }\n return \"\";\n};\nOperatingSystemParser.getOsShortName = (osName) => {\n for (const [shortName, name] of Object.entries(shortOsNames)) {\n if (name === osName)\n return shortName;\n }\n return \"\";\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst vendorfragments_json_1 = __importDefault(require(\"../../fixtures/regexes/vendorfragments.json\"));\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass VendorFragmentParser {\n constructor() {\n this.parse = (userAgent) => {\n for (const [brand, vendorFragment] of Object.entries(vendorfragments_json_1.default)) {\n for (const regex of vendorFragment) {\n const match = user_agent_1.userAgentParser(regex, userAgent);\n if (!match)\n continue;\n return brand;\n }\n }\n return \"\";\n };\n }\n}\nexports.default = VendorFragmentParser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.memoryCache = () => {\n const memoryCacheBucket = {};\n const set = (key, value) => {\n memoryCacheBucket[key] = value;\n };\n const get = (key) => {\n if (memoryCacheBucket.hasOwnProperty(key)) {\n return memoryCacheBucket[key];\n }\n };\n return {\n set,\n get\n };\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildModel = (model) => {\n model = model.replace(/_/g, \" \");\n model = model.replace(RegExp(\" TD$\", \"i\"), \"\");\n if (model === \"Build\")\n return \"\";\n return model;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trim = (str, char) => {\n return str.replace(new RegExp(\"^[\" + char + \"]+|[\" + char + \"]+$\", \"g\"), \"\");\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst memory_cache_1 = require(\"./memory-cache\");\nconst cache = memory_cache_1.memoryCache();\nconst getRegexInstance = (rawRegex) => {\n const cachedRegexInstance = cache.get(rawRegex);\n if (cachedRegexInstance)\n return cachedRegexInstance.value;\n const regexInstance = RegExp(`(?:^|[^A-Z0-9\\-_]|[^A-Z0-9\\-]_|sprd-)(?:${rawRegex})`, \"i\");\n cache.set(rawRegex, {\n value: regexInstance\n });\n return regexInstance;\n};\nexports.userAgentParser = (rawRegex, userAgent) => {\n // TODO: find out why it fails in some browsers\n try {\n const regexInstance = getRegexInstance(rawRegex);\n const match = regexInstance.exec(userAgent);\n return match ? match.slice(1) : null;\n }\n catch (_a) {\n return null;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.variableReplacement = (template, variables) => {\n const regex = new RegExp(`\\\\$\\\\d`, \"g\");\n if (template === null || template === undefined)\n return \"\";\n return template.replace(regex, (match) => {\n const index = parseInt(match.substr(1), 10);\n const variable = variables[index - 1];\n return variable || \"\";\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.versionCompare = (v1, v2, operator) => {\n // discuss at: http://locutus.io/php/version_compare/\n // original by: Philippe Jausions (http://pear.php.net/user/jausions)\n // original by: Aidan Lister (http://aidanlister.com/)\n // reimplemented by: Kankrelune (http://www.webfaktory.info/)\n // improved by: Brett Zamir (http://brett-zamir.me)\n // improved by: Scott Baker\n // improved by: Theriault (https://github.com/Theriault)\n // example 1: version_compare('8.2.5rc', '8.2.5a')\n // returns 1: 1\n // example 2: version_compare('8.2.50', '8.2.52', '<')\n // returns 2: true\n // example 3: version_compare('5.3.0-dev', '5.3.0')\n // returns 3: -1\n // example 4: version_compare('4.1.0.52','4.01.0.51')\n // returns 4: 1\n // Important: compare must be initialized at 0.\n let i;\n let x;\n let compare = 0;\n // vm maps textual PHP versions to negatives so they're less than 0.\n // PHP currently defines these as CASE-SENSITIVE. It is important to\n // leave these as negatives so that they can come before numerical versions\n // and as if no letters were there to begin with.\n // (1alpha is < 1 and < 1.1 but > 1dev1)\n // If a non-numerical value can't be mapped to this table, it receives\n // -7 as its value.\n const vm = {\n \"dev\": -6,\n \"alpha\": -5,\n \"a\": -5,\n \"beta\": -4,\n \"b\": -4,\n \"RC\": -3,\n \"rc\": -3,\n \"#\": -2,\n \"p\": 1,\n \"pl\": 1\n };\n // This function will be called to prepare each version argument.\n // It replaces every _, -, and + with a dot.\n // It surrounds any nonsequence of numbers/dots with dots.\n // It replaces sequences of dots with a single dot.\n // version_compare('4..0', '4.0') === 0\n // Important: A string of 0 length needs to be converted into a value\n // even less than an unexisting value in vm (-7), hence [-8].\n // It's also important to not strip spaces because of this.\n // version_compare('', ' ') === 1\n const prepVersion = (v) => {\n v = (\"\" + v).replace(/[_\\-+]/g, \".\");\n v = v.replace(/([^.\\d]+)/g, \".$1.\").replace(/\\.{2,}/g, \".\");\n return (!v.length ? [-8] : v.split(\".\"));\n };\n // This converts a version component to a number.\n // Empty component becomes 0.\n // Non-numerical component becomes a negative number.\n // Numerical component becomes itself as an integer.\n const numVersion = (v) => {\n return !v ? 0 : (isNaN(v) ? vm[v] || -7 : parseInt(v, 10));\n };\n v1 = prepVersion(v1);\n v2 = prepVersion(v2);\n x = Math.max(v1.length, v2.length);\n for (i = 0; i < x; i++) {\n if (v1[i] === v2[i]) {\n continue;\n }\n v1[i] = numVersion(v1[i]);\n v2[i] = numVersion(v2[i]);\n if (v1[i] < v2[i]) {\n compare = -1;\n break;\n }\n else if (v1[i] > v2[i]) {\n compare = 1;\n break;\n }\n }\n if (!operator) {\n return compare;\n }\n // Important: operator is CASE-SENSITIVE.\n // \"No operator\" seems to be treated as \"<.\"\n // Any other values seem to make the function return null.\n switch (operator) {\n case \">\":\n case \"gt\":\n return (compare > 0);\n case \">=\":\n case \"ge\":\n return (compare >= 0);\n case \"<=\":\n case \"le\":\n return (compare <= 0);\n case \"===\":\n case \"=\":\n case \"eq\":\n return (compare === 0);\n case \"<>\":\n case \"!==\":\n case \"ne\":\n return (compare !== 0);\n case \"\":\n case \"<\":\n case \"lt\":\n return (compare < 0);\n default:\n return null;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst trim_1 = require(\"./trim\");\nexports.formatVersion = (version, versionTruncation) => {\n if (version === undefined)\n return \"\";\n const versionString = trim_1.trim(version, \". \").replace(new RegExp(\"_\", \"g\"), \".\");\n const versionParts = versionString.split(\".\");\n // Return if the string is not only digits once we removed the dots\n if (!/^\\d+$/.test(versionParts.join(\"\"))) {\n return versionString;\n }\n if (versionTruncation !== 0) {\n if (Number.isInteger(parseFloat(versionString))) {\n return parseInt(versionString, 10).toFixed(1);\n }\n }\n if (versionParts.length > 1) {\n if (versionTruncation !== null) {\n return versionParts.slice(0, versionTruncation + 1).join(\".\");\n }\n }\n return versionString;\n};\nexports.parseBrowserEngineVersion = (userAgent, engine) => {\n if (!engine)\n return \"\";\n if (engine === \"Gecko\") {\n const geckoVersionRegex = /[ ](?:rv[: ]([0-9\\.]+)).*gecko\\/[0-9]{8,10}/i;\n const match = userAgent.match(geckoVersionRegex);\n if (match) {\n return match.pop();\n }\n }\n const regex = new RegExp(`${engine}\\\\s*\\\\/?\\\\s*((?:(?=\\\\d+\\\\.\\\\d)\\\\d+[.\\\\d]*|\\\\d{1,7}(?=(?:\\\\D|$))))`, \"i\");\n const match = userAgent.match(regex);\n if (!match)\n return \"\";\n return match.pop();\n};\n","var assert = require('assert')\nvar BigInteger = require('bigi')\n\nvar Point = require('./point')\n\nfunction Curve (p, a, b, Gx, Gy, n, h) {\n this.p = p\n this.a = a\n this.b = b\n this.G = Point.fromAffine(this, Gx, Gy)\n this.n = n\n this.h = h\n\n this.infinity = new Point(this, null, null, BigInteger.ZERO)\n\n // result caching\n this.pOverFour = p.add(BigInteger.ONE).shiftRight(2)\n\n // determine size of p in bytes\n this.pLength = Math.floor((this.p.bitLength() + 7) / 8)\n}\n\nCurve.prototype.pointFromX = function (isOdd, x) {\n var alpha = x.pow(3).add(this.a.multiply(x)).add(this.b).mod(this.p)\n var beta = alpha.modPow(this.pOverFour, this.p) // XXX: not compatible with all curves\n\n var y = beta\n if (beta.isEven() ^ !isOdd) {\n y = this.p.subtract(y) // -y % p\n }\n\n return Point.fromAffine(this, x, y)\n}\n\nCurve.prototype.isInfinity = function (Q) {\n if (Q === this.infinity) return true\n\n return Q.z.signum() === 0 && Q.y.signum() !== 0\n}\n\nCurve.prototype.isOnCurve = function (Q) {\n if (this.isInfinity(Q)) return true\n\n var x = Q.affineX\n var y = Q.affineY\n var a = this.a\n var b = this.b\n var p = this.p\n\n // Check that xQ and yQ are integers in the interval [0, p - 1]\n if (x.signum() < 0 || x.compareTo(p) >= 0) return false\n if (y.signum() < 0 || y.compareTo(p) >= 0) return false\n\n // and check that y^2 = x^3 + ax + b (mod p)\n var lhs = y.square().mod(p)\n var rhs = x.pow(3).add(a.multiply(x)).add(b).mod(p)\n return lhs.equals(rhs)\n}\n\n/**\n * Validate an elliptic curve point.\n *\n * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive\n */\nCurve.prototype.validate = function (Q) {\n // Check Q != O\n assert(!this.isInfinity(Q), 'Point is at infinity')\n assert(this.isOnCurve(Q), 'Point is not on the curve')\n\n // Check nQ = O (where Q is a scalar multiple of G)\n var nQ = Q.multiply(this.n)\n assert(this.isInfinity(nQ), 'Point is not a scalar multiple of G')\n\n return true\n}\n\nmodule.exports = Curve\n","var Point = require('./point')\nvar Curve = require('./curve')\n\nvar getCurveByName = require('./names')\n\nmodule.exports = {\n Curve: Curve,\n Point: Point,\n getCurveByName: getCurveByName\n}\n","var BigInteger = require('bigi')\n\nvar curves = require('./curves.json')\nvar Curve = require('./curve')\n\nfunction getCurveByName (name) {\n var curve = curves[name]\n if (!curve) return null\n\n var p = new BigInteger(curve.p, 16)\n var a = new BigInteger(curve.a, 16)\n var b = new BigInteger(curve.b, 16)\n var n = new BigInteger(curve.n, 16)\n var h = new BigInteger(curve.h, 16)\n var Gx = new BigInteger(curve.Gx, 16)\n var Gy = new BigInteger(curve.Gy, 16)\n\n return new Curve(p, a, b, Gx, Gy, n, h)\n}\n\nmodule.exports = getCurveByName\n","var assert = require('assert')\nvar BigInteger = require('bigi')\n\nvar THREE = BigInteger.valueOf(3)\n\nfunction Point (curve, x, y, z) {\n assert.notStrictEqual(z, undefined, 'Missing Z coordinate')\n\n this.curve = curve\n this.x = x\n this.y = y\n this.z = z\n this._zInv = null\n\n this.compressed = true\n}\n\nObject.defineProperty(Point.prototype, 'zInv', {\n get: function () {\n if (this._zInv === null) {\n this._zInv = this.z.modInverse(this.curve.p)\n }\n\n return this._zInv\n }\n})\n\nObject.defineProperty(Point.prototype, 'affineX', {\n get: function () {\n return this.x.multiply(this.zInv).mod(this.curve.p)\n }\n})\n\nObject.defineProperty(Point.prototype, 'affineY', {\n get: function () {\n return this.y.multiply(this.zInv).mod(this.curve.p)\n }\n})\n\nPoint.fromAffine = function (curve, x, y) {\n return new Point(curve, x, y, BigInteger.ONE)\n}\n\nPoint.prototype.equals = function (other) {\n if (other === this) return true\n if (this.curve.isInfinity(this)) return this.curve.isInfinity(other)\n if (this.curve.isInfinity(other)) return this.curve.isInfinity(this)\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = other.y.multiply(this.z).subtract(this.y.multiply(other.z)).mod(this.curve.p)\n\n if (u.signum() !== 0) return false\n\n // v = X2 * Z1 - X1 * Z2\n var v = other.x.multiply(this.z).subtract(this.x.multiply(other.z)).mod(this.curve.p)\n\n return v.signum() === 0\n}\n\nPoint.prototype.negate = function () {\n var y = this.curve.p.subtract(this.y)\n\n return new Point(this.curve, this.x, y, this.z)\n}\n\nPoint.prototype.add = function (b) {\n if (this.curve.isInfinity(this)) return b\n if (this.curve.isInfinity(b)) return this\n\n var x1 = this.x\n var y1 = this.y\n var x2 = b.x\n var y2 = b.y\n\n // u = Y2 * Z1 - Y1 * Z2\n var u = y2.multiply(this.z).subtract(y1.multiply(b.z)).mod(this.curve.p)\n // v = X2 * Z1 - X1 * Z2\n var v = x2.multiply(this.z).subtract(x1.multiply(b.z)).mod(this.curve.p)\n\n if (v.signum() === 0) {\n if (u.signum() === 0) {\n return this.twice() // this == b, so double\n }\n\n return this.curve.infinity // this = -b, so infinity\n }\n\n var v2 = v.square()\n var v3 = v2.multiply(v)\n var x1v2 = x1.multiply(v2)\n var zu2 = u.square().multiply(this.z)\n\n // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3)\n var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.p)\n // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3\n var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.p)\n // z3 = v^3 * z1 * z2\n var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.p)\n\n return new Point(this.curve, x3, y3, z3)\n}\n\nPoint.prototype.twice = function () {\n if (this.curve.isInfinity(this)) return this\n if (this.y.signum() === 0) return this.curve.infinity\n\n var x1 = this.x\n var y1 = this.y\n\n var y1z1 = y1.multiply(this.z).mod(this.curve.p)\n var y1sqz1 = y1z1.multiply(y1).mod(this.curve.p)\n var a = this.curve.a\n\n // w = 3 * x1^2 + a * z1^2\n var w = x1.square().multiply(THREE)\n\n if (a.signum() !== 0) {\n w = w.add(this.z.square().multiply(a))\n }\n\n w = w.mod(this.curve.p)\n // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1)\n var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.p)\n // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3\n var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.pow(3)).mod(this.curve.p)\n // z3 = 8 * (y1 * z1)^3\n var z3 = y1z1.pow(3).shiftLeft(3).mod(this.curve.p)\n\n return new Point(this.curve, x3, y3, z3)\n}\n\n// Simple NAF (Non-Adjacent Form) multiplication algorithm\n// TODO: modularize the multiplication algorithm\nPoint.prototype.multiply = function (k) {\n if (this.curve.isInfinity(this)) return this\n if (k.signum() === 0) return this.curve.infinity\n\n var e = k\n var h = e.multiply(THREE)\n\n var neg = this.negate()\n var R = this\n\n for (var i = h.bitLength() - 2; i > 0; --i) {\n var hBit = h.testBit(i)\n var eBit = e.testBit(i)\n\n R = R.twice()\n\n if (hBit !== eBit) {\n R = R.add(hBit ? this : neg)\n }\n }\n\n return R\n}\n\n// Compute this*j + x*k (simultaneous multiplication)\nPoint.prototype.multiplyTwo = function (j, x, k) {\n var i = Math.max(j.bitLength(), k.bitLength()) - 1\n var R = this.curve.infinity\n var both = this.add(x)\n\n while (i >= 0) {\n var jBit = j.testBit(i)\n var kBit = k.testBit(i)\n\n R = R.twice()\n\n if (jBit) {\n if (kBit) {\n R = R.add(both)\n } else {\n R = R.add(this)\n }\n } else if (kBit) {\n R = R.add(x)\n }\n --i\n }\n\n return R\n}\n\nPoint.prototype.getEncoded = function (compressed) {\n if (compressed == null) compressed = this.compressed\n if (this.curve.isInfinity(this)) return new Buffer('00', 'hex') // Infinity point encoded is simply '00'\n\n var x = this.affineX\n var y = this.affineY\n var byteLength = this.curve.pLength\n var buffer\n\n // 0x02/0x03 | X\n if (compressed) {\n buffer = new Buffer(1 + byteLength)\n buffer.writeUInt8(y.isEven() ? 0x02 : 0x03, 0)\n\n // 0x04 | X | Y\n } else {\n buffer = new Buffer(1 + byteLength + byteLength)\n buffer.writeUInt8(0x04, 0)\n\n y.toBuffer(byteLength).copy(buffer, 1 + byteLength)\n }\n\n x.toBuffer(byteLength).copy(buffer, 1)\n\n return buffer\n}\n\nPoint.decodeFrom = function (curve, buffer) {\n var type = buffer.readUInt8(0)\n var compressed = (type !== 4)\n\n var byteLength = Math.floor((curve.p.bitLength() + 7) / 8)\n var x = BigInteger.fromBuffer(buffer.slice(1, 1 + byteLength))\n\n var Q\n if (compressed) {\n assert.equal(buffer.length, byteLength + 1, 'Invalid sequence length')\n assert(type === 0x02 || type === 0x03, 'Invalid sequence tag')\n\n var isOdd = (type === 0x03)\n Q = curve.pointFromX(isOdd, x)\n } else {\n assert.equal(buffer.length, 1 + byteLength + byteLength, 'Invalid sequence length')\n\n var y = BigInteger.fromBuffer(buffer.slice(1 + byteLength))\n Q = Point.fromAffine(curve, x, y)\n }\n\n Q.compressed = compressed\n return Q\n}\n\nPoint.prototype.toString = function () {\n if (this.curve.isInfinity(this)) return '(INFINITY)'\n\n return '(' + this.affineX.toString() + ',' + this.affineY.toString() + ')'\n}\n\nmodule.exports = Point\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) {\n var delta = msg.byteLength() * 8 - 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 key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\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 // 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) {\n msg = this._truncateToN(new BN(msg, 16));\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) {\n return this.ec.verify(msg, signature, this);\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 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 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 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 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 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 naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var 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","(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 if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\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","\"use strict\";\n\nvar randomBytes = require('randombytes');\n\nvar ByteBuffer = require('bytebuffer');\n\nvar crypto = require('browserify-aes');\n\nvar assert = require('assert');\n\nvar PublicKey = require('./key_public');\n\nvar PrivateKey = require('./key_private');\n\nvar hash = require('./hash');\n\nvar Long = ByteBuffer.Long;\nmodule.exports = {\n encrypt: encrypt,\n decrypt: decrypt\n};\n/**\n Spec: http://localhost:3002/steem/@dantheman/how-to-encrypt-a-memo-when-transferring-steem\n\n @throws {Error|TypeError} - \"Invalid Key, ...\"\n\n @arg {PrivateKey} private_key - required and used for decryption\n @arg {PublicKey} public_key - required and used to calcualte the shared secret\n @arg {string} [nonce = uniqueNonce()] - assigned a random unique uint64\n\n @return {object}\n @property {string} nonce - random or unique uint64, provides entropy when re-using the same private/public keys.\n @property {Buffer} message - Plain text message\n @property {number} checksum - shared secret checksum\n*/\n\nfunction encrypt(private_key, public_key, message) {\n var nonce = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : uniqueNonce();\n return crypt(private_key, public_key, nonce, message);\n}\n/**\n Spec: http://localhost:3002/steem/@dantheman/how-to-encrypt-a-memo-when-transferring-steem\n\n @arg {PrivateKey} private_key - required and used for decryption\n @arg {PublicKey} public_key - required and used to calcualte the shared secret\n @arg {string} nonce - random or unique uint64, provides entropy when re-using the same private/public keys.\n @arg {Buffer} message - Encrypted or plain text message\n @arg {number} checksum - shared secret checksum\n\n @throws {Error|TypeError} - \"Invalid Key, ...\"\n\n @return {Buffer} - message\n*/\n\n\nfunction decrypt(private_key, public_key, nonce, message, checksum) {\n return crypt(private_key, public_key, nonce, message, checksum).message;\n}\n/**\n @arg {Buffer} message - Encrypted or plain text message (see checksum)\n @arg {number} checksum - shared secret checksum (null to encrypt, non-null to decrypt)\n @private\n*/\n\n\nfunction crypt(private_key, public_key, nonce, message, checksum) {\n private_key = PrivateKey(private_key);\n if (!private_key) throw new TypeError('private_key is required');\n public_key = PublicKey(public_key);\n if (!public_key) throw new TypeError('public_key is required');\n nonce = toLongObj(nonce);\n if (!nonce) throw new TypeError('nonce is required');\n\n if (!Buffer.isBuffer(message)) {\n if (typeof message !== 'string') throw new TypeError('message should be buffer or string');\n message = new Buffer(message, 'binary');\n }\n\n if (checksum && typeof checksum !== 'number') throw new TypeError('checksum should be a number');\n var S = private_key.getSharedSecret(public_key);\n var ebuf = new ByteBuffer(ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);\n ebuf.writeUint64(nonce);\n ebuf.append(S.toString('binary'), 'binary');\n ebuf = new Buffer(ebuf.copy(0, ebuf.offset).toBinary(), 'binary');\n var encryption_key = hash.sha512(ebuf); // D E B U G\n // console.log('crypt', {\n // priv_to_pub: private_key.toPublic().toString(),\n // pub: public_key.toString(),\n // nonce: nonce.toString(),\n // message: message.length,\n // checksum,\n // S: S.toString('hex'),\n // encryption_key: encryption_key.toString('hex'),\n // })\n\n var iv = encryption_key.slice(32, 48);\n var key = encryption_key.slice(0, 32); // check is first 64 bit of sha256 hash treated as uint64_t truncated to 32 bits.\n\n var check = hash.sha256(encryption_key);\n check = check.slice(0, 4);\n var cbuf = ByteBuffer.fromBinary(check.toString('binary'), ByteBuffer.DEFAULT_CAPACITY, ByteBuffer.LITTLE_ENDIAN);\n check = cbuf.readUint32();\n\n if (checksum) {\n if (check !== checksum) throw new Error('Invalid key');\n message = cryptoJsDecrypt(message, key, iv);\n } else {\n message = cryptoJsEncrypt(message, key, iv);\n }\n\n return {\n nonce: nonce,\n message: message,\n checksum: check\n };\n}\n/** This method does not use a checksum, the returned data must be validated some other way.\n\n @arg {string|Buffer} message - ciphertext binary format\n @arg {string|Buffer} key - 256bit\n @arg {string|Buffer} iv - 128bit\n\n @return {Buffer}\n*/\n\n\nfunction cryptoJsDecrypt(message, key, iv) {\n assert(message, \"Missing cipher text\");\n message = toBinaryBuffer(message);\n var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv); // decipher.setAutoPadding(true)\n\n message = Buffer.concat([decipher.update(message), decipher[\"final\"]()]);\n return message;\n}\n/** This method does not use a checksum, the returned data must be validated some other way.\n @arg {string|Buffer} message - plaintext binary format\n @arg {string|Buffer} key - 256bit\n @arg {string|Buffer} iv - 128bit\n\n @return {Buffer}\n*/\n\n\nfunction cryptoJsEncrypt(message, key, iv) {\n assert(message, \"Missing plain text\");\n message = toBinaryBuffer(message);\n var cipher = crypto.createCipheriv('aes-256-cbc', key, iv); // cipher.setAutoPadding(true)\n\n message = Buffer.concat([cipher.update(message), cipher[\"final\"]()]);\n return message;\n}\n/** @return {string} unique 64 bit unsigned number string. Being time based, this is careful to never choose the same nonce twice. This value could be recorded in the blockchain for a long time.\n*/\n\n\nfunction uniqueNonce() {\n if (unique_nonce_entropy === null) {\n var b = new Uint8Array(randomBytes(2));\n unique_nonce_entropy = parseInt(b[0] << 8 | b[1], 10);\n }\n\n var _long = Long.fromNumber(Date.now());\n\n var entropy = ++unique_nonce_entropy % 0xFFFF; // console.log('uniqueNonce date\\t', ByteBuffer.allocate(8).writeUint64(long).toHex(0))\n // console.log('uniqueNonce entropy\\t', ByteBuffer.allocate(8).writeUint64(Long.fromNumber(entropy)).toHex(0))\n\n _long = _long.shiftLeft(16).or(Long.fromNumber(entropy)); // console.log('uniqueNonce final\\t', ByteBuffer.allocate(8).writeUint64(long).toHex(0))\n\n return _long.toString();\n}\n\nvar unique_nonce_entropy = null; // for(let i=1; i < 10; i++) key.uniqueNonce()\n\nvar toLongObj = function toLongObj(o) {\n return o ? Long.isLong(o) ? o : Long.fromString(o) : o;\n};\n\nvar toBinaryBuffer = function toBinaryBuffer(o) {\n return o ? Buffer.isBuffer(o) ? o : new Buffer(o, 'binary') : o;\n};","\"use strict\";\n\nvar Aes = require(\"./aes\");\n\nvar PrivateKey = require(\"./key_private\");\n\nvar PublicKey = require(\"./key_public\");\n\nvar Signature = require(\"./signature\");\n\nvar key_utils = require(\"./key_utils\");\n\nvar hash = require(\"./hash\");\n/**\n [Wallet Import Format](https://en.bitcoin.it/wiki/Wallet_import_format)\n @typedef {string} wif\n*/\n\n/**\n EOSKey..\n @typedef {string} pubkey\n*/\n\n/** @namespace */\n\n\nvar ecc = {\n /**\n Initialize by running some self-checking code. This should take a\n second to gather additional CPU entropy used during private key\n generation.\n Initialization happens once even if called multiple times.\n @return {Promise}\n */\n initialize: PrivateKey.initialize,\n\n /**\n Does not pause to gather CPU entropy.\n @return {Promise} test key\n */\n unsafeRandomKey: function unsafeRandomKey() {\n return PrivateKey.unsafeRandomKey().then(function (key) {\n return key.toString();\n });\n },\n\n /**\n @arg {number} [cpuEntropyBits = 0] gather additional entropy\n from a CPU mining algorithm. This will already happen once by\n default.\n @return {Promise}\n @example\n ecc.randomKey().then(privateKey => {\n console.log('Private Key:\\t', privateKey) // wif\n console.log('Public Key:\\t', ecc.privateToPublic(privateKey)) // EOSkey...\n })\n */\n randomKey: function randomKey(cpuEntropyBits) {\n return PrivateKey.randomKey(cpuEntropyBits).then(function (key) {\n return key.toString();\n });\n },\n\n /**\n @arg {string} seed - any length string. This is private. The same\n seed produces the same private key every time. At least 128 random\n bits should be used to produce a good private key.\n @return {wif}\n @example ecc.seedPrivate('secret') === wif\n */\n seedPrivate: function seedPrivate(seed) {\n return PrivateKey.fromSeed(seed).toString();\n },\n\n /**\n @arg {wif} wif\n @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n @return {pubkey}\n @example ecc.privateToPublic(wif) === pubkey\n */\n privateToPublic: function privateToPublic(wif) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n return PrivateKey(wif).toPublic().toString(pubkey_prefix);\n },\n\n /**\n @arg {pubkey} pubkey - like EOSKey..\n @arg {string} [pubkey_prefix = 'EOS']\n @return {boolean} valid\n @example ecc.isValidPublic(pubkey) === true\n */\n isValidPublic: function isValidPublic(pubkey) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n return PublicKey.isValid(pubkey, pubkey_prefix);\n },\n\n /**\n @arg {wif} wif\n @return {boolean} valid\n @example ecc.isValidPrivate(wif) === true\n */\n isValidPrivate: function isValidPrivate(wif) {\n return PrivateKey.isValid(wif);\n },\n\n /**\n Create a signature using data or a hash.\n @arg {string|Buffer} data\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'utf8'] - data encoding (if string)\n @return {string} string signature\n @example ecc.sign('I am alive', wif)\n */\n sign: function sign(data, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (encoding === true) {\n throw new TypeError('API changed, use signHash(..) instead');\n } else {\n if (encoding === false) {\n console.log('Warning: ecc.sign hashData parameter was removed');\n }\n }\n\n return Signature.sign(data, privateKey, encoding).toString();\n },\n\n /**\n @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or string\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n @return {string} string signature\n */\n signHash: function signHash(dataSha256, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n return Signature.signHash(dataSha256, privateKey, encoding).toString();\n },\n\n /**\n Verify signed data.\n @arg {string|Buffer} signature - buffer or hex string\n @arg {string|Buffer} data\n @arg {pubkey|PublicKey} pubkey\n @arg {boolean} [hashData = true] - sha256 hash data before verify\n @return {boolean}\n @example ecc.verify(signature, 'I am alive', pubkey) === true\n */\n verify: function verify(signature, data, pubkey) {\n var encoding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'utf8';\n\n if (encoding === true) {\n throw new TypeError('API changed, use verifyHash(..) instead');\n } else {\n if (encoding === false) {\n console.log('Warning: ecc.verify hashData parameter was removed');\n }\n }\n\n signature = Signature.from(signature);\n return signature.verify(data, pubkey, encoding);\n },\n verifyHash: function verifyHash(signature, dataSha256, pubkey) {\n var encoding = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'hex';\n signature = Signature.from(signature);\n return signature.verifyHash(dataSha256, pubkey, encoding);\n },\n\n /**\n Recover the public key used to create the signature.\n @arg {String|Buffer} signature (EOSbase58sig.., Hex, Buffer)\n @arg {String|Buffer} data - full data\n @arg {String} [encoding = 'utf8'] - data encoding (if data is a string)\n @return {pubkey}\n @example ecc.recover(signature, 'I am alive') === pubkey\n */\n recover: function recover(signature, data) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (encoding === true) {\n throw new TypeError('API changed, use recoverHash(signature, data) instead');\n } else {\n if (encoding === false) {\n console.log('Warning: ecc.recover hashData parameter was removed');\n }\n }\n\n signature = Signature.from(signature);\n return signature.recover(data, encoding).toString();\n },\n\n /**\n @arg {String|Buffer} signature (EOSbase58sig.., Hex, Buffer)\n @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or hex string\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if dataSha256 is a string)\n @return {PublicKey}\n */\n recoverHash: function recoverHash(signature, dataSha256) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n signature = Signature.from(signature);\n return signature.recoverHash(dataSha256, encoding).toString();\n },\n\n /** @arg {string|Buffer} data - always binary, you may need Buffer.from(data, 'hex')\n @arg {string} [encoding = 'hex'] - result encoding 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when encoding is null, or string\n @example ecc.sha256('hashme') === '02208b..'\n @example ecc.sha256(Buffer.from('02208b', 'hex')) === '29a23..'\n */\n sha256: function sha256(data) {\n var resultEncoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hex';\n return hash.sha256(data, resultEncoding);\n }\n};\nmodule.exports = ecc;","\"use strict\";\n\nvar Aes = require(\"./aes\");\n\nvar PrivateKey = require(\"./key_private\");\n\nvar PublicKey = require(\"./key_public\");\n\nvar Signature = require(\"./signature\");\n\nvar key_utils = require(\"./key_utils\");\n\nmodule.exports = {\n Aes: Aes,\n PrivateKey: PrivateKey,\n PublicKey: PublicKey,\n Signature: Signature,\n key_utils: key_utils\n};","\"use strict\";\n\nvar assert = require('assert'); // from github.com/bitcoinjs/bitcoinjs-lib from github.com/cryptocoinjs/ecdsa\n\n\nvar crypto = require('./hash');\n\nvar enforceType = require('./enforce_types');\n\nvar BigInteger = require('bigi');\n\nvar ECSignature = require('./ecsignature'); // https://tools.ietf.org/html/rfc6979#section-3.2\n\n\nfunction deterministicGenerateK(curve, hash, d, checkSig, nonce) {\n enforceType('Buffer', hash);\n enforceType(BigInteger, d);\n\n if (nonce) {\n hash = crypto.sha256(Buffer.concat([hash, new Buffer(nonce)]));\n } // sanity check\n\n\n assert.equal(hash.length, 32, 'Hash must be 256 bit');\n var x = d.toBuffer(32);\n var k = new Buffer(32);\n var v = new Buffer(32); // Step B\n\n v.fill(1); // Step C\n\n k.fill(0); // Step D\n\n k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0]), x, hash]), k); // Step E\n\n v = crypto.HmacSHA256(v, k); // Step F\n\n k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([1]), x, hash]), k); // Step G\n\n v = crypto.HmacSHA256(v, k); // Step H1/H2a, ignored as tlen === qlen (256 bit)\n // Step H2b\n\n v = crypto.HmacSHA256(v, k);\n var T = BigInteger.fromBuffer(v); // Step H3, repeat until T is within the interval [1, n - 1]\n\n while (T.signum() <= 0 || T.compareTo(curve.n) >= 0 || !checkSig(T)) {\n k = crypto.HmacSHA256(Buffer.concat([v, new Buffer([0])]), k);\n v = crypto.HmacSHA256(v, k); // Step H1/H2a, again, ignored as tlen === qlen (256 bit)\n // Step H2b again\n\n v = crypto.HmacSHA256(v, k);\n T = BigInteger.fromBuffer(v);\n }\n\n return T;\n}\n\nfunction sign(curve, hash, d, nonce) {\n var e = BigInteger.fromBuffer(hash);\n var n = curve.n;\n var G = curve.G;\n var r, s;\n var k = deterministicGenerateK(curve, hash, d, function (k) {\n // find canonically valid signature\n var Q = G.multiply(k);\n if (curve.isInfinity(Q)) return false;\n r = Q.affineX.mod(n);\n if (r.signum() === 0) return false;\n s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n);\n if (s.signum() === 0) return false;\n return true;\n }, nonce);\n var N_OVER_TWO = n.shiftRight(1); // enforce low S values, see bip62: 'low s values in signatures'\n\n if (s.compareTo(N_OVER_TWO) > 0) {\n s = n.subtract(s);\n }\n\n return ECSignature(r, s);\n}\n\nfunction verifyRaw(curve, e, signature, Q) {\n var n = curve.n;\n var G = curve.G;\n var r = signature.r;\n var s = signature.s; // 1.4.1 Enforce r and s are both integers in the interval [1, n − 1]\n\n if (r.signum() <= 0 || r.compareTo(n) >= 0) return false;\n if (s.signum() <= 0 || s.compareTo(n) >= 0) return false; // c = s^-1 mod n\n\n var c = s.modInverse(n); // 1.4.4 Compute u1 = es^−1 mod n\n // u2 = rs^−1 mod n\n\n var u1 = e.multiply(c).mod(n);\n var u2 = r.multiply(c).mod(n); // 1.4.5 Compute R = (xR, yR) = u1G + u2Q\n\n var R = G.multiplyTwo(u1, Q, u2); // 1.4.5 (cont.) Enforce R is not at infinity\n\n if (curve.isInfinity(R)) return false; // 1.4.6 Convert the field element R.x to an integer\n\n var xR = R.affineX; // 1.4.7 Set v = xR mod n\n\n var v = xR.mod(n); // 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"\n\n return v.equals(r);\n}\n\nfunction verify(curve, hash, signature, Q) {\n // 1.4.2 H = Hash(M), already done by the user\n // 1.4.3 e = H\n var e = BigInteger.fromBuffer(hash);\n return verifyRaw(curve, e, signature, Q);\n}\n/**\n * Recover a public key from a signature.\n *\n * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, \"Public\n * Key Recovery Operation\".\n *\n * http://www.secg.org/download/aid-780/sec1-v2.pdf\n */\n\n\nfunction recoverPubKey(curve, e, signature, i) {\n assert.strictEqual(i & 3, i, 'Recovery param is more than two bits');\n var n = curve.n;\n var G = curve.G;\n var r = signature.r;\n var s = signature.s;\n assert(r.signum() > 0 && r.compareTo(n) < 0, 'Invalid r value');\n assert(s.signum() > 0 && s.compareTo(n) < 0, 'Invalid s value'); // A set LSB signifies that the y-coordinate is odd\n\n var isYOdd = i & 1; // The more significant bit specifies whether we should use the\n // first or second candidate key.\n\n var isSecondKey = i >> 1; // 1.1 Let x = r + jn\n\n var x = isSecondKey ? r.add(n) : r;\n var R = curve.pointFromX(isYOdd, x); // 1.4 Check that nR is at infinity\n\n var nR = R.multiply(n);\n assert(curve.isInfinity(nR), 'nR is not a valid curve point'); // Compute -e from e\n\n var eNeg = e.negate().mod(n); // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n\n var rInv = r.modInverse(n);\n var Q = R.multiplyTwo(s, G, eNeg).multiply(rInv);\n curve.validate(Q);\n return Q;\n}\n/**\n * Calculate pubkey extraction parameter.\n *\n * When extracting a pubkey from a signature, we have to\n * distinguish four different cases. Rather than putting this\n * burden on the verifier, Bitcoin includes a 2-bit value with the\n * signature.\n *\n * This function simply tries all four cases and returns the value\n * that resulted in a successful pubkey recovery.\n */\n\n\nfunction calcPubKeyRecoveryParam(curve, e, signature, Q) {\n for (var i = 0; i < 4; i++) {\n var Qprime = recoverPubKey(curve, e, signature, i); // 1.6.2 Verify Q\n\n if (Qprime.equals(Q)) {\n return i;\n }\n }\n\n throw new Error('Unable to find valid recovery factor');\n}\n\nmodule.exports = {\n calcPubKeyRecoveryParam: calcPubKeyRecoveryParam,\n deterministicGenerateK: deterministicGenerateK,\n recoverPubKey: recoverPubKey,\n sign: sign,\n verify: verify,\n verifyRaw: verifyRaw\n};","\"use strict\";\n\nvar assert = require('assert'); // from https://github.com/bitcoinjs/bitcoinjs-lib\n\n\nvar enforceType = require('./enforce_types');\n\nvar BigInteger = require('bigi');\n\nfunction ECSignature(r, s) {\n enforceType(BigInteger, r);\n enforceType(BigInteger, s);\n\n function toCompact(i, compressed) {\n if (compressed) i += 4;\n i += 27;\n var buffer = new Buffer(65);\n buffer.writeUInt8(i, 0);\n r.toBuffer(32).copy(buffer, 1);\n s.toBuffer(32).copy(buffer, 33);\n return buffer;\n }\n\n function toDER() {\n var rBa = r.toDERInteger();\n var sBa = s.toDERInteger();\n var sequence = []; // INTEGER\n\n sequence.push(0x02, rBa.length);\n sequence = sequence.concat(rBa); // INTEGER\n\n sequence.push(0x02, sBa.length);\n sequence = sequence.concat(sBa); // SEQUENCE\n\n sequence.unshift(0x30, sequence.length);\n return new Buffer(sequence);\n }\n\n function toScriptSignature(hashType) {\n var hashTypeBuffer = new Buffer(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n return Buffer.concat([toDER(), hashTypeBuffer]);\n }\n\n return {\n r: r,\n s: s,\n toCompact: toCompact,\n toDER: toDER,\n toScriptSignature: toScriptSignature\n };\n} // Import operations\n\n\nECSignature.parseCompact = function (buffer) {\n assert.equal(buffer.length, 65, 'Invalid signature length');\n var i = buffer.readUInt8(0) - 27; // At most 3 bits\n\n assert.equal(i, i & 7, 'Invalid signature parameter');\n var compressed = !!(i & 4); // Recovery param only\n\n i = i & 3;\n var r = BigInteger.fromBuffer(buffer.slice(1, 33));\n var s = BigInteger.fromBuffer(buffer.slice(33));\n return {\n compressed: compressed,\n i: i,\n signature: ECSignature(r, s)\n };\n};\n\nECSignature.fromDER = function (buffer) {\n assert.equal(buffer.readUInt8(0), 0x30, 'Not a DER sequence');\n assert.equal(buffer.readUInt8(1), buffer.length - 2, 'Invalid sequence length');\n assert.equal(buffer.readUInt8(2), 0x02, 'Expected a DER integer');\n var rLen = buffer.readUInt8(3);\n assert(rLen > 0, 'R length is zero');\n var offset = 4 + rLen;\n assert.equal(buffer.readUInt8(offset), 0x02, 'Expected a DER integer (2)');\n var sLen = buffer.readUInt8(offset + 1);\n assert(sLen > 0, 'S length is zero');\n var rB = buffer.slice(4, offset);\n var sB = buffer.slice(offset + 2);\n offset += 2 + sLen;\n\n if (rLen > 1 && rB.readUInt8(0) === 0x00) {\n assert(rB.readUInt8(1) & 0x80, 'R value excessively padded');\n }\n\n if (sLen > 1 && sB.readUInt8(0) === 0x00) {\n assert(sB.readUInt8(1) & 0x80, 'S value excessively padded');\n }\n\n assert.equal(offset, buffer.length, 'Invalid DER encoding');\n var r = BigInteger.fromDERInteger(rB);\n var s = BigInteger.fromDERInteger(sB);\n assert(r.signum() >= 0, 'R value is negative');\n assert(s.signum() >= 0, 'S value is negative');\n return ECSignature(r, s);\n}; // FIXME: 0x00, 0x04, 0x80 are SIGHASH_* boundary constants, importing Transaction causes a circular dependency\n\n\nECSignature.parseScriptSignature = function (buffer) {\n var hashType = buffer.readUInt8(buffer.length - 1);\n var hashTypeMod = hashType & ~0x80;\n assert(hashTypeMod > 0x00 && hashTypeMod < 0x04, 'Invalid hashType');\n return {\n signature: ECSignature.fromDER(buffer.slice(0, -1)),\n hashType: hashType\n };\n};\n\nmodule.exports = ECSignature;","\"use strict\";\n\nmodule.exports = function enforce(type, value) {\n // Copied from https://github.com/bitcoinjs/bitcoinjs-lib\n switch (type) {\n case 'Array':\n {\n if (Array.isArray(value)) return;\n break;\n }\n\n case 'Boolean':\n {\n if (typeof value === 'boolean') return;\n break;\n }\n\n case 'Buffer':\n {\n if (Buffer.isBuffer(value)) return;\n break;\n }\n\n case 'Number':\n {\n if (typeof value === 'number') return;\n break;\n }\n\n case 'String':\n {\n if (typeof value === 'string') return;\n break;\n }\n\n default:\n {\n if (getName(value.constructor) === getName(type)) return;\n }\n }\n\n throw new TypeError('Expected ' + (getName(type) || type) + ', got ' + value);\n};\n\nfunction getName(fn) {\n // Why not fn.name: https://kangax.github.io/compat-table/es6/#function_name_property\n var match = fn.toString().match(/function (.*?)\\(/);\n return match ? match[1] : null;\n}","\"use strict\";\n\nvar createHash = require('create-hash');\n\nvar createHmac = require('create-hmac');\n/** @namespace hash */\n\n/** @arg {string|Buffer} data\n @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when resultEncoding is null, or string\n*/\n\n\nfunction sha1(data, resultEncoding) {\n return createHash('sha1').update(data).digest(resultEncoding);\n}\n/** @arg {string|Buffer} data\n @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when resultEncoding is null, or string\n*/\n\n\nfunction sha256(data, resultEncoding) {\n return createHash('sha256').update(data).digest(resultEncoding);\n}\n/** @arg {string|Buffer} data\n @arg {string} [resultEncoding = null] - 'hex', 'binary' or 'base64'\n @return {string|Buffer} - Buffer when resultEncoding is null, or string\n*/\n\n\nfunction sha512(data, resultEncoding) {\n return createHash('sha512').update(data).digest(resultEncoding);\n}\n\nfunction HmacSHA256(buffer, secret) {\n return createHmac('sha256', secret).update(buffer).digest();\n}\n\nfunction ripemd160(data) {\n try {\n return createHash('rmd160').update(data).digest();\n } catch (e) {\n return createHash('ripemd160').update(data).digest();\n }\n} // function hash160(buffer) {\n// return ripemd160(sha256(buffer))\n// }\n//\n// function hash256(buffer) {\n// return sha256(sha256(buffer))\n// }\n//\n// function HmacSHA512(buffer, secret) {\n// return crypto.createHmac('sha512', secret).update(buffer).digest()\n// }\n\n\nmodule.exports = {\n sha1: sha1,\n sha256: sha256,\n sha512: sha512,\n HmacSHA256: HmacSHA256,\n ripemd160: ripemd160 // hash160: hash160,\n // hash256: hash256,\n // HmacSHA512: HmacSHA512\n\n};","\"use strict\";\n\nvar commonApi = require('./api_common');\n\nvar objectApi = require('./api_object');\n\nvar ecc = Object.assign({}, commonApi, objectApi);\nmodule.exports = ecc;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar ecurve = require('ecurve');\n\nvar Point = ecurve.Point;\nvar secp256k1 = ecurve.getCurveByName('secp256k1');\n\nvar BigInteger = require('bigi');\n\nvar assert = require('assert');\n\nvar hash = require('./hash');\n\nvar PublicKey = require('./key_public');\n\nvar keyUtils = require('./key_utils');\n\nvar createHash = require('create-hash');\n\nvar promiseAsync = require('./promise-async');\n\nvar G = secp256k1.G;\nvar n = secp256k1.n;\nmodule.exports = PrivateKey;\n/**\n @typedef {string} wif - https://en.bitcoin.it/wiki/Wallet_import_format\n @typedef {string} pubkey - EOSKey..\n @typedef {ecurve.Point} Point\n*/\n\n/**\n @param {BigInteger} d\n*/\n\nfunction PrivateKey(d) {\n if (typeof d === 'string') {\n return PrivateKey.fromString(d);\n } else if (Buffer.isBuffer(d)) {\n return PrivateKey.fromBuffer(d);\n } else if ((0, _typeof2[\"default\"])(d) === 'object' && BigInteger.isBigInteger(d.d)) {\n return PrivateKey(d.d);\n }\n\n if (!BigInteger.isBigInteger(d)) {\n throw new TypeError('Invalid private key');\n }\n /** @return {string} private key like PVT_K1_base58privatekey.. */\n\n\n function toString() {\n // todo, use PVT_K1_\n // return 'PVT_K1_' + keyUtils.checkEncode(toBuffer(), 'K1')\n return toWif();\n }\n /**\n @return {wif}\n */\n\n\n function toWif() {\n var private_key = toBuffer(); // checksum includes the version\n\n private_key = Buffer.concat([new Buffer([0x80]), private_key]);\n return keyUtils.checkEncode(private_key, 'sha256x2');\n }\n\n var public_key;\n /**\n @return {Point}\n */\n\n function toPublic() {\n if (public_key) {\n // cache\n // S L O W in the browser\n return public_key;\n }\n\n var Q = secp256k1.G.multiply(d);\n return public_key = PublicKey.fromPoint(Q);\n }\n\n function toBuffer() {\n return d.toBuffer(32);\n }\n /**\n ECIES\n @arg {string|Object} pubkey wif, PublicKey object\n @return {Buffer} 64 byte shared secret\n */\n\n\n function getSharedSecret(public_key) {\n public_key = PublicKey(public_key);\n var KB = public_key.toUncompressed().toBuffer();\n var KBP = Point.fromAffine(secp256k1, BigInteger.fromBuffer(KB.slice(1, 33)), // x\n BigInteger.fromBuffer(KB.slice(33, 65)) // y\n );\n var r = toBuffer();\n var P = KBP.multiply(BigInteger.fromBuffer(r));\n var S = P.affineX.toBuffer({\n size: 32\n }); // SHA512 used in ECIES\n\n return hash.sha512(S);\n } // /** ECIES TODO unit test\n // @arg {string|Object} pubkey wif, PublicKey object\n // @return {Buffer} 64 byte shared secret\n // */\n // function getSharedSecret(public_key) {\n // public_key = PublicKey(public_key).toUncompressed()\n // var P = public_key.Q.multiply( d );\n // var S = P.affineX.toBuffer({size: 32});\n // // ECIES, adds an extra sha512\n // return hash.sha512(S);\n // }\n\n /**\n @arg {string} name - child key name.\n @return {PrivateKey}\n @example activePrivate = masterPrivate.getChildKey('owner').getChildKey('active')\n @example activePrivate.getChildKey('mycontract').getChildKey('myperm')\n */\n\n\n function getChildKey(name) {\n // console.error('WARNING: getChildKey untested against eosd'); // no eosd impl yet\n var index = createHash('sha256').update(toBuffer()).update(name).digest();\n return PrivateKey(index);\n }\n\n function toHex() {\n return toBuffer().toString('hex');\n }\n\n return {\n d: d,\n toWif: toWif,\n toString: toString,\n toPublic: toPublic,\n toBuffer: toBuffer,\n getSharedSecret: getSharedSecret,\n getChildKey: getChildKey\n };\n}\n/** @private */\n\n\nfunction parseKey(privateStr) {\n assert.equal((0, _typeof2[\"default\"])(privateStr), 'string', 'privateStr');\n var match = privateStr.match(/^PVT_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/);\n\n if (match === null) {\n // legacy WIF - checksum includes the version\n var versionKey = keyUtils.checkDecode(privateStr, 'sha256x2');\n var version = versionKey.readUInt8(0);\n assert.equal(0x80, version, \"Expected version \".concat(0x80, \", instead got \", version));\n\n var _privateKey = PrivateKey.fromBuffer(versionKey.slice(1));\n\n var _keyType = 'K1';\n var format = 'WIF';\n return {\n privateKey: _privateKey,\n format: format,\n keyType: _keyType\n };\n }\n\n assert(match.length === 3, 'Expecting private key like: PVT_K1_base58privateKey..');\n\n var _match = (0, _slicedToArray2[\"default\"])(match, 3),\n keyType = _match[1],\n keyString = _match[2];\n\n assert.equal(keyType, 'K1', 'K1 private key expected');\n var privateKey = PrivateKey.fromBuffer(keyUtils.checkDecode(keyString, keyType));\n return {\n privateKey: privateKey,\n format: 'PVT',\n keyType: keyType\n };\n}\n\nPrivateKey.fromHex = function (hex) {\n return PrivateKey.fromBuffer(new Buffer(hex, 'hex'));\n};\n\nPrivateKey.fromBuffer = function (buf) {\n if (!Buffer.isBuffer(buf)) {\n throw new Error(\"Expecting parameter to be a Buffer type\");\n }\n\n if (buf.length === 33 && buf[32] === 1) {\n // remove compression flag\n buf = buf.slice(0, -1);\n }\n\n if (32 !== buf.length) {\n throw new Error(\"Expecting 32 bytes, instead got \".concat(buf.length));\n }\n\n return PrivateKey(BigInteger.fromBuffer(buf));\n};\n/**\n @arg {string} seed - any length string. This is private, the same seed\n produces the same private key every time.\n\n @return {PrivateKey}\n*/\n\n\nPrivateKey.fromSeed = function (seed) {\n // generate_private_key\n if (!(typeof seed === 'string')) {\n throw new Error('seed must be of type string');\n }\n\n return PrivateKey.fromBuffer(hash.sha256(seed));\n};\n/**\n @arg {wif} key\n @return {boolean} true if key is in the Wallet Import Format\n*/\n\n\nPrivateKey.isWif = function (text) {\n try {\n assert(parseKey(text).format === 'WIF');\n return true;\n } catch (e) {\n return false;\n }\n};\n/**\n @arg {wif|Buffer|PrivateKey} key\n @return {boolean} true if key is convertable to a private key object.\n*/\n\n\nPrivateKey.isValid = function (key) {\n try {\n PrivateKey(key);\n return true;\n } catch (e) {\n return false;\n }\n};\n/** @deprecated */\n\n\nPrivateKey.fromWif = function (str) {\n console.log('PrivateKey.fromWif is deprecated, please use PrivateKey.fromString');\n return PrivateKey.fromString(str);\n};\n/**\n @throws {AssertError|Error} parsing key\n @arg {string} privateStr Eosio or Wallet Import Format (wif) -- a secret\n*/\n\n\nPrivateKey.fromString = function (privateStr) {\n return parseKey(privateStr).privateKey;\n};\n/**\n Create a new random private key.\n\n Call initialize() first to run some self-checking code and gather some CPU\n entropy.\n\n @arg {number} [cpuEntropyBits = 0] - additional CPU entropy, this already\n happens once so it should not be needed again.\n\n @return {Promise} - random private key\n*/\n\n\nPrivateKey.randomKey = function () {\n var cpuEntropyBits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return PrivateKey.initialize().then(function () {\n return PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({\n cpuEntropyBits: cpuEntropyBits\n }));\n });\n};\n/**\n @return {Promise} for testing, does not require initialize().\n*/\n\n\nPrivateKey.unsafeRandomKey = function () {\n return Promise.resolve(PrivateKey.fromBuffer(keyUtils.random32ByteBuffer({\n safe: false\n })));\n};\n\nvar initialized = false,\n unitTested = false;\n/**\n Run self-checking code and gather CPU entropy.\n\n Initialization happens once even if called multiple times.\n\n @return {Promise}\n*/\n\nfunction initialize() {\n if (initialized) {\n return;\n }\n\n unitTest();\n keyUtils.addEntropy.apply(keyUtils, (0, _toConsumableArray2[\"default\"])(keyUtils.cpuEntropy()));\n assert(keyUtils.entropyCount() >= 128, 'insufficient entropy');\n initialized = true;\n}\n\nPrivateKey.initialize = promiseAsync(initialize);\n/**\n Unit test basic private and public key functionality.\n\n @throws {AssertError}\n*/\n\nfunction unitTest() {\n var pvt = PrivateKey(hash.sha256(''));\n var pvtError = 'key comparison test failed on a known private key';\n assert.equal(pvt.toWif(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError);\n assert.equal(pvt.toString(), '5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss', pvtError); // assert.equal(pvt.toString(), 'PVT_K1_2jH3nnhxhR3zPUcsKaWWZC9ZmZAnKm3GAnFD1xynGJE1Znuvjd', pvtError)\n\n var pub = pvt.toPublic();\n var pubError = 'pubkey string comparison test failed on a known public key';\n assert.equal(pub.toString(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError); // assert.equal(pub.toString(), 'PUB_K1_859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2Ht7beeX', pubError)\n // assert.equal(pub.toStringLegacy(), 'EOS859gxfnXyUriMgUeThh1fWv3oqcpLFyHa3TfFYC4PK2HqhToVM', pubError)\n\n doesNotThrow(function () {\n return PrivateKey.fromString(pvt.toWif());\n }, 'converting known wif from string');\n doesNotThrow(function () {\n return PrivateKey.fromString(pvt.toString());\n }, 'converting known pvt from string');\n doesNotThrow(function () {\n return PublicKey.fromString(pub.toString());\n }, 'converting known public key from string'); // doesNotThrow(() => PublicKey.fromString(pub.toStringLegacy()), 'converting known public key from string')\n\n unitTested = true;\n}\n/** @private */\n\n\nvar doesNotThrow = function doesNotThrow(cb, msg) {\n try {\n cb();\n } catch (error) {\n error.message = \"\".concat(msg, \" ==> \").concat(error.message);\n throw error;\n }\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar assert = require('assert');\n\nvar ecurve = require('ecurve');\n\nvar BigInteger = require('bigi');\n\nvar secp256k1 = ecurve.getCurveByName('secp256k1');\n\nvar hash = require('./hash');\n\nvar keyUtils = require('./key_utils');\n\nvar G = secp256k1.G;\nvar n = secp256k1.n;\nmodule.exports = PublicKey;\n/**\n @param {string|Buffer|PublicKey|ecurve.Point} public key\n @param {string} [pubkey_prefix = 'EOS']\n*/\n\nfunction PublicKey(Q) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n\n if (typeof Q === 'string') {\n var publicKey = PublicKey.fromString(Q, pubkey_prefix);\n assert(publicKey != null, 'Invalid public key');\n return publicKey;\n } else if (Buffer.isBuffer(Q)) {\n return PublicKey.fromBuffer(Q);\n } else if ((0, _typeof2[\"default\"])(Q) === 'object' && Q.Q) {\n return PublicKey(Q.Q);\n }\n\n assert.equal((0, _typeof2[\"default\"])(Q), 'object', 'Invalid public key');\n assert.equal((0, _typeof2[\"default\"])(Q.compressed), 'boolean', 'Invalid public key');\n\n function toBuffer() {\n var compressed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Q.compressed;\n return Q.getEncoded(compressed);\n }\n\n var pubdata; // cache\n // /**\n // @todo secp224r1\n // @return {string} PUB_K1_base58pubkey..\n // */\n // function toString() {\n // if(pubdata) {\n // return pubdata\n // }\n // pubdata = `PUB_K1_` + keyUtils.checkEncode(toBuffer(), 'K1')\n // return pubdata;\n // }\n\n /** @todo rename to toStringLegacy\n * @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n */\n\n function toString() {\n var pubkey_prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'EOS';\n return pubkey_prefix + keyUtils.checkEncode(toBuffer());\n }\n\n function toUncompressed() {\n var buf = Q.getEncoded(false);\n var point = ecurve.Point.decodeFrom(secp256k1, buf);\n return PublicKey.fromPoint(point);\n }\n /** @deprecated */\n\n\n function child(offset) {\n console.error('Deprecated warning: PublicKey.child');\n assert(Buffer.isBuffer(offset), \"Buffer required: offset\");\n assert.equal(offset.length, 32, \"offset length\");\n offset = Buffer.concat([toBuffer(), offset]);\n offset = hash.sha256(offset);\n var c = BigInteger.fromBuffer(offset);\n if (c.compareTo(n) >= 0) throw new Error(\"Child offset went out of bounds, try again\");\n var cG = G.multiply(c);\n var Qprime = Q.add(cG);\n if (secp256k1.isInfinity(Qprime)) throw new Error(\"Child offset derived to an invalid key, try again\");\n return PublicKey.fromPoint(Qprime);\n }\n\n function toHex() {\n return toBuffer().toString('hex');\n }\n\n return {\n Q: Q,\n toString: toString,\n // toStringLegacy,\n toUncompressed: toUncompressed,\n toBuffer: toBuffer,\n child: child,\n toHex: toHex\n };\n}\n/**\n @param {string|Buffer|PublicKey|ecurve.Point} pubkey - public key\n @param {string} [pubkey_prefix = 'EOS']\n*/\n\n\nPublicKey.isValid = function (pubkey) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n\n try {\n PublicKey(pubkey, pubkey_prefix);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nPublicKey.fromBinary = function (bin) {\n return PublicKey.fromBuffer(new Buffer(bin, 'binary'));\n};\n\nPublicKey.fromBuffer = function (buffer) {\n return PublicKey(ecurve.Point.decodeFrom(secp256k1, buffer));\n};\n\nPublicKey.fromPoint = function (point) {\n return PublicKey(point);\n};\n/**\n @arg {string} public_key - like PUB_K1_base58pubkey..\n @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n @return PublicKey or `null` (invalid)\n*/\n\n\nPublicKey.fromString = function (public_key) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n\n try {\n return PublicKey.fromStringOrThrow(public_key, pubkey_prefix);\n } catch (e) {\n return null;\n }\n};\n/**\n @arg {string} public_key - like PUB_K1_base58pubkey..\n @arg {string} [pubkey_prefix = 'EOS'] - public key prefix\n\n @throws {Error} if public key is invalid\n\n @return PublicKey\n*/\n\n\nPublicKey.fromStringOrThrow = function (public_key) {\n var pubkey_prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'EOS';\n assert.equal((0, _typeof2[\"default\"])(public_key), 'string', 'public_key');\n var match = public_key.match(/^PUB_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/);\n\n if (match === null) {\n // legacy\n var prefix_match = new RegExp(\"^\" + pubkey_prefix);\n\n if (prefix_match.test(public_key)) {\n public_key = public_key.substring(pubkey_prefix.length);\n }\n\n return PublicKey.fromBuffer(keyUtils.checkDecode(public_key));\n }\n\n assert(match.length === 3, 'Expecting public key like: PUB_K1_base58pubkey..');\n\n var _match = (0, _slicedToArray2[\"default\"])(match, 3),\n keyType = _match[1],\n keyString = _match[2];\n\n assert.equal(keyType, 'K1', 'K1 private key expected');\n return PublicKey.fromBuffer(keyUtils.checkDecode(keyString, keyType));\n};\n\nPublicKey.fromHex = function (hex) {\n return PublicKey.fromBuffer(new Buffer(hex, 'hex'));\n};\n\nPublicKey.fromStringHex = function (hex) {\n return PublicKey.fromString(new Buffer(hex, 'hex'));\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar base58 = require('bs58');\n\nvar assert = require('assert');\n\nvar randomBytes = require('randombytes');\n\nvar hash = require('./hash');\n\nmodule.exports = {\n random32ByteBuffer: random32ByteBuffer,\n addEntropy: addEntropy,\n cpuEntropy: cpuEntropy,\n entropyCount: function entropyCount() {\n return _entropyCount;\n },\n checkDecode: checkDecode,\n checkEncode: checkEncode\n};\nvar entropyPos = 0,\n _entropyCount = 0;\nvar externalEntropyArray = randomBytes(101);\n/**\n Additional forms of entropy are used. A week random number generator can run out of entropy. This should ensure even the worst random number implementation will be reasonably safe.\n\n @arg {number} [cpuEntropyBits = 0] generate entropy on the fly. This is\n not required, entropy can be added in advanced via addEntropy or initialize().\n\n @arg {boolean} [safe = true] false for testing, otherwise this will be\n true to ensure initialize() was called.\n\n @return a random buffer obtained from the secure random number generator. Additional entropy is used.\n*/\n\nfunction random32ByteBuffer() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$cpuEntropyBits = _ref.cpuEntropyBits,\n cpuEntropyBits = _ref$cpuEntropyBits === void 0 ? 0 : _ref$cpuEntropyBits,\n _ref$safe = _ref.safe,\n safe = _ref$safe === void 0 ? true : _ref$safe;\n\n assert.equal((0, _typeof2[\"default\"])(cpuEntropyBits), 'number', 'cpuEntropyBits');\n assert.equal((0, _typeof2[\"default\"])(safe), 'boolean', 'boolean');\n\n if (safe) {\n assert(_entropyCount >= 128, 'Call initialize() to add entropy');\n } // if(entropyCount > 0) {\n // console.log(`Additional private key entropy: ${entropyCount} events`)\n // }\n\n\n var hash_array = [];\n hash_array.push(randomBytes(32));\n hash_array.push(Buffer.from(cpuEntropy(cpuEntropyBits)));\n hash_array.push(externalEntropyArray);\n hash_array.push(browserEntropy());\n return hash.sha256(Buffer.concat(hash_array));\n}\n/**\n Adds entropy. This may be called many times while the amount of data saved\n is accumulatively reduced to 101 integers. Data is retained in RAM for the\n life of this module.\n\n @example React \n componentDidMount() {\n this.refs.MyComponent.addEventListener(\"mousemove\", this.onEntropyEvent, {capture: false, passive: true})\n }\n componentWillUnmount() {\n this.refs.MyComponent.removeEventListener(\"mousemove\", this.onEntropyEvent);\n }\n onEntropyEvent = (e) => {\n if(e.type === 'mousemove')\n key_utils.addEntropy(e.pageX, e.pageY, e.screenX, e.screenY)\n else\n console.log('onEntropyEvent Unknown', e.type, e)\n }\n \n*/\n\n\nfunction addEntropy() {\n assert.equal(externalEntropyArray.length, 101, 'externalEntropyArray');\n\n for (var _len = arguments.length, ints = new Array(_len), _key = 0; _key < _len; _key++) {\n ints[_key] = arguments[_key];\n }\n\n _entropyCount += ints.length;\n\n for (var _i = 0, _ints = ints; _i < _ints.length; _i++) {\n var i = _ints[_i];\n var pos = entropyPos++ % 101;\n var i2 = externalEntropyArray[pos] += i;\n if (i2 > 9007199254740991) externalEntropyArray[pos] = 0;\n }\n}\n/**\n This runs in just under 1 second and ensures a minimum of cpuEntropyBits\n bits of entropy are gathered.\n\n Based on more-entropy. @see https://github.com/keybase/more-entropy/blob/master/src/generator.iced\n\n @arg {number} [cpuEntropyBits = 128]\n @return {array} counts gathered by measuring variations in the CPU speed during floating point operations.\n*/\n\n\nfunction cpuEntropy() {\n var cpuEntropyBits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 128;\n var collected = [];\n var lastCount = null;\n var lowEntropySamples = 0;\n\n while (collected.length < cpuEntropyBits) {\n var count = floatingPointCount();\n\n if (lastCount != null) {\n var delta = count - lastCount;\n\n if (Math.abs(delta) < 1) {\n lowEntropySamples++;\n continue;\n } // how many bits of entropy were in this sample\n\n\n var bits = Math.floor(log2(Math.abs(delta)) + 1);\n\n if (bits < 4) {\n if (bits < 2) {\n lowEntropySamples++;\n }\n\n continue;\n }\n\n collected.push(delta);\n }\n\n lastCount = count;\n }\n\n if (lowEntropySamples > 10) {\n var pct = Number(lowEntropySamples / cpuEntropyBits * 100).toFixed(2); // Is this algorithm getting inefficient?\n\n console.warn(\"WARN: \".concat(pct, \"% low CPU entropy re-sampled\"));\n }\n\n return collected;\n}\n/**\n @private\n Count while performing floating point operations during a fixed time\n (7 ms for example). Using a fixed time makes this algorithm\n predictable in runtime.\n*/\n\n\nfunction floatingPointCount() {\n var workMinMs = 7;\n var d = Date.now();\n var i = 0,\n x = 0;\n\n while (Date.now() < d + workMinMs + 1) {\n x = Math.sin(Math.sqrt(Math.log(++i + x)));\n }\n\n return i;\n}\n\nvar log2 = function log2(x) {\n return Math.log(x) / Math.LN2;\n};\n/**\n @private\n Attempt to gather and hash information from the browser's window, history, and supported mime types. For non-browser environments this simply includes secure random data. In any event, the information is re-hashed in a loop for 25 milliseconds seconds.\n\n @return {Buffer} 32 bytes\n*/\n\n\nfunction browserEntropy() {\n var entropyStr = Array(randomBytes(101)).join();\n\n try {\n entropyStr += new Date().toString() + \" \" + window.screen.height + \" \" + window.screen.width + \" \" + window.screen.colorDepth + \" \" + \" \" + window.screen.availHeight + \" \" + window.screen.availWidth + \" \" + window.screen.pixelDepth + navigator.language + \" \" + window.location + \" \" + window.history.length;\n\n for (var i = 0, mimeType; i < navigator.mimeTypes.length; i++) {\n mimeType = navigator.mimeTypes[i];\n entropyStr += mimeType.description + \" \" + mimeType.type + \" \" + mimeType.suffixes + \" \";\n }\n } catch (error) {\n //nodejs:ReferenceError: window is not defined\n entropyStr += hash.sha256(new Date().toString());\n }\n\n var b = new Buffer(entropyStr);\n entropyStr += b.toString('binary') + \" \" + new Date().toString();\n var entropy = entropyStr;\n var start_t = Date.now();\n\n while (Date.now() - start_t < 25) {\n entropy = hash.sha256(entropy);\n }\n\n return entropy;\n}\n/**\n @arg {Buffer} keyBuffer data\n @arg {string} keyType = sha256x2, K1, etc\n @return {string} checksum encoded base58 string\n*/\n\n\nfunction checkEncode(keyBuffer) {\n var keyType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n assert(Buffer.isBuffer(keyBuffer), 'expecting keyBuffer');\n\n if (keyType === 'sha256x2') {\n // legacy\n var checksum = hash.sha256(hash.sha256(keyBuffer)).slice(0, 4);\n return base58.encode(Buffer.concat([keyBuffer, checksum]));\n } else {\n var check = [keyBuffer];\n\n if (keyType) {\n check.push(Buffer.from(keyType));\n }\n\n var _checksum = hash.ripemd160(Buffer.concat(check)).slice(0, 4);\n\n return base58.encode(Buffer.concat([keyBuffer, _checksum]));\n }\n}\n/**\n @arg {Buffer} keyString data\n @arg {string} keyType = sha256x2, K1, etc\n @return {string} checksum encoded base58 string\n*/\n\n\nfunction checkDecode(keyString) {\n var keyType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n assert(keyString != null, 'private key expected');\n var buffer = new Buffer(base58.decode(keyString));\n var checksum = buffer.slice(-4);\n var key = buffer.slice(0, -4);\n var newCheck;\n\n if (keyType === 'sha256x2') {\n // legacy\n newCheck = hash.sha256(hash.sha256(key)).slice(0, 4); // WIF (legacy)\n } else {\n var check = [key];\n\n if (keyType) {\n check.push(Buffer.from(keyType));\n }\n\n newCheck = hash.ripemd160(Buffer.concat(check)).slice(0, 4); //PVT\n }\n\n if (checksum.toString('hex') !== newCheck.toString('hex')) {\n throw new Error('Invalid checksum, ' + \"\".concat(checksum.toString('hex'), \" != \").concat(newCheck.toString('hex')));\n }\n\n return key;\n}","\"use strict\";\n\n/**\n Convert a synchronous function into a asynchronous one (via setTimeout)\n wrapping it in a promise. This does not expect the function to have a\n callback paramter.\n\n @arg {function} func - non-callback function\n\n @example promiseAsync(myfunction)\n*/\nmodule.exports = function (func) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new Promise(function (resolve, reject) {\n setTimeout(function () {\n try {\n resolve(func.apply(void 0, args));\n } catch (err) {\n reject(err);\n }\n });\n });\n };\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/slicedToArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar ecdsa = require('./ecdsa');\n\nvar hash = require('./hash');\n\nvar curve = require('ecurve').getCurveByName('secp256k1');\n\nvar assert = require('assert');\n\nvar BigInteger = require('bigi');\n\nvar keyUtils = require('./key_utils');\n\nvar PublicKey = require('./key_public');\n\nvar PrivateKey = require('./key_private');\n\nmodule.exports = Signature;\n\nfunction Signature(r, s, i) {\n assert.equal(r != null, true, 'Missing parameter');\n assert.equal(s != null, true, 'Missing parameter');\n assert.equal(i != null, true, 'Missing parameter');\n /**\n Verify signed data.\n @arg {String|Buffer} data - full data\n @arg {pubkey|PublicKey} pubkey - EOSKey..\n @arg {String} [encoding = 'utf8'] - data encoding (if data is a string)\n @return {boolean}\n */\n\n function verify(data, pubkey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n\n assert(Buffer.isBuffer(data), 'data is a required String or Buffer');\n data = hash.sha256(data);\n return verifyHash(data, pubkey);\n }\n /**\n Verify a buffer of exactally 32 bytes in size (sha256(text))\n @arg {String|Buffer} dataSha256 - 32 byte buffer or string\n @arg {String|PublicKey} pubkey - EOSKey..\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n @return {boolean}\n */\n\n\n function verifyHash(dataSha256, pubkey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n\n if (typeof dataSha256 === 'string') {\n dataSha256 = Buffer.from(dataSha256, encoding);\n }\n\n if (dataSha256.length !== 32 || !Buffer.isBuffer(dataSha256)) throw new Error(\"dataSha256: 32 bytes required\");\n var publicKey = PublicKey(pubkey);\n assert(publicKey, 'pubkey required');\n return ecdsa.verify(curve, dataSha256, {\n r: r,\n s: s\n }, publicKey.Q);\n }\n\n ;\n /** @deprecated\n Verify hex data by converting to a buffer then hashing.\n @return {boolean}\n */\n\n function verifyHex(hex, pubkey) {\n console.log('Deprecated: use verify(data, pubkey, \"hex\")');\n var buf = Buffer.from(hex, 'hex');\n return verify(buf, pubkey);\n }\n\n ;\n /**\n Recover the public key used to create this signature using full data.\n @arg {String|Buffer} data - full data\n @arg {String} [encoding = 'utf8'] - data encoding (if string)\n @return {PublicKey}\n */\n\n function recover(data) {\n var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'utf8';\n\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n\n assert(Buffer.isBuffer(data), 'data is a required String or Buffer');\n data = hash.sha256(data);\n return recoverHash(data);\n }\n\n ;\n /**\n @arg {String|Buffer} dataSha256 - sha256 hash 32 byte buffer or hex string\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n @return {PublicKey}\n */\n\n function recoverHash(dataSha256) {\n var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'hex';\n\n if (typeof dataSha256 === 'string') {\n dataSha256 = Buffer.from(dataSha256, encoding);\n }\n\n if (dataSha256.length !== 32 || !Buffer.isBuffer(dataSha256)) {\n throw new Error(\"dataSha256: 32 byte String or buffer requred\");\n }\n\n var e = BigInteger.fromBuffer(dataSha256);\n var i2 = i;\n i2 -= 27;\n i2 = i2 & 3;\n var Q = ecdsa.recoverPubKey(curve, e, {\n r: r,\n s: s,\n i: i\n }, i2);\n return PublicKey.fromPoint(Q);\n }\n\n ;\n\n function toBuffer() {\n var buf;\n buf = new Buffer(65);\n buf.writeUInt8(i, 0);\n r.toBuffer(32).copy(buf, 1);\n s.toBuffer(32).copy(buf, 33);\n return buf;\n }\n\n ;\n\n function toHex() {\n return toBuffer().toString(\"hex\");\n }\n\n ;\n var signatureCache;\n\n function toString() {\n if (signatureCache) {\n return signatureCache;\n }\n\n signatureCache = 'SIG_K1_' + keyUtils.checkEncode(toBuffer(), 'K1');\n return signatureCache;\n }\n\n return {\n r: r,\n s: s,\n i: i,\n toBuffer: toBuffer,\n verify: verify,\n verifyHash: verifyHash,\n verifyHex: verifyHex,\n // deprecated\n recover: recover,\n recoverHash: recoverHash,\n toHex: toHex,\n toString: toString,\n\n /** @deprecated use verify (same arguments and return) */\n verifyBuffer: function verifyBuffer() {\n console.log('Deprecated: use signature.verify instead (same arguments)');\n return verify.apply(void 0, arguments);\n },\n\n /** @deprecated use recover (same arguments and return) */\n recoverPublicKey: function recoverPublicKey() {\n console.log('Deprecated: use signature.recover instead (same arguments)');\n return recover.apply(void 0, arguments);\n },\n\n /** @deprecated use recoverHash (same arguments and return) */\n recoverPublicKeyFromBuffer: function recoverPublicKeyFromBuffer() {\n console.log('Deprecated: use signature.recoverHash instead (same arguments)');\n return recoverHash.apply(void 0, arguments);\n }\n };\n}\n/**\n Hash and sign arbitrary data.\n\n @arg {string|Buffer} data - full data\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'utf8'] - data encoding (if string)\n\n @return {Signature}\n*/\n\n\nSignature.sign = function (data, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf8';\n\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n\n assert(Buffer.isBuffer(data), 'data is a required String or Buffer');\n data = hash.sha256(data);\n return Signature.signHash(data, privateKey);\n};\n/**\n Sign a buffer of exactally 32 bytes in size (sha256(text))\n\n @arg {string|Buffer} dataSha256 - 32 byte buffer or string\n @arg {wif|PrivateKey} privateKey\n @arg {String} [encoding = 'hex'] - dataSha256 encoding (if string)\n\n @return {Signature}\n*/\n\n\nSignature.signHash = function (dataSha256, privateKey) {\n var encoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'hex';\n\n if (typeof dataSha256 === 'string') {\n dataSha256 = Buffer.from(dataSha256, encoding);\n }\n\n if (dataSha256.length !== 32 || !Buffer.isBuffer(dataSha256)) throw new Error(\"dataSha256: 32 byte buffer requred\");\n privateKey = PrivateKey(privateKey);\n assert(privateKey, 'privateKey required');\n var der, e, ecsignature, i, lenR, lenS, nonce;\n i = null;\n nonce = 0;\n e = BigInteger.fromBuffer(dataSha256);\n\n while (true) {\n ecsignature = ecdsa.sign(curve, dataSha256, privateKey.d, nonce++);\n der = ecsignature.toDER();\n lenR = der[3];\n lenS = der[5 + lenR];\n\n if (lenR === 32 && lenS === 32) {\n i = ecdsa.calcPubKeyRecoveryParam(curve, e, ecsignature, privateKey.toPublic().Q);\n i += 4; // compressed\n\n i += 27; // compact // 24 or 27 :( forcing odd-y 2nd key candidate)\n\n break;\n }\n\n if (nonce % 10 === 0) {\n console.log(\"WARN: \" + nonce + \" attempts to find canonical signature\");\n }\n }\n\n return Signature(ecsignature.r, ecsignature.s, i);\n};\n\nSignature.fromBuffer = function (buf) {\n var i, r, s;\n assert(Buffer.isBuffer(buf), 'Buffer is required');\n assert.equal(buf.length, 65, 'Invalid signature length');\n i = buf.readUInt8(0);\n assert.equal(i - 27, i - 27 & 7, 'Invalid signature parameter');\n r = BigInteger.fromBuffer(buf.slice(1, 33));\n s = BigInteger.fromBuffer(buf.slice(33));\n return Signature(r, s, i);\n};\n\nSignature.fromHex = function (hex) {\n return Signature.fromBuffer(Buffer.from(hex, \"hex\"));\n};\n/**\n @arg {string} signature - like SIG_K1_base58signature..\n @return {Signature} or `null` (invalid)\n*/\n\n\nSignature.fromString = function (signature) {\n try {\n return Signature.fromStringOrThrow(signature);\n } catch (e) {\n return null;\n }\n};\n/**\n @arg {string} signature - like SIG_K1_base58signature..\n @throws {Error} invalid\n @return {Signature}\n*/\n\n\nSignature.fromStringOrThrow = function (signature) {\n assert.equal((0, _typeof2[\"default\"])(signature), 'string', 'signature');\n var match = signature.match(/^SIG_([A-Za-z0-9]+)_([A-Za-z0-9]+)$/);\n assert(match != null && match.length === 3, 'Expecting signature like: SIG_K1_base58signature..');\n\n var _match = (0, _slicedToArray2[\"default\"])(match, 3),\n keyType = _match[1],\n keyString = _match[2];\n\n assert.equal(keyType, 'K1', 'K1 signature expected');\n return Signature.fromBuffer(keyUtils.checkDecode(keyString, keyType));\n};\n/**\n @arg {String|Signature} o - hex string\n @return {Signature}\n*/\n\n\nSignature.from = function (o) {\n var signature = o ? o.r && o.s && o.i ? o : typeof o === 'string' && o.length === 130 ? Signature.fromHex(o) : typeof o === 'string' && o.length !== 130 ? Signature.fromStringOrThrow(o) : Buffer.isBuffer(o) ? Signature.fromBuffer(o) : null : o;\n /*null or undefined*/\n\n if (!signature) {\n throw new TypeError('signature should be a hex string or buffer');\n }\n\n return signature;\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PrivateKey = void 0;\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\nvar eosjs_key_conversions_1 = require(\"./eosjs-key-conversions\");\n/** Represents/stores a private key and provides easy conversion for use with `elliptic` lib */\nvar PrivateKey = /** @class */ (function () {\n function PrivateKey(key, ec) {\n this.key = key;\n this.ec = ec;\n }\n /** Instantiate private key from an `elliptic`-format private key */\n PrivateKey.fromElliptic = function (privKey, keyType, ec) {\n if (!ec) {\n ec = eosjs_key_conversions_1.constructElliptic(keyType);\n }\n return new PrivateKey({\n type: keyType,\n data: privKey.getPrivate().toArrayLike(Buffer, 'be', 32),\n }, ec);\n };\n /** Instantiate private key from an EOSIO-format private key */\n PrivateKey.fromString = function (keyString, ec) {\n var privateKey = eosjs_numeric_1.stringToPrivateKey(keyString);\n if (!ec) {\n ec = eosjs_key_conversions_1.constructElliptic(privateKey.type);\n }\n return new PrivateKey(privateKey, ec);\n };\n /** Export private key as `elliptic`-format private key */\n PrivateKey.prototype.toElliptic = function () {\n return this.ec.keyFromPrivate(this.key.data);\n };\n PrivateKey.prototype.toLegacyString = function () {\n return eosjs_numeric_1.privateKeyToLegacyString(this.key);\n };\n /** Export private key as EOSIO-format private key */\n PrivateKey.prototype.toString = function () {\n return eosjs_numeric_1.privateKeyToString(this.key);\n };\n /** Get key type from key */\n PrivateKey.prototype.getType = function () {\n return this.key.type;\n };\n /** Retrieve the public key from a private key */\n PrivateKey.prototype.getPublicKey = function () {\n var ellipticPrivateKey = this.toElliptic();\n return eosjs_key_conversions_1.PublicKey.fromElliptic(ellipticPrivateKey, this.getType(), this.ec);\n };\n /** Sign a message or hashed message digest with private key */\n PrivateKey.prototype.sign = function (data, shouldHash, encoding) {\n var _this = this;\n if (shouldHash === void 0) { shouldHash = true; }\n if (encoding === void 0) { encoding = 'utf8'; }\n if (shouldHash) {\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n data = this.ec.hash().update(data).digest();\n }\n var tries = 0;\n var signature;\n var isCanonical = function (sigData) {\n return !(sigData[1] & 0x80) && !(sigData[1] === 0 && !(sigData[2] & 0x80))\n && !(sigData[33] & 0x80) && !(sigData[33] === 0 && !(sigData[34] & 0x80));\n };\n var constructSignature = function (options) {\n var ellipticPrivateKey = _this.toElliptic();\n var ellipticSignature = ellipticPrivateKey.sign(data, options);\n return eosjs_key_conversions_1.Signature.fromElliptic(ellipticSignature, _this.getType(), _this.ec);\n };\n if (this.key.type === eosjs_numeric_1.KeyType.k1) {\n do {\n signature = constructSignature({ canonical: true, pers: [++tries] });\n } while (!isCanonical(signature.toBinary()));\n }\n else {\n signature = constructSignature({ canonical: true });\n }\n return signature;\n };\n /** Validate a private key */\n PrivateKey.prototype.isValid = function () {\n try {\n var ellipticPrivateKey = this.toElliptic();\n var validationObj = ellipticPrivateKey.validate();\n return validationObj.result;\n }\n catch (_a) {\n return false;\n }\n };\n return PrivateKey;\n}());\nexports.PrivateKey = PrivateKey;\n//# sourceMappingURL=PrivateKey.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PublicKey = void 0;\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\nvar eosjs_key_conversions_1 = require(\"./eosjs-key-conversions\");\n/** Represents/stores a public key and provides easy conversion for use with `elliptic` lib */\nvar PublicKey = /** @class */ (function () {\n function PublicKey(key, ec) {\n this.key = key;\n this.ec = ec;\n }\n /** Instantiate public key from an EOSIO-format public key */\n PublicKey.fromString = function (publicKeyStr, ec) {\n var key = eosjs_numeric_1.stringToPublicKey(publicKeyStr);\n if (!ec) {\n ec = eosjs_key_conversions_1.constructElliptic(key.type);\n }\n return new PublicKey(key, ec);\n };\n /** Instantiate public key from an `elliptic`-format public key */\n PublicKey.fromElliptic = function (publicKey, keyType, ec) {\n var x = publicKey.getPublic().getX().toArray('be', 32);\n var y = publicKey.getPublic().getY().toArray('be', 32);\n if (!ec) {\n ec = eosjs_key_conversions_1.constructElliptic(keyType);\n }\n return new PublicKey({\n type: keyType,\n data: new Uint8Array([(y[31] & 1) ? 3 : 2].concat(x)),\n }, ec);\n };\n /** Export public key as EOSIO-format public key */\n PublicKey.prototype.toString = function () {\n return eosjs_numeric_1.publicKeyToString(this.key);\n };\n /** Export public key as Legacy EOSIO-format public key */\n PublicKey.prototype.toLegacyString = function () {\n return eosjs_numeric_1.publicKeyToLegacyString(this.key);\n };\n /** Export public key as `elliptic`-format public key */\n PublicKey.prototype.toElliptic = function () {\n return this.ec.keyPair({\n pub: Buffer.from(this.key.data),\n });\n };\n /** Get key type from key */\n PublicKey.prototype.getType = function () {\n return this.key.type;\n };\n /** Validate a public key */\n PublicKey.prototype.isValid = function () {\n try {\n var ellipticPublicKey = this.toElliptic();\n var validationObj = ellipticPublicKey.validate();\n return validationObj.result;\n }\n catch (_a) {\n return false;\n }\n };\n return PublicKey;\n}());\nexports.PublicKey = PublicKey;\n//# sourceMappingURL=PublicKey.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Signature = void 0;\nvar BN = require(\"bn.js\");\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\nvar eosjs_key_conversions_1 = require(\"./eosjs-key-conversions\");\n/** Represents/stores a Signature and provides easy conversion for use with `elliptic` lib */\nvar Signature = /** @class */ (function () {\n function Signature(signature, ec) {\n this.signature = signature;\n this.ec = ec;\n }\n /** Instantiate Signature from an EOSIO-format Signature */\n Signature.fromString = function (sig, ec) {\n var signature = eosjs_numeric_1.stringToSignature(sig);\n if (!ec) {\n ec = eosjs_key_conversions_1.constructElliptic(signature.type);\n }\n return new Signature(signature, ec);\n };\n /** Instantiate Signature from an `elliptic`-format Signature */\n Signature.fromElliptic = function (ellipticSig, keyType, ec) {\n var r = ellipticSig.r.toArray('be', 32);\n var s = ellipticSig.s.toArray('be', 32);\n var eosioRecoveryParam;\n if (keyType === eosjs_numeric_1.KeyType.k1 || keyType === eosjs_numeric_1.KeyType.r1) {\n eosioRecoveryParam = ellipticSig.recoveryParam + 27;\n if (ellipticSig.recoveryParam <= 3) {\n eosioRecoveryParam += 4;\n }\n }\n else if (keyType === eosjs_numeric_1.KeyType.wa) {\n eosioRecoveryParam = ellipticSig.recoveryParam;\n }\n var sigData = new Uint8Array([eosioRecoveryParam].concat(r, s));\n if (!ec) {\n ec = eosjs_key_conversions_1.constructElliptic(keyType);\n }\n return new Signature({\n type: keyType,\n data: sigData,\n }, ec);\n };\n /** Export Signature as `elliptic`-format Signature\n * NOTE: This isn't an actual elliptic-format Signature, as ec.Signature is not exported by the library.\n * That's also why the return type is `any`. We're *actually* returning an object with the 3 params\n * not an ec.Signature.\n * Further NOTE: @types/elliptic shows ec.Signature as exported; it is *not*. Hence the `any`.\n */\n Signature.prototype.toElliptic = function () {\n var lengthOfR = 32;\n var lengthOfS = 32;\n var r = new BN(this.signature.data.slice(1, lengthOfR + 1));\n var s = new BN(this.signature.data.slice(lengthOfR + 1, lengthOfR + lengthOfS + 1));\n var ellipticRecoveryBitField;\n if (this.signature.type === eosjs_numeric_1.KeyType.k1 || this.signature.type === eosjs_numeric_1.KeyType.r1) {\n ellipticRecoveryBitField = this.signature.data[0] - 27;\n if (ellipticRecoveryBitField > 3) {\n ellipticRecoveryBitField -= 4;\n }\n }\n else if (this.signature.type === eosjs_numeric_1.KeyType.wa) {\n ellipticRecoveryBitField = this.signature.data[0];\n }\n var recoveryParam = ellipticRecoveryBitField & 3;\n return { r: r, s: s, recoveryParam: recoveryParam };\n };\n /** Export Signature as EOSIO-format Signature */\n Signature.prototype.toString = function () {\n return eosjs_numeric_1.signatureToString(this.signature);\n };\n /** Export Signature in binary format */\n Signature.prototype.toBinary = function () {\n return this.signature.data;\n };\n /** Get key type from signature */\n Signature.prototype.getType = function () {\n return this.signature.type;\n };\n /** Verify a signature with a message or hashed message digest and public key */\n Signature.prototype.verify = function (data, publicKey, shouldHash, encoding) {\n if (shouldHash === void 0) { shouldHash = true; }\n if (encoding === void 0) { encoding = 'utf8'; }\n if (shouldHash) {\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n data = this.ec.hash().update(data).digest();\n }\n var ellipticSignature = this.toElliptic();\n var ellipticPublicKey = publicKey.toElliptic();\n return this.ec.verify(data, ellipticSignature, ellipticPublicKey, encoding);\n };\n /** Recover a public key from a message or hashed message digest and signature */\n Signature.prototype.recover = function (data, shouldHash, encoding) {\n if (shouldHash === void 0) { shouldHash = true; }\n if (encoding === void 0) { encoding = 'utf8'; }\n if (shouldHash) {\n if (typeof data === 'string') {\n data = Buffer.from(data, encoding);\n }\n data = this.ec.hash().update(data).digest();\n }\n var ellipticSignature = this.toElliptic();\n var recoveredPublicKey = this.ec.recoverPubKey(data, ellipticSignature, ellipticSignature.recoveryParam, encoding);\n var ellipticKPub = this.ec.keyFromPublic(recoveredPublicKey);\n return eosjs_key_conversions_1.PublicKey.fromElliptic(ellipticKPub, this.getType(), this.ec);\n };\n return Signature;\n}());\nexports.Signature = Signature;\n//# sourceMappingURL=Signature.js.map","\"use strict\";\n/**\n * @module Javascript-API\n * copyright defined in eosjs/LICENSE.txt\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n;\n//# sourceMappingURL=eosjs-api-interfaces.js.map","\"use strict\";\n/**\n * @module API\n */\n// copyright defined in eosjs/LICENSE.txt\n/* eslint-disable max-classes-per-file */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ActionBuilder = exports.TransactionBuilder = exports.Api = void 0;\nvar pako_1 = require(\"pako\");\nvar ser = require(\"./eosjs-serialize\");\nvar Api = /** @class */ (function () {\n /**\n * @param args\n * * `rpc`: Issues RPC calls\n * * `authorityProvider`: Get public keys needed to meet authorities in a transaction\n * * `abiProvider`: Supplies ABIs in raw form (binary)\n * * `signatureProvider`: Signs transactions\n * * `chainId`: Identifies chain\n * * `textEncoder`: `TextEncoder` instance to use. Pass in `null` if running in a browser\n * * `textDecoder`: `TextDecoder` instance to use. Pass in `null` if running in a browser\n */\n function Api(args) {\n /** Holds information needed to serialize contract actions */\n this.contracts = new Map();\n /** Fetched abis */\n this.cachedAbis = new Map();\n this.transactionExtensions = [\n { id: 1, type: 'resource_payer', keys: ['payer', 'max_net_bytes', 'max_cpu_us', 'max_memory_bytes'] },\n ];\n this.rpc = args.rpc;\n this.authorityProvider = args.authorityProvider || args.rpc;\n this.abiProvider = args.abiProvider || args.rpc;\n this.signatureProvider = args.signatureProvider;\n this.chainId = args.chainId;\n this.textEncoder = args.textEncoder;\n this.textDecoder = args.textDecoder;\n this.abiTypes = ser.getTypesFromAbi(ser.createAbiTypes());\n this.transactionTypes = ser.getTypesFromAbi(ser.createTransactionTypes());\n }\n /** Decodes an abi as Uint8Array into json. */\n Api.prototype.rawAbiToJson = function (rawAbi) {\n var buffer = new ser.SerialBuffer({\n textEncoder: this.textEncoder,\n textDecoder: this.textDecoder,\n array: rawAbi,\n });\n if (!ser.supportedAbiVersion(buffer.getString())) {\n throw new Error('Unsupported abi version');\n }\n buffer.restartRead();\n return this.abiTypes.get('abi_def').deserialize(buffer);\n };\n /** Encodes a json abi as Uint8Array. */\n Api.prototype.jsonToRawAbi = function (jsonAbi) {\n var buffer = new ser.SerialBuffer({\n textEncoder: this.textEncoder,\n textDecoder: this.textDecoder,\n });\n this.abiTypes.get('abi_def').serialize(buffer, jsonAbi);\n if (!ser.supportedAbiVersion(buffer.getString())) {\n throw new Error('Unsupported abi version');\n }\n return buffer.asUint8Array();\n };\n /** Get abi in both binary and structured forms. Fetch when needed. */\n Api.prototype.getCachedAbi = function (accountName, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n var cachedAbi, rawAbi, abi, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!reload && this.cachedAbis.get(accountName)) {\n return [2 /*return*/, this.cachedAbis.get(accountName)];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.abiProvider.getRawAbi(accountName)];\n case 2:\n rawAbi = (_a.sent()).abi;\n abi = this.rawAbiToJson(rawAbi);\n cachedAbi = { rawAbi: rawAbi, abi: abi };\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n e_1.message = \"fetching abi for \" + accountName + \": \" + e_1.message;\n throw e_1;\n case 4:\n if (!cachedAbi) {\n throw new Error(\"Missing abi for \" + accountName);\n }\n this.cachedAbis.set(accountName, cachedAbi);\n return [2 /*return*/, cachedAbi];\n }\n });\n });\n };\n /** Get abi in structured form. Fetch when needed. */\n Api.prototype.getAbi = function (accountName, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getCachedAbi(accountName, reload)];\n case 1: return [2 /*return*/, (_a.sent()).abi];\n }\n });\n });\n };\n /** Get abis needed by a transaction */\n Api.prototype.getTransactionAbis = function (transaction, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n var actions, accounts, uniqueAccounts, actionPromises;\n var _this = this;\n return __generator(this, function (_a) {\n actions = (transaction.context_free_actions || []).concat(transaction.actions);\n accounts = actions.map(function (action) { return action.account; });\n uniqueAccounts = new Set(accounts);\n actionPromises = __spreadArray([], __read(uniqueAccounts)).map(function (account) { return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = {\n accountName: account\n };\n return [4 /*yield*/, this.getCachedAbi(account, reload)];\n case 1: return [2 /*return*/, (_a.abi = (_b.sent()).rawAbi,\n _a)];\n }\n });\n }); });\n return [2 /*return*/, Promise.all(actionPromises)];\n });\n });\n };\n /** Get data needed to serialize actions in a contract */\n Api.prototype.getContract = function (accountName, reload) {\n if (reload === void 0) { reload = false; }\n return __awaiter(this, void 0, void 0, function () {\n var abi, types, actions, _a, _b, _c, name_1, type, result;\n var e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!reload && this.contracts.get(accountName)) {\n return [2 /*return*/, this.contracts.get(accountName)];\n }\n return [4 /*yield*/, this.getAbi(accountName, reload)];\n case 1:\n abi = _e.sent();\n types = ser.getTypesFromAbi(ser.createInitialTypes(), abi);\n actions = new Map();\n try {\n for (_a = __values(abi.actions), _b = _a.next(); !_b.done; _b = _a.next()) {\n _c = _b.value, name_1 = _c.name, type = _c.type;\n actions.set(name_1, ser.getType(types, type));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n }\n result = { types: types, actions: actions };\n this.contracts.set(accountName, result);\n return [2 /*return*/, result];\n }\n });\n });\n };\n /** Convert `value` to binary form. `type` must be a built-in abi type or in `transaction.abi.json`. */\n Api.prototype.serialize = function (buffer, type, value) {\n this.transactionTypes.get(type).serialize(buffer, value);\n };\n /** Convert data in `buffer` to structured form. `type` must be a built-in abi type or in `transaction.abi.json`. */\n Api.prototype.deserialize = function (buffer, type) {\n return this.transactionTypes.get(type).deserialize(buffer);\n };\n /** Convert a transaction to binary */\n Api.prototype.serializeTransaction = function (transaction) {\n var buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n this.serialize(buffer, 'transaction', __assign({ max_net_usage_words: 0, max_cpu_usage_ms: 0, delay_sec: 0, context_free_actions: [], actions: [], transaction_extensions: [] }, transaction));\n return buffer.asUint8Array();\n };\n /** Serialize context-free data */\n Api.prototype.serializeContextFreeData = function (contextFreeData) {\n var e_3, _a;\n if (!contextFreeData || !contextFreeData.length) {\n return null;\n }\n var buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n buffer.pushVaruint32(contextFreeData.length);\n try {\n for (var contextFreeData_1 = __values(contextFreeData), contextFreeData_1_1 = contextFreeData_1.next(); !contextFreeData_1_1.done; contextFreeData_1_1 = contextFreeData_1.next()) {\n var data = contextFreeData_1_1.value;\n buffer.pushBytes(data);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (contextFreeData_1_1 && !contextFreeData_1_1.done && (_a = contextFreeData_1.return)) _a.call(contextFreeData_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return buffer.asUint8Array();\n };\n /** Convert a transaction from binary. Leaves actions in hex. */\n Api.prototype.deserializeTransaction = function (transaction) {\n var buffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n buffer.pushArray(transaction);\n return this.deserialize(buffer, 'transaction');\n };\n // Order of adding to transaction_extension is transaction_extension id ascending\n Api.prototype.serializeTransactionExtensions = function (transaction) {\n var transaction_extensions = [];\n if (transaction.resource_payer) {\n var extensionBuffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n var types = ser.getTypesFromAbi(ser.createTransactionExtensionTypes());\n types.get('resource_payer').serialize(extensionBuffer, transaction.resource_payer);\n transaction_extensions = __spreadArray(__spreadArray([], __read(transaction_extensions)), [[1, ser.arrayToHex(extensionBuffer.asUint8Array())]]);\n }\n return transaction_extensions;\n };\n ;\n // Usage: transaction = {...transaction, ...this.deserializeTransactionExtensions(transaction.transaction_extensions)}\n Api.prototype.deserializeTransactionExtensions = function (data) {\n var _this = this;\n var transaction = {};\n data.forEach(function (extensionData) {\n var transactionExtension = _this.transactionExtensions.find(function (extension) { return extension.id === extensionData[0]; });\n if (transactionExtension === undefined) {\n throw new Error(\"Transaction Extension could not be determined: \" + extensionData);\n }\n var types = ser.getTypesFromAbi(ser.createTransactionExtensionTypes());\n var extensionBuffer = new ser.SerialBuffer({ textEncoder: _this.textEncoder, textDecoder: _this.textDecoder });\n extensionBuffer.pushArray(ser.hexToUint8Array(extensionData[1]));\n var deserializedObj = types.get(transactionExtension.type).deserialize(extensionBuffer);\n if (extensionData[0] === 1) {\n deserializedObj.max_net_bytes = Number(deserializedObj.max_net_bytes);\n deserializedObj.max_cpu_us = Number(deserializedObj.max_cpu_us);\n deserializedObj.max_memory_bytes = Number(deserializedObj.max_memory_bytes);\n transaction.resource_payer = deserializedObj;\n }\n });\n return transaction;\n };\n ;\n // Transaction extensions are serialized and moved to `transaction_extensions`, deserialized objects are not needed on the transaction\n Api.prototype.deleteTransactionExtensionObjects = function (transaction) {\n delete transaction.resource_payer;\n return transaction;\n };\n /** Convert actions to hex */\n Api.prototype.serializeActions = function (actions) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(actions.map(function (action) { return __awaiter(_this, void 0, void 0, function () {\n var account, name, authorization, data, contract;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n account = action.account, name = action.name, authorization = action.authorization, data = action.data;\n return [4 /*yield*/, this.getContract(account)];\n case 1:\n contract = _a.sent();\n if (typeof data !== 'object') {\n return [2 /*return*/, action];\n }\n return [2 /*return*/, ser.serializeAction(contract, account, name, authorization, data, this.textEncoder, this.textDecoder)];\n }\n });\n }); }))];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Convert actions from hex */\n Api.prototype.deserializeActions = function (actions) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all(actions.map(function (_a) {\n var account = _a.account, name = _a.name, authorization = _a.authorization, data = _a.data;\n return __awaiter(_this, void 0, void 0, function () {\n var contract;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getContract(account)];\n case 1:\n contract = _b.sent();\n return [2 /*return*/, ser.deserializeAction(contract, account, name, authorization, data, this.textEncoder, this.textDecoder)];\n }\n });\n });\n }))];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Convert a transaction from binary. Also deserializes actions. */\n Api.prototype.deserializeTransactionWithActions = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var deserializedTransaction, deserializedCFActions, deserializedActions;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (typeof transaction === 'string') {\n transaction = ser.hexToUint8Array(transaction);\n }\n deserializedTransaction = this.deserializeTransaction(transaction);\n return [4 /*yield*/, this.deserializeActions(deserializedTransaction.context_free_actions)];\n case 1:\n deserializedCFActions = _a.sent();\n return [4 /*yield*/, this.deserializeActions(deserializedTransaction.actions)];\n case 2:\n deserializedActions = _a.sent();\n return [2 /*return*/, __assign(__assign({}, deserializedTransaction), { context_free_actions: deserializedCFActions, actions: deserializedActions })];\n }\n });\n });\n };\n /** Deflate a serialized object */\n Api.prototype.deflateSerializedArray = function (serializedArray) {\n return pako_1.deflate(serializedArray, { level: 9 });\n };\n /** Inflate a compressed serialized object */\n Api.prototype.inflateSerializedArray = function (compressedSerializedArray) {\n return pako_1.inflate(compressedSerializedArray);\n };\n /**\n * Create and optionally broadcast a transaction.\n *\n * Named Parameters:\n * `broadcast`: broadcast this transaction?\n * `sign`: sign this transaction?\n * `compression`: compress this transaction?\n * `readOnlyTrx`: read only transaction?\n * `returnFailureTraces`: return failure traces? (only available for read only transactions currently)\n *\n * If both `blocksBehind` and `expireSeconds` are present,\n * then fetch the block which is `blocksBehind` behind head block,\n * use it as a reference for TAPoS, and expire the transaction `expireSeconds` after that block's time.\n *\n * If both `useLastIrreversible` and `expireSeconds` are present,\n * then fetch the last irreversible block, use it as a reference for TAPoS,\n * and expire the transaction `expireSeconds` after that block's time.\n *\n * @returns node response if `broadcast`, `{signatures, serializedTransaction}` if `!broadcast`\n */\n Api.prototype.transact = function (transaction, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.broadcast, broadcast = _c === void 0 ? true : _c, _d = _b.sign, sign = _d === void 0 ? true : _d, readOnlyTrx = _b.readOnlyTrx, returnFailureTraces = _b.returnFailureTraces, requiredKeys = _b.requiredKeys, compression = _b.compression, blocksBehind = _b.blocksBehind, useLastIrreversible = _b.useLastIrreversible, expireSeconds = _b.expireSeconds;\n return __awaiter(this, void 0, void 0, function () {\n var info, abis, _e, serializedTransaction, serializedContextFreeData, pushTransactionArgs, availableKeys;\n var _f;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n if (typeof blocksBehind === 'number' && useLastIrreversible) {\n throw new Error('Use either blocksBehind or useLastIrreversible');\n }\n if (!!this.chainId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.rpc.get_info()];\n case 1:\n info = _g.sent();\n this.chainId = info.chain_id;\n _g.label = 2;\n case 2:\n if (!((typeof blocksBehind === 'number' || useLastIrreversible) && expireSeconds)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.generateTapos(info, transaction, blocksBehind, useLastIrreversible, expireSeconds)];\n case 3:\n transaction = _g.sent();\n _g.label = 4;\n case 4:\n if (!this.hasRequiredTaposFields(transaction)) {\n throw new Error('Required configuration or TAPOS fields are not present');\n }\n return [4 /*yield*/, this.getTransactionAbis(transaction)];\n case 5:\n abis = _g.sent();\n _e = [__assign({}, transaction)];\n _f = {};\n return [4 /*yield*/, this.serializeTransactionExtensions(transaction)];\n case 6:\n _f.transaction_extensions = _g.sent();\n return [4 /*yield*/, this.serializeActions(transaction.context_free_actions || [])];\n case 7:\n _f.context_free_actions = _g.sent();\n return [4 /*yield*/, this.serializeActions(transaction.actions)];\n case 8:\n transaction = __assign.apply(void 0, _e.concat([(_f.actions = _g.sent(), _f)]));\n transaction = this.deleteTransactionExtensionObjects(transaction);\n serializedTransaction = this.serializeTransaction(transaction);\n serializedContextFreeData = this.serializeContextFreeData(transaction.context_free_data);\n pushTransactionArgs = {\n serializedTransaction: serializedTransaction,\n serializedContextFreeData: serializedContextFreeData,\n signatures: []\n };\n if (!sign) return [3 /*break*/, 13];\n if (!!requiredKeys) return [3 /*break*/, 11];\n return [4 /*yield*/, this.signatureProvider.getAvailableKeys()];\n case 9:\n availableKeys = _g.sent();\n return [4 /*yield*/, this.authorityProvider.getRequiredKeys({ transaction: transaction, availableKeys: availableKeys })];\n case 10:\n requiredKeys = _g.sent();\n _g.label = 11;\n case 11: return [4 /*yield*/, this.signatureProvider.sign({\n chainId: this.chainId,\n requiredKeys: requiredKeys,\n serializedTransaction: serializedTransaction,\n serializedContextFreeData: serializedContextFreeData,\n abis: abis,\n })];\n case 12:\n pushTransactionArgs = _g.sent();\n _g.label = 13;\n case 13:\n if (broadcast) {\n if (compression) {\n return [2 /*return*/, this.pushCompressedSignedTransaction(pushTransactionArgs, readOnlyTrx, returnFailureTraces)];\n }\n return [2 /*return*/, this.pushSignedTransaction(pushTransactionArgs, readOnlyTrx, returnFailureTraces)];\n }\n return [2 /*return*/, pushTransactionArgs];\n }\n });\n });\n };\n Api.prototype.query = function (account, short, query, _a) {\n var sign = _a.sign, requiredKeys = _a.requiredKeys, _b = _a.authorization, authorization = _b === void 0 ? [] : _b;\n return __awaiter(this, void 0, void 0, function () {\n var info, refBlock, queryBuffer, transaction, serializedTransaction, signatures, abis, availableKeys, signResponse, response, returnBuffer;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.rpc.get_info()];\n case 1:\n info = _c.sent();\n return [4 /*yield*/, this.tryRefBlockFromGetInfo(info)];\n case 2:\n refBlock = _c.sent();\n queryBuffer = new ser.SerialBuffer({ textEncoder: this.textEncoder, textDecoder: this.textDecoder });\n ser.serializeQuery(queryBuffer, query);\n transaction = __assign(__assign({}, ser.transactionHeader(refBlock, 60 * 30)), { context_free_actions: [], actions: [{\n account: account,\n name: 'queryit',\n authorization: authorization,\n data: ser.arrayToHex(queryBuffer.asUint8Array()),\n }] });\n serializedTransaction = this.serializeTransaction(transaction);\n signatures = [];\n if (!sign) return [3 /*break*/, 8];\n return [4 /*yield*/, this.getTransactionAbis(transaction)];\n case 3:\n abis = _c.sent();\n if (!!requiredKeys) return [3 /*break*/, 6];\n return [4 /*yield*/, this.signatureProvider.getAvailableKeys()];\n case 4:\n availableKeys = _c.sent();\n return [4 /*yield*/, this.authorityProvider.getRequiredKeys({ transaction: transaction, availableKeys: availableKeys })];\n case 5:\n requiredKeys = _c.sent();\n _c.label = 6;\n case 6: return [4 /*yield*/, this.signatureProvider.sign({\n chainId: this.chainId,\n requiredKeys: requiredKeys,\n serializedTransaction: serializedTransaction,\n serializedContextFreeData: null,\n abis: abis,\n })];\n case 7:\n signResponse = _c.sent();\n signatures = signResponse.signatures;\n _c.label = 8;\n case 8: return [4 /*yield*/, this.rpc.send_transaction({\n signatures: signatures,\n compression: 0,\n serializedTransaction: serializedTransaction\n })];\n case 9:\n response = _c.sent();\n returnBuffer = new ser.SerialBuffer({\n textEncoder: this.textEncoder,\n textDecoder: this.textDecoder,\n array: ser.hexToUint8Array(response.processed.action_traces[0][1].return_value)\n });\n if (short) {\n return [2 /*return*/, ser.deserializeAnyvarShort(returnBuffer)];\n }\n else {\n return [2 /*return*/, ser.deserializeAnyvar(returnBuffer)];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /** Broadcast a signed transaction */\n Api.prototype.pushSignedTransaction = function (_a, readOnlyTrx, returnFailureTraces) {\n var signatures = _a.signatures, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n if (readOnlyTrx === void 0) { readOnlyTrx = false; }\n if (returnFailureTraces === void 0) { returnFailureTraces = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n if (readOnlyTrx) {\n return [2 /*return*/, this.rpc.push_ro_transaction({\n signatures: signatures,\n serializedTransaction: serializedTransaction,\n serializedContextFreeData: serializedContextFreeData,\n }, returnFailureTraces)];\n }\n return [2 /*return*/, this.rpc.push_transaction({\n signatures: signatures,\n serializedTransaction: serializedTransaction,\n serializedContextFreeData: serializedContextFreeData\n })];\n });\n });\n };\n Api.prototype.pushCompressedSignedTransaction = function (_a, readOnlyTrx, returnFailureTraces) {\n var signatures = _a.signatures, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n if (readOnlyTrx === void 0) { readOnlyTrx = false; }\n if (returnFailureTraces === void 0) { returnFailureTraces = false; }\n return __awaiter(this, void 0, void 0, function () {\n var compressedSerializedTransaction, compressedSerializedContextFreeData;\n return __generator(this, function (_b) {\n compressedSerializedTransaction = this.deflateSerializedArray(serializedTransaction);\n compressedSerializedContextFreeData = this.deflateSerializedArray(serializedContextFreeData || new Uint8Array(0));\n if (readOnlyTrx) {\n return [2 /*return*/, this.rpc.push_ro_transaction({\n signatures: signatures,\n compression: 1,\n serializedTransaction: compressedSerializedTransaction,\n serializedContextFreeData: compressedSerializedContextFreeData\n }, returnFailureTraces)];\n }\n return [2 /*return*/, this.rpc.push_transaction({\n signatures: signatures,\n compression: 1,\n serializedTransaction: compressedSerializedTransaction,\n serializedContextFreeData: compressedSerializedContextFreeData\n })];\n });\n });\n };\n Api.prototype.generateTapos = function (info, transaction, blocksBehind, useLastIrreversible, expireSeconds) {\n return __awaiter(this, void 0, void 0, function () {\n var block, taposBlockNumber, refBlock, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!!info) return [3 /*break*/, 2];\n return [4 /*yield*/, this.rpc.get_info()];\n case 1:\n info = _b.sent();\n _b.label = 2;\n case 2:\n if (!useLastIrreversible) return [3 /*break*/, 4];\n return [4 /*yield*/, this.tryRefBlockFromGetInfo(info)];\n case 3:\n block = _b.sent();\n return [2 /*return*/, __assign(__assign({}, ser.transactionHeader(block, expireSeconds)), transaction)];\n case 4:\n taposBlockNumber = info.head_block_num - blocksBehind;\n if (!(taposBlockNumber <= info.last_irreversible_block_num)) return [3 /*break*/, 6];\n return [4 /*yield*/, this.tryGetBlockInfo(taposBlockNumber)];\n case 5:\n _a = _b.sent();\n return [3 /*break*/, 8];\n case 6: return [4 /*yield*/, this.tryGetBlockHeaderState(taposBlockNumber)];\n case 7:\n _a = _b.sent();\n _b.label = 8;\n case 8:\n refBlock = _a;\n return [2 /*return*/, __assign(__assign({}, ser.transactionHeader(refBlock, expireSeconds)), transaction)];\n }\n });\n });\n };\n // eventually break out into TransactionValidator class\n Api.prototype.hasRequiredTaposFields = function (_a) {\n var expiration = _a.expiration, ref_block_num = _a.ref_block_num, ref_block_prefix = _a.ref_block_prefix;\n return !!(expiration && typeof (ref_block_num) === 'number' && typeof (ref_block_prefix) === 'number');\n };\n Api.prototype.tryGetBlockHeaderState = function (taposBlockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 4]);\n return [4 /*yield*/, this.rpc.get_block_header_state(taposBlockNumber)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_1 = _a.sent();\n return [4 /*yield*/, this.tryGetBlockInfo(taposBlockNumber)];\n case 3: return [2 /*return*/, _a.sent()];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Api.prototype.tryGetBlockInfo = function (blockNumber) {\n return __awaiter(this, void 0, void 0, function () {\n var error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 4]);\n return [4 /*yield*/, this.rpc.get_block_info(blockNumber)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n error_2 = _a.sent();\n return [4 /*yield*/, this.rpc.get_block(blockNumber)];\n case 3: return [2 /*return*/, _a.sent()];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Api.prototype.tryRefBlockFromGetInfo = function (info) {\n return __awaiter(this, void 0, void 0, function () {\n var block;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(info.hasOwnProperty('last_irreversible_block_id') &&\n info.hasOwnProperty('last_irreversible_block_num') &&\n info.hasOwnProperty('last_irreversible_block_time'))) return [3 /*break*/, 1];\n return [2 /*return*/, {\n block_num: info.last_irreversible_block_num,\n id: info.last_irreversible_block_id,\n timestamp: info.last_irreversible_block_time,\n }];\n case 1: return [4 /*yield*/, this.tryGetBlockInfo(info.last_irreversible_block_num)];\n case 2:\n block = _a.sent();\n return [2 /*return*/, {\n block_num: block.block_num,\n id: block.id,\n timestamp: block.timestamp,\n }];\n }\n });\n });\n };\n Api.prototype.with = function (accountName) {\n return new ActionBuilder(this, accountName);\n };\n Api.prototype.buildTransaction = function (cb) {\n var tx = new TransactionBuilder(this);\n if (cb) {\n return cb(tx);\n }\n return tx;\n };\n return Api;\n}()); // Api\nexports.Api = Api;\nvar TransactionBuilder = /** @class */ (function () {\n function TransactionBuilder(api) {\n this.actions = [];\n this.contextFreeGroups = [];\n this.api = api;\n }\n TransactionBuilder.prototype.with = function (accountName) {\n var actionBuilder = new ActionBuilder(this.api, accountName);\n this.actions.push(actionBuilder);\n return actionBuilder;\n };\n TransactionBuilder.prototype.associateContextFree = function (contextFreeGroup) {\n this.contextFreeGroups.push(contextFreeGroup);\n return this;\n };\n TransactionBuilder.prototype.send = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n var contextFreeDataSet, contextFreeActions, actions;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n contextFreeDataSet = [];\n contextFreeActions = [];\n actions = this.actions.map(function (actionBuilder) { return actionBuilder.serializedData; });\n return [4 /*yield*/, Promise.all(this.contextFreeGroups.map(function (contextFreeCallback) { return __awaiter(_this, void 0, void 0, function () {\n var _a, action, contextFreeAction, contextFreeData;\n return __generator(this, function (_b) {\n _a = contextFreeCallback({\n cfd: contextFreeDataSet.length,\n cfa: contextFreeActions.length\n }), action = _a.action, contextFreeAction = _a.contextFreeAction, contextFreeData = _a.contextFreeData;\n if (action) {\n actions.push(action);\n }\n if (contextFreeAction) {\n contextFreeActions.push(contextFreeAction);\n }\n if (contextFreeData) {\n contextFreeDataSet.push(contextFreeData);\n }\n return [2 /*return*/];\n });\n }); }))];\n case 1:\n _a.sent();\n this.contextFreeGroups = [];\n this.actions = [];\n return [4 /*yield*/, this.api.transact({\n context_free_data: contextFreeDataSet,\n context_free_actions: contextFreeActions,\n actions: actions\n }, config)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n return TransactionBuilder;\n}());\nexports.TransactionBuilder = TransactionBuilder;\nvar ActionBuilder = /** @class */ (function () {\n function ActionBuilder(api, accountName) {\n this.api = api;\n this.accountName = accountName;\n }\n ActionBuilder.prototype.as = function (actorName) {\n if (actorName === void 0) { actorName = []; }\n var authorization = [];\n if (actorName && typeof actorName === 'string') {\n authorization = [{ actor: actorName, permission: 'active' }];\n }\n else {\n authorization = actorName;\n }\n return new ActionSerializer(this, this.api, this.accountName, authorization);\n };\n return ActionBuilder;\n}());\nexports.ActionBuilder = ActionBuilder;\nvar ActionSerializer = /** @class */ (function () {\n function ActionSerializer(parent, api, accountName, authorization) {\n var e_4, _a;\n var _this = this;\n var jsonAbi = api.cachedAbis.get(accountName);\n if (!jsonAbi) {\n throw new Error('ABI must be cached before using ActionBuilder, run api.getAbi()');\n }\n var types = ser.getTypesFromAbi(ser.createInitialTypes(), jsonAbi.abi);\n var actions = new Map();\n try {\n for (var _b = __values(jsonAbi.abi.actions), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = _c.value, name_2 = _d.name, type = _d.type;\n actions.set(name_2, ser.getType(types, type));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_4) throw e_4.error; }\n }\n actions.forEach(function (type, name) {\n var _a;\n Object.assign(_this, (_a = {},\n _a[name] = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var data = {};\n args.forEach(function (arg, index) {\n var field = type.fields[index];\n data[field.name] = arg;\n });\n var serializedData = ser.serializeAction({ types: types, actions: actions }, accountName, name, authorization, data, api.textEncoder, api.textDecoder);\n parent.serializedData = serializedData;\n return serializedData;\n },\n _a));\n });\n }\n return ActionSerializer;\n}());\n//# sourceMappingURL=eosjs-api.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ecc = void 0;\nvar eosjs_jssig_1 = require(\"./eosjs-jssig\");\nvar eosjs_key_conversions_1 = require(\"./eosjs-key-conversions\");\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\nexports.ecc = {\n initialize: function () { return console.error('Method deprecated'); },\n unsafeRandomKey: function () { return console.error('Method deprecated'); },\n randomKey: function (cpuEntropyBits, options) {\n if (options === void 0) { options = {}; }\n if (cpuEntropyBits !== undefined) {\n console.warn('Argument `cpuEntropyBits` is deprecated, ' +\n 'use the options argument instead');\n }\n var privateKey = eosjs_key_conversions_1.generateKeyPair(eosjs_numeric_1.KeyType.k1, options).privateKey;\n return Promise.resolve(privateKey.toLegacyString());\n },\n seedPrivate: function () { return console.error('Method deprecated'); },\n privateToPublic: function (key, pubkey_prefix) {\n if (pubkey_prefix !== undefined) {\n console.warn('Argument `pubkey_prefix` is deprecated, ' +\n 'keys prefixed with PUB_K1_/PUB_R1_/PUB_WA_ going forward');\n }\n var privateKey = eosjs_jssig_1.PrivateKey.fromString(key);\n var publicKey = privateKey.getPublicKey();\n return publicKey.toLegacyString();\n },\n isValidPublic: function (pubkey, pubkey_prefix) {\n if (pubkey_prefix !== undefined) {\n console.warn('Argument `pubkey_prefix` is deprecated, ' +\n 'keys prefixed with PUB_K1_/PUB_R1_/PUB_WA_ going forward');\n }\n try {\n var publicKey = eosjs_jssig_1.PublicKey.fromString(pubkey);\n return publicKey.isValid();\n }\n catch (_a) {\n return false;\n }\n },\n isValidPrivate: function (wif) {\n try {\n var privateKey = eosjs_jssig_1.PrivateKey.fromString(wif);\n return privateKey.isValid();\n }\n catch (_a) {\n return false;\n }\n },\n sign: function (data, privateKey, encoding) {\n if (encoding === void 0) { encoding = 'utf8'; }\n var privKey = typeof privateKey === 'string' ? eosjs_jssig_1.PrivateKey.fromString(privateKey) : privateKey;\n var signature = privKey.sign(data, true, encoding);\n return signature.toString();\n },\n signHash: function (dataSha256, privateKey, encoding) {\n if (encoding === void 0) { encoding = 'hex'; }\n var privKey = typeof privateKey === 'string' ? eosjs_jssig_1.PrivateKey.fromString(privateKey) : privateKey;\n var signature = privKey.sign(dataSha256, false, encoding);\n return signature.toString();\n },\n verify: function (signature, data, pubKey, encoding, hashData) {\n if (encoding === void 0) { encoding = 'utf8'; }\n if (hashData === void 0) { hashData = true; }\n var publicKey = typeof pubKey === 'string' ? eosjs_jssig_1.PublicKey.fromString(pubKey) : pubKey;\n var sig = eosjs_jssig_1.Signature.fromString(signature);\n return sig.verify(data, publicKey, hashData, encoding);\n },\n recover: function (signature, data, encoding) {\n if (encoding === void 0) { encoding = 'utf8'; }\n var sig = eosjs_jssig_1.Signature.fromString(signature);\n var publicKey = sig.recover(data, true, encoding);\n return publicKey.toLegacyString();\n },\n recoverHash: function (signature, dataSha256, encoding) {\n if (encoding === void 0) { encoding = 'hex'; }\n var sig = eosjs_jssig_1.Signature.fromString(signature);\n var publicKey = sig.recover(dataSha256, false, encoding);\n return publicKey.toLegacyString();\n },\n sha256: function (data, resultEncoding, encoding) {\n if (encoding !== undefined) {\n console.warn('Argument `encoding` is deprecated');\n }\n if (resultEncoding !== undefined) {\n console.warn('Argument `resultEncoding` is deprecated');\n }\n return require('./eosjs-key-conversions').sha256(data);\n }\n};\n//# sourceMappingURL=eosjs-ecc-migration.js.map","\"use strict\";\n/**\n * @module JSON-RPC\n */\n// copyright defined in eosjs/LICENSE.txt\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonRpc = void 0;\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\nvar eosjs_rpcerror_1 = require(\"./eosjs-rpcerror\");\nvar arrayToHex = function (data) {\n var e_1, _a;\n var result = '';\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var x = data_1_1.value;\n result += ('00' + x.toString(16)).slice(-2);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result;\n};\n/** Make RPC calls */\nvar JsonRpc = /** @class */ (function () {\n /**\n * @param args\n * `fetch`:\n * browsers: leave `null` or `undefined`\n * node: provide an implementation\n */\n function JsonRpc(endpoint, args) {\n if (args === void 0) { args = {}; }\n this.endpoint = endpoint.replace(/\\/$/, '');\n if (args.fetch) {\n this.fetchBuiltin = args.fetch;\n }\n else {\n this.fetchBuiltin = global.fetch;\n }\n }\n /** Post `body` to `endpoint + path`. Throws detailed error information in `RpcError` when available. */\n JsonRpc.prototype.fetch = function (path, body) {\n return __awaiter(this, void 0, void 0, function () {\n var response, json, f, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n f = this.fetchBuiltin;\n return [4 /*yield*/, f(this.endpoint + path, {\n body: JSON.stringify(body),\n method: 'POST',\n })];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n json = _a.sent();\n if (json.processed && json.processed.except) {\n throw new eosjs_rpcerror_1.RpcError(json);\n }\n else if (json.result && json.result.except) {\n throw new eosjs_rpcerror_1.RpcError(json);\n }\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n e_2.isFetchError = true;\n throw e_2;\n case 4:\n if (!response.ok) {\n throw new eosjs_rpcerror_1.RpcError(json);\n }\n return [2 /*return*/, json];\n }\n });\n });\n };\n JsonRpc.prototype.abi_bin_to_json = function (code, action, binargs) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/abi_bin_to_json', { code: code, action: action, binargs: binargs })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n JsonRpc.prototype.abi_json_to_bin = function (code, action, args) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/abi_json_to_bin', { code: code, action: action, args: args })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_abi` */\n JsonRpc.prototype.get_abi = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_abi', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_account` */\n JsonRpc.prototype.get_account = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_account', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_accounts_by_authorizers` */\n JsonRpc.prototype.get_accounts_by_authorizers = function (accounts, keys) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_accounts_by_authorizers', { accounts: accounts, keys: keys })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `get_activated_protocol_features` */\n JsonRpc.prototype.get_activated_protocol_features = function (_a) {\n var _b = _a.limit, limit = _b === void 0 ? 10 : _b, _c = _a.search_by_block_num, search_by_block_num = _c === void 0 ? false : _c, _d = _a.reverse, reverse = _d === void 0 ? false : _d, _e = _a.lower_bound, lower_bound = _e === void 0 ? null : _e, _f = _a.upper_bound, upper_bound = _f === void 0 ? null : _f;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_activated_protocol_features', { lower_bound: lower_bound, upper_bound: upper_bound, limit: limit, search_by_block_num: search_by_block_num, reverse: reverse })];\n case 1: return [2 /*return*/, _g.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_block_header_state` */\n JsonRpc.prototype.get_block_header_state = function (blockNumOrId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_block_header_state', { block_num_or_id: blockNumOrId })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_block_info` */\n JsonRpc.prototype.get_block_info = function (blockNum) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_block_info', { block_num: blockNum })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_block` */\n JsonRpc.prototype.get_block = function (blockNumOrId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_block', { block_num_or_id: blockNumOrId })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_code` */\n JsonRpc.prototype.get_code = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_code', {\n account_name: accountName,\n code_as_wasm: true\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_code_hash` */\n JsonRpc.prototype.get_code_hash = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_code_hash', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_currency_balance` */\n JsonRpc.prototype.get_currency_balance = function (code, account, symbol) {\n if (symbol === void 0) { symbol = null; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_currency_balance', { code: code, account: account, symbol: symbol })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_currency_stats` */\n JsonRpc.prototype.get_currency_stats = function (code, symbol) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_currency_stats', { code: code, symbol: symbol })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_info` */\n JsonRpc.prototype.get_info = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_info', {})];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_producer_schedule` */\n JsonRpc.prototype.get_producer_schedule = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_producer_schedule', {})];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_producers` */\n JsonRpc.prototype.get_producers = function (json, lowerBound, limit) {\n if (json === void 0) { json = true; }\n if (lowerBound === void 0) { lowerBound = ''; }\n if (limit === void 0) { limit = 50; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_producers', { json: json, lower_bound: lowerBound, limit: limit })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_raw_code_and_abi` */\n JsonRpc.prototype.get_raw_code_and_abi = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_raw_code_and_abi', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** calls `/v1/chain/get_raw_code_and_abi` and pulls out unneeded raw wasm code */\n JsonRpc.prototype.getRawAbi = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n var rawAbi, abi;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get_raw_abi(accountName)];\n case 1:\n rawAbi = _a.sent();\n abi = eosjs_numeric_1.base64ToBinary(rawAbi.abi);\n return [2 /*return*/, { accountName: rawAbi.account_name, abi: abi }];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_raw_abi` */\n JsonRpc.prototype.get_raw_abi = function (accountName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_raw_abi', { account_name: accountName })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_scheduled_transactions` */\n JsonRpc.prototype.get_scheduled_transactions = function (json, lowerBound, limit) {\n if (json === void 0) { json = true; }\n if (lowerBound === void 0) { lowerBound = ''; }\n if (limit === void 0) { limit = 50; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_scheduled_transactions', { json: json, lower_bound: lowerBound, limit: limit })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_table_rows` */\n JsonRpc.prototype.get_table_rows = function (_a) {\n var _b = _a.json, json = _b === void 0 ? true : _b, code = _a.code, scope = _a.scope, table = _a.table, _c = _a.lower_bound, lower_bound = _c === void 0 ? '' : _c, _d = _a.upper_bound, upper_bound = _d === void 0 ? '' : _d, _e = _a.index_position, index_position = _e === void 0 ? 1 : _e, _f = _a.key_type, key_type = _f === void 0 ? '' : _f, _g = _a.limit, limit = _g === void 0 ? 10 : _g, _h = _a.reverse, reverse = _h === void 0 ? false : _h, _j = _a.show_payer, show_payer = _j === void 0 ? false : _j;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_table_rows', {\n json: json,\n code: code,\n scope: scope,\n table: table,\n lower_bound: lower_bound,\n upper_bound: upper_bound,\n index_position: index_position,\n key_type: key_type,\n limit: limit,\n reverse: reverse,\n show_payer: show_payer,\n })];\n case 1: return [2 /*return*/, _k.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_kv_table_rows` */\n JsonRpc.prototype.get_kv_table_rows = function (_a) {\n var _b = _a.json, json = _b === void 0 ? true : _b, code = _a.code, table = _a.table, index_name = _a.index_name, _c = _a.encode_type, encode_type = _c === void 0 ? 'bytes' : _c, index_value = _a.index_value, lower_bound = _a.lower_bound, upper_bound = _a.upper_bound, _d = _a.limit, limit = _d === void 0 ? 10 : _d, _e = _a.reverse, reverse = _e === void 0 ? false : _e, _f = _a.show_payer, show_payer = _f === void 0 ? false : _f;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_kv_table_rows', {\n json: json,\n code: code,\n table: table,\n index_name: index_name,\n encode_type: encode_type,\n index_value: index_value,\n lower_bound: lower_bound,\n upper_bound: upper_bound,\n limit: limit,\n reverse: reverse,\n show_payer: show_payer,\n })];\n case 1: return [2 /*return*/, _g.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/get_table_by_scope` */\n JsonRpc.prototype.get_table_by_scope = function (_a) {\n var code = _a.code, table = _a.table, _b = _a.lower_bound, lower_bound = _b === void 0 ? '' : _b, _c = _a.upper_bound, upper_bound = _c === void 0 ? '' : _c, _d = _a.limit, limit = _d === void 0 ? 10 : _d;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/get_table_by_scope', {\n code: code,\n table: table,\n lower_bound: lower_bound,\n upper_bound: upper_bound,\n limit: limit,\n })];\n case 1: return [2 /*return*/, _e.sent()];\n }\n });\n });\n };\n /** Get subset of `availableKeys` needed to meet authorities in `transaction`. Implements `AuthorityProvider` */\n JsonRpc.prototype.getRequiredKeys = function (args) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = eosjs_numeric_1.convertLegacyPublicKeys;\n return [4 /*yield*/, this.fetch('/v1/chain/get_required_keys', {\n transaction: args.transaction,\n available_keys: args.availableKeys,\n })];\n case 1: return [2 /*return*/, _a.apply(void 0, [(_b.sent()).required_keys])];\n }\n });\n });\n };\n /** Push a serialized transaction (replaced by send_transaction, but returned format has changed) */\n JsonRpc.prototype.push_transaction = function (_a) {\n var signatures = _a.signatures, _b = _a.compression, compression = _b === void 0 ? 0 : _b, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/push_transaction', {\n signatures: signatures,\n compression: compression,\n packed_context_free_data: arrayToHex(serializedContextFreeData || new Uint8Array(0)),\n packed_trx: arrayToHex(serializedTransaction),\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/chain/push_ro_transaction */\n JsonRpc.prototype.push_ro_transaction = function (_a, returnFailureTraces) {\n var signatures = _a.signatures, _b = _a.compression, compression = _b === void 0 ? 0 : _b, serializedTransaction = _a.serializedTransaction;\n if (returnFailureTraces === void 0) { returnFailureTraces = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/push_ro_transaction', {\n transaction: {\n signatures: signatures,\n compression: compression,\n packed_context_free_data: arrayToHex(new Uint8Array(0)),\n packed_trx: arrayToHex(serializedTransaction),\n },\n return_failure_traces: returnFailureTraces,\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n JsonRpc.prototype.push_transactions = function (transactions) {\n return __awaiter(this, void 0, void 0, function () {\n var packedTrxs;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n packedTrxs = transactions.map(function (_a) {\n var signatures = _a.signatures, _b = _a.compression, compression = _b === void 0 ? 0 : _b, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return {\n signatures: signatures,\n compression: compression,\n packed_context_free_data: arrayToHex(serializedContextFreeData || new Uint8Array(0)),\n packed_trx: arrayToHex(serializedTransaction),\n };\n });\n return [4 /*yield*/, this.fetch('/v1/chain/push_transactions', packedTrxs)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Send a serialized transaction */\n JsonRpc.prototype.send_transaction = function (_a) {\n var signatures = _a.signatures, _b = _a.compression, compression = _b === void 0 ? 0 : _b, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/chain/send_transaction', {\n signatures: signatures,\n compression: compression,\n packed_context_free_data: arrayToHex(serializedContextFreeData || new Uint8Array(0)),\n packed_trx: arrayToHex(serializedTransaction),\n })];\n case 1: return [2 /*return*/, _c.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/db_size/get` */\n JsonRpc.prototype.db_size_get = function () {\n return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/db_size/get', {})];\n case 1: return [2 /*return*/, _a.sent()];\n }\n }); });\n };\n /** Raw call to `/v1/trace_api/get_block` */\n JsonRpc.prototype.trace_get_block = function (block_num) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/trace_api/get_block', { block_num: block_num })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/history/get_actions` */\n JsonRpc.prototype.history_get_actions = function (accountName, pos, offset) {\n if (pos === void 0) { pos = null; }\n if (offset === void 0) { offset = null; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_actions', { account_name: accountName, pos: pos, offset: offset })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/history/get_transaction` */\n JsonRpc.prototype.history_get_transaction = function (id, blockNumHint) {\n if (blockNumHint === void 0) { blockNumHint = null; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_transaction', { id: id, block_num_hint: blockNumHint })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/history/get_key_accounts` */\n JsonRpc.prototype.history_get_key_accounts = function (publicKey) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_key_accounts', { public_key: publicKey })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /** Raw call to `/v1/history/get_controlled_accounts` */\n JsonRpc.prototype.history_get_controlled_accounts = function (controllingAccount) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch('/v1/history/get_controlled_accounts', { controlling_account: controllingAccount })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n return JsonRpc;\n}()); // JsonRpc\nexports.JsonRpc = JsonRpc;\n//# sourceMappingURL=eosjs-jsonrpc.js.map","\"use strict\";\n/**\n * @module JS-Sig\n */\n// copyright defined in eosjs/LICENSE.txt\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsSignatureProvider = exports.digestFromSerializedData = exports.Signature = exports.PublicKey = exports.PrivateKey = void 0;\nvar elliptic_1 = require(\"elliptic\");\nvar eosjs_key_conversions_1 = require(\"./eosjs-key-conversions\");\nObject.defineProperty(exports, \"PrivateKey\", { enumerable: true, get: function () { return eosjs_key_conversions_1.PrivateKey; } });\nObject.defineProperty(exports, \"PublicKey\", { enumerable: true, get: function () { return eosjs_key_conversions_1.PublicKey; } });\nObject.defineProperty(exports, \"Signature\", { enumerable: true, get: function () { return eosjs_key_conversions_1.Signature; } });\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\n/** expensive to construct; so we do it once and reuse it */\nvar defaultEc = new elliptic_1.ec('secp256k1');\n/** Construct the digest from transaction details */\nvar digestFromSerializedData = function (chainId, serializedTransaction, serializedContextFreeData, e) {\n if (e === void 0) { e = defaultEc; }\n var signBuf = Buffer.concat([\n Buffer.from(chainId, 'hex'),\n Buffer.from(serializedTransaction),\n Buffer.from(serializedContextFreeData ?\n new Uint8Array(e.hash().update(serializedContextFreeData).digest()) :\n new Uint8Array(32)),\n ]);\n return e.hash().update(signBuf).digest();\n};\nexports.digestFromSerializedData = digestFromSerializedData;\n/** Signs transactions using in-process private keys */\nvar JsSignatureProvider = /** @class */ (function () {\n /** @param privateKeys private keys to sign with */\n function JsSignatureProvider(privateKeys) {\n var e_1, _a;\n /** map public to private keys */\n this.keys = new Map();\n /** public keys */\n this.availableKeys = [];\n try {\n for (var privateKeys_1 = __values(privateKeys), privateKeys_1_1 = privateKeys_1.next(); !privateKeys_1_1.done; privateKeys_1_1 = privateKeys_1.next()) {\n var k = privateKeys_1_1.value;\n var priv = eosjs_key_conversions_1.PrivateKey.fromString(k);\n var privElliptic = priv.toElliptic();\n var pubStr = priv.getPublicKey().toString();\n this.keys.set(pubStr, privElliptic);\n this.availableKeys.push(pubStr);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (privateKeys_1_1 && !privateKeys_1_1.done && (_a = privateKeys_1.return)) _a.call(privateKeys_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n /** Public keys associated with the private keys that the `SignatureProvider` holds */\n JsSignatureProvider.prototype.getAvailableKeys = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.availableKeys];\n });\n });\n };\n /** Sign a transaction */\n JsSignatureProvider.prototype.sign = function (_a) {\n var chainId = _a.chainId, requiredKeys = _a.requiredKeys, serializedTransaction = _a.serializedTransaction, serializedContextFreeData = _a.serializedContextFreeData;\n return __awaiter(this, void 0, void 0, function () {\n var digest, signatures, requiredKeys_1, requiredKeys_1_1, key, publicKey, ellipticPrivateKey, privateKey, signature;\n var e_2, _b;\n return __generator(this, function (_c) {\n digest = digestFromSerializedData(chainId, serializedTransaction, serializedContextFreeData, defaultEc);\n signatures = [];\n try {\n for (requiredKeys_1 = __values(requiredKeys), requiredKeys_1_1 = requiredKeys_1.next(); !requiredKeys_1_1.done; requiredKeys_1_1 = requiredKeys_1.next()) {\n key = requiredKeys_1_1.value;\n publicKey = eosjs_key_conversions_1.PublicKey.fromString(key);\n ellipticPrivateKey = this.keys.get(eosjs_numeric_1.convertLegacyPublicKey(key));\n privateKey = eosjs_key_conversions_1.PrivateKey.fromElliptic(ellipticPrivateKey, publicKey.getType());\n signature = privateKey.sign(digest, false);\n signatures.push(signature.toString());\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (requiredKeys_1_1 && !requiredKeys_1_1.done && (_b = requiredKeys_1.return)) _b.call(requiredKeys_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return [2 /*return*/, { signatures: signatures, serializedTransaction: serializedTransaction, serializedContextFreeData: serializedContextFreeData }];\n });\n });\n };\n return JsSignatureProvider;\n}());\nexports.JsSignatureProvider = JsSignatureProvider;\n//# sourceMappingURL=eosjs-jssig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha256 = exports.generateKeyPair = exports.constructElliptic = exports.Signature = exports.PublicKey = exports.PrivateKey = void 0;\nvar elliptic_1 = require(\"elliptic\");\nvar hash = require(\"hash.js\");\nvar eosjs_numeric_1 = require(\"./eosjs-numeric\");\nvar PublicKey_1 = require(\"./PublicKey\");\nvar PrivateKey_1 = require(\"./PrivateKey\");\nvar PrivateKey_2 = require(\"./PrivateKey\");\nObject.defineProperty(exports, \"PrivateKey\", { enumerable: true, get: function () { return PrivateKey_2.PrivateKey; } });\nvar PublicKey_2 = require(\"./PublicKey\");\nObject.defineProperty(exports, \"PublicKey\", { enumerable: true, get: function () { return PublicKey_2.PublicKey; } });\nvar Signature_1 = require(\"./Signature\");\nObject.defineProperty(exports, \"Signature\", { enumerable: true, get: function () { return Signature_1.Signature; } });\n/** Construct the elliptic curve object based on key type */\nvar constructElliptic = function (type) {\n if (type === eosjs_numeric_1.KeyType.k1) {\n return new elliptic_1.ec('secp256k1');\n }\n return new elliptic_1.ec('p256');\n};\nexports.constructElliptic = constructElliptic;\nvar generateKeyPair = function (type, options) {\n if (options === void 0) { options = {}; }\n if (!options.secureEnv) {\n throw new Error('Key generation is completely INSECURE in production environments in the browser. ' +\n 'If you are absolutely certain this does NOT describe your environment, set `secureEnv` in your ' +\n 'options to `true`. If this does describe your environment and you set `secureEnv` to `true`, ' +\n 'YOU DO SO AT YOUR OWN RISK AND THE RISK OF YOUR USERS.');\n }\n var ec;\n if (type === eosjs_numeric_1.KeyType.k1) {\n ec = new elliptic_1.ec('secp256k1');\n }\n else {\n ec = new elliptic_1.ec('p256');\n }\n var ellipticKeyPair = ec.genKeyPair(options.ecOptions);\n var publicKey = PublicKey_1.PublicKey.fromElliptic(ellipticKeyPair, type, ec);\n var privateKey = PrivateKey_1.PrivateKey.fromElliptic(ellipticKeyPair, type, ec);\n return { publicKey: publicKey, privateKey: privateKey };\n};\nexports.generateKeyPair = generateKeyPair;\nvar sha256 = function (data) {\n return hash.sha256().update(data).digest();\n};\nexports.sha256 = sha256;\n//# sourceMappingURL=eosjs-key-conversions.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.signatureToString = exports.stringToSignature = exports.privateKeyToString = exports.privateKeyToLegacyString = exports.stringToPrivateKey = exports.convertLegacyPublicKeys = exports.convertLegacyPublicKey = exports.publicKeyToString = exports.publicKeyToLegacyString = exports.stringToPublicKey = exports.signatureDataSize = exports.privateKeyDataSize = exports.publicKeyDataSize = exports.KeyType = exports.base64ToBinary = exports.binaryToBase58 = exports.base58ToBinary = exports.signedBinaryToDecimal = exports.binaryToDecimal = exports.signedDecimalToBinary = exports.decimalToBinary = exports.negate = exports.isNegative = void 0;\n/**\n * @module Numeric\n */\nvar hash_js_1 = require(\"hash.js\");\n// copyright defined in eosjs/LICENSE.txt\nvar ripemd160 = require('./ripemd').RIPEMD160.hash;\nvar base58Chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nvar base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar create_base58_map = function () {\n var base58M = Array(256).fill(-1);\n for (var i = 0; i < base58Chars.length; ++i) {\n base58M[base58Chars.charCodeAt(i)] = i;\n }\n return base58M;\n};\nvar base58Map = create_base58_map();\nvar create_base64_map = function () {\n var base64M = Array(256).fill(-1);\n for (var i = 0; i < base64Chars.length; ++i) {\n base64M[base64Chars.charCodeAt(i)] = i;\n }\n base64M['='.charCodeAt(0)] = 0;\n return base64M;\n};\nvar base64Map = create_base64_map();\n/** Is `bignum` a negative number? */\nvar isNegative = function (bignum) {\n return (bignum[bignum.length - 1] & 0x80) !== 0;\n};\nexports.isNegative = isNegative;\n/** Negate `bignum` */\nvar negate = function (bignum) {\n var carry = 1;\n for (var i = 0; i < bignum.length; ++i) {\n var x = (~bignum[i] & 0xff) + carry;\n bignum[i] = x;\n carry = x >> 8;\n }\n};\nexports.negate = negate;\n/**\n * Convert an unsigned decimal number in `s` to a bignum\n *\n * @param size bignum size (bytes)\n */\nvar decimalToBinary = function (size, s) {\n var result = new Uint8Array(size);\n for (var i = 0; i < s.length; ++i) {\n var srcDigit = s.charCodeAt(i);\n if (srcDigit < '0'.charCodeAt(0) || srcDigit > '9'.charCodeAt(0)) {\n throw new Error('invalid number');\n }\n var carry = srcDigit - '0'.charCodeAt(0);\n for (var j = 0; j < size; ++j) {\n var x = result[j] * 10 + carry;\n result[j] = x;\n carry = x >> 8;\n }\n if (carry) {\n throw new Error('number is out of range');\n }\n }\n return result;\n};\nexports.decimalToBinary = decimalToBinary;\n/**\n * Convert a signed decimal number in `s` to a bignum\n *\n * @param size bignum size (bytes)\n */\nvar signedDecimalToBinary = function (size, s) {\n var negative = s[0] === '-';\n if (negative) {\n s = s.substr(1);\n }\n var result = exports.decimalToBinary(size, s);\n if (negative) {\n exports.negate(result);\n if (!exports.isNegative(result)) {\n throw new Error('number is out of range');\n }\n }\n else if (exports.isNegative(result)) {\n throw new Error('number is out of range');\n }\n return result;\n};\nexports.signedDecimalToBinary = signedDecimalToBinary;\n/**\n * Convert `bignum` to an unsigned decimal number\n *\n * @param minDigits 0-pad result to this many digits\n */\nvar binaryToDecimal = function (bignum, minDigits) {\n if (minDigits === void 0) { minDigits = 1; }\n var result = Array(minDigits).fill('0'.charCodeAt(0));\n for (var i = bignum.length - 1; i >= 0; --i) {\n var carry = bignum[i];\n for (var j = 0; j < result.length; ++j) {\n var x = ((result[j] - '0'.charCodeAt(0)) << 8) + carry;\n result[j] = '0'.charCodeAt(0) + x % 10;\n carry = (x / 10) | 0;\n }\n while (carry) {\n result.push('0'.charCodeAt(0) + carry % 10);\n carry = (carry / 10) | 0;\n }\n }\n result.reverse();\n return String.fromCharCode.apply(String, __spreadArray([], __read(result)));\n};\nexports.binaryToDecimal = binaryToDecimal;\n/**\n * Convert `bignum` to a signed decimal number\n *\n * @param minDigits 0-pad result to this many digits\n */\nvar signedBinaryToDecimal = function (bignum, minDigits) {\n if (minDigits === void 0) { minDigits = 1; }\n if (exports.isNegative(bignum)) {\n var x = bignum.slice();\n exports.negate(x);\n return '-' + exports.binaryToDecimal(x, minDigits);\n }\n return exports.binaryToDecimal(bignum, minDigits);\n};\nexports.signedBinaryToDecimal = signedBinaryToDecimal;\nvar base58ToBinaryVarSize = function (s) {\n var e_1, _a;\n var result = [];\n for (var i = 0; i < s.length; ++i) {\n var carry = base58Map[s.charCodeAt(i)];\n if (carry < 0) {\n throw new Error('invalid base-58 value');\n }\n for (var j = 0; j < result.length; ++j) {\n var x = result[j] * 58 + carry;\n result[j] = x & 0xff;\n carry = x >> 8;\n }\n if (carry) {\n result.push(carry);\n }\n }\n try {\n for (var s_1 = __values(s), s_1_1 = s_1.next(); !s_1_1.done; s_1_1 = s_1.next()) {\n var ch = s_1_1.value;\n if (ch === '1') {\n result.push(0);\n }\n else {\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (s_1_1 && !s_1_1.done && (_a = s_1.return)) _a.call(s_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n result.reverse();\n return new Uint8Array(result);\n};\n/**\n * Convert an unsigned base-58 number in `s` to a bignum\n *\n * @param size bignum size (bytes)\n */\nvar base58ToBinary = function (size, s) {\n if (!size) {\n return base58ToBinaryVarSize(s);\n }\n var result = new Uint8Array(size);\n for (var i = 0; i < s.length; ++i) {\n var carry = base58Map[s.charCodeAt(i)];\n if (carry < 0) {\n throw new Error('invalid base-58 value');\n }\n for (var j = 0; j < size; ++j) {\n var x = result[j] * 58 + carry;\n result[j] = x;\n carry = x >> 8;\n }\n if (carry) {\n throw new Error('base-58 value is out of range');\n }\n }\n result.reverse();\n return result;\n};\nexports.base58ToBinary = base58ToBinary;\n/**\n * Convert `bignum` to a base-58 number\n *\n * @param minDigits 0-pad result to this many digits\n */\nvar binaryToBase58 = function (bignum, minDigits) {\n var e_2, _a, e_3, _b;\n if (minDigits === void 0) { minDigits = 1; }\n var result = [];\n try {\n for (var bignum_1 = __values(bignum), bignum_1_1 = bignum_1.next(); !bignum_1_1.done; bignum_1_1 = bignum_1.next()) {\n var byte = bignum_1_1.value;\n var carry = byte;\n for (var j = 0; j < result.length; ++j) {\n var x = (base58Map[result[j]] << 8) + carry;\n result[j] = base58Chars.charCodeAt(x % 58);\n carry = (x / 58) | 0;\n }\n while (carry) {\n result.push(base58Chars.charCodeAt(carry % 58));\n carry = (carry / 58) | 0;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (bignum_1_1 && !bignum_1_1.done && (_a = bignum_1.return)) _a.call(bignum_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n try {\n for (var bignum_2 = __values(bignum), bignum_2_1 = bignum_2.next(); !bignum_2_1.done; bignum_2_1 = bignum_2.next()) {\n var byte = bignum_2_1.value;\n if (byte) {\n break;\n }\n else {\n result.push('1'.charCodeAt(0));\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (bignum_2_1 && !bignum_2_1.done && (_b = bignum_2.return)) _b.call(bignum_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n result.reverse();\n return String.fromCharCode.apply(String, __spreadArray([], __read(result)));\n};\nexports.binaryToBase58 = binaryToBase58;\n/** Convert an unsigned base-64 number in `s` to a bignum */\nvar base64ToBinary = function (s) {\n var len = s.length;\n if ((len & 3) === 1 && s[len - 1] === '=') {\n len -= 1;\n } // fc appends an extra '='\n if ((len & 3) !== 0) {\n throw new Error('base-64 value is not padded correctly');\n }\n var groups = len >> 2;\n var bytes = groups * 3;\n if (len > 0 && s[len - 1] === '=') {\n if (s[len - 2] === '=') {\n bytes -= 2;\n }\n else {\n bytes -= 1;\n }\n }\n var result = new Uint8Array(bytes);\n for (var group = 0; group < groups; ++group) {\n var digit0 = base64Map[s.charCodeAt(group * 4 + 0)];\n var digit1 = base64Map[s.charCodeAt(group * 4 + 1)];\n var digit2 = base64Map[s.charCodeAt(group * 4 + 2)];\n var digit3 = base64Map[s.charCodeAt(group * 4 + 3)];\n result[group * 3 + 0] = (digit0 << 2) | (digit1 >> 4);\n if (group * 3 + 1 < bytes) {\n result[group * 3 + 1] = ((digit1 & 15) << 4) | (digit2 >> 2);\n }\n if (group * 3 + 2 < bytes) {\n result[group * 3 + 2] = ((digit2 & 3) << 6) | digit3;\n }\n }\n return result;\n};\nexports.base64ToBinary = base64ToBinary;\n/** Key types this library supports */\nvar KeyType;\n(function (KeyType) {\n KeyType[KeyType[\"k1\"] = 0] = \"k1\";\n KeyType[KeyType[\"r1\"] = 1] = \"r1\";\n KeyType[KeyType[\"wa\"] = 2] = \"wa\";\n})(KeyType = exports.KeyType || (exports.KeyType = {}));\n/** Public key data size, excluding type field */\nexports.publicKeyDataSize = 33;\n/** Private key data size, excluding type field */\nexports.privateKeyDataSize = 32;\n/** Signature data size, excluding type field */\nexports.signatureDataSize = 65;\nvar digestSuffixRipemd160 = function (data, suffix) {\n var d = new Uint8Array(data.length + suffix.length);\n for (var i = 0; i < data.length; ++i) {\n d[i] = data[i];\n }\n for (var i = 0; i < suffix.length; ++i) {\n d[data.length + i] = suffix.charCodeAt(i);\n }\n return ripemd160(d);\n};\nvar stringToKey = function (s, type, size, suffix) {\n var whole = exports.base58ToBinary(size ? size + 4 : 0, s);\n var result = { type: type, data: new Uint8Array(whole.buffer, 0, whole.length - 4) };\n var digest = new Uint8Array(digestSuffixRipemd160(result.data, suffix));\n if (digest[0] !== whole[whole.length - 4] || digest[1] !== whole[whole.length - 3]\n || digest[2] !== whole[whole.length - 2] || digest[3] !== whole[whole.length - 1]) {\n throw new Error('checksum doesn\\'t match');\n }\n return result;\n};\nvar keyToString = function (key, suffix, prefix) {\n var digest = new Uint8Array(digestSuffixRipemd160(key.data, suffix));\n var whole = new Uint8Array(key.data.length + 4);\n for (var i = 0; i < key.data.length; ++i) {\n whole[i] = key.data[i];\n }\n for (var i = 0; i < 4; ++i) {\n whole[i + key.data.length] = digest[i];\n }\n return prefix + exports.binaryToBase58(whole);\n};\n/** Convert key in `s` to binary form */\nvar stringToPublicKey = function (s) {\n if (typeof s !== 'string') {\n throw new Error('expected string containing public key');\n }\n if (s.substr(0, 3) === 'EOS') {\n var whole = exports.base58ToBinary(exports.publicKeyDataSize + 4, s.substr(3));\n var key = { type: KeyType.k1, data: new Uint8Array(exports.publicKeyDataSize) };\n for (var i = 0; i < exports.publicKeyDataSize; ++i) {\n key.data[i] = whole[i];\n }\n var digest = new Uint8Array(ripemd160(key.data));\n if (digest[0] !== whole[exports.publicKeyDataSize] || digest[1] !== whole[34]\n || digest[2] !== whole[35] || digest[3] !== whole[36]) {\n throw new Error('checksum doesn\\'t match');\n }\n return key;\n }\n else if (s.substr(0, 7) === 'PUB_K1_') {\n return stringToKey(s.substr(7), KeyType.k1, exports.publicKeyDataSize, 'K1');\n }\n else if (s.substr(0, 7) === 'PUB_R1_') {\n return stringToKey(s.substr(7), KeyType.r1, exports.publicKeyDataSize, 'R1');\n }\n else if (s.substr(0, 7) === 'PUB_WA_') {\n return stringToKey(s.substr(7), KeyType.wa, 0, 'WA');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.stringToPublicKey = stringToPublicKey;\n/** Convert public `key` to legacy string (base-58) form */\nvar publicKeyToLegacyString = function (key) {\n if (key.type === KeyType.k1 && key.data.length === exports.publicKeyDataSize) {\n return keyToString(key, '', 'EOS');\n }\n else if (key.type === KeyType.r1 || key.type === KeyType.wa) {\n throw new Error('Key format not supported in legacy conversion');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.publicKeyToLegacyString = publicKeyToLegacyString;\n/** Convert `key` to string (base-58) form */\nvar publicKeyToString = function (key) {\n if (key.type === KeyType.k1 && key.data.length === exports.publicKeyDataSize) {\n return keyToString(key, 'K1', 'PUB_K1_');\n }\n else if (key.type === KeyType.r1 && key.data.length === exports.publicKeyDataSize) {\n return keyToString(key, 'R1', 'PUB_R1_');\n }\n else if (key.type === KeyType.wa) {\n return keyToString(key, 'WA', 'PUB_WA_');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.publicKeyToString = publicKeyToString;\n/** If a key is in the legacy format (`EOS` prefix), then convert it to the new format (`PUB_K1_`).\n * Leaves other formats untouched\n */\nvar convertLegacyPublicKey = function (s) {\n if (s.substr(0, 3) === 'EOS') {\n return exports.publicKeyToString(exports.stringToPublicKey(s));\n }\n return s;\n};\nexports.convertLegacyPublicKey = convertLegacyPublicKey;\n/** If a key is in the legacy format (`EOS` prefix), then convert it to the new format (`PUB_K1_`).\n * Leaves other formats untouched\n */\nvar convertLegacyPublicKeys = function (keys) {\n return keys.map(exports.convertLegacyPublicKey);\n};\nexports.convertLegacyPublicKeys = convertLegacyPublicKeys;\n/** Convert key in `s` to binary form */\nvar stringToPrivateKey = function (s) {\n if (typeof s !== 'string') {\n throw new Error('expected string containing private key');\n }\n if (s.substr(0, 7) === 'PVT_R1_') {\n return stringToKey(s.substr(7), KeyType.r1, exports.privateKeyDataSize, 'R1');\n }\n else if (s.substr(0, 7) === 'PVT_K1_') {\n return stringToKey(s.substr(7), KeyType.k1, exports.privateKeyDataSize, 'K1');\n }\n else {\n // todo: Verify checksum: sha256(sha256(key.data)).\n // Not critical since a bad key will fail to produce a\n // valid signature anyway.\n var whole = exports.base58ToBinary(exports.privateKeyDataSize + 5, s);\n var key = { type: KeyType.k1, data: new Uint8Array(exports.privateKeyDataSize) };\n if (whole[0] !== 0x80) {\n throw new Error('unrecognized private key type');\n }\n for (var i = 0; i < exports.privateKeyDataSize; ++i) {\n key.data[i] = whole[i + 1];\n }\n return key;\n }\n};\nexports.stringToPrivateKey = stringToPrivateKey;\n/** Convert private `key` to legacy string (base-58) form */\nvar privateKeyToLegacyString = function (key) {\n if (key.type === KeyType.k1 && key.data.length === exports.privateKeyDataSize) {\n var whole_1 = [];\n whole_1.push(128);\n key.data.forEach(function (byte) { return whole_1.push(byte); });\n var digest = new Uint8Array(hash_js_1.sha256().update(hash_js_1.sha256().update(whole_1).digest()).digest());\n var result = new Uint8Array(exports.privateKeyDataSize + 5);\n for (var i = 0; i < whole_1.length; i++) {\n result[i] = whole_1[i];\n }\n for (var i = 0; i < 4; i++) {\n result[i + whole_1.length] = digest[i];\n }\n return exports.binaryToBase58(result);\n }\n else if (key.type === KeyType.r1 || key.type === KeyType.wa) {\n throw new Error('Key format not supported in legacy conversion');\n }\n else {\n throw new Error('unrecognized public key format');\n }\n};\nexports.privateKeyToLegacyString = privateKeyToLegacyString;\n/** Convert `key` to string (base-58) form */\nvar privateKeyToString = function (key) {\n if (key.type === KeyType.r1) {\n return keyToString(key, 'R1', 'PVT_R1_');\n }\n else if (key.type === KeyType.k1) {\n return keyToString(key, 'K1', 'PVT_K1_');\n }\n else {\n throw new Error('unrecognized private key format');\n }\n};\nexports.privateKeyToString = privateKeyToString;\n/** Convert key in `s` to binary form */\nvar stringToSignature = function (s) {\n if (typeof s !== 'string') {\n throw new Error('expected string containing signature');\n }\n if (s.substr(0, 7) === 'SIG_K1_') {\n return stringToKey(s.substr(7), KeyType.k1, exports.signatureDataSize, 'K1');\n }\n else if (s.substr(0, 7) === 'SIG_R1_') {\n return stringToKey(s.substr(7), KeyType.r1, exports.signatureDataSize, 'R1');\n }\n else if (s.substr(0, 7) === 'SIG_WA_') {\n return stringToKey(s.substr(7), KeyType.wa, 0, 'WA');\n }\n else {\n throw new Error('unrecognized signature format');\n }\n};\nexports.stringToSignature = stringToSignature;\n/** Convert `signature` to string (base-58) form */\nvar signatureToString = function (signature) {\n if (signature.type === KeyType.k1) {\n return keyToString(signature, 'K1', 'SIG_K1_');\n }\n else if (signature.type === KeyType.r1) {\n return keyToString(signature, 'R1', 'SIG_R1_');\n }\n else if (signature.type === KeyType.wa) {\n return keyToString(signature, 'WA', 'SIG_WA_');\n }\n else {\n throw new Error('unrecognized signature format');\n }\n};\nexports.signatureToString = signatureToString;\n//# sourceMappingURL=eosjs-numeric.js.map","\"use strict\";\n/**\n * @module RPC-API-Methods\n * copyright defined in eosjs/LICENSE.txt\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n;\n//# sourceMappingURL=eosjs-rpc-interfaces.js.map","\"use strict\";\n/**\n * @module RPC-Error\n */\n// copyright defined in eosjs/LICENSE.txt\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RpcError = void 0;\n/** Holds detailed error information */\nvar RpcError = /** @class */ (function (_super) {\n __extends(RpcError, _super);\n function RpcError(json) {\n var _this = this;\n if (json.error && json.error.details && json.error.details.length && json.error.details[0].message) {\n _this = _super.call(this, json.error.details[0].message) || this;\n _this.details = json.error.details;\n }\n else if (json.processed && json.processed.except && json.processed.except.message) {\n _this = _super.call(this, json.processed.except.message) || this;\n _this.details = json.processed.except;\n }\n else if (json.result && json.result.except && json.result.except.message) {\n _this = _super.call(this, json.result.except.message) || this;\n _this.details = json.result.except;\n }\n else {\n _this = _super.call(this, json.message) || this;\n }\n Object.setPrototypeOf(_this, RpcError.prototype);\n _this.json = json;\n return _this;\n }\n return RpcError;\n}(Error));\nexports.RpcError = RpcError;\n//# sourceMappingURL=eosjs-rpcerror.js.map","\"use strict\";\n/**\n * @module Serialize\n */\n// copyright defined in eosjs/LICENSE.txt\n/* eslint-disable max-classes-per-file */\n/* eslint-disable jsdoc/check-indentation */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializeQuery = exports.deserializeAnyArray = exports.serializeAnyArray = exports.deserializeAnyObject = exports.serializeAnyObject = exports.deserializeAnyvarShort = exports.deserializeAnyvar = exports.serializeAnyvar = exports.deserializeAction = exports.deserializeActionData = exports.serializeAction = exports.serializeActionData = exports.transactionHeader = exports.getTypesFromAbi = exports.getType = exports.createTransactionTypes = exports.createTransactionExtensionTypes = exports.createAbiTypes = exports.createInitialTypes = exports.hexToUint8Array = exports.arrayToHex = exports.symbolToString = exports.stringToSymbol = exports.blockTimestampToDate = exports.dateToBlockTimestamp = exports.timePointSecToDate = exports.dateToTimePointSec = exports.timePointToDate = exports.dateToTimePoint = exports.supportedAbiVersion = exports.SerialBuffer = exports.SerializerState = void 0;\nvar numeric = require(\"./eosjs-numeric\");\n/** State for serialize() and deserialize() */\nvar SerializerState = /** @class */ (function () {\n function SerializerState(options) {\n if (options === void 0) { options = {}; }\n /** Have any binary extensions been skipped? */\n this.skippedBinaryExtension = false;\n this.options = options;\n }\n return SerializerState;\n}());\nexports.SerializerState = SerializerState;\n/** Serialize and deserialize data */\nvar SerialBuffer = /** @class */ (function () {\n /**\n * @param __namedParameters\n * `array`: `null` if serializing, or binary data to deserialize\n * `textEncoder`: `TextEncoder` instance to use. Pass in `null` if running in a browser\n * `textDecoder`: `TextDecider` instance to use. Pass in `null` if running in a browser\n */\n function SerialBuffer(_a) {\n var _b = _a === void 0 ? {} : _a, textEncoder = _b.textEncoder, textDecoder = _b.textDecoder, array = _b.array;\n /** Current position while reading (deserializing) */\n this.readPos = 0;\n this.array = array || new Uint8Array(1024);\n this.length = array ? array.length : 0;\n this.textEncoder = textEncoder || new TextEncoder();\n this.textDecoder = textDecoder || new TextDecoder('utf-8', { fatal: true });\n }\n /** Resize `array` if needed to have at least `size` bytes free */\n SerialBuffer.prototype.reserve = function (size) {\n if (this.length + size <= this.array.length) {\n return;\n }\n var l = this.array.length;\n while (this.length + size > l) {\n l = Math.ceil(l * 1.5);\n }\n var newArray = new Uint8Array(l);\n newArray.set(this.array);\n this.array = newArray;\n };\n /** Is there data available to read? */\n SerialBuffer.prototype.haveReadData = function () {\n return this.readPos < this.length;\n };\n /** Restart reading from the beginning */\n SerialBuffer.prototype.restartRead = function () {\n this.readPos = 0;\n };\n /** Return data with excess storage trimmed away */\n SerialBuffer.prototype.asUint8Array = function () {\n return new Uint8Array(this.array.buffer, this.array.byteOffset, this.length);\n };\n /** Append bytes */\n SerialBuffer.prototype.pushArray = function (v) {\n this.reserve(v.length);\n this.array.set(v, this.length);\n this.length += v.length;\n };\n /** Append bytes */\n SerialBuffer.prototype.push = function () {\n var v = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n v[_i] = arguments[_i];\n }\n this.pushArray(v);\n };\n /** Get a single byte */\n SerialBuffer.prototype.get = function () {\n if (this.readPos < this.length) {\n return this.array[this.readPos++];\n }\n throw new Error('Read past end of buffer');\n };\n /** Append bytes in `v`. Throws if `len` doesn't match `v.length` */\n SerialBuffer.prototype.pushUint8ArrayChecked = function (v, len) {\n if (v.length !== len) {\n throw new Error('Binary data has incorrect size');\n }\n this.pushArray(v);\n };\n /** Get `len` bytes */\n SerialBuffer.prototype.getUint8Array = function (len) {\n if (this.readPos + len > this.length) {\n throw new Error('Read past end of buffer');\n }\n var result = new Uint8Array(this.array.buffer, this.array.byteOffset + this.readPos, len);\n this.readPos += len;\n return result;\n };\n /** Skip `len` bytes */\n SerialBuffer.prototype.skip = function (len) {\n if (this.readPos + len > this.length) {\n throw new Error('Read past end of buffer');\n }\n this.readPos += len;\n };\n /** Append a `uint16` */\n SerialBuffer.prototype.pushUint16 = function (v) {\n this.push((v >> 0) & 0xff, (v >> 8) & 0xff);\n };\n /** Get a `uint16` */\n SerialBuffer.prototype.getUint16 = function () {\n var v = 0;\n v |= this.get() << 0;\n v |= this.get() << 8;\n return v;\n };\n /** Append a `uint32` */\n SerialBuffer.prototype.pushUint32 = function (v) {\n this.push((v >> 0) & 0xff, (v >> 8) & 0xff, (v >> 16) & 0xff, (v >> 24) & 0xff);\n };\n /** Get a `uint32` */\n SerialBuffer.prototype.getUint32 = function () {\n var v = 0;\n v |= this.get() << 0;\n v |= this.get() << 8;\n v |= this.get() << 16;\n v |= this.get() << 24;\n return v >>> 0;\n };\n /** Append a `uint64`. *Caution*: `number` only has 53 bits of precision */\n SerialBuffer.prototype.pushNumberAsUint64 = function (v) {\n this.pushUint32(v >>> 0);\n this.pushUint32(Math.floor(v / 4294967296) >>> 0);\n };\n /**\n * Get a `uint64` as a `number`. *Caution*: `number` only has 53 bits of precision; some values will change.\n * `numeric.binaryToDecimal(serialBuffer.getUint8Array(8))` recommended instead\n */\n SerialBuffer.prototype.getUint64AsNumber = function () {\n var low = this.getUint32();\n var high = this.getUint32();\n return (high >>> 0) * 4294967296 + (low >>> 0);\n };\n /** Append a `varuint32` */\n SerialBuffer.prototype.pushVaruint32 = function (v) {\n while (true) {\n if (v >>> 7) {\n this.push(0x80 | (v & 0x7f));\n v = v >>> 7;\n }\n else {\n this.push(v);\n break;\n }\n }\n };\n /** Get a `varuint32` */\n SerialBuffer.prototype.getVaruint32 = function () {\n var v = 0;\n var bit = 0;\n while (true) {\n var b = this.get();\n v |= (b & 0x7f) << bit;\n bit += 7;\n if (!(b & 0x80)) {\n break;\n }\n }\n return v >>> 0;\n };\n /** Append a `varint32` */\n SerialBuffer.prototype.pushVarint32 = function (v) {\n this.pushVaruint32((v << 1) ^ (v >> 31));\n };\n /** Get a `varint32` */\n SerialBuffer.prototype.getVarint32 = function () {\n var v = this.getVaruint32();\n if (v & 1) {\n return ((~v) >> 1) | 2147483648;\n }\n else {\n return v >>> 1;\n }\n };\n /** Append a `float32` */\n SerialBuffer.prototype.pushFloat32 = function (v) {\n this.pushArray(new Uint8Array((new Float32Array([v])).buffer));\n };\n /** Get a `float32` */\n SerialBuffer.prototype.getFloat32 = function () {\n return new Float32Array(this.getUint8Array(4).slice().buffer)[0];\n };\n /** Append a `float64` */\n SerialBuffer.prototype.pushFloat64 = function (v) {\n this.pushArray(new Uint8Array((new Float64Array([v])).buffer));\n };\n /** Get a `float64` */\n SerialBuffer.prototype.getFloat64 = function () {\n return new Float64Array(this.getUint8Array(8).slice().buffer)[0];\n };\n /** Append a `name` */\n SerialBuffer.prototype.pushName = function (s) {\n if (typeof s !== 'string') {\n throw new Error('Expected string containing name');\n }\n var regex = new RegExp(/^[.1-5a-z]{0,12}[.1-5a-j]?$/);\n if (!regex.test(s)) {\n throw new Error('Name should be less than 13 characters, or less than 14 if last character is between 1-5 or a-j, and only contain the following symbols .12345abcdefghijklmnopqrstuvwxyz'); // eslint-disable-line\n }\n var charToSymbol = function (c) {\n if (c >= 'a'.charCodeAt(0) && c <= 'z'.charCodeAt(0)) {\n return (c - 'a'.charCodeAt(0)) + 6;\n }\n if (c >= '1'.charCodeAt(0) && c <= '5'.charCodeAt(0)) {\n return (c - '1'.charCodeAt(0)) + 1;\n }\n return 0;\n };\n var a = new Uint8Array(8);\n var bit = 63;\n for (var i = 0; i < s.length; ++i) {\n var c = charToSymbol(s.charCodeAt(i));\n if (bit < 5) {\n c = c << 1;\n }\n for (var j = 4; j >= 0; --j) {\n if (bit >= 0) {\n a[Math.floor(bit / 8)] |= ((c >> j) & 1) << (bit % 8);\n --bit;\n }\n }\n }\n this.pushArray(a);\n };\n /** Get a `name` */\n SerialBuffer.prototype.getName = function () {\n var a = this.getUint8Array(8);\n var result = '';\n for (var bit = 63; bit >= 0;) {\n var c = 0;\n for (var i = 0; i < 5; ++i) {\n if (bit >= 0) {\n c = (c << 1) | ((a[Math.floor(bit / 8)] >> (bit % 8)) & 1);\n --bit;\n }\n }\n if (c >= 6) {\n result += String.fromCharCode(c + 'a'.charCodeAt(0) - 6);\n }\n else if (c >= 1) {\n result += String.fromCharCode(c + '1'.charCodeAt(0) - 1);\n }\n else {\n result += '.';\n }\n }\n while (result.endsWith('.')) {\n result = result.substr(0, result.length - 1);\n }\n return result;\n };\n /** Append length-prefixed binary data */\n SerialBuffer.prototype.pushBytes = function (v) {\n this.pushVaruint32(v.length);\n this.pushArray(v);\n };\n /** Get length-prefixed binary data */\n SerialBuffer.prototype.getBytes = function () {\n return this.getUint8Array(this.getVaruint32());\n };\n /** Append a string */\n SerialBuffer.prototype.pushString = function (v) {\n this.pushBytes(this.textEncoder.encode(v));\n };\n /** Get a string */\n SerialBuffer.prototype.getString = function () {\n return this.textDecoder.decode(this.getBytes());\n };\n /** Append a `symbol_code`. Unlike `symbol`, `symbol_code` doesn't include a precision. */\n SerialBuffer.prototype.pushSymbolCode = function (name) {\n if (typeof name !== 'string') {\n throw new Error('Expected string containing symbol_code');\n }\n var a = [];\n a.push.apply(a, __spreadArray([], __read(this.textEncoder.encode(name))));\n while (a.length < 8) {\n a.push(0);\n }\n this.pushArray(a.slice(0, 8));\n };\n /** Get a `symbol_code`. Unlike `symbol`, `symbol_code` doesn't include a precision. */\n SerialBuffer.prototype.getSymbolCode = function () {\n var a = this.getUint8Array(8);\n var len;\n for (len = 0; len < a.length; ++len) {\n if (!a[len]) {\n break;\n }\n }\n var name = this.textDecoder.decode(new Uint8Array(a.buffer, a.byteOffset, len));\n return name;\n };\n /** Append a `symbol` */\n SerialBuffer.prototype.pushSymbol = function (_a) {\n var name = _a.name, precision = _a.precision;\n if (!/^[A-Z]{1,7}$/.test(name)) {\n throw new Error('Expected symbol to be A-Z and between one and seven characters');\n }\n var a = [precision & 0xff];\n a.push.apply(a, __spreadArray([], __read(this.textEncoder.encode(name))));\n while (a.length < 8) {\n a.push(0);\n }\n this.pushArray(a.slice(0, 8));\n };\n /** Get a `symbol` */\n SerialBuffer.prototype.getSymbol = function () {\n var precision = this.get();\n var a = this.getUint8Array(7);\n var len;\n for (len = 0; len < a.length; ++len) {\n if (!a[len]) {\n break;\n }\n }\n var name = this.textDecoder.decode(new Uint8Array(a.buffer, a.byteOffset, len));\n return { name: name, precision: precision };\n };\n /** Append an asset */\n SerialBuffer.prototype.pushAsset = function (s) {\n if (typeof s !== 'string') {\n throw new Error('Expected string containing asset');\n }\n s = s.trim();\n var pos = 0;\n var amount = '';\n var precision = 0;\n if (s[pos] === '-') {\n amount += '-';\n ++pos;\n }\n var foundDigit = false;\n while (pos < s.length && s.charCodeAt(pos) >= '0'.charCodeAt(0) && s.charCodeAt(pos) <= '9'.charCodeAt(0)) {\n foundDigit = true;\n amount += s[pos];\n ++pos;\n }\n if (!foundDigit) {\n throw new Error('Asset must begin with a number');\n }\n if (s[pos] === '.') {\n ++pos;\n while (pos < s.length && s.charCodeAt(pos) >= '0'.charCodeAt(0) && s.charCodeAt(pos) <= '9'.charCodeAt(0)) {\n amount += s[pos];\n ++precision;\n ++pos;\n }\n }\n var name = s.substr(pos).trim();\n this.pushArray(numeric.signedDecimalToBinary(8, amount));\n this.pushSymbol({ name: name, precision: precision });\n };\n /** Get an asset */\n SerialBuffer.prototype.getAsset = function () {\n var amount = this.getUint8Array(8);\n var _a = this.getSymbol(), name = _a.name, precision = _a.precision;\n var s = numeric.signedBinaryToDecimal(amount, precision + 1);\n if (precision) {\n s = s.substr(0, s.length - precision) + '.' + s.substr(s.length - precision);\n }\n return s + ' ' + name;\n };\n /** Append a public key */\n SerialBuffer.prototype.pushPublicKey = function (s) {\n var key = numeric.stringToPublicKey(s);\n this.push(key.type);\n this.pushArray(key.data);\n };\n /** Get a public key */\n SerialBuffer.prototype.getPublicKey = function () {\n var type = this.get();\n var data;\n if (type === numeric.KeyType.wa) {\n var begin = this.readPos;\n this.skip(34);\n this.skip(this.getVaruint32());\n data = new Uint8Array(this.array.buffer, this.array.byteOffset + begin, this.readPos - begin);\n }\n else {\n data = this.getUint8Array(numeric.publicKeyDataSize);\n }\n return numeric.publicKeyToString({ type: type, data: data });\n };\n /** Append a private key */\n SerialBuffer.prototype.pushPrivateKey = function (s) {\n var key = numeric.stringToPrivateKey(s);\n this.push(key.type);\n this.pushArray(key.data);\n };\n /** Get a private key */\n SerialBuffer.prototype.getPrivateKey = function () {\n var type = this.get();\n var data = this.getUint8Array(numeric.privateKeyDataSize);\n return numeric.privateKeyToString({ type: type, data: data });\n };\n /** Append a signature */\n SerialBuffer.prototype.pushSignature = function (s) {\n var key = numeric.stringToSignature(s);\n this.push(key.type);\n this.pushArray(key.data);\n };\n /** Get a signature */\n SerialBuffer.prototype.getSignature = function () {\n var type = this.get();\n var data;\n if (type === numeric.KeyType.wa) {\n var begin = this.readPos;\n this.skip(65);\n this.skip(this.getVaruint32());\n this.skip(this.getVaruint32());\n data = new Uint8Array(this.array.buffer, this.array.byteOffset + begin, this.readPos - begin);\n }\n else {\n data = this.getUint8Array(numeric.signatureDataSize);\n }\n return numeric.signatureToString({ type: type, data: data });\n };\n return SerialBuffer;\n}()); // SerialBuffer\nexports.SerialBuffer = SerialBuffer;\n/** Is this a supported ABI version? */\nvar supportedAbiVersion = function (version) {\n return version.startsWith('eosio::abi/1.');\n};\nexports.supportedAbiVersion = supportedAbiVersion;\nvar checkDateParse = function (date) {\n var result = Date.parse(date);\n if (Number.isNaN(result)) {\n throw new Error('Invalid time format');\n }\n return result;\n};\n/** Convert date in ISO format to `time_point` (miliseconds since epoch) */\nvar dateToTimePoint = function (date) {\n return Math.round(checkDateParse(date + 'Z') * 1000);\n};\nexports.dateToTimePoint = dateToTimePoint;\n/** Convert `time_point` (miliseconds since epoch) to date in ISO format */\nvar timePointToDate = function (us) {\n var s = (new Date(us / 1000)).toISOString();\n return s.substr(0, s.length - 1);\n};\nexports.timePointToDate = timePointToDate;\n/** Convert date in ISO format to `time_point_sec` (seconds since epoch) */\nvar dateToTimePointSec = function (date) {\n return Math.round(checkDateParse(date + 'Z') / 1000);\n};\nexports.dateToTimePointSec = dateToTimePointSec;\n/** Convert `time_point_sec` (seconds since epoch) to to date in ISO format */\nvar timePointSecToDate = function (sec) {\n var s = (new Date(sec * 1000)).toISOString();\n return s.substr(0, s.length - 1);\n};\nexports.timePointSecToDate = timePointSecToDate;\n/** Convert date in ISO format to `block_timestamp_type` (half-seconds since a different epoch) */\nvar dateToBlockTimestamp = function (date) {\n return Math.round((checkDateParse(date + 'Z') - 946684800000) / 500);\n};\nexports.dateToBlockTimestamp = dateToBlockTimestamp;\n/** Convert `block_timestamp_type` (half-seconds since a different epoch) to to date in ISO format */\nvar blockTimestampToDate = function (slot) {\n var s = (new Date(slot * 500 + 946684800000)).toISOString();\n return s.substr(0, s.length - 1);\n};\nexports.blockTimestampToDate = blockTimestampToDate;\n/** Convert `string` to `Symbol`. format: `precision,NAME`. */\nvar stringToSymbol = function (s) {\n if (typeof s !== 'string') {\n throw new Error('Expected string containing symbol');\n }\n var m = s.match(/^([0-9]+),([A-Z]+)$/);\n if (!m) {\n throw new Error('Invalid symbol');\n }\n return { name: m[2], precision: +m[1] };\n};\nexports.stringToSymbol = stringToSymbol;\n/** Convert `Symbol` to `string`. format: `precision,NAME`. */\nvar symbolToString = function (_a) {\n var name = _a.name, precision = _a.precision;\n return precision + ',' + name;\n};\nexports.symbolToString = symbolToString;\n/** Convert binary data to hex */\nvar arrayToHex = function (data) {\n var e_1, _a;\n var result = '';\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var x = data_1_1.value;\n result += ('00' + x.toString(16)).slice(-2);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result.toUpperCase();\n};\nexports.arrayToHex = arrayToHex;\n/** Convert hex to binary data */\nvar hexToUint8Array = function (hex) {\n if (typeof hex !== 'string') {\n throw new Error('Expected string containing hex digits');\n }\n if (hex.length % 2) {\n throw new Error('Odd number of hex digits');\n }\n var l = hex.length / 2;\n var result = new Uint8Array(l);\n for (var i = 0; i < l; ++i) {\n var x = parseInt(hex.substr(i * 2, 2), 16);\n if (Number.isNaN(x)) {\n throw new Error('Expected hex string');\n }\n result[i] = x;\n }\n return result;\n};\nexports.hexToUint8Array = hexToUint8Array;\nfunction serializeUnknown(buffer, data) {\n throw new Error('Don\\'t know how to serialize ' + this.name);\n}\nfunction deserializeUnknown(buffer) {\n throw new Error('Don\\'t know how to deserialize ' + this.name);\n}\nfunction serializeStruct(buffer, data, state, allowExtensions) {\n var e_2, _a;\n if (state === void 0) { state = new SerializerState(); }\n if (allowExtensions === void 0) { allowExtensions = true; }\n if (typeof data !== 'object') {\n throw new Error('expected object containing data: ' + JSON.stringify(data));\n }\n if (this.base) {\n this.base.serialize(buffer, data, state, allowExtensions);\n }\n try {\n for (var _b = __values(this.fields), _c = _b.next(); !_c.done; _c = _b.next()) {\n var field = _c.value;\n if (field.name in data) {\n if (state.skippedBinaryExtension) {\n throw new Error('unexpected ' + this.name + '.' + field.name);\n }\n field.type.serialize(buffer, data[field.name], state, allowExtensions && field === this.fields[this.fields.length - 1]);\n }\n else {\n if (allowExtensions && field.type.extensionOf) {\n state.skippedBinaryExtension = true;\n }\n else {\n throw new Error('missing ' + this.name + '.' + field.name + ' (type=' + field.type.name + ')');\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\nfunction deserializeStruct(buffer, state, allowExtensions) {\n var e_3, _a;\n if (state === void 0) { state = new SerializerState(); }\n if (allowExtensions === void 0) { allowExtensions = true; }\n var result;\n if (this.base) {\n result = this.base.deserialize(buffer, state, allowExtensions);\n }\n else {\n result = {};\n }\n try {\n for (var _b = __values(this.fields), _c = _b.next(); !_c.done; _c = _b.next()) {\n var field = _c.value;\n if (allowExtensions && field.type.extensionOf && !buffer.haveReadData()) {\n state.skippedBinaryExtension = true;\n }\n else {\n result[field.name] = field.type.deserialize(buffer, state, allowExtensions);\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return result;\n}\nfunction serializeVariant(buffer, data, state, allowExtensions) {\n if (!Array.isArray(data) || data.length !== 2 || typeof data[0] !== 'string') {\n throw new Error('expected variant: [\"type\", value]');\n }\n var i = this.fields.findIndex(function (field) { return field.name === data[0]; });\n if (i < 0) {\n throw new Error(\"type \\\"\" + data[0] + \"\\\" is not valid for variant\");\n }\n buffer.pushVaruint32(i);\n this.fields[i].type.serialize(buffer, data[1], state, allowExtensions);\n}\nfunction deserializeVariant(buffer, state, allowExtensions) {\n var i = buffer.getVaruint32();\n if (i >= this.fields.length) {\n throw new Error(\"type index \" + i + \" is not valid for variant\");\n }\n var field = this.fields[i];\n return [field.name, field.type.deserialize(buffer, state, allowExtensions)];\n}\nfunction serializeArray(buffer, data, state, allowExtensions) {\n var e_4, _a;\n buffer.pushVaruint32(data.length);\n try {\n for (var data_2 = __values(data), data_2_1 = data_2.next(); !data_2_1.done; data_2_1 = data_2.next()) {\n var item = data_2_1.value;\n this.arrayOf.serialize(buffer, item, state, false);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (data_2_1 && !data_2_1.done && (_a = data_2.return)) _a.call(data_2);\n }\n finally { if (e_4) throw e_4.error; }\n }\n}\nfunction deserializeArray(buffer, state, allowExtensions) {\n var len = buffer.getVaruint32();\n var result = [];\n for (var i = 0; i < len; ++i) {\n result.push(this.arrayOf.deserialize(buffer, state, false));\n }\n return result;\n}\nfunction serializeOptional(buffer, data, state, allowExtensions) {\n if (data === null || data === undefined) {\n buffer.push(0);\n }\n else {\n buffer.push(1);\n this.optionalOf.serialize(buffer, data, state, allowExtensions);\n }\n}\nfunction deserializeOptional(buffer, state, allowExtensions) {\n if (buffer.get()) {\n return this.optionalOf.deserialize(buffer, state, allowExtensions);\n }\n else {\n return null;\n }\n}\nfunction serializeExtension(buffer, data, state, allowExtensions) {\n this.extensionOf.serialize(buffer, data, state, allowExtensions);\n}\nfunction deserializeExtension(buffer, state, allowExtensions) {\n return this.extensionOf.deserialize(buffer, state, allowExtensions);\n}\nfunction serializeObject(buffer, data, state, allowExtensions) {\n var e_5, _a;\n var entries = Object.entries(data);\n buffer.pushVaruint32(entries.length);\n try {\n for (var entries_1 = __values(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n var _b = __read(entries_1_1.value, 2), key = _b[0], value = _b[1];\n var keyType = this.fields[0].type;\n var dataType = this.fields[1].type;\n keyType.serialize(buffer, key, state, allowExtensions);\n dataType.serialize(buffer, value, state, allowExtensions);\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n }\n finally { if (e_5) throw e_5.error; }\n }\n}\nfunction deserializeObject(buffer, state, allowExtensions) {\n var len = buffer.getVaruint32();\n var result = {};\n for (var i = 0; i < len; ++i) {\n var keyType = this.fields[0].type;\n var dataType = this.fields[1].type;\n var key = keyType.deserialize(buffer, state, allowExtensions);\n result[key] = dataType.deserialize(buffer, state, allowExtensions);\n }\n return result;\n}\nfunction serializePair(buffer, data, state, allowExtensions) {\n var _this = this;\n buffer.pushVaruint32(data.length);\n data.forEach(function (item) {\n _this.fields[0].type.serialize(buffer, item[0], state, allowExtensions);\n _this.fields[1].type.serialize(buffer, item[1], state, allowExtensions);\n });\n}\nfunction deserializePair(buffer, state, allowExtensions) {\n var result = [];\n var len = buffer.getVaruint32();\n for (var i = 0; i < len; ++i) {\n result.push(this.fields[0].type.deserialize(buffer, state, allowExtensions));\n result.push(this.fields[1].type.deserialize(buffer, state, allowExtensions));\n }\n return result;\n}\nvar createType = function (attrs) {\n return __assign({ name: '', aliasOfName: '', arrayOf: null, optionalOf: null, extensionOf: null, baseName: '', base: null, fields: [], serialize: serializeUnknown, deserialize: deserializeUnknown }, attrs);\n};\nvar checkRange = function (orig, converted) {\n if (Number.isNaN(+orig) || Number.isNaN(+converted) || (typeof orig !== 'number' && typeof orig !== 'string')) {\n throw new Error('Expected number');\n }\n if (+orig !== +converted) {\n throw new Error('Number is out of range');\n }\n return +orig;\n};\n/** Create the set of types built-in to the abi format */\nvar createInitialTypes = function () {\n var result = new Map(Object.entries({\n bool: createType({\n name: 'bool',\n serialize: function (buffer, data) {\n if (!(typeof data === 'boolean' || typeof data === 'number' && (data === 1 || data === 0))) {\n throw new Error('Expected boolean or number equal to 1 or 0');\n }\n buffer.push(data ? 1 : 0);\n },\n deserialize: function (buffer) { return !!buffer.get(); },\n }),\n uint8: createType({\n name: 'uint8',\n serialize: function (buffer, data) { buffer.push(checkRange(data, data & 0xff)); },\n deserialize: function (buffer) { return buffer.get(); },\n }),\n int8: createType({\n name: 'int8',\n serialize: function (buffer, data) { buffer.push(checkRange(data, data << 24 >> 24)); },\n deserialize: function (buffer) { return buffer.get() << 24 >> 24; },\n }),\n uint16: createType({\n name: 'uint16',\n serialize: function (buffer, data) { buffer.pushUint16(checkRange(data, data & 0xffff)); },\n deserialize: function (buffer) { return buffer.getUint16(); },\n }),\n int16: createType({\n name: 'int16',\n serialize: function (buffer, data) { buffer.pushUint16(checkRange(data, data << 16 >> 16)); },\n deserialize: function (buffer) { return buffer.getUint16() << 16 >> 16; },\n }),\n uint32: createType({\n name: 'uint32',\n serialize: function (buffer, data) { buffer.pushUint32(checkRange(data, data >>> 0)); },\n deserialize: function (buffer) { return buffer.getUint32(); },\n }),\n uint64: createType({\n name: 'uint64',\n serialize: function (buffer, data) {\n buffer.pushArray(numeric.decimalToBinary(8, '' + data));\n },\n deserialize: function (buffer) { return numeric.binaryToDecimal(buffer.getUint8Array(8)); },\n }),\n int64: createType({\n name: 'int64',\n serialize: function (buffer, data) {\n buffer.pushArray(numeric.signedDecimalToBinary(8, '' + data));\n },\n deserialize: function (buffer) { return numeric.signedBinaryToDecimal(buffer.getUint8Array(8)); },\n }),\n int32: createType({\n name: 'int32',\n serialize: function (buffer, data) { buffer.pushUint32(checkRange(data, data | 0)); },\n deserialize: function (buffer) { return buffer.getUint32() | 0; },\n }),\n varuint32: createType({\n name: 'varuint32',\n serialize: function (buffer, data) { buffer.pushVaruint32(checkRange(data, data >>> 0)); },\n deserialize: function (buffer) { return buffer.getVaruint32(); },\n }),\n varint32: createType({\n name: 'varint32',\n serialize: function (buffer, data) { buffer.pushVarint32(checkRange(data, data | 0)); },\n deserialize: function (buffer) { return buffer.getVarint32(); },\n }),\n uint128: createType({\n name: 'uint128',\n serialize: function (buffer, data) { buffer.pushArray(numeric.decimalToBinary(16, '' + data)); },\n deserialize: function (buffer) { return numeric.binaryToDecimal(buffer.getUint8Array(16)); },\n }),\n int128: createType({\n name: 'int128',\n serialize: function (buffer, data) {\n buffer.pushArray(numeric.signedDecimalToBinary(16, '' + data));\n },\n deserialize: function (buffer) { return numeric.signedBinaryToDecimal(buffer.getUint8Array(16)); },\n }),\n float32: createType({\n name: 'float32',\n serialize: function (buffer, data) { buffer.pushFloat32(data); },\n deserialize: function (buffer) { return buffer.getFloat32(); },\n }),\n float64: createType({\n name: 'float64',\n serialize: function (buffer, data) { buffer.pushFloat64(data); },\n deserialize: function (buffer) { return buffer.getFloat64(); },\n }),\n float128: createType({\n name: 'float128',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 16); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(16)); },\n }),\n bytes: createType({\n name: 'bytes',\n serialize: function (buffer, data) {\n if (data instanceof Uint8Array || Array.isArray(data)) {\n buffer.pushBytes(data);\n }\n else {\n buffer.pushBytes(exports.hexToUint8Array(data));\n }\n },\n deserialize: function (buffer, state) {\n if (state && state.options.bytesAsUint8Array) {\n return buffer.getBytes();\n }\n else {\n return exports.arrayToHex(buffer.getBytes());\n }\n },\n }),\n string: createType({\n name: 'string',\n serialize: function (buffer, data) { buffer.pushString(data); },\n deserialize: function (buffer) { return buffer.getString(); },\n }),\n name: createType({\n name: 'name',\n serialize: function (buffer, data) { buffer.pushName(data); },\n deserialize: function (buffer) { return buffer.getName(); },\n }),\n time_point: createType({\n name: 'time_point',\n serialize: function (buffer, data) { buffer.pushNumberAsUint64(exports.dateToTimePoint(data)); },\n deserialize: function (buffer) { return exports.timePointToDate(buffer.getUint64AsNumber()); },\n }),\n time_point_sec: createType({\n name: 'time_point_sec',\n serialize: function (buffer, data) { buffer.pushUint32(exports.dateToTimePointSec(data)); },\n deserialize: function (buffer) { return exports.timePointSecToDate(buffer.getUint32()); },\n }),\n block_timestamp_type: createType({\n name: 'block_timestamp_type',\n serialize: function (buffer, data) { buffer.pushUint32(exports.dateToBlockTimestamp(data)); },\n deserialize: function (buffer) { return exports.blockTimestampToDate(buffer.getUint32()); },\n }),\n symbol_code: createType({\n name: 'symbol_code',\n serialize: function (buffer, data) { buffer.pushSymbolCode(data); },\n deserialize: function (buffer) { return buffer.getSymbolCode(); },\n }),\n symbol: createType({\n name: 'symbol',\n serialize: function (buffer, data) { buffer.pushSymbol(exports.stringToSymbol(data)); },\n deserialize: function (buffer) { return exports.symbolToString(buffer.getSymbol()); },\n }),\n asset: createType({\n name: 'asset',\n serialize: function (buffer, data) { buffer.pushAsset(data); },\n deserialize: function (buffer) { return buffer.getAsset(); },\n }),\n checksum160: createType({\n name: 'checksum160',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 20); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(20)); },\n }),\n checksum256: createType({\n name: 'checksum256',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 32); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(32)); },\n }),\n checksum512: createType({\n name: 'checksum512',\n serialize: function (buffer, data) { buffer.pushUint8ArrayChecked(exports.hexToUint8Array(data), 64); },\n deserialize: function (buffer) { return exports.arrayToHex(buffer.getUint8Array(64)); },\n }),\n public_key: createType({\n name: 'public_key',\n serialize: function (buffer, data) { buffer.pushPublicKey(data); },\n deserialize: function (buffer) { return buffer.getPublicKey(); },\n }),\n private_key: createType({\n name: 'private_key',\n serialize: function (buffer, data) { buffer.pushPrivateKey(data); },\n deserialize: function (buffer) { return buffer.getPrivateKey(); },\n }),\n signature: createType({\n name: 'signature',\n serialize: function (buffer, data) { buffer.pushSignature(data); },\n deserialize: function (buffer) { return buffer.getSignature(); },\n }),\n }));\n result.set('extended_asset', createType({\n name: 'extended_asset',\n baseName: '',\n fields: [\n { name: 'quantity', typeName: 'asset', type: result.get('asset') },\n { name: 'contract', typeName: 'name', type: result.get('name') },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n return result;\n}; // createInitialTypes()\nexports.createInitialTypes = createInitialTypes;\nvar createAbiTypes = function () {\n var initialTypes = exports.createInitialTypes();\n initialTypes.set('extensions_entry', createType({\n name: 'extensions_entry',\n baseName: '',\n fields: [\n { name: 'tag', typeName: 'uint16', type: null },\n { name: 'value', typeName: 'bytes', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('type_def', createType({\n name: 'type_def',\n baseName: '',\n fields: [\n { name: 'new_type_name', typeName: 'string', type: null },\n { name: 'type', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('field_def', createType({\n name: 'field_def',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'string', type: null },\n { name: 'type', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('struct_def', createType({\n name: 'struct_def',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'string', type: null },\n { name: 'base', typeName: 'string', type: null },\n { name: 'fields', typeName: 'field_def[]', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('action_def', createType({\n name: 'action_def',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'name', type: null },\n { name: 'type', typeName: 'string', type: null },\n { name: 'ricardian_contract', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('table_def', createType({\n name: 'table_def',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'name', type: null },\n { name: 'index_type', typeName: 'string', type: null },\n { name: 'key_names', typeName: 'string[]', type: null },\n { name: 'key_types', typeName: 'string[]', type: null },\n { name: 'type', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('clause_pair', createType({\n name: 'clause_pair',\n baseName: '',\n fields: [\n { name: 'id', typeName: 'string', type: null },\n { name: 'body', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('error_message', createType({\n name: 'error_message',\n baseName: '',\n fields: [\n { name: 'error_code', typeName: 'uint64', type: null },\n { name: 'error_msg', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('variant_def', createType({\n name: 'variant_def',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'string', type: null },\n { name: 'types', typeName: 'string[]', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('action_result', createType({\n name: 'action_result',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'name', type: null },\n { name: 'result_type', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('primary_key_index_def', createType({\n name: 'primary_key_index_def',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'name', type: null },\n { name: 'type', typeName: 'string', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('secondary_index_def', createType({\n name: 'secondary_index_def',\n baseName: '',\n fields: [\n { name: 'type', typeName: 'string', type: null },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('secondary_indices', createType({\n name: 'secondary_indices',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'name', type: null },\n { name: 'secondary_index_def', typeName: 'secondary_index_def', type: null }\n ],\n serialize: serializeObject,\n deserialize: deserializeObject,\n }));\n initialTypes.set('kv_table_entry_def', createType({\n name: 'kv_table_entry_def',\n baseName: '',\n fields: [\n { name: 'type', typeName: 'string', type: null },\n { name: 'primary_index', typeName: 'primary_key_index_def', type: null },\n { name: 'secondary_indices', typeName: 'secondary_indices', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('kv_table', createType({\n name: 'kv_table',\n baseName: '',\n fields: [\n { name: 'name', typeName: 'name', type: null },\n { name: 'kv_table_entry_def', typeName: 'kv_table_entry_def', type: null }\n ],\n serialize: serializeObject,\n deserialize: deserializeObject\n }));\n initialTypes.set('abi_def', createType({\n name: 'abi_def',\n baseName: '',\n fields: [\n { name: 'version', typeName: 'string', type: null },\n { name: 'types', typeName: 'type_def[]', type: null },\n { name: 'structs', typeName: 'struct_def[]', type: null },\n { name: 'actions', typeName: 'action_def[]', type: null },\n { name: 'tables', typeName: 'table_def[]', type: null },\n { name: 'ricardian_clauses', typeName: 'clause_pair[]', type: null },\n { name: 'error_messages', typeName: 'error_message[]', type: null },\n { name: 'abi_extensions', typeName: 'extensions_entry[]', type: null },\n { name: 'variants', typeName: 'variant_def[]$', type: null },\n { name: 'action_results', typeName: 'action_result[]$', type: null },\n { name: 'kv_tables', typeName: 'kv_table$', type: null },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n return initialTypes;\n};\nexports.createAbiTypes = createAbiTypes;\nvar createTransactionExtensionTypes = function () {\n var initialTypes = exports.createInitialTypes();\n initialTypes.set('resource_payer', createType({\n name: 'resource_payer',\n baseName: '',\n fields: [\n { name: 'payer', typeName: 'name', type: null },\n { name: 'max_net_bytes', typeName: 'uint64', type: null },\n { name: 'max_cpu_us', typeName: 'uint64', type: null },\n { name: 'max_memory_bytes', typeName: 'uint64', type: null },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n return initialTypes;\n};\nexports.createTransactionExtensionTypes = createTransactionExtensionTypes;\nvar createTransactionTypes = function () {\n var initialTypes = exports.createInitialTypes();\n initialTypes.set('permission_level', createType({\n name: 'permission_level',\n baseName: '',\n fields: [\n { name: 'actor', typeName: 'name', type: null },\n { name: 'permission', typeName: 'name', type: null },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('action', createType({\n name: 'action',\n baseName: '',\n fields: [\n { name: 'account', typeName: 'name', type: null },\n { name: 'name', typeName: 'name', type: null },\n { name: 'authorization', typeName: 'permission_level[]', type: null },\n { name: 'data', typeName: 'bytes', type: null },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('extension', createType({\n name: 'extension',\n baseName: '',\n fields: [\n { name: 'type', typeName: 'uint16', type: null },\n { name: 'data', typeName: 'bytes', type: null },\n ],\n serialize: serializePair,\n deserialize: deserializePair,\n }));\n initialTypes.set('transaction_header', createType({\n name: 'transaction_header',\n baseName: '',\n fields: [\n { name: 'expiration', typeName: 'time_point_sec', type: null },\n { name: 'ref_block_num', typeName: 'uint16', type: null },\n { name: 'ref_block_prefix', typeName: 'uint32', type: null },\n { name: 'max_net_usage_words', typeName: 'varuint32', type: null },\n { name: 'max_cpu_usage_ms', typeName: 'uint8', type: null },\n { name: 'delay_sec', typeName: 'varuint32', type: null },\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n initialTypes.set('transaction', createType({\n name: 'transaction',\n baseName: 'transaction_header',\n fields: [\n { name: 'context_free_actions', typeName: 'action[]', type: null },\n { name: 'actions', typeName: 'action[]', type: null },\n { name: 'transaction_extensions', typeName: 'extension', type: null }\n ],\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n return initialTypes;\n};\nexports.createTransactionTypes = createTransactionTypes;\n/** Get type from `types` */\nvar getType = function (types, name) {\n var type = types.get(name);\n if (type && type.aliasOfName) {\n return exports.getType(types, type.aliasOfName);\n }\n if (type) {\n return type;\n }\n if (name.endsWith('[]')) {\n return createType({\n name: name,\n arrayOf: exports.getType(types, name.substr(0, name.length - 2)),\n serialize: serializeArray,\n deserialize: deserializeArray,\n });\n }\n if (name.endsWith('?')) {\n return createType({\n name: name,\n optionalOf: exports.getType(types, name.substr(0, name.length - 1)),\n serialize: serializeOptional,\n deserialize: deserializeOptional,\n });\n }\n if (name.endsWith('$')) {\n return createType({\n name: name,\n extensionOf: exports.getType(types, name.substr(0, name.length - 1)),\n serialize: serializeExtension,\n deserialize: deserializeExtension,\n });\n }\n throw new Error('Unknown type: ' + name);\n};\nexports.getType = getType;\n/**\n * Get types from abi\n *\n * @param initialTypes Set of types to build on.\n * In most cases, it's best to fill this from a fresh call to `getTypesFromAbi()`.\n */\nvar getTypesFromAbi = function (initialTypes, abi) {\n var e_6, _a, e_7, _b, e_8, _c, e_9, _d, e_10, _e;\n var types = new Map(initialTypes);\n if (abi && abi.types) {\n try {\n for (var _f = __values(abi.types), _g = _f.next(); !_g.done; _g = _f.next()) {\n var _h = _g.value, new_type_name = _h.new_type_name, type = _h.type;\n types.set(new_type_name, createType({ name: new_type_name, aliasOfName: type }));\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_g && !_g.done && (_a = _f.return)) _a.call(_f);\n }\n finally { if (e_6) throw e_6.error; }\n }\n }\n if (abi && abi.structs) {\n try {\n for (var _j = __values(abi.structs), _k = _j.next(); !_k.done; _k = _j.next()) {\n var _l = _k.value, name_1 = _l.name, base = _l.base, fields = _l.fields;\n types.set(name_1, createType({\n name: name_1,\n baseName: base,\n fields: fields.map(function (_a) {\n var n = _a.name, type = _a.type;\n return ({ name: n, typeName: type, type: null });\n }),\n serialize: serializeStruct,\n deserialize: deserializeStruct,\n }));\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_k && !_k.done && (_b = _j.return)) _b.call(_j);\n }\n finally { if (e_7) throw e_7.error; }\n }\n }\n if (abi && abi.variants) {\n try {\n for (var _m = __values(abi.variants), _o = _m.next(); !_o.done; _o = _m.next()) {\n var _p = _o.value, name_2 = _p.name, t = _p.types;\n types.set(name_2, createType({\n name: name_2,\n fields: t.map(function (s) { return ({ name: s, typeName: s, type: null }); }),\n serialize: serializeVariant,\n deserialize: deserializeVariant,\n }));\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (_o && !_o.done && (_c = _m.return)) _c.call(_m);\n }\n finally { if (e_8) throw e_8.error; }\n }\n }\n try {\n for (var types_1 = __values(types), types_1_1 = types_1.next(); !types_1_1.done; types_1_1 = types_1.next()) {\n var _q = __read(types_1_1.value, 2), name_3 = _q[0], type = _q[1];\n if (type.baseName) {\n type.base = exports.getType(types, type.baseName);\n }\n try {\n for (var _r = (e_10 = void 0, __values(type.fields)), _s = _r.next(); !_s.done; _s = _r.next()) {\n var field = _s.value;\n field.type = exports.getType(types, field.typeName);\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (_s && !_s.done && (_e = _r.return)) _e.call(_r);\n }\n finally { if (e_10) throw e_10.error; }\n }\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (types_1_1 && !types_1_1.done && (_d = types_1.return)) _d.call(types_1);\n }\n finally { if (e_9) throw e_9.error; }\n }\n return types;\n}; // getTypesFromAbi\nexports.getTypesFromAbi = getTypesFromAbi;\nvar reverseHex = function (h) {\n return h.substr(6, 2) + h.substr(4, 2) + h.substr(2, 2) + h.substr(0, 2);\n};\n/** TAPoS: Return transaction fields which reference `refBlock` and expire `expireSeconds` after `timestamp` */\nvar transactionHeader = function (refBlock, expireSeconds) {\n var timestamp = refBlock.header ? refBlock.header.timestamp : refBlock.timestamp;\n var prefix = parseInt(reverseHex(refBlock.id.substr(16, 8)), 16);\n return {\n expiration: exports.timePointSecToDate(exports.dateToTimePointSec(timestamp) + expireSeconds),\n ref_block_num: refBlock.block_num & 0xffff,\n ref_block_prefix: prefix,\n };\n};\nexports.transactionHeader = transactionHeader;\n/** Convert action data to serialized form (hex) */\nvar serializeActionData = function (contract, account, name, data, textEncoder, textDecoder) {\n var action = contract.actions.get(name);\n if (!action) {\n throw new Error(\"Unknown action \" + name + \" in contract \" + account);\n }\n var buffer = new SerialBuffer({ textEncoder: textEncoder, textDecoder: textDecoder });\n action.serialize(buffer, data);\n return exports.arrayToHex(buffer.asUint8Array());\n};\nexports.serializeActionData = serializeActionData;\n/** Return action in serialized form */\nvar serializeAction = function (contract, account, name, authorization, data, textEncoder, textDecoder) {\n return {\n account: account,\n name: name,\n authorization: authorization,\n data: exports.serializeActionData(contract, account, name, data, textEncoder, textDecoder),\n };\n};\nexports.serializeAction = serializeAction;\n/** Deserialize action data. If `data` is a `string`, then it's assumed to be in hex. */\nvar deserializeActionData = function (contract, account, name, data, textEncoder, textDecoder) {\n var action = contract.actions.get(name);\n if (typeof data === 'string') {\n data = exports.hexToUint8Array(data);\n }\n if (!action) {\n throw new Error(\"Unknown action \" + name + \" in contract \" + account);\n }\n var buffer = new SerialBuffer({ textDecoder: textDecoder, textEncoder: textEncoder });\n buffer.pushArray(data);\n return action.deserialize(buffer);\n};\nexports.deserializeActionData = deserializeActionData;\n/** Deserialize action. If `data` is a `string`, then it's assumed to be in hex. */\nvar deserializeAction = function (contract, account, name, authorization, data, textEncoder, textDecoder) {\n return {\n account: account,\n name: name,\n authorization: authorization,\n data: exports.deserializeActionData(contract, account, name, data, textEncoder, textDecoder),\n };\n};\nexports.deserializeAction = deserializeAction;\nvar serializeAnyvar = function (buffer, anyvar) {\n var _a, _b, _c, _d, _e, _f, _g;\n var def;\n var value;\n if (anyvar === null) {\n _a = __read([anyvarDefs.null_t, anyvar], 2), def = _a[0], value = _a[1];\n }\n else if (typeof anyvar === 'string') {\n _b = __read([anyvarDefs.string, anyvar], 2), def = _b[0], value = _b[1];\n }\n else if (typeof anyvar === 'number') {\n _c = __read([anyvarDefs.int32, anyvar], 2), def = _c[0], value = _c[1];\n }\n else if (anyvar instanceof Uint8Array) {\n _d = __read([anyvarDefs.bytes, anyvar], 2), def = _d[0], value = _d[1];\n }\n else if (Array.isArray(anyvar)) {\n _e = __read([anyvarDefs.any_array, anyvar], 2), def = _e[0], value = _e[1];\n }\n else if (Object.keys(anyvar).length === 2 && anyvar.hasOwnProperty('type') && anyvar.hasOwnProperty('value')) {\n _f = __read([anyvarDefs[anyvar.type], anyvar.value], 2), def = _f[0], value = _f[1];\n }\n else {\n _g = __read([anyvarDefs.any_object, anyvar], 2), def = _g[0], value = _g[1];\n }\n buffer.pushVaruint32(def.index);\n def.type.serialize(buffer, value);\n};\nexports.serializeAnyvar = serializeAnyvar;\nvar deserializeAnyvar = function (buffer, state) {\n var defIndex = buffer.getVaruint32();\n if (defIndex >= anyvarDefsByIndex.length) {\n throw new Error('Tried to deserialize unknown anyvar type');\n }\n var def = anyvarDefsByIndex[defIndex];\n var value = def.type.deserialize(buffer, state);\n if (state && state.options.useShortForm || def.useShortForm) {\n return value;\n }\n else {\n return { type: def.type.name, value: value };\n }\n};\nexports.deserializeAnyvar = deserializeAnyvar;\nvar deserializeAnyvarShort = function (buffer) {\n return exports.deserializeAnyvar(buffer, new SerializerState({ useShortForm: true }));\n};\nexports.deserializeAnyvarShort = deserializeAnyvarShort;\nvar serializeAnyObject = function (buffer, obj) {\n var e_11, _a;\n var entries = Object.entries(obj);\n buffer.pushVaruint32(entries.length);\n try {\n for (var entries_2 = __values(entries), entries_2_1 = entries_2.next(); !entries_2_1.done; entries_2_1 = entries_2.next()) {\n var _b = __read(entries_2_1.value, 2), key = _b[0], value = _b[1];\n buffer.pushString(key);\n exports.serializeAnyvar(buffer, value);\n }\n }\n catch (e_11_1) { e_11 = { error: e_11_1 }; }\n finally {\n try {\n if (entries_2_1 && !entries_2_1.done && (_a = entries_2.return)) _a.call(entries_2);\n }\n finally { if (e_11) throw e_11.error; }\n }\n};\nexports.serializeAnyObject = serializeAnyObject;\nvar deserializeAnyObject = function (buffer, state) {\n var len = buffer.getVaruint32();\n var result = {};\n for (var i = 0; i < len; ++i) {\n var key = buffer.getString();\n if (key in result) {\n var j = 1;\n while (key + '_' + j in result) {\n ++j;\n }\n key = key + '_' + j;\n }\n result[key] = exports.deserializeAnyvar(buffer, state);\n }\n return result;\n};\nexports.deserializeAnyObject = deserializeAnyObject;\nvar serializeAnyArray = function (buffer, arr) {\n var e_12, _a;\n buffer.pushVaruint32(arr.length);\n try {\n for (var arr_1 = __values(arr), arr_1_1 = arr_1.next(); !arr_1_1.done; arr_1_1 = arr_1.next()) {\n var x = arr_1_1.value;\n exports.serializeAnyvar(buffer, x);\n }\n }\n catch (e_12_1) { e_12 = { error: e_12_1 }; }\n finally {\n try {\n if (arr_1_1 && !arr_1_1.done && (_a = arr_1.return)) _a.call(arr_1);\n }\n finally { if (e_12) throw e_12.error; }\n }\n};\nexports.serializeAnyArray = serializeAnyArray;\nvar deserializeAnyArray = function (buffer, state) {\n var len = buffer.getVaruint32();\n var result = [];\n for (var i = 0; i < len; ++i) {\n result.push(exports.deserializeAnyvar(buffer, state));\n }\n return result;\n};\nexports.deserializeAnyArray = deserializeAnyArray;\nvar addAdditionalTypes = function () {\n var initialTypes = exports.createInitialTypes();\n initialTypes.set('null_t', createType({\n name: 'null_t',\n serialize: function (buffer, anyvar) { },\n deserialize: function (buffer, state) { }\n }));\n initialTypes.set('any_object', createType({\n name: 'any_object',\n serialize: exports.serializeAnyObject,\n deserialize: exports.deserializeAnyObject\n }));\n initialTypes.set('any_array', createType({\n name: 'any_array',\n serialize: exports.serializeAnyArray,\n deserialize: exports.deserializeAnyArray\n }));\n return initialTypes;\n};\nvar additionalTypes = addAdditionalTypes();\nvar anyvarDefs = {\n null_t: { index: 0, useShortForm: true, type: additionalTypes.get('null_t') },\n int64: { index: 1, useShortForm: false, type: additionalTypes.get('int64') },\n uint64: { index: 2, useShortForm: false, type: additionalTypes.get('uint64') },\n int32: { index: 3, useShortForm: true, type: additionalTypes.get('int32') },\n uint32: { index: 4, useShortForm: false, type: additionalTypes.get('uint32') },\n int16: { index: 5, useShortForm: false, type: additionalTypes.get('int16') },\n uint16: { index: 6, useShortForm: false, type: additionalTypes.get('uint16') },\n int8: { index: 7, useShortForm: false, type: additionalTypes.get('int8') },\n uint8: { index: 8, useShortForm: false, type: additionalTypes.get('uint8') },\n time_point: { index: 9, useShortForm: false, type: additionalTypes.get('time_point') },\n checksum256: { index: 10, useShortForm: false, type: additionalTypes.get('checksum256') },\n float64: { index: 11, useShortForm: false, type: additionalTypes.get('float64') },\n string: { index: 12, useShortForm: true, type: additionalTypes.get('string') },\n any_object: { index: 13, useShortForm: true, type: additionalTypes.get('any_object') },\n any_array: { index: 14, useShortForm: true, type: additionalTypes.get('any_array') },\n bytes: { index: 15, useShortForm: false, type: additionalTypes.get('bytes') },\n symbol: { index: 16, useShortForm: false, type: additionalTypes.get('symbol') },\n symbol_code: { index: 17, useShortForm: false, type: additionalTypes.get('symbol_code') },\n asset: { index: 18, useShortForm: false, type: additionalTypes.get('asset') },\n};\nvar anyvarDefsByIndex = [\n anyvarDefs.null_t,\n anyvarDefs.int64,\n anyvarDefs.uint64,\n anyvarDefs.int32,\n anyvarDefs.uint32,\n anyvarDefs.int16,\n anyvarDefs.uint16,\n anyvarDefs.int8,\n anyvarDefs.uint8,\n anyvarDefs.time_point,\n anyvarDefs.checksum256,\n anyvarDefs.float64,\n anyvarDefs.string,\n anyvarDefs.any_object,\n anyvarDefs.any_array,\n anyvarDefs.bytes,\n anyvarDefs.symbol,\n anyvarDefs.symbol_code,\n anyvarDefs.asset,\n];\nvar serializeQuery = function (buffer, query) {\n var _a, _b, _c, e_13, _d;\n var method;\n var arg;\n var filter;\n if (typeof query === 'string') {\n method = query;\n }\n else if (Array.isArray(query) && query.length === 2) {\n _a = __read(query, 2), method = _a[0], filter = _a[1];\n }\n else if (Array.isArray(query) && query.length === 3) {\n _b = __read(query, 3), method = _b[0], arg = _b[1], filter = _b[2];\n }\n else {\n _c = __read([query.method, query.arg, query.filter], 3), method = _c[0], arg = _c[1], filter = _c[2];\n }\n buffer.pushString(method);\n if (arg === undefined) {\n buffer.push(0);\n }\n else {\n buffer.push(1);\n exports.serializeAnyvar(buffer, arg);\n }\n if (filter === undefined) {\n buffer.push(0);\n }\n else {\n buffer.pushVaruint32(filter.length);\n try {\n for (var filter_1 = __values(filter), filter_1_1 = filter_1.next(); !filter_1_1.done; filter_1_1 = filter_1.next()) {\n var q = filter_1_1.value;\n exports.serializeQuery(buffer, q);\n }\n }\n catch (e_13_1) { e_13 = { error: e_13_1 }; }\n finally {\n try {\n if (filter_1_1 && !filter_1_1.done && (_d = filter_1.return)) _d.call(filter_1);\n }\n finally { if (e_13) throw e_13.error; }\n }\n }\n};\nexports.serializeQuery = serializeQuery;\n//# sourceMappingURL=eosjs-serialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Serialize = exports.RpcError = exports.RpcInterfaces = exports.Numeric = exports.JsonRpc = exports.ApiInterfaces = exports.Api = void 0;\nvar eosjs_api_1 = require(\"./eosjs-api\");\nObject.defineProperty(exports, \"Api\", { enumerable: true, get: function () { return eosjs_api_1.Api; } });\nvar ApiInterfaces = require(\"./eosjs-api-interfaces\");\nexports.ApiInterfaces = ApiInterfaces;\nvar eosjs_jsonrpc_1 = require(\"./eosjs-jsonrpc\");\nObject.defineProperty(exports, \"JsonRpc\", { enumerable: true, get: function () { return eosjs_jsonrpc_1.JsonRpc; } });\nvar Numeric = require(\"./eosjs-numeric\");\nexports.Numeric = Numeric;\nvar RpcInterfaces = require(\"./eosjs-rpc-interfaces\");\nexports.RpcInterfaces = RpcInterfaces;\nvar eosjs_rpcerror_1 = require(\"./eosjs-rpcerror\");\nObject.defineProperty(exports, \"RpcError\", { enumerable: true, get: function () { return eosjs_rpcerror_1.RpcError; } });\nvar Serialize = require(\"./eosjs-serialize\");\nexports.Serialize = Serialize;\n//# sourceMappingURL=index.js.map","// https://gist.githubusercontent.com/wlzla000/bac83df6d3c51916c4dd0bc947e46947/raw/7ee3462b095ab22580ddaf191f44a590da6fe33b/RIPEMD-160.js\n\n/*\n\tRIPEMD-160.js\n\n\t\tdeveloped\n\t\t\tby K. (https://github.com/wlzla000)\n\t\t\ton December 27-29, 2017,\n\n\t\tlicensed under\n\n\n\t\tthe MIT license\n\n\t\tCopyright (c) 2017 K.\n\n\t\t Permission is hereby granted, free of charge, to any person\n\t\tobtaining a copy of this software and associated documentation\n\t\tfiles (the \"Software\"), to deal in the Software without\n\t\trestriction, including without limitation the rights to use,\n\t\tcopy, modify, merge, publish, distribute, sublicense, and/or\n\t\tsell copies of the Software, and to permit persons to whom the\n\t\tSoftware is furnished to do so, subject to the following\n\t\tconditions:\n\n\t\t The above copyright notice and this permission notice shall be\n\t\tincluded in all copies or substantial portions of the Software.\n\n\t\t THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\t\tEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n\t\tOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n\t\tNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n\t\tHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n\t\tWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n\t\tFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n\t\tOTHER DEALINGS IN THE SOFTWARE.\n*/\n/* eslint-disable */\n\n\"use strict\";\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RIPEMD160 = function () {\n function RIPEMD160() {\n // https://webcache.googleusercontent.com/search?q=cache:CnLOgolTHYEJ:https://www.cosic.esat.kuleuven.be/publications/article-317.pdf\n // http://shodhganga.inflibnet.ac.in/bitstream/10603/22978/13/13_appendix.pdf\n\n _classCallCheck(this, RIPEMD160);\n }\n\n _createClass(RIPEMD160, null, [{\n key: \"get_n_pad_bytes\",\n value: function get_n_pad_bytes(message_size /* in bytes, 1 byte is 8 bits. */) {\n // Obtain the number of bytes needed to pad the message.\n // It does not contain the size of the message size information.\n /*\n https://webcache.googleusercontent.com/search?q=cache:CnLOgolTHYEJ:https://www.cosic.esat.kuleuven.be/publications/article-317.pdf\n The Cryptographic Hash Function RIPEMD-160\n written by\n Bart Preneel,\n Hans Dobbertin,\n Antoon Bosselaers\n in\n 1997.\n --------------------------------------------------\n §5 Description of RIPEMD-160\n ......\n In order to guarantee that the total input size is a\n multiple of 512 bits, the input is padded in the same\n way as for all the members of the MD4-family: one\n appends a single 1 followed by a string of 0s (the\n number of 0s lies between 0 and 511); the last 64 bits\n of the extended input contain the binary representation\n of the input size in bits, least significant byte first.\n */\n /*\n https://tools.ietf.org/rfc/rfc1186.txt\n RFC 1186: MD4 Message Digest Algorithm.\n written by\n Ronald Linn Rivest\n in\n October 1990.\n --------------------------------------------------\n §3 MD4 Algorithm Description\n ......\n Step 1. Append padding bits\n The message is \"padded\" (extended) so that its length\n (in bits) is congruent to 448, modulo 512. That is, the\n message is extended so that it is just 64 bits shy of\n being a multiple of 512 bits long. Padding is always\n performed, even if the length of the message is already\n congruent to 448, modulo 512 (in which case 512 bits of\n padding are added).\n Padding is performed as follows: a single \"1\" bit is\n appended to the message, and then enough zero bits are\n appended so that the length in bits of the padded\n message becomes congruent to 448, modulo 512.\n Step 2. Append length\n A 64-bit representation of b (the length of the message\n before the padding bits were added) is appended to the\n result of the previous step. In the unlikely event that\n b is greater than 2^64, then only the low-order 64 bits\n of b are used. (These bits are appended as two 32-bit\n words and appended low-order word first in accordance\n with the previous conventions.)\n At this point the resulting message (after padding with\n bits and with b) has a length that is an exact multiple\n of 512 bits. Equivalently, this message has a length\n that is an exact multiple of 16 (32-bit) words. Let\n M[0 ... N-1] denote the words of the resulting message,\n where N is a multiple of 16.\n */\n // https://crypto.stackexchange.com/a/32407/54568\n /*\n Example case # 1\n [0 bit: message.]\n [1 bit: 1.]\n [447 bits: 0.]\n [64 bits: message size information.]\n Example case # 2\n [512-bits: message]\n [1 bit: 1.]\n [447 bits: 0.]\n [64 bits: message size information.]\n Example case # 3\n [(512 - 64 = 448) bits: message.]\n [1 bit: 1.]\n [511 bits: 0.]\n [64 bits: message size information.]\n Example case # 4\n [(512 - 65 = 447) bits: message.]\n [1 bit: 1.]\n [0 bit: 0.]\n [64 bits: message size information.]\n */\n // The number of padding zero bits:\n // 511 - [{(message size in bits) + 64} (mod 512)]\n return 64 - (message_size + 8 & 63 /* 63 */);\n }\n }, {\n key: \"pad\",\n value: function pad(message /* An ArrayBuffer. */) {\n var message_size = message.byteLength;\n var n_pad = RIPEMD160.get_n_pad_bytes(message_size);\n\n // `Number.MAX_SAFE_INTEGER` is ((2 ** 53) - 1) and\n // bitwise operation in Javascript is done on 32-bits operands.\n var divmod = function divmod(dividend, divisor) {\n return [Math.floor(dividend / divisor), dividend % divisor];\n };\n /*\n To shift\n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\n t o\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\n --------------------------------------------------------------------------------\n Method #1\n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\n [00000000 000AAAAA AAAAAAAA AAAAAAAA] ( captured)\n [00000000 AAAAAAAA AAAAAAAA AAAAA000] ( shifted)\n ( captured) [BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB]\n ( shifted) [BBB][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n [00000000 AAAAAAAA AAAAAAAA AAAAABBB] ( & merged)\n [00000000 AAAAAAAA AAAAAAAA AAAAABBB][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\n const uint32_max_plus_1 = 0x100000000; // (2 ** 32)\n const [\n msg_byte_size_most, // Value range [0, (2 ** 21) - 1].\n msg_byte_size_least // Value range [0, (2 ** 32) - 1].\n ] = divmod(message_size, uint32_max_plus_1);\n const [\n carry, // Value range [0, 7].\n msg_bit_size_least // Value range [0, (2 ** 32) - 8].\n ] = divmod(message_byte_size_least * 8, uint32_max_plus_1);\n const message_bit_size_most = message_byte_size_most * 8\n + carry; // Value range [0, (2 ** 24) - 1].\n --------------------------------------------------------------------------------\n Method #2\n 00000000 000????? ???????? ???????? ???????? ???????? ???????? ????????\n [00000 000AAAAA AAAAAAAA AAAAAAAA AAA] ( captured)\n ( captured) [000BBBBB BBBBBBBB BBBBBBBB BBBBBBBB]\n ( shifted) [BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n [00000000 AAAAAAAA AAAAAAAA AAAAAAAA][BBBBBBBB BBBBBBBB BBBBBBBB BBBBB000]\n 00000000 ???????? ???????? ???????? ???????? ???????? ???????? ?????000\n */\n\n var _divmod$map = divmod(message_size, 536870912 /* (2 ** 29) */).map(function (x, index) {\n return index ? x * 8 : x;\n }),\n _divmod$map2 = _slicedToArray(_divmod$map, 2),\n msg_bit_size_most = _divmod$map2[0],\n msg_bit_size_least = _divmod$map2[1];\n\n // `ArrayBuffer.transfer()` is not supported.\n\n\n var padded = new Uint8Array(message_size + n_pad + 8);\n padded.set(new Uint8Array(message), 0);\n var data_view = new DataView(padded.buffer);\n data_view.setUint8(message_size, 128);\n data_view.setUint32(message_size + n_pad, msg_bit_size_least, true // Little-endian\n );\n data_view.setUint32(message_size + n_pad + 4, msg_bit_size_most, true // Little-endian\n );\n\n return padded.buffer;\n }\n }, {\n key: \"f\",\n value: function f(j, x, y, z) {\n if (0 <= j && j <= 15) {\n // Exclusive-OR\n return x ^ y ^ z;\n }\n if (16 <= j && j <= 31) {\n // Multiplexing (muxing)\n return x & y | ~x & z;\n }\n if (32 <= j && j <= 47) {\n return (x | ~y) ^ z;\n }\n if (48 <= j && j <= 63) {\n // Multiplexing (muxing)\n return x & z | y & ~z;\n }\n if (64 <= j && j <= 79) {\n return x ^ (y | ~z);\n }\n }\n }, {\n key: \"K\",\n value: function K(j) {\n if (0 <= j && j <= 15) {\n return 0x00000000;\n }\n if (16 <= j && j <= 31) {\n // Math.floor((2 ** 30) * Math.SQRT2)\n return 0x5A827999;\n }\n if (32 <= j && j <= 47) {\n // Math.floor((2 ** 30) * Math.sqrt(3))\n return 0x6ED9EBA1;\n }\n if (48 <= j && j <= 63) {\n // Math.floor((2 ** 30) * Math.sqrt(5))\n return 0x8F1BBCDC;\n }\n if (64 <= j && j <= 79) {\n // Math.floor((2 ** 30) * Math.sqrt(7))\n return 0xA953FD4E;\n }\n }\n }, {\n key: \"KP\",\n value: function KP(j) // K'\n {\n if (0 <= j && j <= 15) {\n // Math.floor((2 ** 30) * Math.cbrt(2))\n return 0x50A28BE6;\n }\n if (16 <= j && j <= 31) {\n // Math.floor((2 ** 30) * Math.cbrt(3))\n return 0x5C4DD124;\n }\n if (32 <= j && j <= 47) {\n // Math.floor((2 ** 30) * Math.cbrt(5))\n return 0x6D703EF3;\n }\n if (48 <= j && j <= 63) {\n // Math.floor((2 ** 30) * Math.cbrt(7))\n return 0x7A6D76E9;\n }\n if (64 <= j && j <= 79) {\n return 0x00000000;\n }\n }\n }, {\n key: \"add_modulo32\",\n value: function add_modulo32() /* ...... */{\n // 1. Modulo addition (addition modulo) is associative.\n // https://proofwiki.org/wiki/Modulo_Addition_is_Associative\n // 2. Bitwise operation in Javascript\n // is done on 32-bits operands\n // and results in a 32-bits value.\n return Array.from(arguments).reduce(function (a, b) {\n return a + b;\n }, 0) | 0;\n }\n }, {\n key: \"rol32\",\n value: function rol32(value, count) {\n // Cyclic left shift (rotate) on 32-bits value.\n return value << count | value >>> 32 - count;\n }\n }, {\n key: \"hash\",\n value: function hash(message /* An ArrayBuffer. */) {\n ////////// Padding //////////\n\n // The padded message.\n var padded = RIPEMD160.pad(message);\n\n ////////// Compression //////////\n\n // Message word selectors.\n var r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\n var rP = [// r'\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\n\n // Amounts for 'rotate left' operation.\n var s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\n var sP = [// s'\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\n\n // The size, in bytes, of a word.\n var word_size = 4;\n\n // The size, in bytes, of a 16-words block.\n var block_size = 64;\n\n // The number of the 16-words blocks.\n var t = padded.byteLength / block_size;\n\n // The message after padding consists of t 16-word blocks that\n // are denoted with X_i[j], with 0≤i≤(t − 1) and 0≤j≤15.\n var X = new Array(t).fill(undefined).map(function (_, i) {\n return function (j) {\n return new DataView(padded, i * block_size, block_size).getUint32(j * word_size, true // Little-endian\n );\n };\n });\n\n // The result of RIPEMD-160 is contained in five 32-bit words,\n // which form the internal state of the algorithm. The final\n // content of these five 32-bit words is converted to a 160-bit\n // string, again using the little-endian convention.\n var h = [0x67452301, // h_0\n 0xEFCDAB89, // h_1\n 0x98BADCFE, // h_2\n 0x10325476, // h_3\n 0xC3D2E1F0 // h_4\n ];\n\n for (var i = 0; i < t; ++i) {\n var A = h[0],\n B = h[1],\n C = h[2],\n D = h[3],\n E = h[4];\n var AP = A,\n BP = B,\n CP = C,\n DP = D,\n EP = E;\n for (var j = 0; j < 80; ++j) {\n // Left rounds\n var _T = RIPEMD160.add_modulo32(RIPEMD160.rol32(RIPEMD160.add_modulo32(A, RIPEMD160.f(j, B, C, D), X[i](r[j]), RIPEMD160.K(j)), s[j]), E);\n A = E;\n E = D;\n D = RIPEMD160.rol32(C, 10);\n C = B;\n B = _T;\n\n // Right rounds\n _T = RIPEMD160.add_modulo32(RIPEMD160.rol32(RIPEMD160.add_modulo32(AP, RIPEMD160.f(79 - j, BP, CP, DP), X[i](rP[j]), RIPEMD160.KP(j)), sP[j]), EP);\n AP = EP;\n EP = DP;\n DP = RIPEMD160.rol32(CP, 10);\n CP = BP;\n BP = _T;\n }\n var T = RIPEMD160.add_modulo32(h[1], C, DP);\n h[1] = RIPEMD160.add_modulo32(h[2], D, EP);\n h[2] = RIPEMD160.add_modulo32(h[3], E, AP);\n h[3] = RIPEMD160.add_modulo32(h[4], A, BP);\n h[4] = RIPEMD160.add_modulo32(h[0], B, CP);\n h[0] = T;\n }\n\n // The final output string then consists of the concatenatation\n // of h_0, h_1, h_2, h_3, and h_4 after converting each h_i to a\n // 4-byte string using the little-endian convention.\n var result = new ArrayBuffer(20);\n var data_view = new DataView(result);\n h.forEach(function (h_i, i) {\n return data_view.setUint32(i * 4, h_i, true);\n });\n return result;\n }\n }]);\n\n return RIPEMD160;\n}();\n\nmodule.exports = {\n RIPEMD160: RIPEMD160\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || 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\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\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'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","(function (global) {\n 'use strict';\n\n function fetchPonyfill(options) {\n var Promise = options && options.Promise || global.Promise;\n var XMLHttpRequest = options && options.XMLHttpRequest || global.XMLHttpRequest;\n\n return (function () {\n var globalThis = Object.create(global, {\n fetch: {\n value: undefined,\n writable: true\n }\n });\n\n (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.WHATWGFetch = {})));\n }(this, (function (exports) { 'use strict';\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : '';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n })));\n\n\n return {\n fetch: globalThis.fetch,\n Headers: globalThis.Headers,\n Request: globalThis.Request,\n Response: globalThis.Response,\n DOMException: globalThis.DOMException\n };\n }());\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return fetchPonyfill;\n });\n } else if (typeof exports === 'object') {\n module.exports = fetchPonyfill;\n } else {\n global.fetchPonyfill = fetchPonyfill;\n }\n}(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof global !== 'undefined' ? global : this));\n\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\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\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\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\nvar forEach = 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 (toStr.call(list) === '[object Array]') {\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\nmodule.exports = forEach;\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 $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 $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 = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\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')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\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'%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\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(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.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 GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\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 test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\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/* 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\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 (sym 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\tvar descriptor = 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('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\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\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\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","export var HashConnectConnectionState;\n(function (HashConnectConnectionState) {\n HashConnectConnectionState[\"Connecting\"] = \"Connecting\";\n HashConnectConnectionState[\"Connected\"] = \"Connected\";\n HashConnectConnectionState[\"Disconnected\"] = \"Disconnected\";\n HashConnectConnectionState[\"Paired\"] = \"Paired\";\n})(HashConnectConnectionState || (HashConnectConnectionState = {}));\n//# sourceMappingURL=hashconnect.js.map","// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js\n\nvar ws = null\n\nif (typeof WebSocket !== 'undefined') {\n ws = WebSocket\n} else if (typeof MozWebSocket !== 'undefined') {\n ws = MozWebSocket\n} else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket\n} else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket\n} else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket\n}\n\nexport default ws\n","import { Event } from \"ts-typed-events\";\nimport { HashConnectConnectionState } from \".\";\nimport WebSocket from 'isomorphic-ws';\nexport class WebSocketRelay {\n constructor(hc) {\n this.subscribedTopics = [];\n this.connected = new Event();\n this.payload = new Event();\n this.hc = hc;\n }\n // TODO: is there a better way to do this?\n processMessage(e) {\n if (this.hc.debug)\n console.log(\"hashconnect - emitting payload\");\n let dataStr = \"\";\n if (typeof e.data === \"string\") {\n dataStr = e.data;\n }\n else {\n dataStr = e.data.toString();\n }\n this.payload.emit(JSON.parse(dataStr));\n }\n async init() {\n // TODO error flow\n return new Promise((resolve) => {\n this.connectToSocket(() => {\n resolve();\n });\n });\n }\n connectToSocket(callback) {\n // this.socket = new WebSocket('ws://localhost:9001');\n this.socket = new WebSocket('wss://hashconnect.hashpack.app');\n this.socket.onopen = () => {\n if (this.hc.debug)\n console.log(\"hashconnect - connected\");\n this.hc.connectionStatusChangeEvent.emit(HashConnectConnectionState.Connected);\n callback();\n };\n this.socket.onclose = () => {\n this.hc.status = HashConnectConnectionState.Disconnected;\n if (this.hc.debug)\n console.log(\"hashconnect - disconnected\");\n this.hc.connectionStatusChangeEvent.emit(HashConnectConnectionState.Disconnected);\n setTimeout(() => {\n this.reconnect();\n }, 300);\n };\n }\n reconnect() {\n if (this.hc.debug)\n console.log(\"hashconnect - reconnecting...\");\n this.connectToSocket(async () => {\n for (let topic of this.subscribedTopics) {\n await this.subscribe(topic);\n }\n this.hc.status = HashConnectConnectionState.Connected;\n if (this.hc.debug)\n console.log(\"hashconnect - reconnected\");\n });\n }\n async subscribe(topic) {\n if (this.hc.debug)\n console.log(\"hashconnect - Subscribing to topic id \" + topic);\n if (this.subscribedTopics.indexOf(topic) == -1)\n this.subscribedTopics.push(topic);\n this.socket.send(JSON.stringify({ action: 'sub', topic: topic }));\n this.socket.onmessage = (e) => {\n if (this.hc.debug)\n console.log(\"process\", e);\n this.processMessage(e);\n };\n }\n addDecryptionKey(privKey, topic) {\n console.log(\"hashconnect - Adding decryption key \\n PrivKey: \" + privKey);\n if (this.hc.debug)\n console.log(\"hashconnect - Adding decryption key \\n PrivKey: \" + privKey);\n this.hc.encryptionKeys[topic] = privKey;\n }\n async unsubscribe(topic) {\n if (this.hc.debug)\n console.log(\"hashconnect - Unsubscribing to \" + topic);\n this.socket.send(JSON.stringify({ action: \"unsub\", topic: topic }));\n }\n // TODO: determine appropriate types for sending messages, string should suffice for now\n async publish(topic, message, pubKey) {\n const msg = {\n action: \"pub\",\n payload: JSON.stringify(message),\n topic: topic\n };\n if (this.hc.debug)\n console.log(\"hashconnect - Sending payload to \" + topic, \"\\n encrypted with \" + pubKey);\n await this.socket.send(JSON.stringify(msg));\n }\n}\n//# sourceMappingURL=relay.js.map","export class RelayMessage {\n constructor(timestamp, type, data, topic) {\n this.timestamp = timestamp;\n this.type = type;\n this.data = data;\n this.topic = topic;\n }\n}\nexport var RelayMessageType;\n(function (RelayMessageType) {\n RelayMessageType[\"Transaction\"] = \"Transaction\";\n RelayMessageType[\"TransactionResponse\"] = \"TransactionResponse\";\n RelayMessageType[\"ApprovePairing\"] = \"ApprovePairing\";\n RelayMessageType[\"RejectPairing\"] = \"RejectPairing\";\n RelayMessageType[\"Acknowledge\"] = \"Acknowledge\";\n RelayMessageType[\"AdditionalAccountRequest\"] = \"AdditionalAccountRequest\";\n RelayMessageType[\"AdditionalAccountResponse\"] = \"AdditionalAccountResponse\";\n RelayMessageType[\"AuthenticationRequest\"] = \"AuthenticationRequest\";\n RelayMessageType[\"AuthenticationResponse\"] = \"AuthenticationResponse\";\n RelayMessageType[\"SigningRequest\"] = \"SigningRequest\";\n RelayMessageType[\"SigningResponse\"] = \"SigningResponse\";\n})(RelayMessageType || (RelayMessageType = {}));\n// export enum TransactionType {\n// contractCall=\"contractCall\",\n// contractCreateInstance=\"contractCreateInstance\",\n// contractUpdateInstance=\"contractUpdateInstance\",\n// contractDeleteInstance=\"contractDeleteInstance\",\n// cryptoCreateAccount=\"cryptoCreateAccount\",\n// cryptoDelete=\"cryptoDelete\",\n// cryptoTransfer=\"cryptoTransfer\",\n// cryptoUpdateAccount=\"cryptoUpdateAccount\",\n// fileAppend=\"fileAppend\",\n// fileCreate=\"fileCreate\",\n// fileDelete=\"fileDelete\",\n// fileUpdate=\"fileUpdate\",\n// systemDelete=\"systemDelete\",\n// systemUndelete=\"systemUndelete\",\n// freeze=\"freeze\",\n// consensusCreateTopic=\"consensusCreateTopic\",\n// consensusUpdateTopic=\"consensusUpdateTopic\",\n// consensusDeleteTopic=\"consensusDeleteTopic\",\n// consensusSubmitMessage=\"consensusSubmitMessage\",\n// tokenCreation=\"tokenCreation\",\n// tokenFreeze=\"tokenFreeze\",\n// tokenUnfreeze=\"tokenUnfreeze\",\n// tokenGrantKyc=\"tokenGrantKyc\",\n// tokenRevokeKyc=\"tokenRevokeKyc\",\n// tokenDeletion=\"tokenDeletion\",\n// tokenUpdate=\"tokenUpdate\",\n// tokenMint=\"tokenMint\",\n// tokenBurn=\"tokenBurn\",\n// tokenWipe=\"tokenWipe\",\n// tokenAssociate=\"tokenAssociate\",\n// tokenDissociate=\"tokenDissociate\",\n// token_pause=\"token_pause\",\n// token_unpause=\"token_unpause\",\n// scheduleDelete=\"scheduleDelete\",\n// }\n//# sourceMappingURL=relayMessage.js.map","import { v4 as uuidv4 } from 'uuid';\nimport { RelayMessage } from './';\nimport SimpleCrypto from \"simple-crypto-js\";\n// const protons = require('protons');\nexport class MessageUtil {\n // private proto = protons(`\n // message SimpleMessage {\n // uint64 timestamp = 1;\n // string type = 2;\n // string data = 3;\n // }`);\n /**\n * Compiles the simple protobuf with the specified paramaters\n *\n * @param message message to prepare\n * @param type type of message\n * @returns protobuf message\n */\n async prepareSimpleMessage(type, data, topic, hc) {\n data.id = uuidv4();\n if (hc.debug)\n console.log(\"hashconnect - Sending message - id: \" + data.id);\n //uncomment this to encode as protobuff\n let encryptedData = await this.encrypt(JSON.stringify(data), hc.encryptionKeys[data.topic], hc);\n let message = new RelayMessage(Date.now(), type, encryptedData, topic\n // JSON.stringify(data)\n );\n return JSON.stringify(message);\n }\n async decode(payload, hc) {\n if (hc.debug)\n console.log(\"hashconnect - decoding message payload\");\n //todo: this is temporary to enable backwards compatibility\n let parsedPayload = payload;\n if (typeof (payload) == \"string\")\n parsedPayload = JSON.parse(payload);\n let message = parsedPayload;\n message.data = await this.decrypt(message.data, hc.encryptionKeys[message.topic], hc);\n //uncomment this to decode protobuf\n // return this.proto.SimpleMessage.decode(payload)\n // this.decrypt(payload, hc.encryptionKeys[])\n return message;\n }\n /**\n * Generate a random topic ID UUID\n *\n * @returns random UUID topic ID\n */\n createRandomTopicId() {\n return uuidv4();\n }\n async encrypt(string, key, hc) {\n if (hc.debug)\n console.log(\"hashconnect - encrypting with key: \" + key);\n if (hc.debug)\n console.log(\"Topic key mapping\", hc.encryptionKeys);\n var simpleCrypto = new SimpleCrypto(key);\n return simpleCrypto.encrypt(string);\n }\n async decrypt(string, key, hc) {\n if (hc.debug)\n console.log(\"hashconnect - decryption with key: \" + key);\n var simpleCrypto = new SimpleCrypto(key);\n let text = simpleCrypto.decrypt(string);\n return text;\n }\n}\n//# sourceMappingURL=message-utils.js.map","import { HashConnectConnectionState } from \"../types\";\nimport { RelayMessageType } from \".\";\nexport class MessageHandler {\n async onPayload(message, hc) {\n const parsedData = message.data;\n if (message.origin)\n parsedData.origin = message.origin;\n if (hc.debug)\n console.log(`hashconnect - Message Received of type ${message.type}, sent at ${message.timestamp.toString()}`, parsedData);\n // Should always have a topic\n if (!parsedData.topic) {\n console.error(\"hashconnect - no topic in message\");\n }\n switch (message.type) {\n case RelayMessageType.ApprovePairing:\n if (hc.debug)\n console.log(\"hashconnect - approved\", message.data);\n let approval_data = message.data;\n let newPairingData = {\n accountIds: approval_data.accountIds,\n metadata: approval_data.metadata,\n network: approval_data.network,\n topic: approval_data.topic,\n origin: approval_data.origin,\n encryptionKey: hc.hcData.encryptionKey,\n lastUsed: new Date().getTime()\n };\n approval_data.pairingData = newPairingData;\n hc.pairingEvent.emit(approval_data);\n hc.connectionStatusChangeEvent.emit(HashConnectConnectionState.Paired);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[approval_data.topic], approval_data.id);\n break;\n case RelayMessageType.Acknowledge:\n let ack_data = message.data;\n if (hc.debug)\n console.log(\"hashconnect - acknowledged - id: \" + ack_data.msg_id);\n hc.acknowledgeMessageEvent.emit(ack_data);\n break;\n case RelayMessageType.Transaction:\n if (hc.debug)\n console.log(\"hashconnect - Got transaction\", message);\n let transaction_data = message.data;\n transaction_data.byteArray = new Uint8Array(Buffer.from(transaction_data.byteArray, 'base64'));\n hc.transactionEvent.emit(transaction_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[transaction_data.topic], transaction_data.id);\n break;\n case RelayMessageType.TransactionResponse:\n if (hc.debug)\n console.log(\"hashconnect - Got transaction response\", message);\n let transaction_response_data = message.data;\n if (transaction_response_data.signedTransaction)\n transaction_response_data.signedTransaction = new Uint8Array(Buffer.from(transaction_response_data.signedTransaction, 'base64'));\n if (transaction_response_data.receipt)\n transaction_response_data.receipt = new Uint8Array(Buffer.from(transaction_response_data.receipt, 'base64'));\n if (transaction_response_data.response)\n transaction_response_data.response = JSON.parse(transaction_response_data.response);\n hc.transactionResolver(transaction_response_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[transaction_response_data.topic], transaction_response_data.id);\n break;\n case RelayMessageType.AdditionalAccountRequest:\n if (hc.debug)\n console.log(\"hashconnect - Got account info request\", message);\n let request_data = message.data;\n hc.additionalAccountRequestEvent.emit(request_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[request_data.topic], request_data.id);\n break;\n case RelayMessageType.AdditionalAccountResponse:\n if (hc.debug)\n console.log(\"hashconnect - Got account info response\", message);\n let response_data = message.data;\n hc.additionalAccountResolver(response_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[response_data.topic], response_data.id);\n break;\n //auth\n case RelayMessageType.AuthenticationRequest:\n if (hc.debug)\n console.log(\"hashconnect - Got auth request\", message);\n let auth_request_data = message.data;\n auth_request_data.serverSignature = new Uint8Array(Buffer.from(auth_request_data.serverSignature, 'base64'));\n hc.authRequestEvent.emit(auth_request_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[auth_request_data.topic], auth_request_data.id);\n break;\n case RelayMessageType.AuthenticationResponse:\n if (hc.debug)\n console.log(\"hashconnect - Got auth response\", message);\n let auth_response_data = message.data;\n if (auth_response_data.userSignature)\n auth_response_data.userSignature = new Uint8Array(Buffer.from(auth_response_data.userSignature, 'base64'));\n if (auth_response_data.signedPayload && auth_response_data.signedPayload.serverSignature)\n auth_response_data.signedPayload.serverSignature = new Uint8Array(Buffer.from(auth_response_data.signedPayload.serverSignature, 'base64'));\n hc.authResolver(auth_response_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[auth_response_data.topic], auth_response_data.id);\n break;\n //signing\n case RelayMessageType.SigningRequest:\n if (hc.debug)\n console.log(\"hashconnect - Got sign request\", message);\n let sign_request_data = message.data;\n hc.signRequestEvent.emit(sign_request_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[sign_request_data.topic], sign_request_data.id);\n break;\n case RelayMessageType.SigningResponse:\n if (hc.debug)\n console.log(\"hashconnect - Got sign response\", message);\n let sign_response_data = message.data;\n if (sign_response_data.userSignature)\n sign_response_data.userSignature = new Uint8Array(Buffer.from(sign_response_data.userSignature, 'base64'));\n hc.signResolver(sign_response_data);\n await hc.acknowledge(parsedData.topic, hc.encryptionKeys[sign_response_data.topic], sign_response_data.id);\n break;\n default:\n break;\n }\n }\n}\n//# sourceMappingURL=message-handler.js.map","import { AccountBalanceQuery, AccountInfoQuery, AccountRecordsQuery, Client, TransactionReceiptQuery } from '@hashgraph/sdk';\nexport class HashConnectProvider {\n constructor(networkName, hashconnect, topicId, accountToSign) {\n this.hashconnect = hashconnect;\n this.network = networkName;\n this.client = Client.forName(networkName);\n this.topicId = topicId;\n this.accountToSign = accountToSign;\n }\n getLedgerId() {\n return this.client.ledgerId;\n }\n getNetwork() {\n return this.client.network;\n }\n getMirrorNetwork() {\n throw new Error(\"Get Mirror Network not implemented in HashConnect provider\");\n return [];\n }\n ;\n getAccountBalance(accountId) {\n return new AccountBalanceQuery()\n .setAccountId(accountId)\n .execute(this.client);\n }\n getAccountInfo(accountId) {\n return new AccountInfoQuery()\n .setAccountId(accountId)\n .execute(this.client);\n }\n getAccountRecords(accountId) {\n return new AccountRecordsQuery()\n .setAccountId(accountId)\n .execute(this.client);\n }\n getTransactionReceipt(transactionId) {\n return new TransactionReceiptQuery()\n .setTransactionId(transactionId)\n .execute(this.client);\n }\n waitForReceipt(response) {\n return new TransactionReceiptQuery()\n .setNodeAccountIds([response.nodeId])\n .setTransactionId(response.transactionId)\n .execute(this.client);\n }\n async call(request) {\n const transaction = {\n byteArray: this.getBytesOf(request),\n metadata: {\n accountToSign: this.accountToSign.toString(),\n returnTransaction: false,\n },\n topic: this.topicId,\n };\n let res = await this.hashconnect.sendTransaction(this.topicId, transaction);\n let response = res.response;\n return response;\n throw new Error(`We only know how to forward Transactions and Queries.`);\n }\n getBytesOf(request) {\n let transaction = request;\n let query;\n if (!transaction)\n query = request;\n if (!transaction && !query)\n throw new Error(\"Only Transactions and Queries can be serialized to be sent for signing by the HashPack wallet.\");\n if (transaction)\n return request.toBytes();\n else\n return request.toBytes();\n }\n}\n//# sourceMappingURL=provider.js.map","import { AccountId, TransactionId, AccountBalanceQuery, AccountInfoQuery, AccountRecordsQuery } from \"@hashgraph/sdk\";\nexport class HashConnectSigner {\n constructor(hashconnect, provider, accountToSign, topic) {\n this.hashconnect = hashconnect;\n this.provider = provider;\n this.accountToSign = accountToSign;\n this.topicId = topic;\n }\n getLedgerId() {\n return this.provider.client.ledgerId;\n }\n ;\n getAccountId() {\n return AccountId.fromString(this.accountToSign);\n }\n ;\n getNetwork() {\n let network = {};\n network[this.accountToSign.toString()] = this.provider.network;\n return network;\n }\n ;\n getMirrorNetwork() {\n throw new Error(\"Get Mirror Network not implemented in HashConnect\");\n return [];\n }\n ;\n sign(messages) {\n throw new Error(\"Sign messages not implemented in HashConnect\");\n console.log(messages);\n }\n ;\n getAccountBalance() {\n return new AccountBalanceQuery()\n .setAccountId(this.accountToSign)\n .execute(this.provider.client);\n }\n getAccountInfo() {\n return new AccountInfoQuery()\n .setAccountId(this.accountToSign)\n .execute(this.provider.client);\n }\n getAccountRecords() {\n return new AccountRecordsQuery()\n .setAccountId(this.accountToSign)\n .execute(this.provider.client);\n }\n async signTransaction(transaction) {\n return transaction.freezeWith(this.provider.client);\n }\n ;\n checkTransaction(transaction) {\n throw new Error(\"Check transaction not implemented in HashConnect\");\n console.log(transaction);\n }\n ;\n async populateTransaction(transaction) {\n // await this.checkTransaction(transaction);\n transaction.setTransactionId(TransactionId.generate(this.accountToSign));\n transaction.freezeWith(this.provider.client);\n // transaction.setNodeAccountIds([]);\n return transaction;\n }\n ;\n async call(request) {\n const transaction = {\n byteArray: this.getBytesOf(request),\n metadata: {\n accountToSign: this.accountToSign.toString(),\n returnTransaction: false,\n },\n topic: this.topicId,\n };\n let res = await this.hashconnect.sendTransaction(this.topicId, transaction);\n let response = res.response;\n return response;\n }\n getBytesOf(request) {\n let transaction = request;\n let query;\n if (!transaction)\n query = request;\n if (!transaction && !query)\n throw new Error(\"Only Transactions and Queries can be serialized to be sent for signing by the HashPack wallet.\");\n if (transaction)\n return request.toBytes();\n else\n return request.toBytes();\n }\n}\n//# sourceMappingURL=signer.js.map","import { Event } from \"ts-typed-events\";\nimport { WebSocketRelay } from \"./types/relay\";\nimport { MessageUtil, MessageHandler, RelayMessageType } from \"./message\";\nimport { HashConnectConnectionState } from \"./types/hashconnect\";\nimport { HashConnectProvider } from \"./provider/provider\";\nimport { HashConnectSigner } from \"./provider/signer\";\nglobal.Buffer = global.Buffer || require('buffer').Buffer;\n/**\n * Main interface with hashpack\n */\nexport class HashConnect {\n constructor(debug) {\n this.encryptionKeys = {}; //enc keys with topic id as the key\n this.debug = false;\n this.status = HashConnectConnectionState.Disconnected; //do we even need this?\n this.hcData = {\n topic: \"\",\n pairingString: \"\",\n encryptionKey: \"\",\n pairingData: [],\n };\n this.relay = new WebSocketRelay(this);\n this.foundExtensionEvent = new Event();\n this.foundIframeEvent = new Event();\n this.pairingEvent = new Event();\n this.transactionEvent = new Event();\n this.acknowledgeMessageEvent = new Event();\n this.additionalAccountRequestEvent = new Event();\n this.connectionStatusChangeEvent = new Event();\n this.authRequestEvent = new Event();\n this.signRequestEvent = new Event();\n this.messages = new MessageUtil();\n this.messageParser = new MessageHandler();\n if (debug)\n this.debug = debug;\n this.setupEvents();\n }\n async init(metadata, network, singleAccount = true) {\n return new Promise(async (resolve) => {\n let initData = {\n topic: \"\",\n pairingString: \"\",\n encryptionKey: \"\",\n savedPairings: []\n };\n this.metadata = metadata;\n if (this.debug)\n console.log(\"hashconnect - Initializing\");\n if (typeof window !== \"undefined\") {\n this.metadata.url = window.location.origin;\n }\n else if (!metadata.url) {\n throw new Error(\"metadata.url must be defined if not running hashconnect within a browser\");\n }\n await this.relay.init();\n if (this.debug)\n console.log(\"hashconnect - Initialized\");\n if (!this.loadLocalData()) {\n if (this.debug)\n console.log(\"hashconnect - No local data found, initializing\");\n //first init, store the private key in localstorage\n this.hcData.encryptionKey = await this.generateEncryptionKeys();\n this.metadata.encryptionKey = this.hcData.encryptionKey;\n // this.metadata.publicKey = this.hcData.encryptionKey; //todo: remove as depracted\n initData.encryptionKey = this.hcData.encryptionKey;\n //then connect, storing the new topic in localstorage\n const topic = await this.connect();\n if (this.debug)\n console.log(\"hashconnect - Received state\", topic);\n this.hcData.topic = topic;\n initData.topic = topic;\n //generate a pairing string, which you can display and generate a QR code from\n this.hcData.pairingString = this.generatePairingString(topic, network, !singleAccount);\n initData.pairingString = this.hcData.pairingString;\n this.saveDataInLocalstorage();\n this.status = HashConnectConnectionState.Connected;\n this.connectionStatusChangeEvent.emit(HashConnectConnectionState.Connected);\n }\n else {\n if (this.debug)\n console.log(\"hashconnect - Found saved local data\", this.hcData);\n this.metadata.encryptionKey = this.hcData.encryptionKey;\n this.status = HashConnectConnectionState.Connecting;\n this.connectionStatusChangeEvent.emit(HashConnectConnectionState.Connecting);\n initData.pairingString = this.hcData.pairingString;\n initData.topic = this.hcData.topic;\n initData.encryptionKey = this.hcData.encryptionKey;\n initData.savedPairings = this.hcData.pairingData;\n this.connect(initData.topic, this.metadata, initData.encryptionKey);\n this.status = HashConnectConnectionState.Connected;\n this.connectionStatusChangeEvent.emit(HashConnectConnectionState.Connected);\n for (let pairing of this.hcData.pairingData) {\n await this.connect(pairing.topic, pairing.metadata, pairing.encryptionKey);\n }\n if (this.hcData.pairingData.length > 0) {\n this.status = HashConnectConnectionState.Paired;\n this.connectionStatusChangeEvent.emit(HashConnectConnectionState.Paired);\n }\n }\n if (this.debug)\n console.log(\"hashconnect - init data\", initData);\n this.findLocalWallets();\n resolve(initData);\n });\n }\n async connect(topic, metadataToConnect, encryptionKey) {\n if (!topic) {\n topic = this.messages.createRandomTopicId();\n this.encryptionKeys[topic] = this.hcData.encryptionKey;\n if (this.debug)\n console.log(\"hashconnect - Created new topic id - \" + topic);\n }\n if (metadataToConnect) {\n this.encryptionKeys[topic] = encryptionKey;\n }\n await this.relay.subscribe(topic);\n return topic;\n }\n async disconnect(topic) {\n if (topic != this.hcData.topic) //only unsub from topic if not dapp\n await this.relay.unsubscribe(topic);\n let index = this.hcData.pairingData.findIndex(pairing => pairing.topic == topic);\n this.hcData.pairingData.splice(index, 1);\n if (this.hcData.pairingData.length == 0) {\n this.status = HashConnectConnectionState.Connected;\n this.connectionStatusChangeEvent.emit(HashConnectConnectionState.Connected);\n }\n this.saveDataInLocalstorage();\n }\n /**\n * Set up event connections\n */\n setupEvents() {\n // This will listen for a payload emission from the relay\n if (this.debug)\n console.log(\"hashconnect - Setting up events\");\n this.relay.payload.on(async (payload) => {\n if (!payload)\n return;\n //this is redundant until protobuffs are re-implemented\n const message = await this.messages.decode(payload, this);\n await this.messageParser.onPayload(message, this);\n });\n this.pairingEvent.on((pairingEvent) => {\n this.hcData.pairingData.push(pairingEvent.pairingData);\n this.saveDataInLocalstorage();\n });\n this.foundIframeEvent.on(walletMetadata => {\n if (this.debug)\n console.log(\"hashconnect - Found iframe wallet\", walletMetadata);\n this.connectToIframeParent();\n });\n }\n /**\n * Local data management\n */\n saveDataInLocalstorage() {\n if (typeof window === \"undefined\" || typeof localStorage === \"undefined\")\n return;\n let data = JSON.stringify(this.hcData);\n if (this.debug)\n console.log(\"hashconnect - saving local data\", this.hcData);\n localStorage.setItem(\"hashconnectData\", data);\n }\n loadLocalData() {\n if (typeof window === \"undefined\" || typeof localStorage === \"undefined\")\n return false;\n let foundData = localStorage.getItem(\"hashconnectData\");\n if (foundData) {\n let data = JSON.parse(foundData);\n if (!data.pairingData || !data.encryptionKey) {\n if (this.debug)\n console.log(\"hashconnect - legacy save data found, creating new data\");\n return false;\n }\n this.hcData = data;\n return true;\n }\n else\n return false;\n }\n async clearConnectionsAndData() {\n if (this.debug)\n console.log(\"hashconnect - clearing local data - you will need to run init() again\");\n for (let pairing of this.hcData.pairingData) {\n await this.relay.unsubscribe(pairing.topic);\n }\n this.hcData = {\n topic: \"\",\n pairingString: \"\",\n encryptionKey: \"\",\n pairingData: [],\n };\n if (typeof localStorage !== \"undefined\") {\n localStorage.removeItem(\"hashconnectData\");\n }\n this.status = HashConnectConnectionState.Disconnected;\n this.connectionStatusChangeEvent.emit(HashConnectConnectionState.Disconnected);\n }\n /**\n * Send functions\n */\n async sendTransaction(topic, transaction) {\n transaction.byteArray = Buffer.from(transaction.byteArray).toString(\"base64\");\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.Transaction, transaction, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n this.sendEncryptedLocalTransaction(msg);\n return await new Promise(resolve => this.transactionResolver = resolve);\n }\n async requestAdditionalAccounts(topic, message) {\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.AdditionalAccountRequest, message, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n return await new Promise(resolve => this.additionalAccountResolver = resolve);\n }\n async sendAdditionalAccounts(topic, message) {\n message.accountIds = message.accountIds.map(id => { return id; });\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.AdditionalAccountResponse, message, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n return message.id;\n }\n async sendTransactionResponse(topic, message) {\n if (message.receipt)\n message.receipt = Buffer.from(message.receipt).toString(\"base64\");\n if (message.signedTransaction)\n message.signedTransaction = Buffer.from(message.signedTransaction).toString(\"base64\");\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.TransactionResponse, message, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n return message.id;\n }\n async pair(pairingData, accounts, network) {\n if (this.debug)\n console.log(\"hashconnect - Pairing to \" + pairingData.metadata.name);\n let state = await this.connect(pairingData.topic);\n let msg = {\n metadata: this.metadata,\n topic: pairingData.topic,\n accountIds: accounts,\n network: network\n };\n let newPairingData = {\n accountIds: msg.accountIds,\n metadata: pairingData.metadata,\n network: msg.network,\n topic: msg.topic,\n origin: msg.origin,\n lastUsed: new Date().getTime(),\n encryptionKey: pairingData.metadata.encryptionKey || pairingData.metadata.publicKey,\n };\n this.hcData.pairingData.push(newPairingData);\n this.saveDataInLocalstorage();\n //todo: remove as backwards compatibility\n if (newPairingData.metadata.publicKey) { //this is a old version of hashconnect trying to connect, do some trickery for backwards compatibility\n msg.metadata.publicKey = newPairingData.metadata.publicKey;\n }\n //clean up pairing data\n msg.metadata.description = this.sanitizeString(msg.metadata.description);\n msg.metadata.name = this.sanitizeString(msg.metadata.name);\n msg.network = this.sanitizeString(msg.network);\n msg.metadata.url = this.sanitizeString(msg.metadata.url);\n msg.accountIds = msg.accountIds.map(id => { return id; });\n //todo: remove as backwards compatibility (if statement only)\n if (pairingData.metadata.encryptionKey)\n msg.metadata.encryptionKey = pairingData.metadata.encryptionKey;\n //set topic/key mapping\n this.encryptionKeys[pairingData.topic] = pairingData.metadata.encryptionKey;\n if (pairingData.metadata.publicKey)\n this.encryptionKeys[pairingData.topic] = pairingData.metadata.publicKey; //todo: remove as backwards compatibility\n //send pairing approval\n const payload = await this.messages.prepareSimpleMessage(RelayMessageType.ApprovePairing, msg, msg.topic, this);\n this.relay.publish(pairingData.topic, payload, this.encryptionKeys[pairingData.topic]);\n return newPairingData;\n }\n async reject(topic, reason, msg_id) {\n let reject = {\n reason: reason,\n topic: topic,\n msg_id: msg_id\n };\n reject.reason = this.sanitizeString(reject.reason);\n // create protobuf message\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.RejectPairing, reject, topic, this);\n // Publish the rejection\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n }\n async acknowledge(topic, pubKey, msg_id) {\n const ack = {\n result: true,\n topic: topic,\n msg_id: msg_id\n };\n const ackPayload = await this.messages.prepareSimpleMessage(RelayMessageType.Acknowledge, ack, topic, this);\n await this.relay.publish(topic, ackPayload, pubKey);\n }\n /**\n * Authenticate\n */\n async authenticate(topic, account_id, server_signing_account, serverSignature, payload) {\n let message = {\n topic: topic,\n accountToSign: account_id,\n serverSigningAccount: server_signing_account,\n serverSignature: serverSignature,\n payload: payload\n };\n message.serverSignature = Buffer.from(message.serverSignature).toString(\"base64\");\n console.log(message.serverSignature);\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.AuthenticationRequest, message, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n this.sendEncryptedLocalTransaction(msg);\n return await new Promise(resolve => this.authResolver = resolve);\n }\n async sendAuthenticationResponse(topic, message) {\n if (message.userSignature)\n message.userSignature = Buffer.from(message.userSignature).toString(\"base64\");\n if (message.signedPayload)\n message.signedPayload.serverSignature = Buffer.from(message.signedPayload.serverSignature).toString(\"base64\");\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.AuthenticationResponse, message, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n return message.id;\n }\n /**\n * Generic Signing\n */\n async sign(topic, account_id, payload) {\n let message = {\n topic: topic,\n accountToSign: account_id,\n payload: payload\n };\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.SigningRequest, message, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n this.sendEncryptedLocalTransaction(msg);\n return await new Promise(resolve => this.signResolver = resolve);\n }\n async sendSigningResponse(topic, message) {\n if (message.userSignature)\n message.userSignature = Buffer.from(message.userSignature).toString(\"base64\");\n const msg = await this.messages.prepareSimpleMessage(RelayMessageType.SigningResponse, message, topic, this);\n await this.relay.publish(topic, msg, this.encryptionKeys[topic]);\n return message.id;\n }\n /**\n * Helpers\n */\n generatePairingString(topic, network, multiAccount) {\n if (this.debug)\n console.log(\"hashconnect - Generating pairing string\");\n let data = {\n metadata: this.metadata,\n topic: topic,\n network: network,\n multiAccount: multiAccount,\n };\n data.metadata.description = this.sanitizeString(data.metadata.description);\n data.metadata.name = this.sanitizeString(data.metadata.name);\n data.network = this.sanitizeString(data.network);\n data.metadata.url = this.sanitizeString(data.metadata.url);\n let pairingString = Buffer.from(JSON.stringify(data)).toString(\"base64\");\n this.hcData.pairingString = pairingString;\n return pairingString;\n }\n decodePairingString(pairingString) {\n let json_string = Buffer.from(pairingString, 'base64').toString();\n let data = JSON.parse(json_string);\n return data;\n }\n async generateEncryptionKeys() {\n let key = this.messages.createRandomTopicId();\n if (this.debug)\n console.log(\"hashconnect - Generated new encryption key - \" + key);\n return key;\n }\n sanitizeString(str) {\n if (!str)\n return \"\";\n return str.replace(/[^\\w. ]/gi, function (c) {\n if (c == \".\")\n return \".\";\n return '&#' + c.charCodeAt(0) + ';';\n });\n }\n /**\n * Local wallet stuff\n */\n findLocalWallets() {\n if (typeof window === \"undefined\") {\n if (this.debug)\n console.log(\"hashconnect - Cancel findLocalWallets - no window object\");\n return;\n }\n if (this.debug)\n console.log(\"hashconnect - Finding local wallets\");\n window.addEventListener(\"message\", (event) => {\n if (event.data.type && (event.data.type == \"hashconnect-query-extension-response\")) {\n if (this.debug)\n console.log(\"hashconnect - Local wallet metadata recieved\", event.data);\n if (event.data.metadata)\n this.foundExtensionEvent.emit(event.data.metadata);\n }\n if (event.data.type && event.data.type == \"hashconnect-iframe-response\") {\n if (this.debug)\n console.log(\"hashconnect - iFrame wallet metadata recieved\", event.data);\n if (event.data.metadata)\n this.foundIframeEvent.emit(event.data.metadata);\n }\n }, false);\n setTimeout(() => {\n window.postMessage({ type: \"hashconnect-query-extension\" }, \"*\");\n if (window.parent)\n window.parent.postMessage({ type: \"hashconnect-iframe-query\" }, '*');\n }, 50);\n }\n connectToIframeParent() {\n if (typeof window === \"undefined\") {\n if (this.debug)\n console.log(\"hashconnect - Cancel iframe connection - no window object\");\n return;\n }\n if (this.debug)\n console.log(\"hashconnect - Connecting to iframe parent wallet\");\n window.parent.postMessage({ type: \"hashconnect-iframe-pairing\", pairingString: this.hcData.pairingString }, '*');\n }\n connectToLocalWallet() {\n if (typeof window === \"undefined\") {\n if (this.debug)\n console.log(\"hashconnect - Cancel connect to local wallet - no window object\");\n return;\n }\n if (this.debug)\n console.log(\"hashconnect - Connecting to local wallet\");\n //todo: add extension metadata support\n window.postMessage({ type: \"hashconnect-connect-extension\", pairingString: this.hcData.pairingString }, \"*\");\n }\n sendEncryptedLocalTransaction(message) {\n if (typeof window === \"undefined\") {\n if (this.debug)\n console.log(\"hashconnect - Cancel send local transaction - no window object\");\n return;\n }\n if (this.debug)\n console.log(\"hashconnect - sending local transaction\", message);\n window.postMessage({ type: \"hashconnect-send-local-transaction\", message: message }, \"*\");\n }\n async decodeLocalTransaction(message) {\n const local_message = await this.messages.decode(message, this);\n return local_message;\n }\n /**\n * Provider stuff\n */\n getProvider(network, topicId, accountToSign) {\n return new HashConnectProvider(network, this, topicId, accountToSign);\n }\n getSigner(provider) {\n return new HashConnectSigner(this, provider, provider.accountToSign, provider.topicId);\n }\n getPairingByTopic(topic) {\n let pairingData = this.hcData.pairingData.find(pairing => {\n return pairing.topic == topic;\n });\n if (!pairingData) {\n return null;\n }\n return pairingData;\n }\n /**\n * Signer stuff\n */\n createOperatorSigner(accountId) {\n const operatorSigner = async (txBodyBytes) => {\n const transaction = {\n topic: this.hcData.topic,\n byteArray: txBodyBytes,\n metadata: {\n accountToSign: accountId,\n returnTransaction: true,\n hideNft: false,\n getRecord: false\n }\n };\n const res = await this.sendTransaction(this.hcData.topic, transaction);\n if (res.error) {\n throw new Error(`Hashconnect failed to sign transaction: ${res.error}`);\n }\n if (typeof res.signedTransaction === 'string') {\n throw new Error(`Hashconnect unexpectedly returned a signedTransaction of type string`);\n }\n if (res.signedTransaction === undefined) {\n throw new Error(`Hashconnect unexpectedly returned an undefined signedTransaction`);\n }\n return res.signedTransaction;\n };\n return operatorSigner;\n }\n}\n//# sourceMappingURL=hashconnect.js.map","export var HashConnectConnectionState;\n(function (HashConnectConnectionState) {\n HashConnectConnectionState[\"Connecting\"] = \"Connecting\";\n HashConnectConnectionState[\"Connected\"] = \"Connected\";\n HashConnectConnectionState[\"Disconnected\"] = \"Disconnected\";\n HashConnectConnectionState[\"Paired\"] = \"Paired\";\n})(HashConnectConnectionState || (HashConnectConnectionState = {}));\n//# sourceMappingURL=hashconnect.js.map","'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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\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-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\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 toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\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};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(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 ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\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","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root, factory) {\n if ( typeof exports === 'object' ) {\n if ( typeof module === 'object' ) {\n module.exports = factory( require(\"js-sha256\"), require(\"base64-js\") );\n } else {\n exports[\"keycloak\"] = factory( require(\"js-sha256\"), require(\"base64-js\") );\n }\n } else {\n /**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n !function () { \"use strict\"; function t(t, i) { i ? (d[0] = d[16] = d[1] = d[2] = d[3] = d[4] = d[5] = d[6] = d[7] = d[8] = d[9] = d[10] = d[11] = d[12] = d[13] = d[14] = d[15] = 0, this.blocks = d) : this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], t ? (this.h0 = 3238371032, this.h1 = 914150663, this.h2 = 812702999, this.h3 = 4144912697, this.h4 = 4290775857, this.h5 = 1750603025, this.h6 = 1694076839, this.h7 = 3204075428) : (this.h0 = 1779033703, this.h1 = 3144134277, this.h2 = 1013904242, this.h3 = 2773480762, this.h4 = 1359893119, this.h5 = 2600822924, this.h6 = 528734635, this.h7 = 1541459225), this.block = this.start = this.bytes = this.hBytes = 0, this.finalized = this.hashed = !1, this.first = !0, this.is224 = t } function i(i, r, s) { var e, n = typeof i; if (\"string\" === n) { var o, a = [], u = i.length, c = 0; for (e = 0; e < u; ++e)(o = i.charCodeAt(e)) < 128 ? a[c++] = o : o < 2048 ? (a[c++] = 192 | o >> 6, a[c++] = 128 | 63 & o) : o < 55296 || o >= 57344 ? (a[c++] = 224 | o >> 12, a[c++] = 128 | o >> 6 & 63, a[c++] = 128 | 63 & o) : (o = 65536 + ((1023 & o) << 10 | 1023 & i.charCodeAt(++e)), a[c++] = 240 | o >> 18, a[c++] = 128 | o >> 12 & 63, a[c++] = 128 | o >> 6 & 63, a[c++] = 128 | 63 & o); i = a } else { if (\"object\" !== n) throw new Error(h); if (null === i) throw new Error(h); if (f && i.constructor === ArrayBuffer) i = new Uint8Array(i); else if (!(Array.isArray(i) || f && ArrayBuffer.isView(i))) throw new Error(h) } i.length > 64 && (i = new t(r, !0).update(i).array()); var y = [], p = []; for (e = 0; e < 64; ++e) { var l = i[e] || 0; y[e] = 92 ^ l, p[e] = 54 ^ l } t.call(this, r, s), this.update(p), this.oKeyPad = y, this.inner = !0, this.sharedMemory = s } var h = \"input is invalid type\", r = \"object\" == typeof window, s = r ? window : {}; s.JS_SHA256_NO_WINDOW && (r = !1); var e = !r && \"object\" == typeof self, n = !s.JS_SHA256_NO_NODE_JS && \"object\" == typeof process && process.versions && process.versions.node; n ? s = global : e && (s = self); var o = !s.JS_SHA256_NO_COMMON_JS && \"object\" == typeof module && module.exports, a = \"function\" == typeof define && define.amd, f = !s.JS_SHA256_NO_ARRAY_BUFFER && \"undefined\" != typeof ArrayBuffer, u = \"0123456789abcdef\".split(\"\"), c = [-2147483648, 8388608, 32768, 128], y = [24, 16, 8, 0], p = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], l = [\"hex\", \"array\", \"digest\", \"arrayBuffer\"], d = []; !s.JS_SHA256_NO_NODE_JS && Array.isArray || (Array.isArray = function (t) { return \"[object Array]\" === Object.prototype.toString.call(t) }), !f || !s.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW && ArrayBuffer.isView || (ArrayBuffer.isView = function (t) { return \"object\" == typeof t && t.buffer && t.buffer.constructor === ArrayBuffer }); var A = function (i, h) { return function (r) { return new t(h, !0).update(r)[i]() } }, w = function (i) { var h = A(\"hex\", i); n && (h = b(h, i)), h.create = function () { return new t(i) }, h.update = function (t) { return h.create().update(t) }; for (var r = 0; r < l.length; ++r) { var s = l[r]; h[s] = A(s, i) } return h }, b = function (t, i) { var r = eval(\"require('crypto')\"), s = eval(\"require('buffer').Buffer\"), e = i ? \"sha224\" : \"sha256\", n = function (i) { if (\"string\" == typeof i) return r.createHash(e).update(i, \"utf8\").digest(\"hex\"); if (null === i || void 0 === i) throw new Error(h); return i.constructor === ArrayBuffer && (i = new Uint8Array(i)), Array.isArray(i) || ArrayBuffer.isView(i) || i.constructor === s ? r.createHash(e).update(new s(i)).digest(\"hex\") : t(i) }; return n }, v = function (t, h) { return function (r, s) { return new i(r, h, !0).update(s)[t]() } }, _ = function (t) { var h = v(\"hex\", t); h.create = function (h) { return new i(h, t) }, h.update = function (t, i) { return h.create(t).update(i) }; for (var r = 0; r < l.length; ++r) { var s = l[r]; h[s] = v(s, t) } return h }; t.prototype.update = function (t) { if (!this.finalized) { var i, r = typeof t; if (\"string\" !== r) { if (\"object\" !== r) throw new Error(h); if (null === t) throw new Error(h); if (f && t.constructor === ArrayBuffer) t = new Uint8Array(t); else if (!(Array.isArray(t) || f && ArrayBuffer.isView(t))) throw new Error(h); i = !0 } for (var s, e, n = 0, o = t.length, a = this.blocks; n < o;) { if (this.hashed && (this.hashed = !1, a[0] = this.block, a[16] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = a[8] = a[9] = a[10] = a[11] = a[12] = a[13] = a[14] = a[15] = 0), i) for (e = this.start; n < o && e < 64; ++n)a[e >> 2] |= t[n] << y[3 & e++]; else for (e = this.start; n < o && e < 64; ++n)(s = t.charCodeAt(n)) < 128 ? a[e >> 2] |= s << y[3 & e++] : s < 2048 ? (a[e >> 2] |= (192 | s >> 6) << y[3 & e++], a[e >> 2] |= (128 | 63 & s) << y[3 & e++]) : s < 55296 || s >= 57344 ? (a[e >> 2] |= (224 | s >> 12) << y[3 & e++], a[e >> 2] |= (128 | s >> 6 & 63) << y[3 & e++], a[e >> 2] |= (128 | 63 & s) << y[3 & e++]) : (s = 65536 + ((1023 & s) << 10 | 1023 & t.charCodeAt(++n)), a[e >> 2] |= (240 | s >> 18) << y[3 & e++], a[e >> 2] |= (128 | s >> 12 & 63) << y[3 & e++], a[e >> 2] |= (128 | s >> 6 & 63) << y[3 & e++], a[e >> 2] |= (128 | 63 & s) << y[3 & e++]); this.lastByteIndex = e, this.bytes += e - this.start, e >= 64 ? (this.block = a[16], this.start = e - 64, this.hash(), this.hashed = !0) : this.start = e } return this.bytes > 4294967295 && (this.hBytes += this.bytes / 4294967296 << 0, this.bytes = this.bytes % 4294967296), this } }, t.prototype.finalize = function () { if (!this.finalized) { this.finalized = !0; var t = this.blocks, i = this.lastByteIndex; t[16] = this.block, t[i >> 2] |= c[3 & i], this.block = t[16], i >= 56 && (this.hashed || this.hash(), t[0] = this.block, t[16] = t[1] = t[2] = t[3] = t[4] = t[5] = t[6] = t[7] = t[8] = t[9] = t[10] = t[11] = t[12] = t[13] = t[14] = t[15] = 0), t[14] = this.hBytes << 3 | this.bytes >>> 29, t[15] = this.bytes << 3, this.hash() } }, t.prototype.hash = function () { var t, i, h, r, s, e, n, o, a, f = this.h0, u = this.h1, c = this.h2, y = this.h3, l = this.h4, d = this.h5, A = this.h6, w = this.h7, b = this.blocks; for (t = 16; t < 64; ++t)i = ((s = b[t - 15]) >>> 7 | s << 25) ^ (s >>> 18 | s << 14) ^ s >>> 3, h = ((s = b[t - 2]) >>> 17 | s << 15) ^ (s >>> 19 | s << 13) ^ s >>> 10, b[t] = b[t - 16] + i + b[t - 7] + h << 0; for (a = u & c, t = 0; t < 64; t += 4)this.first ? (this.is224 ? (e = 300032, w = (s = b[0] - 1413257819) - 150054599 << 0, y = s + 24177077 << 0) : (e = 704751109, w = (s = b[0] - 210244248) - 1521486534 << 0, y = s + 143694565 << 0), this.first = !1) : (i = (f >>> 2 | f << 30) ^ (f >>> 13 | f << 19) ^ (f >>> 22 | f << 10), r = (e = f & u) ^ f & c ^ a, w = y + (s = w + (h = (l >>> 6 | l << 26) ^ (l >>> 11 | l << 21) ^ (l >>> 25 | l << 7)) + (l & d ^ ~l & A) + p[t] + b[t]) << 0, y = s + (i + r) << 0), i = (y >>> 2 | y << 30) ^ (y >>> 13 | y << 19) ^ (y >>> 22 | y << 10), r = (n = y & f) ^ y & u ^ e, A = c + (s = A + (h = (w >>> 6 | w << 26) ^ (w >>> 11 | w << 21) ^ (w >>> 25 | w << 7)) + (w & l ^ ~w & d) + p[t + 1] + b[t + 1]) << 0, i = ((c = s + (i + r) << 0) >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10), r = (o = c & y) ^ c & f ^ n, d = u + (s = d + (h = (A >>> 6 | A << 26) ^ (A >>> 11 | A << 21) ^ (A >>> 25 | A << 7)) + (A & w ^ ~A & l) + p[t + 2] + b[t + 2]) << 0, i = ((u = s + (i + r) << 0) >>> 2 | u << 30) ^ (u >>> 13 | u << 19) ^ (u >>> 22 | u << 10), r = (a = u & c) ^ u & y ^ o, l = f + (s = l + (h = (d >>> 6 | d << 26) ^ (d >>> 11 | d << 21) ^ (d >>> 25 | d << 7)) + (d & A ^ ~d & w) + p[t + 3] + b[t + 3]) << 0, f = s + (i + r) << 0; this.h0 = this.h0 + f << 0, this.h1 = this.h1 + u << 0, this.h2 = this.h2 + c << 0, this.h3 = this.h3 + y << 0, this.h4 = this.h4 + l << 0, this.h5 = this.h5 + d << 0, this.h6 = this.h6 + A << 0, this.h7 = this.h7 + w << 0 }, t.prototype.hex = function () { this.finalize(); var t = this.h0, i = this.h1, h = this.h2, r = this.h3, s = this.h4, e = this.h5, n = this.h6, o = this.h7, a = u[t >> 28 & 15] + u[t >> 24 & 15] + u[t >> 20 & 15] + u[t >> 16 & 15] + u[t >> 12 & 15] + u[t >> 8 & 15] + u[t >> 4 & 15] + u[15 & t] + u[i >> 28 & 15] + u[i >> 24 & 15] + u[i >> 20 & 15] + u[i >> 16 & 15] + u[i >> 12 & 15] + u[i >> 8 & 15] + u[i >> 4 & 15] + u[15 & i] + u[h >> 28 & 15] + u[h >> 24 & 15] + u[h >> 20 & 15] + u[h >> 16 & 15] + u[h >> 12 & 15] + u[h >> 8 & 15] + u[h >> 4 & 15] + u[15 & h] + u[r >> 28 & 15] + u[r >> 24 & 15] + u[r >> 20 & 15] + u[r >> 16 & 15] + u[r >> 12 & 15] + u[r >> 8 & 15] + u[r >> 4 & 15] + u[15 & r] + u[s >> 28 & 15] + u[s >> 24 & 15] + u[s >> 20 & 15] + u[s >> 16 & 15] + u[s >> 12 & 15] + u[s >> 8 & 15] + u[s >> 4 & 15] + u[15 & s] + u[e >> 28 & 15] + u[e >> 24 & 15] + u[e >> 20 & 15] + u[e >> 16 & 15] + u[e >> 12 & 15] + u[e >> 8 & 15] + u[e >> 4 & 15] + u[15 & e] + u[n >> 28 & 15] + u[n >> 24 & 15] + u[n >> 20 & 15] + u[n >> 16 & 15] + u[n >> 12 & 15] + u[n >> 8 & 15] + u[n >> 4 & 15] + u[15 & n]; return this.is224 || (a += u[o >> 28 & 15] + u[o >> 24 & 15] + u[o >> 20 & 15] + u[o >> 16 & 15] + u[o >> 12 & 15] + u[o >> 8 & 15] + u[o >> 4 & 15] + u[15 & o]), a }, t.prototype.toString = t.prototype.hex, t.prototype.digest = function () { this.finalize(); var t = this.h0, i = this.h1, h = this.h2, r = this.h3, s = this.h4, e = this.h5, n = this.h6, o = this.h7, a = [t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, 255 & i, h >> 24 & 255, h >> 16 & 255, h >> 8 & 255, 255 & h, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, s >> 24 & 255, s >> 16 & 255, s >> 8 & 255, 255 & s, e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e, n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, 255 & n]; return this.is224 || a.push(o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o), a }, t.prototype.array = t.prototype.digest, t.prototype.arrayBuffer = function () { this.finalize(); var t = new ArrayBuffer(this.is224 ? 28 : 32), i = new DataView(t); return i.setUint32(0, this.h0), i.setUint32(4, this.h1), i.setUint32(8, this.h2), i.setUint32(12, this.h3), i.setUint32(16, this.h4), i.setUint32(20, this.h5), i.setUint32(24, this.h6), this.is224 || i.setUint32(28, this.h7), t }, i.prototype = new t, i.prototype.finalize = function () { if (t.prototype.finalize.call(this), this.inner) { this.inner = !1; var i = this.array(); t.call(this, this.is224, this.sharedMemory), this.update(this.oKeyPad), this.update(i), t.prototype.finalize.call(this) } }; var B = w(); B.sha256 = B, B.sha224 = w(!0), B.sha256.hmac = _(), B.sha224.hmac = _(!0), o ? module.exports = B : (s.sha256 = B.sha256, s.sha224 = B.sha224, a && define(function () { return B })) }();\n\n /**\n * [base64-js]{@link https://github.com/beatgammit/base64-js}\n *\n * @version v1.3.0\n * @author Kirill, Fomichev\n * @copyright Kirill, Fomichev 2014\n * @license MIT\n */\n (function (r) { if (typeof exports === \"object\" && typeof module !== \"undefined\") { module.exports = r() } else if (typeof define === \"function\" && define.amd) { define([], r) } else { var e; if (typeof window !== \"undefined\") { e = window } else if (typeof global !== \"undefined\") { e = global } else if (typeof self !== \"undefined\") { e = self } else { e = this } e.base64js = r() } })(function () { var r, e, n; return function () { function r(e, n, t) { function o(f, i) { if (!n[f]) { if (!e[f]) { var u = \"function\" == typeof require && require; if (!i && u) return u(f, !0); if (a) return a(f, !0); var v = new Error(\"Cannot find module '\" + f + \"'\"); throw v.code = \"MODULE_NOT_FOUND\", v } var d = n[f] = { exports: {} }; e[f][0].call(d.exports, function (r) { var n = e[f][1][r]; return o(n || r) }, d, d.exports, r, e, n, t) } return n[f].exports } for (var a = \"function\" == typeof require && require, f = 0; f < t.length; f++)o(t[f]); return o } return r }()({ \"/\": [function (r, e, n) { \"use strict\"; n.byteLength = d; n.toByteArray = h; n.fromByteArray = p; var t = []; var o = []; var a = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array; var f = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"; for (var i = 0, u = f.length; i < u; ++i) { t[i] = f[i]; o[f.charCodeAt(i)] = i } o[\"-\".charCodeAt(0)] = 62; o[\"_\".charCodeAt(0)] = 63; function v(r) { var e = r.length; if (e % 4 > 0) { throw new Error(\"Invalid string. Length must be a multiple of 4\") } var n = r.indexOf(\"=\"); if (n === -1) n = e; var t = n === e ? 0 : 4 - n % 4; return [n, t] } function d(r) { var e = v(r); var n = e[0]; var t = e[1]; return (n + t) * 3 / 4 - t } function c(r, e, n) { return (e + n) * 3 / 4 - n } function h(r) { var e; var n = v(r); var t = n[0]; var f = n[1]; var i = new a(c(r, t, f)); var u = 0; var d = f > 0 ? t - 4 : t; for (var h = 0; h < d; h += 4) { e = o[r.charCodeAt(h)] << 18 | o[r.charCodeAt(h + 1)] << 12 | o[r.charCodeAt(h + 2)] << 6 | o[r.charCodeAt(h + 3)]; i[u++] = e >> 16 & 255; i[u++] = e >> 8 & 255; i[u++] = e & 255 } if (f === 2) { e = o[r.charCodeAt(h)] << 2 | o[r.charCodeAt(h + 1)] >> 4; i[u++] = e & 255 } if (f === 1) { e = o[r.charCodeAt(h)] << 10 | o[r.charCodeAt(h + 1)] << 4 | o[r.charCodeAt(h + 2)] >> 2; i[u++] = e >> 8 & 255; i[u++] = e & 255 } return i } function s(r) { return t[r >> 18 & 63] + t[r >> 12 & 63] + t[r >> 6 & 63] + t[r & 63] } function l(r, e, n) { var t; var o = []; for (var a = e; a < n; a += 3) { t = (r[a] << 16 & 16711680) + (r[a + 1] << 8 & 65280) + (r[a + 2] & 255); o.push(s(t)) } return o.join(\"\") } function p(r) { var e; var n = r.length; var o = n % 3; var a = []; var f = 16383; for (var i = 0, u = n - o; i < u; i += f) { a.push(l(r, i, i + f > u ? u : i + f)) } if (o === 1) { e = r[n - 1]; a.push(t[e >> 2] + t[e << 4 & 63] + \"==\") } else if (o === 2) { e = (r[n - 2] << 8) + r[n - 1]; a.push(t[e >> 10] + t[e >> 4 & 63] + t[e << 2 & 63] + \"=\") } return a.join(\"\") } }, {}] }, {}, [])(\"/\") });\n\n /**\n * [promise-polyfill]{@link https://github.com/taylorhakes/promise-polyfill}\n *\n * @version v8.1.3\n * @author Hakes, Taylor\n * @copyright Hakes, Taylor 2014\n * @license MIT\n */\n !function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n():\"function\"==typeof define&&define.amd?define(n):n()}(0,function(){\"use strict\";function e(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})}function n(e){return!(!e||\"undefined\"==typeof e.length)}function t(){}function o(e){if(!(this instanceof o))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],c(e,this)}function r(e,n){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,o._immediateFn(function(){var t=1===e._state?n.onFulfilled:n.onRejected;if(null!==t){var o;try{o=t(e._value)}catch(r){return void f(n.promise,r)}i(n.promise,o)}else(1===e._state?i:f)(n.promise,e._value)})):e._deferreds.push(n)}function i(e,n){try{if(n===e)throw new TypeError(\"A promise cannot be resolved with itself.\");if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var t=n.then;if(n instanceof o)return e._state=3,e._value=n,void u(e);if(\"function\"==typeof t)return void c(function(e,n){return function(){e.apply(n,arguments)}}(t,n),e)}e._state=1,e._value=n,u(e)}catch(r){f(e,r)}}function f(e,n){e._state=2,e._value=n,u(e)}function u(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var n=0,t=e._deferreds.length;t>n;n++)r(e,e._deferreds[n]);e._deferreds=null}function c(e,n){var t=!1;try{e(function(e){t||(t=!0,i(n,e))},function(e){t||(t=!0,f(n,e))})}catch(o){if(t)return;t=!0,f(n,o)}}var a=setTimeout;o.prototype[\"catch\"]=function(e){return this.then(null,e)},o.prototype.then=function(e,n){var o=new this.constructor(t);return r(this,new function(e,n,t){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof n?n:null,this.promise=t}(e,n,o)),o},o.prototype[\"finally\"]=e,o.all=function(e){return new o(function(t,o){function r(e,n){try{if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var u=n.then;if(\"function\"==typeof u)return void u.call(n,function(n){r(e,n)},o)}i[e]=n,0==--f&&t(i)}catch(c){o(c)}}if(!n(e))return o(new TypeError(\"Promise.all accepts an array\"));var i=Array.prototype.slice.call(e);if(0===i.length)return t([]);for(var f=i.length,u=0;i.length>u;u++)r(u,i[u])})},o.resolve=function(e){return e&&\"object\"==typeof e&&e.constructor===o?e:new o(function(n){n(e)})},o.reject=function(e){return new o(function(n,t){t(e)})},o.race=function(e){return new o(function(t,r){if(!n(e))return r(new TypeError(\"Promise.race accepts an array\"));for(var i=0,f=e.length;f>i;i++)o.resolve(e[i]).then(t,r)})},o._immediateFn=\"function\"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){a(e,0)},o._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)};var l=function(){if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(\"undefined\"!=typeof global)return global;throw Error(\"unable to locate global object\")}();\"Promise\"in l?l.Promise.prototype[\"finally\"]||(l.Promise.prototype[\"finally\"]=e):l.Promise=o});\n\n var Keycloak = factory( root[\"sha256\"], root[\"base64js\"] );\n root[\"Keycloak\"] = Keycloak;\n\n if ( typeof define === \"function\" && define.amd ) {\n define( \"keycloak\", [], function () { return Keycloak; } );\n }\n }\n})(window, function (sha256_imported, base64js_imported) {\n if (typeof Promise === 'undefined') {\n throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');\n }\n\n var loggedPromiseDeprecation = false;\n\n function logPromiseDeprecation() {\n if (!loggedPromiseDeprecation) {\n loggedPromiseDeprecation = true;\n console.warn('[KEYCLOAK] Usage of legacy style promise methods such as `.error()` and `.success()` has been deprecated and support will be removed in future versions. Use standard style promise methods such as `.then() and `.catch()` instead.');\n }\n }\n\n function toKeycloakPromise(promise) {\n promise.__proto__ = KeycloakPromise.prototype;\n return promise;\n }\n\n function KeycloakPromise(executor) {\n return toKeycloakPromise(new Promise(executor));\n }\n\n KeycloakPromise.prototype = Object.create(Promise.prototype);\n KeycloakPromise.prototype.constructor = KeycloakPromise;\n\n KeycloakPromise.prototype.success = function(callback) {\n logPromiseDeprecation();\n\n var promise = this.then(function handleSuccess(value) {\n callback(value);\n });\n\n return toKeycloakPromise(promise);\n };\n\n KeycloakPromise.prototype.error = function(callback) {\n logPromiseDeprecation();\n\n var promise = this.catch(function handleError(error) {\n callback(error);\n });\n\n return toKeycloakPromise(promise);\n };\n\n function Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n return new Keycloak(config);\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if ((scripts[i].src.indexOf('keycloak.js') !== -1 || scripts[i].src.indexOf('keycloak.min.js') !== -1) && scripts[i].src.indexOf('version=') !== -1) {\n kc.iframeVersion = scripts[i].src.substring(scripts[i].src.indexOf('version=') + 8).split('&')[0];\n }\n }\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n kc.init = function (initOptions) {\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (initOptions && adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (initOptions && typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (initOptions) {\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (initOptions.pkceMethod) {\n if (initOptions.pkceMethod !== \"S256\") {\n throw 'Invalid value for pkceMethod';\n }\n kc.pkceMethod = initOptions.pkceMethod;\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(errorData) {\n promise.setError(errorData);\n });\n\n var configPromise = loadConfig(config);\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function () {\n initPromise.setError();\n });\n }\n\n var checkSsoSilently = function() {\n var ifrm = document.createElement(\"iframe\");\n var src = kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function () {\n initPromise.setError();\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (e) {\n initPromise.setError();\n });\n } else if (initOptions) {\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function () {\n initPromise.setError();\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function() {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError();\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n } else {\n initPromise.setSuccess();\n }\n }\n\n configPromise.then(function () {\n check3pCookiesSupported().then(processInit)\n .catch(function() {\n promise.setError();\n });\n });\n configPromise.catch(function() {\n promise.setError();\n });\n\n return promise.promise;\n }\n\n kc.login = function (options) {\n return adapter.login(options);\n }\n\n function generateRandomData(len) {\n // use web crypto APIs if possible\n var array = null;\n var crypto = window.crypto || window.msCrypto;\n if (crypto && crypto.getRandomValues && window.Uint8Array) {\n array = new Uint8Array(len);\n crypto.getRandomValues(array);\n return array;\n }\n\n // fallback to Math random\n array = new Array(len);\n for (var j = 0; j < array.length; j++) {\n array[j] = Math.floor(256 * Math.random());\n }\n return array;\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n function generatePkceChallenge(pkceMethod, codeVerifier) {\n switch (pkceMethod) {\n // The use of the \"plain\" method is considered insecure and therefore not supported.\n case \"S256\":\n // hash codeVerifier, then encode as url-safe base64 without padding\n var hashBytes = new Uint8Array(sha256_imported.arrayBuffer(codeVerifier));\n var encodedHash = base64js_imported.fromByteArray(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n return encodedHash;\n default:\n throw 'Invalid value for pkceMethod';\n }\n }\n\n kc.createLoginUrl = function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri)\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope;\n if (options && options.scope) {\n if (options.scope.indexOf(\"openid\") != -1) {\n scope = options.scope;\n } else {\n scope = \"openid \" + options.scope;\n }\n } else {\n scope = \"openid\";\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && options.maxAge) {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (kc.pkceMethod) {\n var codeVerifier = generateCodeVerifier(96);\n callbackState.pkceCodeVerifier = codeVerifier;\n var pkceChallenge = generatePkceChallenge(kc.pkceMethod, codeVerifier);\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n }\n\n kc.logout = function(options) {\n return adapter.logout(options);\n }\n\n kc.createLogoutUrl = function(options) {\n var url = kc.endpoints.logout()\n + '?redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n return url;\n }\n\n kc.register = function (options) {\n return adapter.register(options);\n }\n\n kc.createRegisterUrl = function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return kc.createLoginUrl(options);\n }\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n }\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n }\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n }\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(true);\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n }\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function() {\n promise.setError();\n });\n } else {\n exec();\n }\n\n return promise.promise;\n }\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n }\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n \treturn undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status']);\n }\n\n if (error) {\n if (prompt != 'none') {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && ((kc.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||\n (kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||\n (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce))) {\n\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig(url) {\n var promise = createPromise();\n var configUrl;\n\n if (!config) {\n configUrl = 'keycloak.json';\n } else if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n thirdPartyCookiesIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n }\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n if (!config.clientId) {\n throw 'clientId missing';\n }\n\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n if (!config['url']) {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].src.match(/.*keycloak\\.js/)) {\n config.url = scripts[i].src.substr(0, scripts[i].src.indexOf('/js/keycloak.js'));\n break;\n }\n }\n }\n if (!config.realm) {\n throw 'realm missing';\n }\n\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = decodeToken(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = decodeToken(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = decodeToken(token);\n kc.sessionId = kc.tokenParsed.session_state;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function decodeToken(str) {\n str = str.split('.')[1];\n\n str = str.replace(/-/g, '+');\n str = str.replace(/_/g, '/');\n switch (str.length % 4) {\n case 0:\n break;\n case 2:\n str += '==';\n break;\n case 3:\n str += '=';\n break;\n default:\n throw 'Invalid token';\n }\n\n str = decodeURIComponent(escape(atob(str)));\n\n str = JSON.parse(str);\n return str;\n }\n\n function createUUID() {\n var hexDigits = '0123456789abcdef';\n var s = generateRandomString(36, hexDigits).split(\"\");\n s[14] = '4';\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\n s[8] = s[13] = s[18] = s[23] = '-';\n var uuid = s.join('');\n return uuid;\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'id_token', 'code', 'state', 'session_state', 'kc_action_status'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n }\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new KeycloakPromise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n return p;\n }\n\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n }\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if (loginIframe.enable || kc.silentCheckSsoRedirectUri) {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n promise.setError();\n } else if (event.data === \"unsupported\") {\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n logWarn(\"[KEYCLOAK] 3rd party cookies aren't supported by this browser. checkLoginIframe and \" +\n \"silent check-sso are not available.\")\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: function(options) {\n window.location.replace(kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: function(options) {\n window.location.replace(kc.createLogoutUrl(options));\n return createPromise().promise;\n },\n\n register: function(options) {\n window.location.replace(kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n if (arguments.length == 1) {\n encodeHash = true;\n }\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n return {\n login: function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf('http://localhost') == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return 'http://localhost';\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: function(options) {\n var promise = createPromise();\n var loginUrl = kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n function clearExpired() {\n var time = new Date().getTime();\n for (var i = 0; i < localStorage.length; i++) {\n var key = localStorage.key(i);\n if (key && key.indexOf('kc-callback-') == 0) {\n var value = localStorage.getItem(key);\n if (value) {\n try {\n var expires = JSON.parse(value).expires;\n if (!expires || expires < time) {\n localStorage.removeItem(key);\n }\n } catch (err) {\n localStorage.removeItem(key);\n }\n }\n }\n }\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = 'kc-callback-' + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearExpired();\n return value;\n };\n\n cs.add = function(state) {\n clearExpired();\n\n var key = 'kc-callback-' + state.state;\n state.expires = new Date().getTime() + (60 * 60 * 1000);\n localStorage.setItem(key, JSON.stringify(state));\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie('kc-callback-' + state);\n setCookie('kc-callback-' + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie('kc-callback-' + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n }\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n }\n\n return Keycloak;\n})\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*\r\n Copyright 2013 Daniel Wirtz \r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\n Long.prototype.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n /**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.} Byte representation\r\n */\r\n LongPrototype.toBytes = function(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n }\r\n\r\n /**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.} Little endian byte representation\r\n */\r\n LongPrototype.toBytesLE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n (lo >>> 8) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 24) & 0xff,\r\n hi & 0xff,\r\n (hi >>> 8) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 24) & 0xff\r\n ];\r\n }\r\n\r\n /**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.} Big endian byte representation\r\n */\r\n LongPrototype.toBytesBE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n (hi >>> 24) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 8) & 0xff,\r\n hi & 0xff,\r\n (lo >>> 24) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 8) & 0xff,\r\n lo & 0xff\r\n ];\r\n }\r\n\r\n return Long;\r\n});\r\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","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 * Advanced Encryption Standard (AES) implementation.\n *\n * This implementation is based on the public domain library 'jscrypto' which\n * was written by:\n *\n * Emily Stark (estark@stanford.edu)\n * Mike Hamburg (mhamburg@stanford.edu)\n * Dan Boneh (dabo@cs.stanford.edu)\n *\n * Parts of this code are based on the OpenSSL implementation of AES:\n * http://www.openssl.org\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* AES API */\nmodule.exports = forge.aes = forge.aes || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new AES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the AES algorithm object.\n */\nforge.aes.Algorithm = function(name, mode) {\n if(!init) {\n initialize();\n }\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 16,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this AES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.aes.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = options.key;\n var tmp;\n\n /* Note: The key may be a string of bytes, an array of bytes, a byte\n buffer, or an array of 32-bit integers. If the key is in bytes, then\n it must be 16, 24, or 32 bytes in length. If it is in 32-bit\n integers, it must be 4, 6, or 8 integers long. */\n\n if(typeof key === 'string' &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key) &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key integer array into byte buffer\n tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // convert key byte buffer into 32-bit integer array\n if(!forge.util.isArray(key)) {\n tmp = key;\n key = [];\n\n // key lengths of 16, 24, 32 bytes allowed\n var len = tmp.length();\n if(len === 16 || len === 24 || len === 32) {\n len = len >>> 2;\n for(var i = 0; i < len; ++i) {\n key.push(tmp.getInt32());\n }\n }\n }\n\n // key must be an array of 32-bit integers by now\n if(!forge.util.isArray(key) ||\n !(key.length === 4 || key.length === 6 || key.length === 8)) {\n throw new Error('Invalid key parameter.');\n }\n\n // encryption operation is always used for these modes\n var mode = this.mode.name;\n var encryptOp = (['CFB', 'OFB', 'CTR', 'GCM'].indexOf(mode) !== -1);\n\n // do key expansion\n this._w = _expandKey(key, options.decrypt && !encryptOp);\n this._init = true;\n};\n\n/**\n * Expands a key. Typically only used for testing.\n *\n * @param key the symmetric key to expand, as an array of 32-bit words.\n * @param decrypt true to expand for decryption, false for encryption.\n *\n * @return the expanded key.\n */\nforge.aes._expandKey = function(key, decrypt) {\n if(!init) {\n initialize();\n }\n return _expandKey(key, decrypt);\n};\n\n/**\n * Updates a single block. Typically only used for testing.\n *\n * @param w the expanded key to use.\n * @param input an array of block-size 32-bit words.\n * @param output an array of block-size 32-bit words.\n * @param decrypt true to decrypt, false to encrypt.\n */\nforge.aes._updateBlock = _updateBlock;\n\n/** Register AES algorithms **/\n\nregisterAlgorithm('AES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('AES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('AES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('AES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('AES-CTR', forge.cipher.modes.ctr);\nregisterAlgorithm('AES-GCM', forge.cipher.modes.gcm);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.aes.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** AES implementation **/\n\nvar init = false; // not yet initialized\nvar Nb = 4; // number of words comprising the state (AES = 4)\nvar sbox; // non-linear substitution table used in key expansion\nvar isbox; // inversion of sbox\nvar rcon; // round constant word array\nvar mix; // mix-columns table\nvar imix; // inverse mix-columns table\n\n/**\n * Performs initialization, ie: precomputes tables to optimize for speed.\n *\n * One way to understand how AES works is to imagine that 'addition' and\n * 'multiplication' are interfaces that require certain mathematical\n * properties to hold true (ie: they are associative) but they might have\n * different implementations and produce different kinds of results ...\n * provided that their mathematical properties remain true. AES defines\n * its own methods of addition and multiplication but keeps some important\n * properties the same, ie: associativity and distributivity. The\n * explanation below tries to shed some light on how AES defines addition\n * and multiplication of bytes and 32-bit words in order to perform its\n * encryption and decryption algorithms.\n *\n * The basics:\n *\n * The AES algorithm views bytes as binary representations of polynomials\n * that have either 1 or 0 as the coefficients. It defines the addition\n * or subtraction of two bytes as the XOR operation. It also defines the\n * multiplication of two bytes as a finite field referred to as GF(2^8)\n * (Note: 'GF' means \"Galois Field\" which is a field that contains a finite\n * number of elements so GF(2^8) has 256 elements).\n *\n * This means that any two bytes can be represented as binary polynomials;\n * when they multiplied together and modularly reduced by an irreducible\n * polynomial of the 8th degree, the results are the field GF(2^8). The\n * specific irreducible polynomial that AES uses in hexadecimal is 0x11b.\n * This multiplication is associative with 0x01 as the identity:\n *\n * (b * 0x01 = GF(b, 0x01) = b).\n *\n * The operation GF(b, 0x02) can be performed at the byte level by left\n * shifting b once and then XOR'ing it (to perform the modular reduction)\n * with 0x11b if b is >= 128. Repeated application of the multiplication\n * of 0x02 can be used to implement the multiplication of any two bytes.\n *\n * For instance, multiplying 0x57 and 0x13, denoted as GF(0x57, 0x13), can\n * be performed by factoring 0x13 into 0x01, 0x02, and 0x10. Then these\n * factors can each be multiplied by 0x57 and then added together. To do\n * the multiplication, values for 0x57 multiplied by each of these 3 factors\n * can be precomputed and stored in a table. To add them, the values from\n * the table are XOR'd together.\n *\n * AES also defines addition and multiplication of words, that is 4-byte\n * numbers represented as polynomials of 3 degrees where the coefficients\n * are the values of the bytes.\n *\n * The word [a0, a1, a2, a3] is a polynomial a3x^3 + a2x^2 + a1x + a0.\n *\n * Addition is performed by XOR'ing like powers of x. Multiplication\n * is performed in two steps, the first is an algebriac expansion as\n * you would do normally (where addition is XOR). But the result is\n * a polynomial larger than 3 degrees and thus it cannot fit in a word. So\n * next the result is modularly reduced by an AES-specific polynomial of\n * degree 4 which will always produce a polynomial of less than 4 degrees\n * such that it will fit in a word. In AES, this polynomial is x^4 + 1.\n *\n * The modular product of two polynomials 'a' and 'b' is thus:\n *\n * d(x) = d3x^3 + d2x^2 + d1x + d0\n * with\n * d0 = GF(a0, b0) ^ GF(a3, b1) ^ GF(a2, b2) ^ GF(a1, b3)\n * d1 = GF(a1, b0) ^ GF(a0, b1) ^ GF(a3, b2) ^ GF(a2, b3)\n * d2 = GF(a2, b0) ^ GF(a1, b1) ^ GF(a0, b2) ^ GF(a3, b3)\n * d3 = GF(a3, b0) ^ GF(a2, b1) ^ GF(a1, b2) ^ GF(a0, b3)\n *\n * As a matrix:\n *\n * [d0] = [a0 a3 a2 a1][b0]\n * [d1] [a1 a0 a3 a2][b1]\n * [d2] [a2 a1 a0 a3][b2]\n * [d3] [a3 a2 a1 a0][b3]\n *\n * Special polynomials defined by AES (0x02 == {02}):\n * a(x) = {03}x^3 + {01}x^2 + {01}x + {02}\n * a^-1(x) = {0b}x^3 + {0d}x^2 + {09}x + {0e}.\n *\n * These polynomials are used in the MixColumns() and InverseMixColumns()\n * operations, respectively, to cause each element in the state to affect\n * the output (referred to as diffusing).\n *\n * RotWord() uses: a0 = a1 = a2 = {00} and a3 = {01}, which is the\n * polynomial x3.\n *\n * The ShiftRows() method modifies the last 3 rows in the state (where\n * the state is 4 words with 4 bytes per word) by shifting bytes cyclically.\n * The 1st byte in the second row is moved to the end of the row. The 1st\n * and 2nd bytes in the third row are moved to the end of the row. The 1st,\n * 2nd, and 3rd bytes are moved in the fourth row.\n *\n * More details on how AES arithmetic works:\n *\n * In the polynomial representation of binary numbers, XOR performs addition\n * and subtraction and multiplication in GF(2^8) denoted as GF(a, b)\n * corresponds with the multiplication of polynomials modulo an irreducible\n * polynomial of degree 8. In other words, for AES, GF(a, b) will multiply\n * polynomial 'a' with polynomial 'b' and then do a modular reduction by\n * an AES-specific irreducible polynomial of degree 8.\n *\n * A polynomial is irreducible if its only divisors are one and itself. For\n * the AES algorithm, this irreducible polynomial is:\n *\n * m(x) = x^8 + x^4 + x^3 + x + 1,\n *\n * or {01}{1b} in hexadecimal notation, where each coefficient is a bit:\n * 100011011 = 283 = 0x11b.\n *\n * For example, GF(0x57, 0x83) = 0xc1 because\n *\n * 0x57 = 87 = 01010111 = x^6 + x^4 + x^2 + x + 1\n * 0x85 = 131 = 10000101 = x^7 + x + 1\n *\n * (x^6 + x^4 + x^2 + x + 1) * (x^7 + x + 1)\n * = x^13 + x^11 + x^9 + x^8 + x^7 +\n * x^7 + x^5 + x^3 + x^2 + x +\n * x^6 + x^4 + x^2 + x + 1\n * = x^13 + x^11 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + 1 = y\n * y modulo (x^8 + x^4 + x^3 + x + 1)\n * = x^7 + x^6 + 1.\n *\n * The modular reduction by m(x) guarantees the result will be a binary\n * polynomial of less than degree 8, so that it can fit in a byte.\n *\n * The operation to multiply a binary polynomial b with x (the polynomial\n * x in binary representation is 00000010) is:\n *\n * b_7x^8 + b_6x^7 + b_5x^6 + b_4x^5 + b_3x^4 + b_2x^3 + b_1x^2 + b_0x^1\n *\n * To get GF(b, x) we must reduce that by m(x). If b_7 is 0 (that is the\n * most significant bit is 0 in b) then the result is already reduced. If\n * it is 1, then we can reduce it by subtracting m(x) via an XOR.\n *\n * It follows that multiplication by x (00000010 or 0x02) can be implemented\n * by performing a left shift followed by a conditional bitwise XOR with\n * 0x1b. This operation on bytes is denoted by xtime(). Multiplication by\n * higher powers of x can be implemented by repeated application of xtime().\n *\n * By adding intermediate results, multiplication by any constant can be\n * implemented. For instance:\n *\n * GF(0x57, 0x13) = 0xfe because:\n *\n * xtime(b) = (b & 128) ? (b << 1 ^ 0x11b) : (b << 1)\n *\n * Note: We XOR with 0x11b instead of 0x1b because in javascript our\n * datatype for b can be larger than 1 byte, so a left shift will not\n * automatically eliminate bits that overflow a byte ... by XOR'ing the\n * overflow bit with 1 (the extra one from 0x11b) we zero it out.\n *\n * GF(0x57, 0x02) = xtime(0x57) = 0xae\n * GF(0x57, 0x04) = xtime(0xae) = 0x47\n * GF(0x57, 0x08) = xtime(0x47) = 0x8e\n * GF(0x57, 0x10) = xtime(0x8e) = 0x07\n *\n * GF(0x57, 0x13) = GF(0x57, (0x01 ^ 0x02 ^ 0x10))\n *\n * And by the distributive property (since XOR is addition and GF() is\n * multiplication):\n *\n * = GF(0x57, 0x01) ^ GF(0x57, 0x02) ^ GF(0x57, 0x10)\n * = 0x57 ^ 0xae ^ 0x07\n * = 0xfe.\n */\nfunction initialize() {\n init = true;\n\n /* Populate the Rcon table. These are the values given by\n [x^(i-1),{00},{00},{00}] where x^(i-1) are powers of x (and x = 0x02)\n in the field of GF(2^8), where i starts at 1.\n\n rcon[0] = [0x00, 0x00, 0x00, 0x00]\n rcon[1] = [0x01, 0x00, 0x00, 0x00] 2^(1-1) = 2^0 = 1\n rcon[2] = [0x02, 0x00, 0x00, 0x00] 2^(2-1) = 2^1 = 2\n ...\n rcon[9] = [0x1B, 0x00, 0x00, 0x00] 2^(9-1) = 2^8 = 0x1B\n rcon[10] = [0x36, 0x00, 0x00, 0x00] 2^(10-1) = 2^9 = 0x36\n\n We only store the first byte because it is the only one used.\n */\n rcon = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B, 0x36];\n\n // compute xtime table which maps i onto GF(i, 0x02)\n var xtime = new Array(256);\n for(var i = 0; i < 128; ++i) {\n xtime[i] = i << 1;\n xtime[i + 128] = (i + 128) << 1 ^ 0x11B;\n }\n\n // compute all other tables\n sbox = new Array(256);\n isbox = new Array(256);\n mix = new Array(4);\n imix = new Array(4);\n for(var i = 0; i < 4; ++i) {\n mix[i] = new Array(256);\n imix[i] = new Array(256);\n }\n var e = 0, ei = 0, e2, e4, e8, sx, sx2, me, ime;\n for(var i = 0; i < 256; ++i) {\n /* We need to generate the SubBytes() sbox and isbox tables so that\n we can perform byte substitutions. This requires us to traverse\n all of the elements in GF, find their multiplicative inverses,\n and apply to each the following affine transformation:\n\n bi' = bi ^ b(i + 4) mod 8 ^ b(i + 5) mod 8 ^ b(i + 6) mod 8 ^\n b(i + 7) mod 8 ^ ci\n for 0 <= i < 8, where bi is the ith bit of the byte, and ci is the\n ith bit of a byte c with the value {63} or {01100011}.\n\n It is possible to traverse every possible value in a Galois field\n using what is referred to as a 'generator'. There are many\n generators (128 out of 256): 3,5,6,9,11,82 to name a few. To fully\n traverse GF we iterate 255 times, multiplying by our generator\n each time.\n\n On each iteration we can determine the multiplicative inverse for\n the current element.\n\n Suppose there is an element in GF 'e'. For a given generator 'g',\n e = g^x. The multiplicative inverse of e is g^(255 - x). It turns\n out that if use the inverse of a generator as another generator\n it will produce all of the corresponding multiplicative inverses\n at the same time. For this reason, we choose 5 as our inverse\n generator because it only requires 2 multiplies and 1 add and its\n inverse, 82, requires relatively few operations as well.\n\n In order to apply the affine transformation, the multiplicative\n inverse 'ei' of 'e' can be repeatedly XOR'd (4 times) with a\n bit-cycling of 'ei'. To do this 'ei' is first stored in 's' and\n 'x'. Then 's' is left shifted and the high bit of 's' is made the\n low bit. The resulting value is stored in 's'. Then 'x' is XOR'd\n with 's' and stored in 'x'. On each subsequent iteration the same\n operation is performed. When 4 iterations are complete, 'x' is\n XOR'd with 'c' (0x63) and the transformed value is stored in 'x'.\n For example:\n\n s = 01000001\n x = 01000001\n\n iteration 1: s = 10000010, x ^= s\n iteration 2: s = 00000101, x ^= s\n iteration 3: s = 00001010, x ^= s\n iteration 4: s = 00010100, x ^= s\n x ^= 0x63\n\n This can be done with a loop where s = (s << 1) | (s >> 7). However,\n it can also be done by using a single 16-bit (in this case 32-bit)\n number 'sx'. Since XOR is an associative operation, we can set 'sx'\n to 'ei' and then XOR it with 'sx' left-shifted 1,2,3, and 4 times.\n The most significant bits will flow into the high 8 bit positions\n and be correctly XOR'd with one another. All that remains will be\n to cycle the high 8 bits by XOR'ing them all with the lower 8 bits\n afterwards.\n\n At the same time we're populating sbox and isbox we can precompute\n the multiplication we'll need to do to do MixColumns() later.\n */\n\n // apply affine transformation\n sx = ei ^ (ei << 1) ^ (ei << 2) ^ (ei << 3) ^ (ei << 4);\n sx = (sx >> 8) ^ (sx & 255) ^ 0x63;\n\n // update tables\n sbox[e] = sx;\n isbox[sx] = e;\n\n /* Mixing columns is done using matrix multiplication. The columns\n that are to be mixed are each a single word in the current state.\n The state has Nb columns (4 columns). Therefore each column is a\n 4 byte word. So to mix the columns in a single column 'c' where\n its rows are r0, r1, r2, and r3, we use the following matrix\n multiplication:\n\n [2 3 1 1]*[r0,c]=[r'0,c]\n [1 2 3 1] [r1,c] [r'1,c]\n [1 1 2 3] [r2,c] [r'2,c]\n [3 1 1 2] [r3,c] [r'3,c]\n\n r0, r1, r2, and r3 are each 1 byte of one of the words in the\n state (a column). To do matrix multiplication for each mixed\n column c' we multiply the corresponding row from the left matrix\n with the corresponding column from the right matrix. In total, we\n get 4 equations:\n\n r0,c' = 2*r0,c + 3*r1,c + 1*r2,c + 1*r3,c\n r1,c' = 1*r0,c + 2*r1,c + 3*r2,c + 1*r3,c\n r2,c' = 1*r0,c + 1*r1,c + 2*r2,c + 3*r3,c\n r3,c' = 3*r0,c + 1*r1,c + 1*r2,c + 2*r3,c\n\n As usual, the multiplication is as previously defined and the\n addition is XOR. In order to optimize mixing columns we can store\n the multiplication results in tables. If you think of the whole\n column as a word (it might help to visualize by mentally rotating\n the equations above by counterclockwise 90 degrees) then you can\n see that it would be useful to map the multiplications performed on\n each byte (r0, r1, r2, r3) onto a word as well. For instance, we\n could map 2*r0,1*r0,1*r0,3*r0 onto a word by storing 2*r0 in the\n highest 8 bits and 3*r0 in the lowest 8 bits (with the other two\n respectively in the middle). This means that a table can be\n constructed that uses r0 as an index to the word. We can do the\n same with r1, r2, and r3, creating a total of 4 tables.\n\n To construct a full c', we can just look up each byte of c in\n their respective tables and XOR the results together.\n\n Also, to build each table we only have to calculate the word\n for 2,1,1,3 for every byte ... which we can do on each iteration\n of this loop since we will iterate over every byte. After we have\n calculated 2,1,1,3 we can get the results for the other tables\n by cycling the byte at the end to the beginning. For instance\n we can take the result of table 2,1,1,3 and produce table 3,2,1,1\n by moving the right most byte to the left most position just like\n how you can imagine the 3 moved out of 2,1,1,3 and to the front\n to produce 3,2,1,1.\n\n There is another optimization in that the same multiples of\n the current element we need in order to advance our generator\n to the next iteration can be reused in performing the 2,1,1,3\n calculation. We also calculate the inverse mix column tables,\n with e,9,d,b being the inverse of 2,1,1,3.\n\n When we're done, and we need to actually mix columns, the first\n byte of each state word should be put through mix[0] (2,1,1,3),\n the second through mix[1] (3,2,1,1) and so forth. Then they should\n be XOR'd together to produce the fully mixed column.\n */\n\n // calculate mix and imix table values\n sx2 = xtime[sx];\n e2 = xtime[e];\n e4 = xtime[e2];\n e8 = xtime[e4];\n me =\n (sx2 << 24) ^ // 2\n (sx << 16) ^ // 1\n (sx << 8) ^ // 1\n (sx ^ sx2); // 3\n ime =\n (e2 ^ e4 ^ e8) << 24 ^ // E (14)\n (e ^ e8) << 16 ^ // 9\n (e ^ e4 ^ e8) << 8 ^ // D (13)\n (e ^ e2 ^ e8); // B (11)\n // produce each of the mix tables by rotating the 2,1,1,3 value\n for(var n = 0; n < 4; ++n) {\n mix[n][e] = me;\n imix[n][sx] = ime;\n // cycle the right most byte to the left most position\n // ie: 2,1,1,3 becomes 3,2,1,1\n me = me << 24 | me >>> 8;\n ime = ime << 24 | ime >>> 8;\n }\n\n // get next element and inverse\n if(e === 0) {\n // 1 is the inverse of 1\n e = ei = 1;\n } else {\n // e = 2e + 2*2*2*(10e)) = multiply e by 82 (chosen generator)\n // ei = ei + 2*2*ei = multiply ei by 5 (inverse generator)\n e = e2 ^ xtime[xtime[xtime[e2 ^ e8]]];\n ei ^= xtime[xtime[ei]];\n }\n }\n}\n\n/**\n * Generates a key schedule using the AES key expansion algorithm.\n *\n * The AES algorithm takes the Cipher Key, K, and performs a Key Expansion\n * routine to generate a key schedule. The Key Expansion generates a total\n * of Nb*(Nr + 1) words: the algorithm requires an initial set of Nb words,\n * and each of the Nr rounds requires Nb words of key data. The resulting\n * key schedule consists of a linear array of 4-byte words, denoted [wi ],\n * with i in the range 0 <= i < Nb(Nr + 1).\n *\n * KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)\n * AES-128 (Nb=4, Nk=4, Nr=10)\n * AES-192 (Nb=4, Nk=6, Nr=12)\n * AES-256 (Nb=4, Nk=8, Nr=14)\n * Note: Nr=Nk+6.\n *\n * Nb is the number of columns (32-bit words) comprising the State (or\n * number of bytes in a block). For AES, Nb=4.\n *\n * @param key the key to schedule (as an array of 32-bit words).\n * @param decrypt true to modify the key schedule to decrypt, false not to.\n *\n * @return the generated key schedule.\n */\nfunction _expandKey(key, decrypt) {\n // copy the key's words to initialize the key schedule\n var w = key.slice(0);\n\n /* RotWord() will rotate a word, moving the first byte to the last\n byte's position (shifting the other bytes left).\n\n We will be getting the value of Rcon at i / Nk. 'i' will iterate\n from Nk to (Nb * Nr+1). Nk = 4 (4 byte key), Nb = 4 (4 words in\n a block), Nr = Nk + 6 (10). Therefore 'i' will iterate from\n 4 to 44 (exclusive). Each time we iterate 4 times, i / Nk will\n increase by 1. We use a counter iNk to keep track of this.\n */\n\n // go through the rounds expanding the key\n var temp, iNk = 1;\n var Nk = w.length;\n var Nr1 = Nk + 6 + 1;\n var end = Nb * Nr1;\n for(var i = Nk; i < end; ++i) {\n temp = w[i - 1];\n if(i % Nk === 0) {\n // temp = SubWord(RotWord(temp)) ^ Rcon[i / Nk]\n temp =\n sbox[temp >>> 16 & 255] << 24 ^\n sbox[temp >>> 8 & 255] << 16 ^\n sbox[temp & 255] << 8 ^\n sbox[temp >>> 24] ^ (rcon[iNk] << 24);\n iNk++;\n } else if(Nk > 6 && (i % Nk === 4)) {\n // temp = SubWord(temp)\n temp =\n sbox[temp >>> 24] << 24 ^\n sbox[temp >>> 16 & 255] << 16 ^\n sbox[temp >>> 8 & 255] << 8 ^\n sbox[temp & 255];\n }\n w[i] = w[i - Nk] ^ temp;\n }\n\n /* When we are updating a cipher block we always use the code path for\n encryption whether we are decrypting or not (to shorten code and\n simplify the generation of look up tables). However, because there\n are differences in the decryption algorithm, other than just swapping\n in different look up tables, we must transform our key schedule to\n account for these changes:\n\n 1. The decryption algorithm gets its key rounds in reverse order.\n 2. The decryption algorithm adds the round key before mixing columns\n instead of afterwards.\n\n We don't need to modify our key schedule to handle the first case,\n we can just traverse the key schedule in reverse order when decrypting.\n\n The second case requires a little work.\n\n The tables we built for performing rounds will take an input and then\n perform SubBytes() and MixColumns() or, for the decrypt version,\n InvSubBytes() and InvMixColumns(). But the decrypt algorithm requires\n us to AddRoundKey() before InvMixColumns(). This means we'll need to\n apply some transformations to the round key to inverse-mix its columns\n so they'll be correct for moving AddRoundKey() to after the state has\n had its columns inverse-mixed.\n\n To inverse-mix the columns of the state when we're decrypting we use a\n lookup table that will apply InvSubBytes() and InvMixColumns() at the\n same time. However, the round key's bytes are not inverse-substituted\n in the decryption algorithm. To get around this problem, we can first\n substitute the bytes in the round key so that when we apply the\n transformation via the InvSubBytes()+InvMixColumns() table, it will\n undo our substitution leaving us with the original value that we\n want -- and then inverse-mix that value.\n\n This change will correctly alter our key schedule so that we can XOR\n each round key with our already transformed decryption state. This\n allows us to use the same code path as the encryption algorithm.\n\n We make one more change to the decryption key. Since the decryption\n algorithm runs in reverse from the encryption algorithm, we reverse\n the order of the round keys to avoid having to iterate over the key\n schedule backwards when running the encryption algorithm later in\n decryption mode. In addition to reversing the order of the round keys,\n we also swap each round key's 2nd and 4th rows. See the comments\n section where rounds are performed for more details about why this is\n done. These changes are done inline with the other substitution\n described above.\n */\n if(decrypt) {\n var tmp;\n var m0 = imix[0];\n var m1 = imix[1];\n var m2 = imix[2];\n var m3 = imix[3];\n var wnew = w.slice(0);\n end = w.length;\n for(var i = 0, wi = end - Nb; i < end; i += Nb, wi -= Nb) {\n // do not sub the first or last round key (round keys are Nb\n // words) as no column mixing is performed before they are added,\n // but do change the key order\n if(i === 0 || i === (end - Nb)) {\n wnew[i] = w[wi];\n wnew[i + 1] = w[wi + 3];\n wnew[i + 2] = w[wi + 2];\n wnew[i + 3] = w[wi + 1];\n } else {\n // substitute each round key byte because the inverse-mix\n // table will inverse-substitute it (effectively cancel the\n // substitution because round key bytes aren't sub'd in\n // decryption mode) and swap indexes 3 and 1\n for(var n = 0; n < Nb; ++n) {\n tmp = w[wi + n];\n wnew[i + (3&-n)] =\n m0[sbox[tmp >>> 24]] ^\n m1[sbox[tmp >>> 16 & 255]] ^\n m2[sbox[tmp >>> 8 & 255]] ^\n m3[sbox[tmp & 255]];\n }\n }\n }\n w = wnew;\n }\n\n return w;\n}\n\n/**\n * Updates a single block (16 bytes) using AES. The update will either\n * encrypt or decrypt the block.\n *\n * @param w the key schedule.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(w, input, output, decrypt) {\n /*\n Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[0, Nb-1])\n for round = 1 step 1 to Nr-1\n SubBytes(state)\n ShiftRows(state)\n MixColumns(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n end for\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n out = state\n end\n\n InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n for round = Nr-1 step -1 downto 1\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n InvMixColumns(state)\n end for\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n out = state\n end\n */\n\n // Encrypt: AddRoundKey(state, w[0, Nb-1])\n // Decrypt: AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n var Nr = w.length / 4 - 1;\n var m0, m1, m2, m3, sub;\n if(decrypt) {\n m0 = imix[0];\n m1 = imix[1];\n m2 = imix[2];\n m3 = imix[3];\n sub = isbox;\n } else {\n m0 = mix[0];\n m1 = mix[1];\n m2 = mix[2];\n m3 = mix[3];\n sub = sbox;\n }\n var a, b, c, d, a2, b2, c2;\n a = input[0] ^ w[0];\n b = input[decrypt ? 3 : 1] ^ w[1];\n c = input[2] ^ w[2];\n d = input[decrypt ? 1 : 3] ^ w[3];\n var i = 3;\n\n /* In order to share code we follow the encryption algorithm when both\n encrypting and decrypting. To account for the changes required in the\n decryption algorithm, we use different lookup tables when decrypting\n and use a modified key schedule to account for the difference in the\n order of transformations applied when performing rounds. We also get\n key rounds in reverse order (relative to encryption). */\n for(var round = 1; round < Nr; ++round) {\n /* As described above, we'll be using table lookups to perform the\n column mixing. Each column is stored as a word in the state (the\n array 'input' has one column as a word at each index). In order to\n mix a column, we perform these transformations on each row in c,\n which is 1 byte in each word. The new column for c0 is c'0:\n\n m0 m1 m2 m3\n r0,c'0 = 2*r0,c0 + 3*r1,c0 + 1*r2,c0 + 1*r3,c0\n r1,c'0 = 1*r0,c0 + 2*r1,c0 + 3*r2,c0 + 1*r3,c0\n r2,c'0 = 1*r0,c0 + 1*r1,c0 + 2*r2,c0 + 3*r3,c0\n r3,c'0 = 3*r0,c0 + 1*r1,c0 + 1*r2,c0 + 2*r3,c0\n\n So using mix tables where c0 is a word with r0 being its upper\n 8 bits and r3 being its lower 8 bits:\n\n m0[c0 >> 24] will yield this word: [2*r0,1*r0,1*r0,3*r0]\n ...\n m3[c0 & 255] will yield this word: [1*r3,1*r3,3*r3,2*r3]\n\n Therefore to mix the columns in each word in the state we\n do the following (& 255 omitted for brevity):\n c'0,r0 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r1 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r2 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r3 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n\n However, before mixing, the algorithm requires us to perform\n ShiftRows(). The ShiftRows() transformation cyclically shifts the\n last 3 rows of the state over different offsets. The first row\n (r = 0) is not shifted.\n\n s'_r,c = s_r,(c + shift(r, Nb) mod Nb\n for 0 < r < 4 and 0 <= c < Nb and\n shift(1, 4) = 1\n shift(2, 4) = 2\n shift(3, 4) = 3.\n\n This causes the first byte in r = 1 to be moved to the end of\n the row, the first 2 bytes in r = 2 to be moved to the end of\n the row, the first 3 bytes in r = 3 to be moved to the end of\n the row:\n\n r1: [c0 c1 c2 c3] => [c1 c2 c3 c0]\n r2: [c0 c1 c2 c3] [c2 c3 c0 c1]\n r3: [c0 c1 c2 c3] [c3 c0 c1 c2]\n\n We can make these substitutions inline with our column mixing to\n generate an updated set of equations to produce each word in the\n state (note the columns have changed positions):\n\n c0 c1 c2 c3 => c0 c1 c2 c3\n c0 c1 c2 c3 c1 c2 c3 c0 (cycled 1 byte)\n c0 c1 c2 c3 c2 c3 c0 c1 (cycled 2 bytes)\n c0 c1 c2 c3 c3 c0 c1 c2 (cycled 3 bytes)\n\n Therefore:\n\n c'0 = 2*r0,c0 + 3*r1,c1 + 1*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 2*r1,c1 + 3*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 1*r1,c1 + 2*r2,c2 + 3*r3,c3\n c'0 = 3*r0,c0 + 1*r1,c1 + 1*r2,c2 + 2*r3,c3\n\n c'1 = 2*r0,c1 + 3*r1,c2 + 1*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 2*r1,c2 + 3*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 1*r1,c2 + 2*r2,c3 + 3*r3,c0\n c'1 = 3*r0,c1 + 1*r1,c2 + 1*r2,c3 + 2*r3,c0\n\n ... and so forth for c'2 and c'3. The important distinction is\n that the columns are cycling, with c0 being used with the m0\n map when calculating c0, but c1 being used with the m0 map when\n calculating c1 ... and so forth.\n\n When performing the inverse we transform the mirror image and\n skip the bottom row, instead of the top one, and move upwards:\n\n c3 c2 c1 c0 => c0 c3 c2 c1 (cycled 3 bytes) *same as encryption\n c3 c2 c1 c0 c1 c0 c3 c2 (cycled 2 bytes)\n c3 c2 c1 c0 c2 c1 c0 c3 (cycled 1 byte) *same as encryption\n c3 c2 c1 c0 c3 c2 c1 c0\n\n If you compare the resulting matrices for ShiftRows()+MixColumns()\n and for InvShiftRows()+InvMixColumns() the 2nd and 4th columns are\n different (in encrypt mode vs. decrypt mode). So in order to use\n the same code to handle both encryption and decryption, we will\n need to do some mapping.\n\n If in encryption mode we let a=c0, b=c1, c=c2, d=c3, and r be\n a row number in the state, then the resulting matrix in encryption\n mode for applying the above transformations would be:\n\n r1: a b c d\n r2: b c d a\n r3: c d a b\n r4: d a b c\n\n If we did the same in decryption mode we would get:\n\n r1: a d c b\n r2: b a d c\n r3: c b a d\n r4: d c b a\n\n If instead we swap d and b (set b=c3 and d=c1), then we get:\n\n r1: a b c d\n r2: d a b c\n r3: c d a b\n r4: b c d a\n\n Now the 1st and 3rd rows are the same as the encryption matrix. All\n we need to do then to make the mapping exactly the same is to swap\n the 2nd and 4th rows when in decryption mode. To do this without\n having to do it on each iteration, we swapped the 2nd and 4th rows\n in the decryption key schedule. We also have to do the swap above\n when we first pull in the input and when we set the final output. */\n a2 =\n m0[a >>> 24] ^\n m1[b >>> 16 & 255] ^\n m2[c >>> 8 & 255] ^\n m3[d & 255] ^ w[++i];\n b2 =\n m0[b >>> 24] ^\n m1[c >>> 16 & 255] ^\n m2[d >>> 8 & 255] ^\n m3[a & 255] ^ w[++i];\n c2 =\n m0[c >>> 24] ^\n m1[d >>> 16 & 255] ^\n m2[a >>> 8 & 255] ^\n m3[b & 255] ^ w[++i];\n d =\n m0[d >>> 24] ^\n m1[a >>> 16 & 255] ^\n m2[b >>> 8 & 255] ^\n m3[c & 255] ^ w[++i];\n a = a2;\n b = b2;\n c = c2;\n }\n\n /*\n Encrypt:\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n\n Decrypt:\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n */\n // Note: rows are shifted inline\n output[0] =\n (sub[a >>> 24] << 24) ^\n (sub[b >>> 16 & 255] << 16) ^\n (sub[c >>> 8 & 255] << 8) ^\n (sub[d & 255]) ^ w[++i];\n output[decrypt ? 3 : 1] =\n (sub[b >>> 24] << 24) ^\n (sub[c >>> 16 & 255] << 16) ^\n (sub[d >>> 8 & 255] << 8) ^\n (sub[a & 255]) ^ w[++i];\n output[2] =\n (sub[c >>> 24] << 24) ^\n (sub[d >>> 16 & 255] << 16) ^\n (sub[a >>> 8 & 255] << 8) ^\n (sub[b & 255]) ^ w[++i];\n output[decrypt ? 1 : 3] =\n (sub[d >>> 24] << 24) ^\n (sub[a >>> 16 & 255] << 16) ^\n (sub[b >>> 8 & 255] << 8) ^\n (sub[c & 255]) ^ w[++i];\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('AES-', key);\n * forge.cipher.createDecipher('AES-', key);\n *\n * Creates a deprecated AES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key and iv may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param options the options to use.\n * key the symmetric key to use.\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'AES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","/**\n * A Javascript implementation of AES Cipher Suites for TLS.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2015 Digital Bazaar, Inc.\n *\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./tls');\n\nvar tls = module.exports = forge.tls;\n\n/**\n * Supported cipher suites.\n */\ntls.CipherSuites['TLS_RSA_WITH_AES_128_CBC_SHA'] = {\n id: [0x00, 0x2f],\n name: 'TLS_RSA_WITH_AES_128_CBC_SHA',\n initSecurityParameters: function(sp) {\n sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes;\n sp.cipher_type = tls.CipherType.block;\n sp.enc_key_length = 16;\n sp.block_length = 16;\n sp.fixed_iv_length = 16;\n sp.record_iv_length = 16;\n sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1;\n sp.mac_length = 20;\n sp.mac_key_length = 20;\n },\n initConnectionState: initConnectionState\n};\ntls.CipherSuites['TLS_RSA_WITH_AES_256_CBC_SHA'] = {\n id: [0x00, 0x35],\n name: 'TLS_RSA_WITH_AES_256_CBC_SHA',\n initSecurityParameters: function(sp) {\n sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes;\n sp.cipher_type = tls.CipherType.block;\n sp.enc_key_length = 32;\n sp.block_length = 16;\n sp.fixed_iv_length = 16;\n sp.record_iv_length = 16;\n sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1;\n sp.mac_length = 20;\n sp.mac_key_length = 20;\n },\n initConnectionState: initConnectionState\n};\n\nfunction initConnectionState(state, c, sp) {\n var client = (c.entity === forge.tls.ConnectionEnd.client);\n\n // cipher setup\n state.read.cipherState = {\n init: false,\n cipher: forge.cipher.createDecipher('AES-CBC', client ?\n sp.keys.server_write_key : sp.keys.client_write_key),\n iv: client ? sp.keys.server_write_IV : sp.keys.client_write_IV\n };\n state.write.cipherState = {\n init: false,\n cipher: forge.cipher.createCipher('AES-CBC', client ?\n sp.keys.client_write_key : sp.keys.server_write_key),\n iv: client ? sp.keys.client_write_IV : sp.keys.server_write_IV\n };\n state.read.cipherFunction = decrypt_aes_cbc_sha1;\n state.write.cipherFunction = encrypt_aes_cbc_sha1;\n\n // MAC setup\n state.read.macLength = state.write.macLength = sp.mac_length;\n state.read.macFunction = state.write.macFunction = tls.hmac_sha1;\n}\n\n/**\n * Encrypts the TLSCompressed record into a TLSCipherText record using AES\n * in CBC mode.\n *\n * @param record the TLSCompressed record to encrypt.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nfunction encrypt_aes_cbc_sha1(record, s) {\n var rval = false;\n\n // append MAC to fragment, update sequence number\n var mac = s.macFunction(s.macKey, s.sequenceNumber, record);\n record.fragment.putBytes(mac);\n s.updateSequenceNumber();\n\n // TLS 1.1+ use an explicit IV every time to protect against CBC attacks\n var iv;\n if(record.version.minor === tls.Versions.TLS_1_0.minor) {\n // use the pre-generated IV when initializing for TLS 1.0, otherwise use\n // the residue from the previous encryption\n iv = s.cipherState.init ? null : s.cipherState.iv;\n } else {\n iv = forge.random.getBytesSync(16);\n }\n\n s.cipherState.init = true;\n\n // start cipher\n var cipher = s.cipherState.cipher;\n cipher.start({iv: iv});\n\n // TLS 1.1+ write IV into output\n if(record.version.minor >= tls.Versions.TLS_1_1.minor) {\n cipher.output.putBytes(iv);\n }\n\n // do encryption (default padding is appropriate)\n cipher.update(record.fragment);\n if(cipher.finish(encrypt_aes_cbc_sha1_padding)) {\n // set record fragment to encrypted output\n record.fragment = cipher.output;\n record.length = record.fragment.length();\n rval = true;\n }\n\n return rval;\n}\n\n/**\n * Handles padding for aes_cbc_sha1 in encrypt mode.\n *\n * @param blockSize the block size.\n * @param input the input buffer.\n * @param decrypt true in decrypt mode, false in encrypt mode.\n *\n * @return true on success, false on failure.\n */\nfunction encrypt_aes_cbc_sha1_padding(blockSize, input, decrypt) {\n /* The encrypted data length (TLSCiphertext.length) is one more than the sum\n of SecurityParameters.block_length, TLSCompressed.length,\n SecurityParameters.mac_length, and padding_length.\n\n The padding may be any length up to 255 bytes long, as long as it results in\n the TLSCiphertext.length being an integral multiple of the block length.\n Lengths longer than necessary might be desirable to frustrate attacks on a\n protocol based on analysis of the lengths of exchanged messages. Each uint8\n in the padding data vector must be filled with the padding length value.\n\n The padding length should be such that the total size of the\n GenericBlockCipher structure is a multiple of the cipher's block length.\n Legal values range from zero to 255, inclusive. This length specifies the\n length of the padding field exclusive of the padding_length field itself.\n\n This is slightly different from PKCS#7 because the padding value is 1\n less than the actual number of padding bytes if you include the\n padding_length uint8 itself as a padding byte. */\n if(!decrypt) {\n // get the number of padding bytes required to reach the blockSize and\n // subtract 1 for the padding value (to make room for the padding_length\n // uint8)\n var padding = blockSize - (input.length() % blockSize);\n input.fillWithByte(padding - 1, padding);\n }\n return true;\n}\n\n/**\n * Handles padding for aes_cbc_sha1 in decrypt mode.\n *\n * @param blockSize the block size.\n * @param output the output buffer.\n * @param decrypt true in decrypt mode, false in encrypt mode.\n *\n * @return true on success, false on failure.\n */\nfunction decrypt_aes_cbc_sha1_padding(blockSize, output, decrypt) {\n var rval = true;\n if(decrypt) {\n /* The last byte in the output specifies the number of padding bytes not\n including itself. Each of the padding bytes has the same value as that\n last byte (known as the padding_length). Here we check all padding\n bytes to ensure they have the value of padding_length even if one of\n them is bad in order to ward-off timing attacks. */\n var len = output.length();\n var paddingLength = output.last();\n for(var i = len - 1 - paddingLength; i < len - 1; ++i) {\n rval = rval && (output.at(i) == paddingLength);\n }\n if(rval) {\n // trim off padding bytes and last padding length byte\n output.truncate(paddingLength + 1);\n }\n }\n return rval;\n}\n\n/**\n * Decrypts a TLSCipherText record into a TLSCompressed record using\n * AES in CBC mode.\n *\n * @param record the TLSCipherText record to decrypt.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nfunction decrypt_aes_cbc_sha1(record, s) {\n var rval = false;\n\n var iv;\n if(record.version.minor === tls.Versions.TLS_1_0.minor) {\n // use pre-generated IV when initializing for TLS 1.0, otherwise use the\n // residue from the previous decryption\n iv = s.cipherState.init ? null : s.cipherState.iv;\n } else {\n // TLS 1.1+ use an explicit IV every time to protect against CBC attacks\n // that is appended to the record fragment\n iv = record.fragment.getBytes(16);\n }\n\n s.cipherState.init = true;\n\n // start cipher\n var cipher = s.cipherState.cipher;\n cipher.start({iv: iv});\n\n // do decryption\n cipher.update(record.fragment);\n rval = cipher.finish(decrypt_aes_cbc_sha1_padding);\n\n // even if decryption fails, keep going to minimize timing attacks\n\n // decrypted data:\n // first (len - 20) bytes = application data\n // last 20 bytes = MAC\n var macLen = s.macLength;\n\n // create a random MAC to check against should the mac length check fail\n // Note: do this regardless of the failure to keep timing consistent\n var mac = forge.random.getBytesSync(macLen);\n\n // get fragment and mac\n var len = cipher.output.length();\n if(len >= macLen) {\n record.fragment = cipher.output.getBytes(len - macLen);\n mac = cipher.output.getBytes(macLen);\n } else {\n // bad data, but get bytes anyway to try to keep timing consistent\n record.fragment = cipher.output.getBytes();\n }\n record.fragment = forge.util.createBuffer(record.fragment);\n record.length = record.fragment.length();\n\n // see if data integrity checks out, update sequence number\n var mac2 = s.macFunction(s.macKey, s.sequenceNumber, record);\n s.updateSequenceNumber();\n rval = compareMacs(s.macKey, mac, mac2) && rval;\n return rval;\n}\n\n/**\n * Safely compare two MACs. This function will compare two MACs in a way\n * that protects against timing attacks.\n *\n * TODO: Expose elsewhere as a utility API.\n *\n * See: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n *\n * @param key the MAC key to use.\n * @param mac1 as a binary-encoded string of bytes.\n * @param mac2 as a binary-encoded string of bytes.\n *\n * @return true if the MACs are the same, false if not.\n */\nfunction compareMacs(key, mac1, mac2) {\n var hmac = forge.hmac.create();\n\n hmac.start('SHA1', key);\n hmac.update(mac1);\n mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(mac2);\n mac2 = hmac.digest().getBytes();\n\n return mac1 === mac2;\n}\n","/**\n * Copyright (c) 2019 Digital Bazaar, Inc.\n */\n\nvar forge = require('./forge');\nrequire('./asn1');\nvar asn1 = forge.asn1;\n\nexports.privateKeyValidator = {\n // PrivateKeyInfo\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'PrivateKeyInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // privateKeyAlgorithm\n name: 'PrivateKeyInfo.privateKeyAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'privateKeyOid'\n }]\n }, {\n // PrivateKey\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'privateKey'\n }]\n};\n\nexports.publicKeyValidator = {\n name: 'SubjectPublicKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'subjectPublicKeyInfo',\n value: [{\n name: 'SubjectPublicKeyInfo.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'publicKeyOid'\n }]\n },\n // capture group for ed25519PublicKey\n {\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n composed: true,\n captureBitStringValue: 'ed25519PublicKey'\n }\n // FIXME: this is capture group for rsaPublicKey, use it in this API or\n // discard?\n /* {\n // subjectPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n value: [{\n // RSAPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'rsaPublicKey'\n }]\n } */\n ]\n};\n","/**\n * Javascript implementation of Abstract Syntax Notation Number One.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n *\n * An API for storing data using the Abstract Syntax Notation Number One\n * format using DER (Distinguished Encoding Rules) encoding. This encoding is\n * commonly used to store data for PKI, i.e. X.509 Certificates, and this\n * implementation exists for that purpose.\n *\n * Abstract Syntax Notation Number One (ASN.1) is used to define the abstract\n * syntax of information without restricting the way the information is encoded\n * for transmission. It provides a standard that allows for open systems\n * communication. ASN.1 defines the syntax of information data and a number of\n * simple data types as well as a notation for describing them and specifying\n * values for them.\n *\n * The RSA algorithm creates public and private keys that are often stored in\n * X.509 or PKCS#X formats -- which use ASN.1 (encoded in DER format). This\n * class provides the most basic functionality required to store and load DSA\n * keys that are encoded according to ASN.1.\n *\n * The most common binary encodings for ASN.1 are BER (Basic Encoding Rules)\n * and DER (Distinguished Encoding Rules). DER is just a subset of BER that\n * has stricter requirements for how data must be encoded.\n *\n * Each ASN.1 structure has a tag (a byte identifying the ASN.1 structure type)\n * and a byte array for the value of this ASN1 structure which may be data or a\n * list of ASN.1 structures.\n *\n * Each ASN.1 structure using BER is (Tag-Length-Value):\n *\n * | byte 0 | bytes X | bytes Y |\n * |--------|---------|----------\n * | tag | length | value |\n *\n * ASN.1 allows for tags to be of \"High-tag-number form\" which allows a tag to\n * be two or more octets, but that is not supported by this class. A tag is\n * only 1 byte. Bits 1-5 give the tag number (ie the data type within a\n * particular 'class'), 6 indicates whether or not the ASN.1 value is\n * constructed from other ASN.1 values, and bits 7 and 8 give the 'class'. If\n * bits 7 and 8 are both zero, the class is UNIVERSAL. If only bit 7 is set,\n * then the class is APPLICATION. If only bit 8 is set, then the class is\n * CONTEXT_SPECIFIC. If both bits 7 and 8 are set, then the class is PRIVATE.\n * The tag numbers for the data types for the class UNIVERSAL are listed below:\n *\n * UNIVERSAL 0 Reserved for use by the encoding rules\n * UNIVERSAL 1 Boolean type\n * UNIVERSAL 2 Integer type\n * UNIVERSAL 3 Bitstring type\n * UNIVERSAL 4 Octetstring type\n * UNIVERSAL 5 Null type\n * UNIVERSAL 6 Object identifier type\n * UNIVERSAL 7 Object descriptor type\n * UNIVERSAL 8 External type and Instance-of type\n * UNIVERSAL 9 Real type\n * UNIVERSAL 10 Enumerated type\n * UNIVERSAL 11 Embedded-pdv type\n * UNIVERSAL 12 UTF8String type\n * UNIVERSAL 13 Relative object identifier type\n * UNIVERSAL 14-15 Reserved for future editions\n * UNIVERSAL 16 Sequence and Sequence-of types\n * UNIVERSAL 17 Set and Set-of types\n * UNIVERSAL 18-22, 25-30 Character string types\n * UNIVERSAL 23-24 Time types\n *\n * The length of an ASN.1 structure is specified after the tag identifier.\n * There is a definite form and an indefinite form. The indefinite form may\n * be used if the encoding is constructed and not all immediately available.\n * The indefinite form is encoded using a length byte with only the 8th bit\n * set. The end of the constructed object is marked using end-of-contents\n * octets (two zero bytes).\n *\n * The definite form looks like this:\n *\n * The length may take up 1 or more bytes, it depends on the length of the\n * value of the ASN.1 structure. DER encoding requires that if the ASN.1\n * structure has a value that has a length greater than 127, more than 1 byte\n * will be used to store its length, otherwise just one byte will be used.\n * This is strict.\n *\n * In the case that the length of the ASN.1 value is less than 127, 1 octet\n * (byte) is used to store the \"short form\" length. The 8th bit has a value of\n * 0 indicating the length is \"short form\" and not \"long form\" and bits 7-1\n * give the length of the data. (The 8th bit is the left-most, most significant\n * bit: also known as big endian or network format).\n *\n * In the case that the length of the ASN.1 value is greater than 127, 2 to\n * 127 octets (bytes) are used to store the \"long form\" length. The first\n * byte's 8th bit is set to 1 to indicate the length is \"long form.\" Bits 7-1\n * give the number of additional octets. All following octets are in base 256\n * with the most significant digit first (typical big-endian binary unsigned\n * integer storage). So, for instance, if the length of a value was 257, the\n * first byte would be set to:\n *\n * 10000010 = 130 = 0x82.\n *\n * This indicates there are 2 octets (base 256) for the length. The second and\n * third bytes (the octets just mentioned) would store the length in base 256:\n *\n * octet 2: 00000001 = 1 * 256^1 = 256\n * octet 3: 00000001 = 1 * 256^0 = 1\n * total = 257\n *\n * The algorithm for converting a js integer value of 257 to base-256 is:\n *\n * var value = 257;\n * var bytes = [];\n * bytes[0] = (value >>> 8) & 0xFF; // most significant byte first\n * bytes[1] = value & 0xFF; // least significant byte last\n *\n * On the ASN.1 UNIVERSAL Object Identifier (OID) type:\n *\n * An OID can be written like: \"value1.value2.value3...valueN\"\n *\n * The DER encoding rules:\n *\n * The first byte has the value 40 * value1 + value2.\n * The following bytes, if any, encode the remaining values. Each value is\n * encoded in base 128, most significant digit first (big endian), with as\n * few digits as possible, and the most significant bit of each byte set\n * to 1 except the last in each value's encoding. For example: Given the\n * OID \"1.2.840.113549\", its DER encoding is (remember each byte except the\n * last one in each encoding is OR'd with 0x80):\n *\n * byte 1: 40 * 1 + 2 = 42 = 0x2A.\n * bytes 2-3: 128 * 6 + 72 = 840 = 6 72 = 6 72 = 0x0648 = 0x8648\n * bytes 4-6: 16384 * 6 + 128 * 119 + 13 = 6 119 13 = 0x06770D = 0x86F70D\n *\n * The final value is: 0x2A864886F70D.\n * The full OID (including ASN.1 tag and length of 6 bytes) is:\n * 0x06062A864886F70D\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./oids');\n\n/* ASN.1 API */\nvar asn1 = module.exports = forge.asn1 = forge.asn1 || {};\n\n/**\n * ASN.1 classes.\n */\nasn1.Class = {\n UNIVERSAL: 0x00,\n APPLICATION: 0x40,\n CONTEXT_SPECIFIC: 0x80,\n PRIVATE: 0xC0\n};\n\n/**\n * ASN.1 types. Not all types are supported by this implementation, only\n * those necessary to implement a simple PKI are implemented.\n */\nasn1.Type = {\n NONE: 0,\n BOOLEAN: 1,\n INTEGER: 2,\n BITSTRING: 3,\n OCTETSTRING: 4,\n NULL: 5,\n OID: 6,\n ODESC: 7,\n EXTERNAL: 8,\n REAL: 9,\n ENUMERATED: 10,\n EMBEDDED: 11,\n UTF8: 12,\n ROID: 13,\n SEQUENCE: 16,\n SET: 17,\n PRINTABLESTRING: 19,\n IA5STRING: 22,\n UTCTIME: 23,\n GENERALIZEDTIME: 24,\n BMPSTRING: 30\n};\n\n/**\n * Creates a new asn1 object.\n *\n * @param tagClass the tag class for the object.\n * @param type the data type (tag number) for the object.\n * @param constructed true if the asn1 object is in constructed form.\n * @param value the value for the object, if it is not constructed.\n * @param [options] the options to use:\n * [bitStringContents] the plain BIT STRING content including padding\n * byte.\n *\n * @return the asn1 object.\n */\nasn1.create = function(tagClass, type, constructed, value, options) {\n /* An asn1 object has a tagClass, a type, a constructed flag, and a\n value. The value's type depends on the constructed flag. If\n constructed, it will contain a list of other asn1 objects. If not,\n it will contain the ASN.1 value as an array of bytes formatted\n according to the ASN.1 data type. */\n\n // remove undefined values\n if(forge.util.isArray(value)) {\n var tmp = [];\n for(var i = 0; i < value.length; ++i) {\n if(value[i] !== undefined) {\n tmp.push(value[i]);\n }\n }\n value = tmp;\n }\n\n var obj = {\n tagClass: tagClass,\n type: type,\n constructed: constructed,\n composed: constructed || forge.util.isArray(value),\n value: value\n };\n if(options && 'bitStringContents' in options) {\n // TODO: copy byte buffer if it's a buffer not a string\n obj.bitStringContents = options.bitStringContents;\n // TODO: add readonly flag to avoid this overhead\n // save copy to detect changes\n obj.original = asn1.copy(obj);\n }\n return obj;\n};\n\n/**\n * Copies an asn1 object.\n *\n * @param obj the asn1 object.\n * @param [options] copy options:\n * [excludeBitStringContents] true to not copy bitStringContents\n *\n * @return the a copy of the asn1 object.\n */\nasn1.copy = function(obj, options) {\n var copy;\n\n if(forge.util.isArray(obj)) {\n copy = [];\n for(var i = 0; i < obj.length; ++i) {\n copy.push(asn1.copy(obj[i], options));\n }\n return copy;\n }\n\n if(typeof obj === 'string') {\n // TODO: copy byte buffer if it's a buffer not a string\n return obj;\n }\n\n copy = {\n tagClass: obj.tagClass,\n type: obj.type,\n constructed: obj.constructed,\n composed: obj.composed,\n value: asn1.copy(obj.value, options)\n };\n if(options && !options.excludeBitStringContents) {\n // TODO: copy byte buffer if it's a buffer not a string\n copy.bitStringContents = obj.bitStringContents;\n }\n return copy;\n};\n\n/**\n * Compares asn1 objects for equality.\n *\n * Note this function does not run in constant time.\n *\n * @param obj1 the first asn1 object.\n * @param obj2 the second asn1 object.\n * @param [options] compare options:\n * [includeBitStringContents] true to compare bitStringContents\n *\n * @return true if the asn1 objects are equal.\n */\nasn1.equals = function(obj1, obj2, options) {\n if(forge.util.isArray(obj1)) {\n if(!forge.util.isArray(obj2)) {\n return false;\n }\n if(obj1.length !== obj2.length) {\n return false;\n }\n for(var i = 0; i < obj1.length; ++i) {\n if(!asn1.equals(obj1[i], obj2[i])) {\n return false;\n }\n }\n return true;\n }\n\n if(typeof obj1 !== typeof obj2) {\n return false;\n }\n\n if(typeof obj1 === 'string') {\n return obj1 === obj2;\n }\n\n var equal = obj1.tagClass === obj2.tagClass &&\n obj1.type === obj2.type &&\n obj1.constructed === obj2.constructed &&\n obj1.composed === obj2.composed &&\n asn1.equals(obj1.value, obj2.value);\n if(options && options.includeBitStringContents) {\n equal = equal && (obj1.bitStringContents === obj2.bitStringContents);\n }\n\n return equal;\n};\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param b the BER-encoded ASN.1 byte buffer, starting with the first\n * length byte.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nasn1.getBerValueLength = function(b) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n var b2 = b.getByte();\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n length = b.getInt((b2 & 0x7F) << 3);\n }\n return length;\n};\n\n/**\n * Check if the byte buffer has enough bytes. Throws an Error if not.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n * @param n the number of bytes the buffer must have.\n */\nfunction _checkBufferLength(bytes, remaining, n) {\n if(n > remaining) {\n var error = new Error('Too few bytes to parse DER.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = n;\n throw error;\n }\n}\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nvar _getValueLength = function(bytes, remaining) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n // fromDer already checked that this byte exists\n var b2 = bytes.getByte();\n remaining--;\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n var longFormBytes = b2 & 0x7F;\n _checkBufferLength(bytes, remaining, longFormBytes);\n length = bytes.getInt(longFormBytes << 3);\n }\n // FIXME: this will only happen for 32 bit getInt with high bit set\n if(length < 0) {\n throw new Error('Negative length: ' + length);\n }\n return length;\n};\n\n/**\n * Parses an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * @param [options] object with options or boolean strict flag\n * [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * [parseAllBytes] true to ensure all bytes are parsed\n * (default: true)\n * [decodeBitStrings] true to attempt to decode the content of\n * BIT STRINGs (not OCTET STRINGs) using strict mode. Note that\n * without schema support to understand the data context this can\n * erroneously decode values that happen to be valid ASN.1. This\n * flag will be deprecated or removed as soon as schema support is\n * available. (default: true)\n *\n * @throws Will throw an error for various malformed input conditions.\n *\n * @return the parsed asn1 object.\n */\nasn1.fromDer = function(bytes, options) {\n if(options === undefined) {\n options = {\n strict: true,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(typeof options === 'boolean') {\n options = {\n strict: options,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(!('strict' in options)) {\n options.strict = true;\n }\n if(!('parseAllBytes' in options)) {\n options.parseAllBytes = true;\n }\n if(!('decodeBitStrings' in options)) {\n options.decodeBitStrings = true;\n }\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var byteCount = bytes.length();\n var value = _fromDer(bytes, bytes.length(), 0, options);\n if(options.parseAllBytes && bytes.length() !== 0) {\n var error = new Error('Unparsed DER bytes remain after ASN.1 parsing.');\n error.byteCount = byteCount;\n error.remaining = bytes.length();\n throw error;\n }\n return value;\n};\n\n/**\n * Internal function to parse an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the number of bytes remaining for this chunk.\n * @param depth the current parsing depth.\n * @param options object with same options as fromDer().\n *\n * @return the parsed asn1 object.\n */\nfunction _fromDer(bytes, remaining, depth, options) {\n // temporary storage for consumption calculations\n var start;\n\n // minimum length for ASN.1 DER structure is 2\n _checkBufferLength(bytes, remaining, 2);\n\n // get the first byte\n var b1 = bytes.getByte();\n // consumed one byte\n remaining--;\n\n // get the tag class\n var tagClass = (b1 & 0xC0);\n\n // get the type (bits 1-5)\n var type = b1 & 0x1F;\n\n // get the variable value length and adjust remaining bytes\n start = bytes.length();\n var length = _getValueLength(bytes, remaining);\n remaining -= start - bytes.length();\n\n // ensure there are enough bytes to get the value\n if(length !== undefined && length > remaining) {\n if(options.strict) {\n var error = new Error('Too few bytes to read ASN.1 value.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = length;\n throw error;\n }\n // Note: be lenient with truncated values and use remaining state bytes\n length = remaining;\n }\n\n // value storage\n var value;\n // possible BIT STRING contents storage\n var bitStringContents;\n\n // constructed flag is bit 6 (32 = 0x20) of the first byte\n var constructed = ((b1 & 0x20) === 0x20);\n if(constructed) {\n // parse child asn1 objects from the value\n value = [];\n if(length === undefined) {\n // asn1 object of indefinite length, read until end tag\n for(;;) {\n _checkBufferLength(bytes, remaining, 2);\n if(bytes.bytes(2) === String.fromCharCode(0, 0)) {\n bytes.getBytes(2);\n remaining -= 2;\n break;\n }\n start = bytes.length();\n value.push(_fromDer(bytes, remaining, depth + 1, options));\n remaining -= start - bytes.length();\n }\n } else {\n // parsing asn1 object of definite length\n while(length > 0) {\n start = bytes.length();\n value.push(_fromDer(bytes, length, depth + 1, options));\n remaining -= start - bytes.length();\n length -= start - bytes.length();\n }\n }\n }\n\n // if a BIT STRING, save the contents including padding\n if(value === undefined && tagClass === asn1.Class.UNIVERSAL &&\n type === asn1.Type.BITSTRING) {\n bitStringContents = bytes.bytes(length);\n }\n\n // determine if a non-constructed value should be decoded as a composed\n // value that contains other ASN.1 objects. BIT STRINGs (and OCTET STRINGs)\n // can be used this way.\n if(value === undefined && options.decodeBitStrings &&\n tagClass === asn1.Class.UNIVERSAL &&\n // FIXME: OCTET STRINGs not yet supported here\n // .. other parts of forge expect to decode OCTET STRINGs manually\n (type === asn1.Type.BITSTRING /*|| type === asn1.Type.OCTETSTRING*/) &&\n length > 1) {\n // save read position\n var savedRead = bytes.read;\n var savedRemaining = remaining;\n var unused = 0;\n if(type === asn1.Type.BITSTRING) {\n /* The first octet gives the number of bits by which the length of the\n bit string is less than the next multiple of eight (this is called\n the \"number of unused bits\").\n\n The second and following octets give the value of the bit string\n converted to an octet string. */\n _checkBufferLength(bytes, remaining, 1);\n unused = bytes.getByte();\n remaining--;\n }\n // if all bits are used, maybe the BIT/OCTET STRING holds ASN.1 objs\n if(unused === 0) {\n try {\n // attempt to parse child asn1 object from the value\n // (stored in array to signal composed value)\n start = bytes.length();\n var subOptions = {\n // enforce strict mode to avoid parsing ASN.1 from plain data\n strict: true,\n decodeBitStrings: true\n };\n var composed = _fromDer(bytes, remaining, depth + 1, subOptions);\n var used = start - bytes.length();\n remaining -= used;\n if(type == asn1.Type.BITSTRING) {\n used++;\n }\n\n // if the data all decoded and the class indicates UNIVERSAL or\n // CONTEXT_SPECIFIC then assume we've got an encapsulated ASN.1 object\n var tc = composed.tagClass;\n if(used === length &&\n (tc === asn1.Class.UNIVERSAL || tc === asn1.Class.CONTEXT_SPECIFIC)) {\n value = [composed];\n }\n } catch(ex) {\n }\n }\n if(value === undefined) {\n // restore read position\n bytes.read = savedRead;\n remaining = savedRemaining;\n }\n }\n\n if(value === undefined) {\n // asn1 not constructed or composed, get raw value\n // TODO: do DER to OID conversion and vice-versa in .toDer?\n\n if(length === undefined) {\n if(options.strict) {\n throw new Error('Non-constructed ASN.1 object of indefinite length.');\n }\n // be lenient and use remaining state bytes\n length = remaining;\n }\n\n if(type === asn1.Type.BMPSTRING) {\n value = '';\n for(; length > 0; length -= 2) {\n _checkBufferLength(bytes, remaining, 2);\n value += String.fromCharCode(bytes.getInt16());\n remaining -= 2;\n }\n } else {\n value = bytes.getBytes(length);\n remaining -= length;\n }\n }\n\n // add BIT STRING contents if available\n var asn1Options = bitStringContents === undefined ? null : {\n bitStringContents: bitStringContents\n };\n\n // create and return asn1 object\n return asn1.create(tagClass, type, constructed, value, asn1Options);\n}\n\n/**\n * Converts the given asn1 object to a buffer of bytes in DER format.\n *\n * @param asn1 the asn1 object to convert to bytes.\n *\n * @return the buffer of bytes.\n */\nasn1.toDer = function(obj) {\n var bytes = forge.util.createBuffer();\n\n // build the first byte\n var b1 = obj.tagClass | obj.type;\n\n // for storing the ASN.1 value\n var value = forge.util.createBuffer();\n\n // use BIT STRING contents if available and data not changed\n var useBitStringContents = false;\n if('bitStringContents' in obj) {\n useBitStringContents = true;\n if(obj.original) {\n useBitStringContents = asn1.equals(obj, obj.original);\n }\n }\n\n if(useBitStringContents) {\n value.putBytes(obj.bitStringContents);\n } else if(obj.composed) {\n // if composed, use each child asn1 object's DER bytes as value\n // turn on 6th bit (0x20 = 32) to indicate asn1 is constructed\n // from other asn1 objects\n if(obj.constructed) {\n b1 |= 0x20;\n } else {\n // type is a bit string, add unused bits of 0x00\n value.putByte(0x00);\n }\n\n // add all of the child DER bytes together\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n value.putBuffer(asn1.toDer(obj.value[i]));\n }\n }\n } else {\n // use asn1.value directly\n if(obj.type === asn1.Type.BMPSTRING) {\n for(var i = 0; i < obj.value.length; ++i) {\n value.putInt16(obj.value.charCodeAt(i));\n }\n } else {\n // ensure integer is minimally-encoded\n // TODO: should all leading bytes be stripped vs just one?\n // .. ex '00 00 01' => '01'?\n if(obj.type === asn1.Type.INTEGER &&\n obj.value.length > 1 &&\n // leading 0x00 for positive integer\n ((obj.value.charCodeAt(0) === 0 &&\n (obj.value.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (obj.value.charCodeAt(0) === 0xFF &&\n (obj.value.charCodeAt(1) & 0x80) === 0x80))) {\n value.putBytes(obj.value.substr(1));\n } else {\n value.putBytes(obj.value);\n }\n }\n }\n\n // add tag byte\n bytes.putByte(b1);\n\n // use \"short form\" encoding\n if(value.length() <= 127) {\n // one byte describes the length\n // bit 8 = 0 and bits 7-1 = length\n bytes.putByte(value.length() & 0x7F);\n } else {\n // use \"long form\" encoding\n // 2 to 127 bytes describe the length\n // first byte: bit 8 = 1 and bits 7-1 = # of additional bytes\n // other bytes: length in base 256, big-endian\n var len = value.length();\n var lenBytes = '';\n do {\n lenBytes += String.fromCharCode(len & 0xFF);\n len = len >>> 8;\n } while(len > 0);\n\n // set first byte to # bytes used to store the length and turn on\n // bit 8 to indicate long-form length is used\n bytes.putByte(lenBytes.length | 0x80);\n\n // concatenate length bytes in reverse since they were generated\n // little endian and we need big endian\n for(var i = lenBytes.length - 1; i >= 0; --i) {\n bytes.putByte(lenBytes.charCodeAt(i));\n }\n }\n\n // concatenate value bytes\n bytes.putBuffer(value);\n return bytes;\n};\n\n/**\n * Converts an OID dot-separated string to a byte buffer. The byte buffer\n * contains only the DER-encoded value, not any tag or length bytes.\n *\n * @param oid the OID dot-separated string.\n *\n * @return the byte buffer.\n */\nasn1.oidToDer = function(oid) {\n // split OID into individual values\n var values = oid.split('.');\n var bytes = forge.util.createBuffer();\n\n // first byte is 40 * value1 + value2\n bytes.putByte(40 * parseInt(values[0], 10) + parseInt(values[1], 10));\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var last, valueBytes, value, b;\n for(var i = 2; i < values.length; ++i) {\n // produce value bytes in reverse because we don't know how many\n // bytes it will take to store the value\n last = true;\n valueBytes = [];\n value = parseInt(values[i], 10);\n do {\n b = value & 0x7F;\n value = value >>> 7;\n // if value is not last, then turn on 8th bit\n if(!last) {\n b |= 0x80;\n }\n valueBytes.push(b);\n last = false;\n } while(value > 0);\n\n // add value bytes in reverse (needs to be in big endian)\n for(var n = valueBytes.length - 1; n >= 0; --n) {\n bytes.putByte(valueBytes[n]);\n }\n }\n\n return bytes;\n};\n\n/**\n * Converts a DER-encoded byte buffer to an OID dot-separated string. The\n * byte buffer should contain only the DER-encoded value, not any tag or\n * length bytes.\n *\n * @param bytes the byte buffer.\n *\n * @return the OID dot-separated string.\n */\nasn1.derToOid = function(bytes) {\n var oid;\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n // first byte is 40 * value1 + value2\n var b = bytes.getByte();\n oid = Math.floor(b / 40) + '.' + (b % 40);\n\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var value = 0;\n while(bytes.length() > 0) {\n b = bytes.getByte();\n value = value << 7;\n // not the last byte for the value\n if(b & 0x80) {\n value += b & 0x7F;\n } else {\n // last byte\n oid += '.' + (value + b);\n value = 0;\n }\n }\n\n return oid;\n};\n\n/**\n * Converts a UTCTime value to a date.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Parsing that structure hasn't been implemented yet.\n *\n * @param utc the UTCTime value to convert.\n *\n * @return the date.\n */\nasn1.utcTimeToDate = function(utc) {\n /* The following formats can be used:\n\n YYMMDDhhmmZ\n YYMMDDhhmm+hh'mm'\n YYMMDDhhmm-hh'mm'\n YYMMDDhhmmssZ\n YYMMDDhhmmss+hh'mm'\n YYMMDDhhmmss-hh'mm'\n\n Where:\n\n YY is the least significant two digits of the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n // if YY >= 50 use 19xx, if YY < 50 use 20xx\n var year = parseInt(utc.substr(0, 2), 10);\n year = (year >= 50) ? 1900 + year : 2000 + year;\n var MM = parseInt(utc.substr(2, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(utc.substr(4, 2), 10);\n var hh = parseInt(utc.substr(6, 2), 10);\n var mm = parseInt(utc.substr(8, 2), 10);\n var ss = 0;\n\n // not just YYMMDDhhmmZ\n if(utc.length > 11) {\n // get character after minutes\n var c = utc.charAt(10);\n var end = 10;\n\n // see if seconds are present\n if(c !== '+' && c !== '-') {\n // get seconds\n ss = parseInt(utc.substr(10, 2), 10);\n end += 2;\n }\n }\n\n // update date\n date.setUTCFullYear(year, MM, DD);\n date.setUTCHours(hh, mm, ss, 0);\n\n if(end) {\n // get +/- after end of time\n c = utc.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(utc.substr(end + 1, 2), 10);\n var mmoffset = parseInt(utc.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n var offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n date.setTime(+date - offset);\n } else {\n date.setTime(+date + offset);\n }\n }\n }\n\n return date;\n};\n\n/**\n * Converts a GeneralizedTime value to a date.\n *\n * @param gentime the GeneralizedTime value to convert.\n *\n * @return the date.\n */\nasn1.generalizedTimeToDate = function(gentime) {\n /* The following formats can be used:\n\n YYYYMMDDHHMMSS\n YYYYMMDDHHMMSS.fff\n YYYYMMDDHHMMSSZ\n YYYYMMDDHHMMSS.fffZ\n YYYYMMDDHHMMSS+hh'mm'\n YYYYMMDDHHMMSS.fff+hh'mm'\n YYYYMMDDHHMMSS-hh'mm'\n YYYYMMDDHHMMSS.fff-hh'mm'\n\n Where:\n\n YYYY is the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n .fff is the second fraction, accurate to three decimal places\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n var YYYY = parseInt(gentime.substr(0, 4), 10);\n var MM = parseInt(gentime.substr(4, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(gentime.substr(6, 2), 10);\n var hh = parseInt(gentime.substr(8, 2), 10);\n var mm = parseInt(gentime.substr(10, 2), 10);\n var ss = parseInt(gentime.substr(12, 2), 10);\n var fff = 0;\n var offset = 0;\n var isUTC = false;\n\n if(gentime.charAt(gentime.length - 1) === 'Z') {\n isUTC = true;\n }\n\n var end = gentime.length - 5, c = gentime.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(gentime.substr(end + 1, 2), 10);\n var mmoffset = parseInt(gentime.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n offset *= -1;\n }\n\n isUTC = true;\n }\n\n // check for second fraction\n if(gentime.charAt(14) === '.') {\n fff = parseFloat(gentime.substr(14), 10) * 1000;\n }\n\n if(isUTC) {\n date.setUTCFullYear(YYYY, MM, DD);\n date.setUTCHours(hh, mm, ss, fff);\n\n // apply offset\n date.setTime(+date + offset);\n } else {\n date.setFullYear(YYYY, MM, DD);\n date.setHours(hh, mm, ss, fff);\n }\n\n return date;\n};\n\n/**\n * Converts a date to a UTCTime value.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Converting to a GeneralizedTime hasn't been\n * implemented yet.\n *\n * @param date the date to convert.\n *\n * @return the UTCTime value.\n */\nasn1.dateToUtcTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYMMDDhhmmssZ\n var format = [];\n format.push(('' + date.getUTCFullYear()).substr(2));\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a date to a GeneralizedTime value.\n *\n * @param date the date to convert.\n *\n * @return the GeneralizedTime value as a string.\n */\nasn1.dateToGeneralizedTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYYYMMDDHHMMSSZ\n var format = [];\n format.push('' + date.getUTCFullYear());\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a javascript integer to a DER-encoded byte buffer to be used\n * as the value for an INTEGER type.\n *\n * @param x the integer.\n *\n * @return the byte buffer.\n */\nasn1.integerToDer = function(x) {\n var rval = forge.util.createBuffer();\n if(x >= -0x80 && x < 0x80) {\n return rval.putSignedInt(x, 8);\n }\n if(x >= -0x8000 && x < 0x8000) {\n return rval.putSignedInt(x, 16);\n }\n if(x >= -0x800000 && x < 0x800000) {\n return rval.putSignedInt(x, 24);\n }\n if(x >= -0x80000000 && x < 0x80000000) {\n return rval.putSignedInt(x, 32);\n }\n var error = new Error('Integer too large; max is 32-bits.');\n error.integer = x;\n throw error;\n};\n\n/**\n * Converts a DER-encoded byte buffer to a javascript integer. This is\n * typically used to decode the value of an INTEGER type.\n *\n * @param bytes the byte buffer.\n *\n * @return the integer.\n */\nasn1.derToInteger = function(bytes) {\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var n = bytes.length() * 8;\n if(n > 32) {\n throw new Error('Integer too large; max is 32-bits.');\n }\n return bytes.getSignedInt(n);\n};\n\n/**\n * Validates that the given ASN.1 object is at least a super set of the\n * given ASN.1 structure. Only tag classes and types are checked. An\n * optional map may also be provided to capture ASN.1 values while the\n * structure is checked.\n *\n * To capture an ASN.1 value, set an object in the validator's 'capture'\n * parameter to the key to use in the capture map. To capture the full\n * ASN.1 object, specify 'captureAsn1'. To capture BIT STRING bytes, including\n * the leading unused bits counter byte, specify 'captureBitStringContents'.\n * To capture BIT STRING bytes, without the leading unused bits counter byte,\n * specify 'captureBitStringValue'.\n *\n * Objects in the validator may set a field 'optional' to true to indicate\n * that it isn't necessary to pass validation.\n *\n * @param obj the ASN.1 object to validate.\n * @param v the ASN.1 structure validator.\n * @param capture an optional map to capture values in.\n * @param errors an optional array for storing validation errors.\n *\n * @return true on success, false on failure.\n */\nasn1.validate = function(obj, v, capture, errors) {\n var rval = false;\n\n // ensure tag class and type are the same if specified\n if((obj.tagClass === v.tagClass || typeof(v.tagClass) === 'undefined') &&\n (obj.type === v.type || typeof(v.type) === 'undefined')) {\n // ensure constructed flag is the same if specified\n if(obj.constructed === v.constructed ||\n typeof(v.constructed) === 'undefined') {\n rval = true;\n\n // handle sub values\n if(v.value && forge.util.isArray(v.value)) {\n var j = 0;\n for(var i = 0; rval && i < v.value.length; ++i) {\n rval = v.value[i].optional || false;\n if(obj.value[j]) {\n rval = asn1.validate(obj.value[j], v.value[i], capture, errors);\n if(rval) {\n ++j;\n } else if(v.value[i].optional) {\n rval = true;\n }\n }\n if(!rval && errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Tag class \"' + v.tagClass + '\", type \"' +\n v.type + '\" expected value length \"' +\n v.value.length + '\", got \"' +\n obj.value.length + '\"');\n }\n }\n }\n\n if(rval && capture) {\n if(v.capture) {\n capture[v.capture] = obj.value;\n }\n if(v.captureAsn1) {\n capture[v.captureAsn1] = obj;\n }\n if(v.captureBitStringContents && 'bitStringContents' in obj) {\n capture[v.captureBitStringContents] = obj.bitStringContents;\n }\n if(v.captureBitStringValue && 'bitStringContents' in obj) {\n var value;\n if(obj.bitStringContents.length < 2) {\n capture[v.captureBitStringValue] = '';\n } else {\n // FIXME: support unused bits with data shifting\n var unused = obj.bitStringContents.charCodeAt(0);\n if(unused !== 0) {\n throw new Error(\n 'captureBitStringValue only supported for zero unused bits');\n }\n capture[v.captureBitStringValue] = obj.bitStringContents.slice(1);\n }\n }\n }\n } else if(errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected constructed \"' + v.constructed + '\", got \"' +\n obj.constructed + '\"');\n }\n } else if(errors) {\n if(obj.tagClass !== v.tagClass) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected tag class \"' + v.tagClass + '\", got \"' +\n obj.tagClass + '\"');\n }\n if(obj.type !== v.type) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected type \"' + v.type + '\", got \"' + obj.type + '\"');\n }\n }\n return rval;\n};\n\n// regex for testing for non-latin characters\nvar _nonLatinRegex = /[^\\\\u0000-\\\\u00ff]/;\n\n/**\n * Pretty prints an ASN.1 object to a string.\n *\n * @param obj the object to write out.\n * @param level the level in the tree.\n * @param indentation the indentation to use.\n *\n * @return the string.\n */\nasn1.prettyPrint = function(obj, level, indentation) {\n var rval = '';\n\n // set default level and indentation\n level = level || 0;\n indentation = indentation || 2;\n\n // start new line for deep levels\n if(level > 0) {\n rval += '\\n';\n }\n\n // create indent\n var indent = '';\n for(var i = 0; i < level * indentation; ++i) {\n indent += ' ';\n }\n\n // print class:type\n rval += indent + 'Tag: ';\n switch(obj.tagClass) {\n case asn1.Class.UNIVERSAL:\n rval += 'Universal:';\n break;\n case asn1.Class.APPLICATION:\n rval += 'Application:';\n break;\n case asn1.Class.CONTEXT_SPECIFIC:\n rval += 'Context-Specific:';\n break;\n case asn1.Class.PRIVATE:\n rval += 'Private:';\n break;\n }\n\n if(obj.tagClass === asn1.Class.UNIVERSAL) {\n rval += obj.type;\n\n // known types\n switch(obj.type) {\n case asn1.Type.NONE:\n rval += ' (None)';\n break;\n case asn1.Type.BOOLEAN:\n rval += ' (Boolean)';\n break;\n case asn1.Type.INTEGER:\n rval += ' (Integer)';\n break;\n case asn1.Type.BITSTRING:\n rval += ' (Bit string)';\n break;\n case asn1.Type.OCTETSTRING:\n rval += ' (Octet string)';\n break;\n case asn1.Type.NULL:\n rval += ' (Null)';\n break;\n case asn1.Type.OID:\n rval += ' (Object Identifier)';\n break;\n case asn1.Type.ODESC:\n rval += ' (Object Descriptor)';\n break;\n case asn1.Type.EXTERNAL:\n rval += ' (External or Instance of)';\n break;\n case asn1.Type.REAL:\n rval += ' (Real)';\n break;\n case asn1.Type.ENUMERATED:\n rval += ' (Enumerated)';\n break;\n case asn1.Type.EMBEDDED:\n rval += ' (Embedded PDV)';\n break;\n case asn1.Type.UTF8:\n rval += ' (UTF8)';\n break;\n case asn1.Type.ROID:\n rval += ' (Relative Object Identifier)';\n break;\n case asn1.Type.SEQUENCE:\n rval += ' (Sequence)';\n break;\n case asn1.Type.SET:\n rval += ' (Set)';\n break;\n case asn1.Type.PRINTABLESTRING:\n rval += ' (Printable String)';\n break;\n case asn1.Type.IA5String:\n rval += ' (IA5String (ASCII))';\n break;\n case asn1.Type.UTCTIME:\n rval += ' (UTC time)';\n break;\n case asn1.Type.GENERALIZEDTIME:\n rval += ' (Generalized time)';\n break;\n case asn1.Type.BMPSTRING:\n rval += ' (BMP String)';\n break;\n }\n } else {\n rval += obj.type;\n }\n\n rval += '\\n';\n rval += indent + 'Constructed: ' + obj.constructed + '\\n';\n\n if(obj.composed) {\n var subvalues = 0;\n var sub = '';\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n subvalues += 1;\n sub += asn1.prettyPrint(obj.value[i], level + 1, indentation);\n if((i + 1) < obj.value.length) {\n sub += ',';\n }\n }\n }\n rval += indent + 'Sub values: ' + subvalues + sub;\n } else {\n rval += indent + 'Value: ';\n if(obj.type === asn1.Type.OID) {\n var oid = asn1.derToOid(obj.value);\n rval += oid;\n if(forge.pki && forge.pki.oids) {\n if(oid in forge.pki.oids) {\n rval += ' (' + forge.pki.oids[oid] + ') ';\n }\n }\n }\n if(obj.type === asn1.Type.INTEGER) {\n try {\n rval += asn1.derToInteger(obj.value);\n } catch(ex) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n }\n } else if(obj.type === asn1.Type.BITSTRING) {\n // TODO: shift bits as needed to display without padding\n if(obj.value.length > 1) {\n // remove unused bits field\n rval += '0x' + forge.util.bytesToHex(obj.value.slice(1));\n } else {\n rval += '(none)';\n }\n // show unused bit count\n if(obj.value.length > 0) {\n var unused = obj.value.charCodeAt(0);\n if(unused == 1) {\n rval += ' (1 unused bit shown)';\n } else if(unused > 1) {\n rval += ' (' + unused + ' unused bits shown)';\n }\n }\n } else if(obj.type === asn1.Type.OCTETSTRING) {\n if(!_nonLatinRegex.test(obj.value)) {\n rval += '(' + obj.value + ') ';\n }\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.type === asn1.Type.UTF8) {\n try {\n rval += forge.util.decodeUtf8(obj.value);\n } catch(e) {\n if(e.message === 'URI malformed') {\n rval +=\n '0x' + forge.util.bytesToHex(obj.value) + ' (malformed UTF8)';\n } else {\n throw e;\n }\n }\n } else if(obj.type === asn1.Type.PRINTABLESTRING ||\n obj.type === asn1.Type.IA5String) {\n rval += obj.value;\n } else if(_nonLatinRegex.test(obj.value)) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.value.length === 0) {\n rval += '[null]';\n } else {\n rval += obj.value;\n }\n }\n\n return rval;\n};\n","/**\n * Base-N/Base-X encoding/decoding functions.\n *\n * Original implementation from base-x:\n * https://github.com/cryptocoinjs/base-x\n *\n * Which is MIT licensed:\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\nvar api = {};\nmodule.exports = api;\n\n// baseN alphabet indexes\nvar _reverseAlphabets = {};\n\n/**\n * BaseN-encodes a Uint8Array using the given alphabet.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the baseN-encoded output string.\n */\napi.encode = function(input, alphabet, maxline) {\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n if(maxline !== undefined && typeof maxline !== 'number') {\n throw new TypeError('\"maxline\" must be a number.');\n }\n\n var output = '';\n\n if(!(input instanceof Uint8Array)) {\n // assume forge byte buffer\n output = _encodeWithByteBuffer(input, alphabet);\n } else {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length; ++i) {\n for(var j = 0, carry = input[i]; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n // deal with leading zeros\n for(i = 0; input[i] === 0 && i < input.length - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n }\n\n if(maxline) {\n var regex = new RegExp('.{1,' + maxline + '}', 'g');\n output = output.match(regex).join('\\r\\n');\n }\n\n return output;\n};\n\n/**\n * Decodes a baseN-encoded (using the given alphabet) string to a\n * Uint8Array.\n *\n * @param input the baseN-encoded input string.\n *\n * @return the Uint8Array.\n */\napi.decode = function(input, alphabet) {\n if(typeof input !== 'string') {\n throw new TypeError('\"input\" must be a string.');\n }\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n\n var table = _reverseAlphabets[alphabet];\n if(!table) {\n // compute reverse alphabet\n table = _reverseAlphabets[alphabet] = [];\n for(var i = 0; i < alphabet.length; ++i) {\n table[alphabet.charCodeAt(i)] = i;\n }\n }\n\n // remove whitespace characters\n input = input.replace(/\\s/g, '');\n\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var bytes = [0];\n for(var i = 0; i < input.length; i++) {\n var value = table[input.charCodeAt(i)];\n if(value === undefined) {\n return;\n }\n\n for(var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while(carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for(var k = 0; input[k] === first && k < input.length - 1; ++k) {\n bytes.push(0);\n }\n\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(bytes.reverse());\n }\n\n return new Uint8Array(bytes.reverse());\n};\n\nfunction _encodeWithByteBuffer(input, alphabet) {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length(); ++i) {\n for(var j = 0, carry = input.at(i); j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n var output = '';\n\n // deal with leading zeros\n for(i = 0; input.at(i) === 0 && i < input.length() - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n\n return output;\n}\n","/**\n * Cipher base API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nmodule.exports = forge.cipher = forge.cipher || {};\n\n// registered algorithms\nforge.cipher.algorithms = forge.cipher.algorithms || {};\n\n/**\n * Creates a cipher object that can be used to encrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createCipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: false\n });\n};\n\n/**\n * Creates a decipher object that can be used to decrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createDecipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: true\n });\n};\n\n/**\n * Registers an algorithm by name. If the name was already registered, the\n * algorithm API object will be overwritten.\n *\n * @param name the name of the algorithm.\n * @param algorithm the algorithm API object.\n */\nforge.cipher.registerAlgorithm = function(name, algorithm) {\n name = name.toUpperCase();\n forge.cipher.algorithms[name] = algorithm;\n};\n\n/**\n * Gets a registered algorithm by name.\n *\n * @param name the name of the algorithm.\n *\n * @return the algorithm, if found, null if not.\n */\nforge.cipher.getAlgorithm = function(name) {\n name = name.toUpperCase();\n if(name in forge.cipher.algorithms) {\n return forge.cipher.algorithms[name];\n }\n return null;\n};\n\nvar BlockCipher = forge.cipher.BlockCipher = function(options) {\n this.algorithm = options.algorithm;\n this.mode = this.algorithm.mode;\n this.blockSize = this.mode.blockSize;\n this._finish = false;\n this._input = null;\n this.output = null;\n this._op = options.decrypt ? this.mode.decrypt : this.mode.encrypt;\n this._decrypt = options.decrypt;\n this.algorithm.initialize(options);\n};\n\n/**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * For non-GCM mode, the IV may be a binary-encoded string of bytes, an array\n * of bytes, a byte buffer, or an array of 32-bit integers. If the IV is in\n * bytes, then it must be Nb (16) bytes in length. If the IV is given in as\n * 32-bit integers, then it must be 4 integers long.\n *\n * Note: an IV is not required or used in ECB mode.\n *\n * For GCM-mode, the IV must be given as a binary-encoded string of bytes or\n * a byte buffer. The number of bytes should be 12 (96 bits) as recommended\n * by NIST SP-800-38D but another length may be given.\n *\n * @param options the options to use:\n * iv the initialization vector to use as a binary-encoded string of\n * bytes, null to reuse the last ciphered block from a previous\n * update() (this \"residue\" method is for legacy support only).\n * additionalData additional authentication data as a binary-encoded\n * string of bytes, for 'GCM' mode, (default: none).\n * tagLength desired length of authentication tag, in bits, for\n * 'GCM' mode (0-128, default: 128).\n * tag the authentication tag to check if decrypting, as a\n * binary-encoded string of bytes.\n * output the output the buffer to write to, null to create one.\n */\nBlockCipher.prototype.start = function(options) {\n options = options || {};\n var opts = {};\n for(var key in options) {\n opts[key] = options[key];\n }\n opts.decrypt = this._decrypt;\n this._finish = false;\n this._input = forge.util.createBuffer();\n this.output = options.output || forge.util.createBuffer();\n this.mode.start(opts);\n};\n\n/**\n * Updates the next block according to the cipher mode.\n *\n * @param input the buffer to read from.\n */\nBlockCipher.prototype.update = function(input) {\n if(input) {\n // input given, so empty it into the input buffer\n this._input.putBuffer(input);\n }\n\n // do cipher operation until it needs more input and not finished\n while(!this._op.call(this.mode, this._input, this.output, this._finish) &&\n !this._finish) {}\n\n // free consumed memory from input buffer\n this._input.compact();\n};\n\n/**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use in CBC mode, null for default,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\nBlockCipher.prototype.finish = function(pad) {\n // backwards-compatibility w/deprecated padding API\n // Note: will overwrite padding functions even after another start() call\n if(pad && (this.mode.name === 'ECB' || this.mode.name === 'CBC')) {\n this.mode.pad = function(input) {\n return pad(this.blockSize, input, false);\n };\n this.mode.unpad = function(output) {\n return pad(this.blockSize, output, true);\n };\n }\n\n // build options for padding and afterFinish functions\n var options = {};\n options.decrypt = this._decrypt;\n\n // get # of bytes that won't fill a block\n options.overflow = this._input.length() % this.blockSize;\n\n if(!this._decrypt && this.mode.pad) {\n if(!this.mode.pad(this._input, options)) {\n return false;\n }\n }\n\n // do final update\n this._finish = true;\n this.update();\n\n if(this._decrypt && this.mode.unpad) {\n if(!this.mode.unpad(this.output, options)) {\n return false;\n }\n }\n\n if(this.mode.afterFinish) {\n if(!this.mode.afterFinish(this.output, options)) {\n return false;\n }\n }\n\n return true;\n};\n","/**\n * Supported cipher modes.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.cipher = forge.cipher || {};\n\n// supported cipher modes\nvar modes = module.exports = forge.cipher.modes = forge.cipher.modes || {};\n\n/** Electronic codebook (ECB) (Don't use this; it's not secure) **/\n\nmodes.ecb = function(options) {\n options = options || {};\n this.name = 'ECB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.ecb.prototype.start = function(options) {};\n\nmodes.ecb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.ecb.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher-block Chaining (CBC) **/\n\nmodes.cbc = function(options) {\n options = options || {};\n this.name = 'CBC';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.cbc.prototype.start = function(options) {\n // Note: legacy support for using IV residue (has security flaws)\n // if IV is null, reuse block from previous processing\n if(options.iv === null) {\n // must have a previous block\n if(!this._prev) {\n throw new Error('Invalid IV parameter.');\n }\n this._iv = this._prev.slice(0);\n } else if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n } else {\n // save IV as \"previous\" block\n this._iv = transformIV(options.iv, this.blockSize);\n this._prev = this._iv.slice(0);\n }\n};\n\nmodes.cbc.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n // CBC XOR's IV (or previous block) with plaintext\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._prev[i] ^ input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output, save previous block\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n this._prev = this._outBlock;\n};\n\nmodes.cbc.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output, save previous ciphered block\n // CBC XOR's IV (or previous block) with ciphertext\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._prev[i] ^ this._outBlock[i]);\n }\n this._prev = this._inBlock.slice(0);\n};\n\nmodes.cbc.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.cbc.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher feedback (CFB) **/\n\nmodes.cfb = function(options) {\n options = options || {};\n this.name = 'CFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32() ^ this._outBlock[i];\n output.putInt32(this._inBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32() ^ this._outBlock[i];\n this._partialOutput.putInt32(this._partialBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n output.putInt32(this._inBlock[i] ^ this._outBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32();\n this._partialOutput.putInt32(this._partialBlock[i] ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\n/** Output feedback (OFB) **/\n\nmodes.ofb = function(options) {\n options = options || {};\n this.name = 'OFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(input.length() === 0) {\n return true;\n }\n\n // encrypt block (OFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output and update next input\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n this._inBlock[i] = this._outBlock[i];\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._outBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.decrypt = modes.ofb.prototype.encrypt;\n\n/** Counter (CTR) **/\n\nmodes.ctr = function(options) {\n options = options || {};\n this.name = 'CTR';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CTR always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // block complete, increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.ctr.prototype.decrypt = modes.ctr.prototype.encrypt;\n\n/** Galois/Counter Mode (GCM) **/\n\nmodes.gcm = function(options) {\n options = options || {};\n this.name = 'GCM';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n\n // R is actually this value concatenated with 120 more zero bits, but\n // we only XOR against R so the other zeros have no effect -- we just\n // apply this value to the first integer in a block\n this._R = 0xE1000000;\n};\n\nmodes.gcm.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // ensure IV is a byte buffer\n var iv = forge.util.createBuffer(options.iv);\n\n // no ciphered data processed yet\n this._cipherLength = 0;\n\n // default additional data is none\n var additionalData;\n if('additionalData' in options) {\n additionalData = forge.util.createBuffer(options.additionalData);\n } else {\n additionalData = forge.util.createBuffer();\n }\n\n // default tag length is 128 bits\n if('tagLength' in options) {\n this._tagLength = options.tagLength;\n } else {\n this._tagLength = 128;\n }\n\n // if tag is given, ensure tag matches tag length\n this._tag = null;\n if(options.decrypt) {\n // save tag to check later\n this._tag = forge.util.createBuffer(options.tag).getBytes();\n if(this._tag.length !== (this._tagLength / 8)) {\n throw new Error('Authentication tag does not match tag length.');\n }\n }\n\n // create tmp storage for hash calculation\n this._hashBlock = new Array(this._ints);\n\n // no tag generated yet\n this.tag = null;\n\n // generate hash subkey\n // (apply block cipher to \"zero\" block)\n this._hashSubkey = new Array(this._ints);\n this.cipher.encrypt([0, 0, 0, 0], this._hashSubkey);\n\n // generate table M\n // use 4-bit tables (32 component decomposition of a 16 byte value)\n // 8-bit tables take more space and are known to have security\n // vulnerabilities (in native implementations)\n this.componentBits = 4;\n this._m = this.generateHashTable(this._hashSubkey, this.componentBits);\n\n // Note: support IV length different from 96 bits? (only supporting\n // 96 bits is recommended by NIST SP-800-38D)\n // generate J_0\n var ivLength = iv.length();\n if(ivLength === 12) {\n // 96-bit IV\n this._j0 = [iv.getInt32(), iv.getInt32(), iv.getInt32(), 1];\n } else {\n // IV is NOT 96-bits\n this._j0 = [0, 0, 0, 0];\n while(iv.length() > 0) {\n this._j0 = this.ghash(\n this._hashSubkey, this._j0,\n [iv.getInt32(), iv.getInt32(), iv.getInt32(), iv.getInt32()]);\n }\n this._j0 = this.ghash(\n this._hashSubkey, this._j0, [0, 0].concat(from64To32(ivLength * 8)));\n }\n\n // generate ICB (initial counter block)\n this._inBlock = this._j0.slice(0);\n inc32(this._inBlock);\n this._partialBytes = 0;\n\n // consume authentication data\n additionalData = forge.util.createBuffer(additionalData);\n // save additional data length as a BE 64-bit number\n this._aDataLength = from64To32(additionalData.length() * 8);\n // pad additional data to 128 bit (16 byte) block size\n var overflow = additionalData.length() % this.blockSize;\n if(overflow) {\n additionalData.fillWithByte(0, this.blockSize - overflow);\n }\n this._s = [0, 0, 0, 0];\n while(additionalData.length() > 0) {\n this._s = this.ghash(this._hashSubkey, this._s, [\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32()\n ]);\n }\n};\n\nmodes.gcm.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^= input.getInt32());\n }\n this._cipherLength += this.blockSize;\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes <= 0 || finish) {\n // handle overflow prior to hashing\n if(finish) {\n // get block overflow\n var overflow = inputLength % this.blockSize;\n this._cipherLength += overflow;\n // truncate for hash function\n this._partialOutput.truncate(this.blockSize - overflow);\n } else {\n this._cipherLength += this.blockSize;\n }\n\n // get output block for hashing\n for(var i = 0; i < this._ints; ++i) {\n this._outBlock[i] = this._partialOutput.getInt32();\n }\n this._partialOutput.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n // block still incomplete, restore input buffer, get partial output,\n // and return early\n input.read -= this.blockSize;\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // update hash block S\n this._s = this.ghash(this._hashSubkey, this._s, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.gcm.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength < this.blockSize && !(finish && inputLength > 0)) {\n return true;\n }\n\n // encrypt block (GCM always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n\n // update hash block S\n this._hashBlock[0] = input.getInt32();\n this._hashBlock[1] = input.getInt32();\n this._hashBlock[2] = input.getInt32();\n this._hashBlock[3] = input.getInt32();\n this._s = this.ghash(this._hashSubkey, this._s, this._hashBlock);\n\n // XOR hash input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^ this._hashBlock[i]);\n }\n\n // increment cipher data length\n if(inputLength < this.blockSize) {\n this._cipherLength += inputLength % this.blockSize;\n } else {\n this._cipherLength += this.blockSize;\n }\n};\n\nmodes.gcm.prototype.afterFinish = function(output, options) {\n var rval = true;\n\n // handle overflow\n if(options.decrypt && options.overflow) {\n output.truncate(this.blockSize - options.overflow);\n }\n\n // handle authentication tag\n this.tag = forge.util.createBuffer();\n\n // concatenate additional data length with cipher length\n var lengths = this._aDataLength.concat(from64To32(this._cipherLength * 8));\n\n // include lengths in hash\n this._s = this.ghash(this._hashSubkey, this._s, lengths);\n\n // do GCTR(J_0, S)\n var tag = [];\n this.cipher.encrypt(this._j0, tag);\n for(var i = 0; i < this._ints; ++i) {\n this.tag.putInt32(this._s[i] ^ tag[i]);\n }\n\n // trim tag to length\n this.tag.truncate(this.tag.length() % (this._tagLength / 8));\n\n // check authentication tag\n if(options.decrypt && this.tag.bytes() !== this._tag) {\n rval = false;\n }\n\n return rval;\n};\n\n/**\n * See NIST SP-800-38D 6.3 (Algorithm 1). This function performs Galois\n * field multiplication. The field, GF(2^128), is defined by the polynomial:\n *\n * x^128 + x^7 + x^2 + x + 1\n *\n * Which is represented in little-endian binary form as: 11100001 (0xe1). When\n * the value of a coefficient is 1, a bit is set. The value R, is the\n * concatenation of this value and 120 zero bits, yielding a 128-bit value\n * which matches the block size.\n *\n * This function will multiply two elements (vectors of bytes), X and Y, in\n * the field GF(2^128). The result is initialized to zero. For each bit of\n * X (out of 128), x_i, if x_i is set, then the result is multiplied (XOR'd)\n * by the current value of Y. For each bit, the value of Y will be raised by\n * a power of x (multiplied by the polynomial x). This can be achieved by\n * shifting Y once to the right. If the current value of Y, prior to being\n * multiplied by x, has 0 as its LSB, then it is a 127th degree polynomial.\n * Otherwise, we must divide by R after shifting to find the remainder.\n *\n * @param x the first block to multiply by the second.\n * @param y the second block to multiply by the first.\n *\n * @return the block result of the multiplication.\n */\nmodes.gcm.prototype.multiply = function(x, y) {\n var z_i = [0, 0, 0, 0];\n var v_i = y.slice(0);\n\n // calculate Z_128 (block has 128 bits)\n for(var i = 0; i < 128; ++i) {\n // if x_i is 0, Z_{i+1} = Z_i (unchanged)\n // else Z_{i+1} = Z_i ^ V_i\n // get x_i by finding 32-bit int position, then left shift 1 by remainder\n var x_i = x[(i / 32) | 0] & (1 << (31 - i % 32));\n if(x_i) {\n z_i[0] ^= v_i[0];\n z_i[1] ^= v_i[1];\n z_i[2] ^= v_i[2];\n z_i[3] ^= v_i[3];\n }\n\n // if LSB(V_i) is 1, V_i = V_i >> 1\n // else V_i = (V_i >> 1) ^ R\n this.pow(v_i, v_i);\n }\n\n return z_i;\n};\n\nmodes.gcm.prototype.pow = function(x, out) {\n // if LSB(x) is 1, x = x >>> 1\n // else x = (x >>> 1) ^ R\n var lsb = x[3] & 1;\n\n // always do x >>> 1:\n // starting with the rightmost integer, shift each integer to the right\n // one bit, pulling in the bit from the integer to the left as its top\n // most bit (do this for the last 3 integers)\n for(var i = 3; i > 0; --i) {\n out[i] = (x[i] >>> 1) | ((x[i - 1] & 1) << 31);\n }\n // shift the first integer normally\n out[0] = x[0] >>> 1;\n\n // if lsb was not set, then polynomial had a degree of 127 and doesn't\n // need to divided; otherwise, XOR with R to find the remainder; we only\n // need to XOR the first integer since R technically ends w/120 zero bits\n if(lsb) {\n out[0] ^= this._R;\n }\n};\n\nmodes.gcm.prototype.tableMultiply = function(x) {\n // assumes 4-bit tables are used\n var z = [0, 0, 0, 0];\n for(var i = 0; i < 32; ++i) {\n var idx = (i / 8) | 0;\n var x_i = (x[idx] >>> ((7 - (i % 8)) * 4)) & 0xF;\n var ah = this._m[i][x_i];\n z[0] ^= ah[0];\n z[1] ^= ah[1];\n z[2] ^= ah[2];\n z[3] ^= ah[3];\n }\n return z;\n};\n\n/**\n * A continuing version of the GHASH algorithm that operates on a single\n * block. The hash block, last hash value (Ym) and the new block to hash\n * are given.\n *\n * @param h the hash block.\n * @param y the previous value for Ym, use [0, 0, 0, 0] for a new hash.\n * @param x the block to hash.\n *\n * @return the hashed value (Ym).\n */\nmodes.gcm.prototype.ghash = function(h, y, x) {\n y[0] ^= x[0];\n y[1] ^= x[1];\n y[2] ^= x[2];\n y[3] ^= x[3];\n return this.tableMultiply(y);\n //return this.multiply(y, h);\n};\n\n/**\n * Precomputes a table for multiplying against the hash subkey. This\n * mechanism provides a substantial speed increase over multiplication\n * performed without a table. The table-based multiplication this table is\n * for solves X * H by multiplying each component of X by H and then\n * composing the results together using XOR.\n *\n * This function can be used to generate tables with different bit sizes\n * for the components, however, this implementation assumes there are\n * 32 components of X (which is a 16 byte vector), therefore each component\n * takes 4-bits (so the table is constructed with bits=4).\n *\n * @param h the hash subkey.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateHashTable = function(h, bits) {\n // TODO: There are further optimizations that would use only the\n // first table M_0 (or some variant) along with a remainder table;\n // this can be explored in the future\n var multiplier = 8 / bits;\n var perInt = 4 * multiplier;\n var size = 16 * multiplier;\n var m = new Array(size);\n for(var i = 0; i < size; ++i) {\n var tmp = [0, 0, 0, 0];\n var idx = (i / perInt) | 0;\n var shft = ((perInt - 1 - (i % perInt)) * bits);\n tmp[idx] = (1 << (bits - 1)) << shft;\n m[i] = this.generateSubHashTable(this.multiply(tmp, h), bits);\n }\n return m;\n};\n\n/**\n * Generates a table for multiplying against the hash subkey for one\n * particular component (out of all possible component values).\n *\n * @param mid the pre-multiplied value for the middle key of the table.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateSubHashTable = function(mid, bits) {\n // compute the table quickly by minimizing the number of\n // POW operations -- they only need to be performed for powers of 2,\n // all other entries can be composed from those powers using XOR\n var size = 1 << bits;\n var half = size >>> 1;\n var m = new Array(size);\n m[half] = mid.slice(0);\n var i = half >>> 1;\n while(i > 0) {\n // raise m0[2 * i] and store in m0[i]\n this.pow(m[2 * i], m[i] = []);\n i >>= 1;\n }\n i = 2;\n while(i < half) {\n for(var j = 1; j < i; ++j) {\n var m_i = m[i];\n var m_j = m[j];\n m[i + j] = [\n m_i[0] ^ m_j[0],\n m_i[1] ^ m_j[1],\n m_i[2] ^ m_j[2],\n m_i[3] ^ m_j[3]\n ];\n }\n i *= 2;\n }\n m[0] = [0, 0, 0, 0];\n /* Note: We could avoid storing these by doing composition during multiply\n calculate top half using composition by speed is preferred. */\n for(i = half + 1; i < size; ++i) {\n var c = m[i ^ half];\n m[i] = [mid[0] ^ c[0], mid[1] ^ c[1], mid[2] ^ c[2], mid[3] ^ c[3]];\n }\n return m;\n};\n\n/** Utility functions */\n\nfunction transformIV(iv, blockSize) {\n if(typeof iv === 'string') {\n // convert iv string into byte buffer\n iv = forge.util.createBuffer(iv);\n }\n\n if(forge.util.isArray(iv) && iv.length > 4) {\n // convert iv byte array into byte buffer\n var tmp = iv;\n iv = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n iv.putByte(tmp[i]);\n }\n }\n\n if(iv.length() < blockSize) {\n throw new Error(\n 'Invalid IV length; got ' + iv.length() +\n ' bytes and expected ' + blockSize + ' bytes.');\n }\n\n if(!forge.util.isArray(iv)) {\n // convert iv byte buffer into 32-bit integer array\n var ints = [];\n var blocks = blockSize / 4;\n for(var i = 0; i < blocks; ++i) {\n ints.push(iv.getInt32());\n }\n iv = ints;\n }\n\n return iv;\n}\n\nfunction inc32(block) {\n // increment last 32 bits of block only\n block[block.length - 1] = (block[block.length - 1] + 1) & 0xFFFFFFFF;\n}\n\nfunction from64To32(num) {\n // convert 64-bit number to two BE Int32s\n return [(num / 0x100000000) | 0, num & 0xFFFFFFFF];\n}\n","/**\n * DES (Data Encryption Standard) implementation.\n *\n * This implementation supports DES as well as 3DES-EDE in ECB and CBC mode.\n * It is based on the BSD-licensed implementation by Paul Tero:\n *\n * Paul Tero, July 2001\n * http://www.tero.co.uk/des/\n *\n * Optimised for performance with large blocks by\n * Michael Hayworth, November 2001\n * http://www.netdealing.com\n *\n * THIS SOFTWARE IS PROVIDED \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2012-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* DES API */\nmodule.exports = forge.des = forge.des || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new DES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the DES algorithm object.\n */\nforge.des.Algorithm = function(name, mode) {\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 8,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this DES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.des.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = forge.util.createBuffer(options.key);\n if(this.name.indexOf('3DES') === 0) {\n if(key.length() !== 24) {\n throw new Error('Invalid Triple-DES key size: ' + key.length() * 8);\n }\n }\n\n // do key expansion to 16 or 48 subkeys (single or triple DES)\n this._keys = _createKeys(key);\n this._init = true;\n};\n\n/** Register DES algorithms **/\n\nregisterAlgorithm('DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('DES-CTR', forge.cipher.modes.ctr);\n\nregisterAlgorithm('3DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('3DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('3DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('3DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('3DES-CTR', forge.cipher.modes.ctr);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.des.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** DES implementation **/\n\nvar spfunction1 = [0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004];\nvar spfunction2 = [-0x7fef7fe0,-0x7fff8000,0x8000,0x108020,0x100000,0x20,-0x7fefffe0,-0x7fff7fe0,-0x7fffffe0,-0x7fef7fe0,-0x7fef8000,-0x80000000,-0x7fff8000,0x100000,0x20,-0x7fefffe0,0x108000,0x100020,-0x7fff7fe0,0,-0x80000000,0x8000,0x108020,-0x7ff00000,0x100020,-0x7fffffe0,0,0x108000,0x8020,-0x7fef8000,-0x7ff00000,0x8020,0,0x108020,-0x7fefffe0,0x100000,-0x7fff7fe0,-0x7ff00000,-0x7fef8000,0x8000,-0x7ff00000,-0x7fff8000,0x20,-0x7fef7fe0,0x108020,0x20,0x8000,-0x80000000,0x8020,-0x7fef8000,0x100000,-0x7fffffe0,0x100020,-0x7fff7fe0,-0x7fffffe0,0x100020,0x108000,0,-0x7fff8000,0x8020,-0x80000000,-0x7fefffe0,-0x7fef7fe0,0x108000];\nvar spfunction3 = [0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200];\nvar spfunction4 = [0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080];\nvar spfunction5 = [0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100];\nvar spfunction6 = [0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010];\nvar spfunction7 = [0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002];\nvar spfunction8 = [0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000];\n\n/**\n * Create necessary sub keys.\n *\n * @param key the 64-bit or 192-bit key.\n *\n * @return the expanded keys.\n */\nfunction _createKeys(key) {\n var pc2bytes0 = [0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204],\n pc2bytes1 = [0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101],\n pc2bytes2 = [0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808],\n pc2bytes3 = [0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000],\n pc2bytes4 = [0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010],\n pc2bytes5 = [0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420],\n pc2bytes6 = [0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002],\n pc2bytes7 = [0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800],\n pc2bytes8 = [0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002],\n pc2bytes9 = [0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408],\n pc2bytes10 = [0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020],\n pc2bytes11 = [0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200],\n pc2bytes12 = [0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010],\n pc2bytes13 = [0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105];\n\n // how many iterations (1 for des, 3 for triple des)\n // changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys\n var iterations = key.length() > 8 ? 3 : 1;\n\n // stores the return keys\n var keys = [];\n\n // now define the left shifts which need to be done\n var shifts = [0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0];\n\n var n = 0, tmp;\n for(var j = 0; j < iterations; j++) {\n var left = key.getInt32();\n var right = key.getInt32();\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 2) ^ right) & 0x33333333;\n right ^= tmp;\n left ^= (tmp << 2);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // right needs to be shifted and OR'd with last four bits of left\n tmp = (left << 8) | ((right >>> 20) & 0x000000f0);\n\n // left needs to be put upside down\n left = ((right << 24) | ((right << 8) & 0xff0000) |\n ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0));\n right = tmp;\n\n // now go through and perform these shifts on the left and right keys\n for(var i = 0; i < shifts.length; ++i) {\n //shift the keys either one or two bits to the left\n if(shifts[i]) {\n left = (left << 2) | (left >>> 26);\n right = (right << 2) | (right >>> 26);\n } else {\n left = (left << 1) | (left >>> 27);\n right = (right << 1) | (right >>> 27);\n }\n left &= -0xf;\n right &= -0xf;\n\n // now apply PC-2, in such a way that E is easier when encrypting or\n // decrypting this conversion will look like PC-2 except only the last 6\n // bits of each byte are used rather than 48 consecutive bits and the\n // order of lines will be according to how the S selection functions will\n // be applied: S2, S4, S6, S8, S1, S3, S5, S7\n var lefttmp = (\n pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf] |\n pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf] |\n pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf] |\n pc2bytes6[(left >>> 4) & 0xf]);\n var righttmp = (\n pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf] |\n pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf] |\n pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf] |\n pc2bytes13[(right >>> 4) & 0xf]);\n tmp = ((righttmp >>> 16) ^ lefttmp) & 0x0000ffff;\n keys[n++] = lefttmp ^ tmp;\n keys[n++] = righttmp ^ (tmp << 16);\n }\n }\n\n return keys;\n}\n\n/**\n * Updates a single block (1 byte) using DES. The update will either\n * encrypt or decrypt the block.\n *\n * @param keys the expanded keys.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(keys, input, output, decrypt) {\n // set up loops for single or triple DES\n var iterations = keys.length === 32 ? 3 : 9;\n var looping;\n if(iterations === 3) {\n looping = decrypt ? [30, -2, -2] : [0, 32, 2];\n } else {\n looping = (decrypt ?\n [94, 62, -2, 32, 64, 2, 30, -2, -2] :\n [0, 32, 2, 62, 30, -2, 64, 96, 2]);\n }\n\n var tmp;\n\n var left = input[0];\n var right = input[1];\n\n // first each 64 bit chunk of the message must be permuted according to IP\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // rotate left 1 bit\n left = ((left << 1) | (left >>> 31));\n right = ((right << 1) | (right >>> 31));\n\n for(var j = 0; j < iterations; j += 3) {\n var endloop = looping[j + 1];\n var loopinc = looping[j + 2];\n\n // now go through and perform the encryption or decryption\n for(var i = looping[j]; i != endloop; i += loopinc) {\n var right1 = right ^ keys[i];\n var right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];\n\n // passing these bytes through the S selection functions\n tmp = left;\n left = right;\n right = tmp ^ (\n spfunction2[(right1 >>> 24) & 0x3f] |\n spfunction4[(right1 >>> 16) & 0x3f] |\n spfunction6[(right1 >>> 8) & 0x3f] |\n spfunction8[right1 & 0x3f] |\n spfunction1[(right2 >>> 24) & 0x3f] |\n spfunction3[(right2 >>> 16) & 0x3f] |\n spfunction5[(right2 >>> 8) & 0x3f] |\n spfunction7[right2 & 0x3f]);\n }\n // unreverse left and right\n tmp = left;\n left = right;\n right = tmp;\n }\n\n // rotate right 1 bit\n left = ((left >>> 1) | (left << 31));\n right = ((right >>> 1) | (right << 31));\n\n // now perform IP-1, which is IP in the opposite direction\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n output[0] = left;\n output[1] = right;\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('DES-', key);\n * forge.cipher.createDecipher('DES-', key);\n *\n * Creates a deprecated DES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param options the options to use.\n * key the symmetric key to use (64 or 192 bits).\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'DES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","/**\n * JavaScript implementation of Ed25519.\n *\n * Copyright (c) 2017-2019 Digital Bazaar, Inc.\n *\n * This implementation is based on the most excellent TweetNaCl which is\n * in the public domain. Many thanks to its contributors:\n *\n * https://github.com/dchest/tweetnacl-js\n */\nvar forge = require('./forge');\nrequire('./jsbn');\nrequire('./random');\nrequire('./sha512');\nrequire('./util');\nvar asn1Validator = require('./asn1-validator');\nvar publicKeyValidator = asn1Validator.publicKeyValidator;\nvar privateKeyValidator = asn1Validator.privateKeyValidator;\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\nvar ByteBuffer = forge.util.ByteBuffer;\nvar NativeBuffer = typeof Buffer === 'undefined' ? Uint8Array : Buffer;\n\n/*\n * Ed25519 algorithms, see RFC 8032:\n * https://tools.ietf.org/html/rfc8032\n */\nforge.pki = forge.pki || {};\nmodule.exports = forge.pki.ed25519 = forge.ed25519 = forge.ed25519 || {};\nvar ed25519 = forge.ed25519;\n\ned25519.constants = {};\ned25519.constants.PUBLIC_KEY_BYTE_LENGTH = 32;\ned25519.constants.PRIVATE_KEY_BYTE_LENGTH = 64;\ned25519.constants.SEED_BYTE_LENGTH = 32;\ned25519.constants.SIGN_BYTE_LENGTH = 64;\ned25519.constants.HASH_BYTE_LENGTH = 64;\n\ned25519.generateKeyPair = function(options) {\n options = options || {};\n var seed = options.seed;\n if(seed === undefined) {\n // generate seed\n seed = forge.random.getBytesSync(ed25519.constants.SEED_BYTE_LENGTH);\n } else if(typeof seed === 'string') {\n if(seed.length !== ed25519.constants.SEED_BYTE_LENGTH) {\n throw new TypeError(\n '\"seed\" must be ' + ed25519.constants.SEED_BYTE_LENGTH +\n ' bytes in length.');\n }\n } else if(!(seed instanceof Uint8Array)) {\n throw new TypeError(\n '\"seed\" must be a node.js Buffer, Uint8Array, or a binary string.');\n }\n\n seed = messageToNativeBuffer({message: seed, encoding: 'binary'});\n\n var pk = new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);\n var sk = new NativeBuffer(ed25519.constants.PRIVATE_KEY_BYTE_LENGTH);\n for(var i = 0; i < 32; ++i) {\n sk[i] = seed[i];\n }\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, privateKey: sk};\n};\n\n/**\n * Converts a private key from a RFC8410 ASN.1 encoding.\n *\n * @param obj - The asn1 representation of a private key.\n *\n * @returns {Object} keyInfo - The key information.\n * @returns {Buffer|Uint8Array} keyInfo.privateKeyBytes - 32 private key bytes.\n */\ned25519.privateKeyFromAsn1 = function(obj) {\n var capture = {};\n var errors = [];\n var valid = forge.asn1.validate(obj, privateKeyValidator, capture, errors);\n if(!valid) {\n var error = new Error('Invalid Key.');\n error.errors = errors;\n throw error;\n }\n var oid = forge.asn1.derToOid(capture.privateKeyOid);\n var ed25519Oid = forge.oids.EdDSA25519;\n if(oid !== ed25519Oid) {\n throw new Error('Invalid OID \"' + oid + '\"; OID must be \"' +\n ed25519Oid + '\".');\n }\n var privateKey = capture.privateKey;\n // manually extract the private key bytes from nested octet string, see FIXME:\n // https://github.com/digitalbazaar/forge/blob/master/lib/asn1.js#L542\n var privateKeyBytes = messageToNativeBuffer({\n message: forge.asn1.fromDer(privateKey).value,\n encoding: 'binary'\n });\n // TODO: RFC8410 specifies a format for encoding the public key bytes along\n // with the private key bytes. `publicKeyBytes` can be returned in the\n // future. https://tools.ietf.org/html/rfc8410#section-10.3\n return {privateKeyBytes: privateKeyBytes};\n};\n\n/**\n * Converts a public key from a RFC8410 ASN.1 encoding.\n *\n * @param obj - The asn1 representation of a public key.\n *\n * @return {Buffer|Uint8Array} - 32 public key bytes.\n */\ned25519.publicKeyFromAsn1 = function(obj) {\n // get SubjectPublicKeyInfo\n var capture = {};\n var errors = [];\n var valid = forge.asn1.validate(obj, publicKeyValidator, capture, errors);\n if(!valid) {\n var error = new Error('Invalid Key.');\n error.errors = errors;\n throw error;\n }\n var oid = forge.asn1.derToOid(capture.publicKeyOid);\n var ed25519Oid = forge.oids.EdDSA25519;\n if(oid !== ed25519Oid) {\n throw new Error('Invalid OID \"' + oid + '\"; OID must be \"' +\n ed25519Oid + '\".');\n }\n var publicKeyBytes = capture.ed25519PublicKey;\n if(publicKeyBytes.length !== ed25519.constants.PUBLIC_KEY_BYTE_LENGTH) {\n throw new Error('Key length is invalid.');\n }\n return messageToNativeBuffer({\n message: publicKeyBytes,\n encoding: 'binary'\n });\n};\n\ned25519.publicKeyFromPrivateKey = function(options) {\n options = options || {};\n var privateKey = messageToNativeBuffer({\n message: options.privateKey, encoding: 'binary'\n });\n if(privateKey.length !== ed25519.constants.PRIVATE_KEY_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.privateKey\" must have a byte length of ' +\n ed25519.constants.PRIVATE_KEY_BYTE_LENGTH);\n }\n\n var pk = new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);\n for(var i = 0; i < pk.length; ++i) {\n pk[i] = privateKey[32 + i];\n }\n return pk;\n};\n\ned25519.sign = function(options) {\n options = options || {};\n var msg = messageToNativeBuffer(options);\n var privateKey = messageToNativeBuffer({\n message: options.privateKey,\n encoding: 'binary'\n });\n if(privateKey.length === ed25519.constants.SEED_BYTE_LENGTH) {\n var keyPair = ed25519.generateKeyPair({seed: privateKey});\n privateKey = keyPair.privateKey;\n } else if(privateKey.length !== ed25519.constants.PRIVATE_KEY_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.privateKey\" must have a byte length of ' +\n ed25519.constants.SEED_BYTE_LENGTH + ' or ' +\n ed25519.constants.PRIVATE_KEY_BYTE_LENGTH);\n }\n\n var signedMsg = new NativeBuffer(\n ed25519.constants.SIGN_BYTE_LENGTH + msg.length);\n crypto_sign(signedMsg, msg, msg.length, privateKey);\n\n var sig = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH);\n for(var i = 0; i < sig.length; ++i) {\n sig[i] = signedMsg[i];\n }\n return sig;\n};\n\ned25519.verify = function(options) {\n options = options || {};\n var msg = messageToNativeBuffer(options);\n if(options.signature === undefined) {\n throw new TypeError(\n '\"options.signature\" must be a node.js Buffer, a Uint8Array, a forge ' +\n 'ByteBuffer, or a binary string.');\n }\n var sig = messageToNativeBuffer({\n message: options.signature,\n encoding: 'binary'\n });\n if(sig.length !== ed25519.constants.SIGN_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.signature\" must have a byte length of ' +\n ed25519.constants.SIGN_BYTE_LENGTH);\n }\n var publicKey = messageToNativeBuffer({\n message: options.publicKey,\n encoding: 'binary'\n });\n if(publicKey.length !== ed25519.constants.PUBLIC_KEY_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.publicKey\" must have a byte length of ' +\n ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);\n }\n\n var sm = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH + msg.length);\n var m = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH + msg.length);\n var i;\n for(i = 0; i < ed25519.constants.SIGN_BYTE_LENGTH; ++i) {\n sm[i] = sig[i];\n }\n for(i = 0; i < msg.length; ++i) {\n sm[i + ed25519.constants.SIGN_BYTE_LENGTH] = msg[i];\n }\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nfunction messageToNativeBuffer(options) {\n var message = options.message;\n if(message instanceof Uint8Array || message instanceof NativeBuffer) {\n return message;\n }\n\n var encoding = options.encoding;\n if(message === undefined) {\n if(options.md) {\n // TODO: more rigorous validation that `md` is a MessageDigest\n message = options.md.digest().getBytes();\n encoding = 'binary';\n } else {\n throw new TypeError('\"options.message\" or \"options.md\" not specified.');\n }\n }\n\n if(typeof message === 'string' && !encoding) {\n throw new TypeError('\"options.encoding\" must be \"binary\" or \"utf8\".');\n }\n\n if(typeof message === 'string') {\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(message, encoding);\n }\n message = new ByteBuffer(message, encoding);\n } else if(!(message instanceof ByteBuffer)) {\n throw new TypeError(\n '\"options.message\" must be a node.js Buffer, a Uint8Array, a forge ' +\n 'ByteBuffer, or a string with \"options.encoding\" specifying its ' +\n 'encoding.');\n }\n\n // convert to native buffer\n var buffer = new NativeBuffer(message.length());\n for(var i = 0; i < buffer.length; ++i) {\n buffer[i] = message.at(i);\n }\n return buffer;\n}\n\nvar gf0 = gf();\nvar gf1 = gf([1]);\nvar D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]);\nvar D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]);\nvar X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]);\nvar Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]);\nvar L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,\n 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\nvar I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n// TODO: update forge buffer implementation to use `Buffer` or `Uint8Array`,\n// whichever is available, to improve performance\nfunction sha512(msg, msgLen) {\n // Note: `out` and `msg` are NativeBuffer\n var md = forge.md.sha512.create();\n var buffer = new ByteBuffer(msg);\n md.update(buffer.getBytes(msgLen), 'binary');\n var hash = md.digest().getBytes();\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(hash, 'binary');\n }\n var out = new NativeBuffer(ed25519.constants.HASH_BYTE_LENGTH);\n for(var i = 0; i < 64; ++i) {\n out[i] = hash.charCodeAt(i);\n }\n return out;\n}\n\nfunction crypto_sign_keypair(pk, sk) {\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n var d = sha512(sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for(i = 0; i < 32; ++i) {\n sk[i + 32] = pk[i];\n }\n return 0;\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n var d = sha512(sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for(i = 0; i < n; ++i) {\n sm[64 + i] = m[i];\n }\n for(i = 0; i < 32; ++i) {\n sm[32 + i] = d[32 + i];\n }\n\n var r = sha512(sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for(i = 32; i < 64; ++i) {\n sm[i] = sk[i];\n }\n var h = sha512(sm, n + 64);\n reduce(h);\n\n for(i = 32; i < 64; ++i) {\n x[i] = 0;\n }\n for(i = 0; i < 32; ++i) {\n x[i] = r[i];\n }\n for(i = 0; i < 32; ++i) {\n for(j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new NativeBuffer(32);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if(n < 64) {\n return -1;\n }\n\n if(unpackneg(q, pk)) {\n return -1;\n }\n\n for(i = 0; i < n; ++i) {\n m[i] = sm[i];\n }\n for(i = 0; i < 32; ++i) {\n m[i + 32] = pk[i];\n }\n var h = sha512(m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if(crypto_verify_32(sm, 0, t, 0)) {\n for(i = 0; i < n; ++i) {\n m[i] = 0;\n }\n return -1;\n }\n\n for(i = 0; i < n; ++i) {\n m[i] = sm[i + 64];\n }\n mlen = n;\n return mlen;\n}\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for(i = 63; i >= 32; --i) {\n carry = 0;\n for(j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for(j = 0; j < 32; ++j) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for(j = 0; j < 32; ++j) {\n x[j] -= carry * L[j];\n }\n for(i = 0; i < 32; ++i) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64);\n for(var i = 0; i < 64; ++i) {\n x[i] = r[i];\n r[i] = 0;\n }\n modL(r, x);\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n for(var i = 0; i < 4; ++i) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for(i = 0; i < 16; ++i) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for(j = 0; j < 2; ++j) {\n m[0] = t[0] - 0xffed;\n for(i = 1; i < 15; ++i) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if(neq25519(chk, num)) {\n M(r[0], r[0], I);\n }\n\n S(chk, r[0]);\n M(chk, chk, den);\n if(neq25519(chk, num)) {\n return -1;\n }\n\n if(par25519(r[0]) === (p[31] >> 7)) {\n Z(r[0], gf0, r[0]);\n }\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for(i = 0; i < 16; ++i) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for(a = 0; a < 16; ++a) {\n c[a] = i[a];\n }\n for(a = 250; a >= 0; --a) {\n S(c, c);\n if(a !== 1) {\n M(c, c, i);\n }\n }\n for(a = 0; a < 16; ++a) {\n o[a] = c[a];\n }\n}\n\nfunction neq25519(a, b) {\n var c = new NativeBuffer(32);\n var d = new NativeBuffer(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for(i = 0; i < n; ++i) {\n d |= x[xi + i] ^ y[yi + i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction par25519(a) {\n var d = new NativeBuffer(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for(i = 255; i >= 0; --i) {\n b = (s[(i / 8)|0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction set25519(r, a) {\n var i;\n for(i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for(a = 0; a < 16; ++a) {\n c[a] = i[a];\n }\n for(a = 253; a >= 0; --a) {\n S(c, c);\n if(a !== 2 && a !== 4) {\n M(c, c, i);\n }\n }\n for(a = 0; a < 16; ++a) {\n o[a] = c[a];\n }\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for(i = 0; i < 16; ++i) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for(var i = 0; i < 16; ++i) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if(init) {\n for(i = 0; i < init.length; ++i) {\n r[i] = init[i];\n }\n }\n return r;\n}\n\nfunction A(o, a, b) {\n for(var i = 0; i < 16; ++i) {\n o[i] = a[i] + b[i];\n }\n}\n\nfunction Z(o, a, b) {\n for(var i = 0; i < 16; ++i) {\n o[i] = a[i] - b[i];\n }\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n","/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = {\n // default options\n options: {\n usePureJavaScript: false\n }\n};\n","/**\n * Hash-based Message Authentication Code implementation. Requires a message\n * digest object that can be obtained, for example, from forge.md.sha1 or\n * forge.md.md5.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2012 Digital Bazaar, Inc. All rights reserved.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\n/* HMAC API */\nvar hmac = module.exports = forge.hmac = forge.hmac || {};\n\n/**\n * Creates an HMAC object that uses the given message digest object.\n *\n * @return an HMAC object.\n */\nhmac.create = function() {\n // the hmac key to use\n var _key = null;\n\n // the message digest to use\n var _md = null;\n\n // the inner padding\n var _ipadding = null;\n\n // the outer padding\n var _opadding = null;\n\n // hmac context\n var ctx = {};\n\n /**\n * Starts or restarts the HMAC with the given key and message digest.\n *\n * @param md the message digest to use, null to reuse the previous one,\n * a string to use builtin 'sha1', 'md5', 'sha256'.\n * @param key the key to use as a string, array of bytes, byte buffer,\n * or null to reuse the previous key.\n */\n ctx.start = function(md, key) {\n if(md !== null) {\n if(typeof md === 'string') {\n // create builtin message digest\n md = md.toLowerCase();\n if(md in forge.md.algorithms) {\n _md = forge.md.algorithms[md].create();\n } else {\n throw new Error('Unknown hash algorithm \"' + md + '\"');\n }\n } else {\n // store message digest\n _md = md;\n }\n }\n\n if(key === null) {\n // reuse previous key\n key = _key;\n } else {\n if(typeof key === 'string') {\n // convert string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key)) {\n // convert byte array into byte buffer\n var tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // if key is longer than blocksize, hash it\n var keylen = key.length();\n if(keylen > _md.blockLength) {\n _md.start();\n _md.update(key.bytes());\n key = _md.digest();\n }\n\n // mix key into inner and outer padding\n // ipadding = [0x36 * blocksize] ^ key\n // opadding = [0x5C * blocksize] ^ key\n _ipadding = forge.util.createBuffer();\n _opadding = forge.util.createBuffer();\n keylen = key.length();\n for(var i = 0; i < keylen; ++i) {\n var tmp = key.at(i);\n _ipadding.putByte(0x36 ^ tmp);\n _opadding.putByte(0x5C ^ tmp);\n }\n\n // if key is shorter than blocksize, add additional padding\n if(keylen < _md.blockLength) {\n var tmp = _md.blockLength - keylen;\n for(var i = 0; i < tmp; ++i) {\n _ipadding.putByte(0x36);\n _opadding.putByte(0x5C);\n }\n }\n _key = key;\n _ipadding = _ipadding.bytes();\n _opadding = _opadding.bytes();\n }\n\n // digest is done like so: hash(opadding | hash(ipadding | message))\n\n // prepare to do inner hash\n // hash(ipadding | message)\n _md.start();\n _md.update(_ipadding);\n };\n\n /**\n * Updates the HMAC with the given message bytes.\n *\n * @param bytes the bytes to update with.\n */\n ctx.update = function(bytes) {\n _md.update(bytes);\n };\n\n /**\n * Produces the Message Authentication Code (MAC).\n *\n * @return a byte buffer containing the digest value.\n */\n ctx.getMac = function() {\n // digest is done like so: hash(opadding | hash(ipadding | message))\n // here we do the outer hashing\n var inner = _md.digest().bytes();\n _md.start();\n _md.update(_opadding);\n _md.update(inner);\n return _md.digest();\n };\n // alias for getMac\n ctx.digest = ctx.getMac;\n\n return ctx;\n};\n","/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = require('./forge');\nrequire('./aes');\nrequire('./aesCipherSuites');\nrequire('./asn1');\nrequire('./cipher');\nrequire('./des');\nrequire('./ed25519');\nrequire('./hmac');\nrequire('./kem');\nrequire('./log');\nrequire('./md.all');\nrequire('./mgf1');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./pkcs1');\nrequire('./pkcs12');\nrequire('./pkcs7');\nrequire('./pki');\nrequire('./prime');\nrequire('./prng');\nrequire('./pss');\nrequire('./random');\nrequire('./rc2');\nrequire('./ssh');\nrequire('./tls');\nrequire('./util');\n","// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n/*\nLicensing (LICENSE)\n-------------------\n\nThis software is covered under the following copyright:\n*/\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n/*\nAddress all questions regarding this license to:\n\n Tom Wu\n tjw@cs.Stanford.EDU\n*/\nvar forge = require('./forge');\n\nmodule.exports = forge.jsbn = forge.jsbn || {};\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n this.data = [];\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\nforge.jsbn.BigInteger = BigInteger;\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this.data[i++]+w.data[j]+c;\n c = Math.floor(v/0x4000000);\n w.data[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this.data[i]&0x7fff;\n var h = this.data[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w.data[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w.data[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this.data[i]&0x3fff;\n var h = this.data[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w.data[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w.data[j++] = l&0xfffffff;\n }\n return c;\n}\n\n// node.js (no browser)\nif(typeof(navigator) === 'undefined')\n{\n BigInteger.prototype.am = am3;\n dbits = 28;\n} else if(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<= 0; --i) r.data[i] = this.data[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this.data[0] = x;\n else if(x < -1) this.data[0] = x+this.DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this.data[this.t++] = x;\n else if(sh+k > this.DB) {\n this.data[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n } else\n this.data[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this.data[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this.data[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this.data[i]&((1<>(p+=this.DB-k);\n } else {\n d = (this.data[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this.data[i]-a.data[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this.data[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r.data[i+n] = this.data[i];\n for(i = n-1; i >= 0; --i) r.data[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r.data[i-n] = this.data[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r.data[i+ds+1] = (this.data[i]>>cbs)|c;\n c = (this.data[i]&bm)<= 0; --i) r.data[i] = 0;\n r.data[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r.data[i-ds-1] |= (this.data[i]&bm)<>bs;\n }\n if(bs > 0) r.data[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n } else {\n c += this.s;\n while(i < a.t) {\n c -= a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r.data[i++] = this.DV+c;\n else if(c > 0) r.data[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < y.t; ++i) r.data[i+x.t] = x.am(0,y.data[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x.data[i],r,2*i,0,1);\n if((r.data[i+x.t]+=x.am(i+1,2*x.data[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r.data[i+x.t] -= x.DV;\n r.data[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r.data[r.t-1] += x.am(i,x.data[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm.data[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y.data[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y.data[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r.data[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y.data[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r.data[--i]==y0)?this.DM:Math.floor(r.data[i]*d1+(r.data[i-1]+e)*d2);\n if((r.data[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r.data[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this.data[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x.data[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x.data[i]*mp mod DV\n var j = x.data[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x.data[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x.data[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x.data[j] >= x.DV) { x.data[j] -= x.DV; x.data[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this.data[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n// jsbn2 lib\n\n//Copyright (c) 2005-2009 Tom Wu\n//All Rights Reserved.\n//See \"LICENSE\" for details (See jsbn.js for LICENSE).\n\n//Extended JavaScript BN functions, required for RSA private ops.\n\n//Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n\n//(public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n//(public) return value as integer\nfunction bnIntValue() {\nif(this.s < 0) {\n if(this.t == 1) return this.data[0]-this.DV;\n else if(this.t == 0) return -1;\n} else if(this.t == 1) return this.data[0];\nelse if(this.t == 0) return 0;\n// assumes 16 < DB < 32\nreturn ((this.data[1]&((1<<(32-this.DB))-1))<>24; }\n\n//(public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this.data[0]<<16)>>16; }\n\n//(protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n//(public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\nif(this.s < 0) return -1;\nelse if(this.t <= 0 || (this.t == 1 && this.data[0] <= 0)) return 0;\nelse return 1;\n}\n\n//(protected) convert to radix string\nfunction bnpToRadix(b) {\nif(b == null) b = 10;\nif(this.signum() == 0 || b < 2 || b > 36) return \"0\";\nvar cs = this.chunkSize(b);\nvar a = Math.pow(b,cs);\nvar d = nbv(a), y = nbi(), z = nbi(), r = \"\";\nthis.divRemTo(d,y,z);\nwhile(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n}\nreturn z.intValue().toString(b) + r;\n}\n\n//(protected) convert from radix string\nfunction bnpFromRadix(s,b) {\nthis.fromInt(0);\nif(b == null) b = 10;\nvar cs = this.chunkSize(b);\nvar d = Math.pow(b,cs), mi = false, j = 0, w = 0;\nfor(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n}\nif(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n}\nif(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n//(protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\nif(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1)) // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n} else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this.data[i]&((1<>(p+=this.DB-8);\n } else {\n d = (this.data[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n}\nreturn r;\n}\n\nfunction bnEquals(a) { return(this.compareTo(a)==0); }\nfunction bnMin(a) { return(this.compareTo(a)<0)?this:a; }\nfunction bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n//(protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a,op,r) {\nvar i, f, m = Math.min(a.t,this.t);\nfor(i = 0; i < m; ++i) r.data[i] = op(this.data[i],a.data[i]);\nif(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r.data[i] = op(this.data[i],f);\n r.t = this.t;\n} else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r.data[i] = op(f,a.data[i]);\n r.t = a.t;\n}\nr.s = op(this.s,a.s);\nr.clamp();\n}\n\n//(public) this & a\nfunction op_and(x,y) { return x&y; }\nfunction bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n//(public) this | a\nfunction op_or(x,y) { return x|y; }\nfunction bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n//(public) this ^ a\nfunction op_xor(x,y) { return x^y; }\nfunction bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n//(public) this & ~a\nfunction op_andnot(x,y) { return x&~y; }\nfunction bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n//(public) ~this\nfunction bnNot() {\nvar r = nbi();\nfor(var i = 0; i < this.t; ++i) r.data[i] = this.DM&~this.data[i];\nr.t = this.t;\nr.s = ~this.s;\nreturn r;\n}\n\n//(public) this << n\nfunction bnShiftLeft(n) {\nvar r = nbi();\nif(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\nreturn r;\n}\n\n//(public) this >> n\nfunction bnShiftRight(n) {\nvar r = nbi();\nif(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\nreturn r;\n}\n\n//return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\nif(x == 0) return -1;\nvar r = 0;\nif((x&0xffff) == 0) { x >>= 16; r += 16; }\nif((x&0xff) == 0) { x >>= 8; r += 8; }\nif((x&0xf) == 0) { x >>= 4; r += 4; }\nif((x&3) == 0) { x >>= 2; r += 2; }\nif((x&1) == 0) ++r;\nreturn r;\n}\n\n//(public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\nfor(var i = 0; i < this.t; ++i)\n if(this.data[i] != 0) return i*this.DB+lbit(this.data[i]);\nif(this.s < 0) return this.t*this.DB;\nreturn -1;\n}\n\n//return number of 1 bits in x\nfunction cbit(x) {\nvar r = 0;\nwhile(x != 0) { x &= x-1; ++r; }\nreturn r;\n}\n\n//(public) return number of set bits\nfunction bnBitCount() {\nvar r = 0, x = this.s&this.DM;\nfor(var i = 0; i < this.t; ++i) r += cbit(this.data[i]^x);\nreturn r;\n}\n\n//(public) true iff nth bit is set\nfunction bnTestBit(n) {\nvar j = Math.floor(n/this.DB);\nif(j >= this.t) return(this.s!=0);\nreturn((this.data[j]&(1<<(n%this.DB)))!=0);\n}\n\n//(protected) this op (1<>= this.DB;\n}\nif(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n} else {\n c += this.s;\n while(i < a.t) {\n c += a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n}\nr.s = (c<0)?-1:0;\nif(c > 0) r.data[i++] = c;\nelse if(c < -1) r.data[i++] = this.DV+c;\nr.t = i;\nr.clamp();\n}\n\n//(public) this + a\nfunction bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n//(public) this - a\nfunction bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n//(public) this * a\nfunction bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n//(public) this / a\nfunction bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n//(public) this % a\nfunction bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n//(public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\nvar q = nbi(), r = nbi();\nthis.divRemTo(a,q,r);\nreturn new Array(q,r);\n}\n\n//(protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\nthis.data[this.t] = this.am(0,n-1,this,0,0,this.t);\n++this.t;\nthis.clamp();\n}\n\n//(protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\nif(n == 0) return;\nwhile(this.t <= w) this.data[this.t++] = 0;\nthis.data[w] += n;\nwhile(this.data[w] >= this.DV) {\n this.data[w] -= this.DV;\n if(++w >= this.t) this.data[this.t++] = 0;\n ++this.data[w];\n}\n}\n\n//A \"null\" reducer\nfunction NullExp() {}\nfunction nNop(x) { return x; }\nfunction nMulTo(x,y,r) { x.multiplyTo(y,r); }\nfunction nSqrTo(x,r) { x.squareTo(r); }\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n//(public) this^e\nfunction bnPow(e) { return this.exp(e,new NullExp()); }\n\n//(protected) r = lower n words of \"this * a\", a.t <= n\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a,n,r) {\nvar i = Math.min(this.t+a.t,n);\nr.s = 0; // assumes a,this >= 0\nr.t = i;\nwhile(i > 0) r.data[--i] = 0;\nvar j;\nfor(j = r.t-this.t; i < j; ++i) r.data[i+this.t] = this.am(0,a.data[i],r,i,0,this.t);\nfor(j = Math.min(a.t,n); i < j; ++i) this.am(0,a.data[i],r,i,0,n-i);\nr.clamp();\n}\n\n//(protected) r = \"this * a\" without lower n words, n > 0\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a,n,r) {\n--n;\nvar i = r.t = this.t+a.t-n;\nr.s = 0; // assumes a,this >= 0\nwhile(--i >= 0) r.data[i] = 0;\nfor(i = Math.max(n-this.t,0); i < a.t; ++i)\n r.data[this.t+i-n] = this.am(n-i,a.data[i],r,0,0,this.t+i-n);\nr.clamp();\nr.drShiftTo(1,r);\n}\n\n//Barrett modular reduction\nfunction Barrett(m) {\n// setup Barrett\nthis.r2 = nbi();\nthis.q3 = nbi();\nBigInteger.ONE.dlShiftTo(2*m.t,this.r2);\nthis.mu = this.r2.divide(m);\nthis.m = m;\n}\n\nfunction barrettConvert(x) {\nif(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\nelse if(x.compareTo(this.m) < 0) return x;\nelse { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n}\n\nfunction barrettRevert(x) { return x; }\n\n//x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\nx.drShiftTo(this.m.t-1,this.r2);\nif(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\nthis.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\nthis.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\nwhile(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\nx.subTo(this.r2,x);\nwhile(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n//r = x^2 mod m; x != r\nfunction barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n//r = x*y mod m; x,y != r\nfunction barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n//(public) this^e % m (HAC 14.85)\nfunction bnModPow(e,m) {\nvar i = e.bitLength(), k, r = nbv(1), z;\nif(i <= 0) return r;\nelse if(i < 18) k = 1;\nelse if(i < 48) k = 3;\nelse if(i < 144) k = 4;\nelse if(i < 768) k = 5;\nelse k = 6;\nif(i < 8)\n z = new Classic(m);\nelse if(m.isEven())\n z = new Barrett(m);\nelse\n z = new Montgomery(m);\n\n// precomputation\nvar g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n}\n\nvar j = e.t-1, w, is1 = true, r2 = nbi(), t;\ni = nbits(e.data[j])-1;\nwhile(j >= 0) {\n if(i >= k1) w = (e.data[j]>>(i-k1))&km;\n else {\n w = (e.data[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e.data[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e.data[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n}\nwhile(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n } else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n}\nif(g > 0) y.lShiftTo(g,y);\nreturn y;\n}\n\n//(protected) this % n, n < 2^26\nfunction bnpModInt(n) {\nif(n <= 0) return 0;\nvar d = this.DV%n, r = (this.s<0)?n-1:0;\nif(this.t > 0)\n if(d == 0) r = this.data[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this.data[i])%n;\nreturn r;\n}\n\n//(public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\nvar ac = m.isEven();\nif((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\nvar u = m.clone(), v = this.clone();\nvar a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\nwhile(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n } else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n } else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n } else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n}\nif(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\nif(d.compareTo(m) >= 0) return d.subtract(m);\nif(d.signum() < 0) d.addTo(m,d); else return d;\nif(d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];\nvar lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n//(public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\nvar i, x = this.abs();\nif(x.t == 1 && x.data[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x.data[0] == lowprimes[i]) return true;\n return false;\n}\nif(x.isEven()) return false;\ni = 1;\nwhile(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n}\nreturn x.millerRabin(t);\n}\n\n//(protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\nvar n1 = this.subtract(BigInteger.ONE);\nvar k = n1.getLowestSetBit();\nif(k <= 0) return false;\nvar r = n1.shiftRight(k);\nvar prng = bnGetPrng();\nvar a;\nfor(var i = 0; i < t; ++i) {\n // select witness 'a' at random from between 1 and n1\n do {\n a = new BigInteger(this.bitLength(), prng);\n }\n while(a.compareTo(BigInteger.ONE) <= 0 || a.compareTo(n1) >= 0);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n}\nreturn true;\n}\n\n// get pseudo random number generator\nfunction bnGetPrng() {\n // create prng with api that matches BigInteger secure random\n return {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n for(var i = 0; i < x.length; ++i) {\n x[i] = Math.floor(Math.random() * 0x0100);\n }\n }\n };\n}\n\n//protected\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n//public\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n//BigInteger interfaces not implemented in jsbn:\n\n//BigInteger(int signum, byte[] magnitude)\n//double doubleValue()\n//float floatValue()\n//int hashCode()\n//long longValue()\n//static BigInteger valueOf(long val)\n","/**\n * Javascript implementation of RSA-KEM.\n *\n * @author Lautaro Cozzani Rodriguez\n * @author Dave Longley\n *\n * Copyright (c) 2014 Lautaro Cozzani \n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./jsbn');\n\nmodule.exports = forge.kem = forge.kem || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n/**\n * The API for the RSA Key Encapsulation Mechanism (RSA-KEM) from ISO 18033-2.\n */\nforge.kem.rsa = {};\n\n/**\n * Creates an RSA KEM API object for generating a secret asymmetric key.\n *\n * The symmetric key may be generated via a call to 'encrypt', which will\n * produce a ciphertext to be transmitted to the recipient and a key to be\n * kept secret. The ciphertext is a parameter to be passed to 'decrypt' which\n * will produce the same secret key for the recipient to use to decrypt a\n * message that was encrypted with the secret key.\n *\n * @param kdf the KDF API to use (eg: new forge.kem.kdf1()).\n * @param options the options to use.\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n */\nforge.kem.rsa.create = function(kdf, options) {\n options = options || {};\n var prng = options.prng || forge.random;\n\n var kem = {};\n\n /**\n * Generates a secret key and its encapsulation.\n *\n * @param publicKey the RSA public key to encrypt with.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return an object with:\n * encapsulation: the ciphertext for generating the secret key, as a\n * binary-encoded string of bytes.\n * key: the secret key to use for encrypting a message.\n */\n kem.encrypt = function(publicKey, keyLength) {\n // generate a random r where 1 < r < n\n var byteLength = Math.ceil(publicKey.n.bitLength() / 8);\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(prng.getBytesSync(byteLength)),\n 16).mod(publicKey.n);\n } while(r.compareTo(BigInteger.ONE) <= 0);\n\n // prepend r with zeros\n r = forge.util.hexToBytes(r.toString(16));\n var zeros = byteLength - r.length;\n if(zeros > 0) {\n r = forge.util.fillString(String.fromCharCode(0), zeros) + r;\n }\n\n // encrypt the random\n var encapsulation = publicKey.encrypt(r, 'NONE');\n\n // generate the secret key\n var key = kdf.generate(r, keyLength);\n\n return {encapsulation: encapsulation, key: key};\n };\n\n /**\n * Decrypts an encapsulated secret key.\n *\n * @param privateKey the RSA private key to decrypt with.\n * @param encapsulation the ciphertext for generating the secret key, as\n * a binary-encoded string of bytes.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return the secret key as a binary-encoded string of bytes.\n */\n kem.decrypt = function(privateKey, encapsulation, keyLength) {\n // decrypt the encapsulation and generate the secret key\n var r = privateKey.decrypt(encapsulation, 'NONE');\n return kdf.generate(r, keyLength);\n };\n\n return kem;\n};\n\n// TODO: add forge.kem.kdf.create('KDF1', {md: ..., ...}) API?\n\n/**\n * Creates a key derivation API object that implements KDF1 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF1 API object.\n */\nforge.kem.kdf1 = function(md, digestLength) {\n _createKDF(this, md, 0, digestLength || md.digestLength);\n};\n\n/**\n * Creates a key derivation API object that implements KDF2 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF2 API object.\n */\nforge.kem.kdf2 = function(md, digestLength) {\n _createKDF(this, md, 1, digestLength || md.digestLength);\n};\n\n/**\n * Creates a KDF1 or KDF2 API object.\n *\n * @param md the hash API to use.\n * @param counterStart the starting index for the counter.\n * @param digestLength the digest length to use.\n *\n * @return the KDF API object.\n */\nfunction _createKDF(kdf, md, counterStart, digestLength) {\n /**\n * Generate a key of the specified length.\n *\n * @param x the binary-encoded byte string to generate a key from.\n * @param length the number of bytes to generate (the size of the key).\n *\n * @return the key as a binary-encoded string.\n */\n kdf.generate = function(x, length) {\n var key = new forge.util.ByteBuffer();\n\n // run counter from counterStart to ceil(length / Hash.len)\n var k = Math.ceil(length / digestLength) + counterStart;\n\n var c = new forge.util.ByteBuffer();\n for(var i = counterStart; i < k; ++i) {\n // I2OSP(i, 4): convert counter to an octet string of 4 octets\n c.putInt32(i);\n\n // digest 'x' and the counter and add the result to the key\n md.start();\n md.update(x + c.getBytes());\n var hash = md.digest();\n key.putBytes(hash.getBytes(digestLength));\n }\n\n // truncate to the correct key length\n key.truncate(key.length() - length);\n return key.getBytes();\n };\n}\n","/**\n * Cross-browser support for logging in a web application.\n *\n * @author David I. Lehn \n *\n * Copyright (c) 2008-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n/* LOG API */\nmodule.exports = forge.log = forge.log || {};\n\n/**\n * Application logging system.\n *\n * Each logger level available as it's own function of the form:\n * forge.log.level(category, args...)\n * The category is an arbitrary string, and the args are the same as\n * Firebug's console.log API. By default the call will be output as:\n * 'LEVEL [category] , args[1], ...'\n * This enables proper % formatting via the first argument.\n * Each category is enabled by default but can be enabled or disabled with\n * the setCategoryEnabled() function.\n */\n// list of known levels\nforge.log.levels = [\n 'none', 'error', 'warning', 'info', 'debug', 'verbose', 'max'];\n// info on the levels indexed by name:\n// index: level index\n// name: uppercased display name\nvar sLevelInfo = {};\n// list of loggers\nvar sLoggers = [];\n/**\n * Standard console logger. If no console support is enabled this will\n * remain null. Check before using.\n */\nvar sConsoleLogger = null;\n\n// logger flags\n/**\n * Lock the level at the current value. Used in cases where user config may\n * set the level such that only critical messages are seen but more verbose\n * messages are needed for debugging or other purposes.\n */\nforge.log.LEVEL_LOCKED = (1 << 1);\n/**\n * Always call log function. By default, the logging system will check the\n * message level against logger.level before calling the log function. This\n * flag allows the function to do its own check.\n */\nforge.log.NO_LEVEL_CHECK = (1 << 2);\n/**\n * Perform message interpolation with the passed arguments. \"%\" style\n * fields in log messages will be replaced by arguments as needed. Some\n * loggers, such as Firebug, may do this automatically. The original log\n * message will be available as 'message' and the interpolated version will\n * be available as 'fullMessage'.\n */\nforge.log.INTERPOLATE = (1 << 3);\n\n// setup each log level\nfor(var i = 0; i < forge.log.levels.length; ++i) {\n var level = forge.log.levels[i];\n sLevelInfo[level] = {\n index: i,\n name: level.toUpperCase()\n };\n}\n\n/**\n * Message logger. Will dispatch a message to registered loggers as needed.\n *\n * @param message message object\n */\nforge.log.logMessage = function(message) {\n var messageLevelIndex = sLevelInfo[message.level].index;\n for(var i = 0; i < sLoggers.length; ++i) {\n var logger = sLoggers[i];\n if(logger.flags & forge.log.NO_LEVEL_CHECK) {\n logger.f(message);\n } else {\n // get logger level\n var loggerLevelIndex = sLevelInfo[logger.level].index;\n // check level\n if(messageLevelIndex <= loggerLevelIndex) {\n // message critical enough, call logger\n logger.f(logger, message);\n }\n }\n }\n};\n\n/**\n * Sets the 'standard' key on a message object to:\n * \"LEVEL [category] \" + message\n *\n * @param message a message log object\n */\nforge.log.prepareStandard = function(message) {\n if(!('standard' in message)) {\n message.standard =\n sLevelInfo[message.level].name +\n //' ' + +message.timestamp +\n ' [' + message.category + '] ' +\n message.message;\n }\n};\n\n/**\n * Sets the 'full' key on a message object to the original message\n * interpolated via % formatting with the message arguments.\n *\n * @param message a message log object.\n */\nforge.log.prepareFull = function(message) {\n if(!('full' in message)) {\n // copy args and insert message at the front\n var args = [message.message];\n args = args.concat([] || message['arguments']);\n // format the message\n message.full = forge.util.format.apply(this, args);\n }\n};\n\n/**\n * Applies both preparseStandard() and prepareFull() to a message object and\n * store result in 'standardFull'.\n *\n * @param message a message log object.\n */\nforge.log.prepareStandardFull = function(message) {\n if(!('standardFull' in message)) {\n // FIXME implement 'standardFull' logging\n forge.log.prepareStandard(message);\n message.standardFull = message.standard;\n }\n};\n\n// create log level functions\nif(true) {\n // levels for which we want functions\n var levels = ['error', 'warning', 'info', 'debug', 'verbose'];\n for(var i = 0; i < levels.length; ++i) {\n // wrap in a function to ensure proper level var is passed\n (function(level) {\n // create function for this level\n forge.log[level] = function(category, message/*, args...*/) {\n // convert arguments to real array, remove category and message\n var args = Array.prototype.slice.call(arguments).slice(2);\n // create message object\n // Note: interpolation and standard formatting is done lazily\n var msg = {\n timestamp: new Date(),\n level: level,\n category: category,\n message: message,\n 'arguments': args\n /*standard*/\n /*full*/\n /*fullMessage*/\n };\n // process this message\n forge.log.logMessage(msg);\n };\n })(levels[i]);\n }\n}\n\n/**\n * Creates a new logger with specified custom logging function.\n *\n * The logging function has a signature of:\n * function(logger, message)\n * logger: current logger\n * message: object:\n * level: level id\n * category: category\n * message: string message\n * arguments: Array of extra arguments\n * fullMessage: interpolated message and arguments if INTERPOLATE flag set\n *\n * @param logFunction a logging function which takes a log message object\n * as a parameter.\n *\n * @return a logger object.\n */\nforge.log.makeLogger = function(logFunction) {\n var logger = {\n flags: 0,\n f: logFunction\n };\n forge.log.setLevel(logger, 'none');\n return logger;\n};\n\n/**\n * Sets the current log level on a logger.\n *\n * @param logger the target logger.\n * @param level the new maximum log level as a string.\n *\n * @return true if set, false if not.\n */\nforge.log.setLevel = function(logger, level) {\n var rval = false;\n if(logger && !(logger.flags & forge.log.LEVEL_LOCKED)) {\n for(var i = 0; i < forge.log.levels.length; ++i) {\n var aValidLevel = forge.log.levels[i];\n if(level == aValidLevel) {\n // set level\n logger.level = level;\n rval = true;\n break;\n }\n }\n }\n\n return rval;\n};\n\n/**\n * Locks the log level at its current value.\n *\n * @param logger the target logger.\n * @param lock boolean lock value, default to true.\n */\nforge.log.lock = function(logger, lock) {\n if(typeof lock === 'undefined' || lock) {\n logger.flags |= forge.log.LEVEL_LOCKED;\n } else {\n logger.flags &= ~forge.log.LEVEL_LOCKED;\n }\n};\n\n/**\n * Adds a logger.\n *\n * @param logger the logger object.\n */\nforge.log.addLogger = function(logger) {\n sLoggers.push(logger);\n};\n\n// setup the console logger if possible, else create fake console.log\nif(typeof(console) !== 'undefined' && 'log' in console) {\n var logger;\n if(console.error && console.warn && console.info && console.debug) {\n // looks like Firebug-style logging is available\n // level handlers map\n var levelHandlers = {\n error: console.error,\n warning: console.warn,\n info: console.info,\n debug: console.debug,\n verbose: console.debug\n };\n var f = function(logger, message) {\n forge.log.prepareStandard(message);\n var handler = levelHandlers[message.level];\n // prepend standard message and concat args\n var args = [message.standard];\n args = args.concat(message['arguments'].slice());\n // apply to low-level console function\n handler.apply(console, args);\n };\n logger = forge.log.makeLogger(f);\n } else {\n // only appear to have basic console.log\n var f = function(logger, message) {\n forge.log.prepareStandardFull(message);\n console.log(message.standardFull);\n };\n logger = forge.log.makeLogger(f);\n }\n forge.log.setLevel(logger, 'debug');\n forge.log.addLogger(logger);\n sConsoleLogger = logger;\n} else {\n // define fake console.log to avoid potential script errors on\n // browsers that do not have console logging\n console = {\n log: function() {}\n };\n}\n\n/*\n * Check for logging control query vars in current URL.\n *\n * console.level=\n * Set's the console log level by name. Useful to override defaults and\n * allow more verbose logging before a user config is loaded.\n *\n * console.lock=\n * Lock the console log level at whatever level it is set at. This is run\n * after console.level is processed. Useful to force a level of verbosity\n * that could otherwise be limited by a user config.\n */\nif(sConsoleLogger !== null &&\n typeof window !== 'undefined' && window.location\n) {\n var query = new URL(window.location.href).searchParams;\n if(query.has('console.level')) {\n // set with last value\n forge.log.setLevel(\n sConsoleLogger, query.get('console.level').slice(-1)[0]);\n }\n if(query.has('console.lock')) {\n // set with last value\n var lock = query.get('console.lock').slice(-1)[0];\n if(lock == 'true') {\n forge.log.lock(sConsoleLogger);\n }\n }\n}\n\n// provide public access to console logger\nforge.log.consoleLogger = sConsoleLogger;\n","/**\n * Node.js module for all known Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nmodule.exports = require('./md');\n\nrequire('./md5');\nrequire('./sha1');\nrequire('./sha256');\nrequire('./sha512');\n","/**\n * Node.js module for Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nmodule.exports = forge.md = forge.md || {};\nforge.md.algorithms = forge.md.algorithms || {};\n","/**\n * Message Digest Algorithm 5 with 128-bit digest (MD5) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar md5 = module.exports = forge.md5 = forge.md5 || {};\nforge.md.md5 = forge.md.algorithms.md5 = md5;\n\n/**\n * Creates an MD5 message digest object.\n *\n * @return a message digest object.\n */\nmd5.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // MD5 state contains four 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(16);\n\n // message digest object\n var md = {\n algorithm: 'md5',\n blockLength: 64,\n digestLength: 16,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = (len[1] / 0x100000000) >>> 0;\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate MD5 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in little-endian order; since length\n // is stored in bytes we multiply by 8 and add carry\n var bits, carry = 0;\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n bits = md.fullMessageLength[i] * 8 + carry;\n carry = (bits / 0x100000000) >>> 0;\n finalBlock.putInt32Le(bits >>> 0);\n }\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32Le(s2.h0);\n rval.putInt32Le(s2.h1);\n rval.putInt32Le(s2.h2);\n rval.putInt32Le(s2.h3);\n return rval;\n };\n\n return md;\n};\n\n// padding, constant tables for calculating md5\nvar _padding = null;\nvar _g = null;\nvar _r = null;\nvar _k = null;\nvar _initialized = false;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // g values\n _g = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12,\n 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2,\n 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9];\n\n // rounds table\n _r = [\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21];\n\n // get the result of abs(sin(i + 1)) as a 32-bit integer\n _k = new Array(64);\n for(var i = 0; i < 64; ++i) {\n _k[i] = Math.floor(Math.abs(Math.sin(i + 1)) * 0x100000000);\n }\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates an MD5 state with the given byte buffer.\n *\n * @param s the MD5 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t, a, b, c, d, f, r, i;\n var len = bytes.length();\n while(len >= 64) {\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n\n // round 1\n for(i = 0; i < 16; ++i) {\n w[i] = bytes.getInt32Le();\n f = d ^ (b & (c ^ d));\n t = (a + f + _k[i] + w[i]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n // round 2\n for(; i < 32; ++i) {\n f = c ^ (d & (b ^ c));\n t = (a + f + _k[i] + w[_g[i]]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n // round 3\n for(; i < 48; ++i) {\n f = b ^ c ^ d;\n t = (a + f + _k[i] + w[_g[i]]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n // round 4\n for(; i < 64; ++i) {\n f = c ^ (b | ~d);\n t = (a + f + _k[i] + w[_g[i]]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n\n len -= 64;\n }\n}\n","/**\n * Node.js module for Forge mask generation functions.\n *\n * @author Stefan Siegl\n *\n * Copyright 2012 Stefan Siegl \n */\nvar forge = require('./forge');\nrequire('./mgf1');\n\nmodule.exports = forge.mgf = forge.mgf || {};\nforge.mgf.mgf1 = forge.mgf1;\n","/**\n * Javascript implementation of mask generation function MGF1.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.mgf = forge.mgf || {};\nvar mgf1 = module.exports = forge.mgf.mgf1 = forge.mgf1 = forge.mgf1 || {};\n\n/**\n * Creates a MGF1 mask generation function object.\n *\n * @param md the message digest API to use (eg: forge.md.sha1.create()).\n *\n * @return a mask generation function object.\n */\nmgf1.create = function(md) {\n var mgf = {\n /**\n * Generate mask of specified length.\n *\n * @param {String} seed The seed for mask generation.\n * @param maskLen Number of bytes to generate.\n * @return {String} The generated mask.\n */\n generate: function(seed, maskLen) {\n /* 2. Let T be the empty octet string. */\n var t = new forge.util.ByteBuffer();\n\n /* 3. For counter from 0 to ceil(maskLen / hLen), do the following: */\n var len = Math.ceil(maskLen / md.digestLength);\n for(var i = 0; i < len; i++) {\n /* a. Convert counter to an octet string C of length 4 octets */\n var c = new forge.util.ByteBuffer();\n c.putInt32(i);\n\n /* b. Concatenate the hash of the seed mgfSeed and C to the octet\n * string T: */\n md.start();\n md.update(seed + c.getBytes());\n t.putBuffer(md.digest());\n }\n\n /* Output the leading maskLen octets of T as the octet string mask. */\n t.truncate(t.length() - maskLen);\n return t.getBytes();\n }\n };\n\n return mgf;\n};\n","/**\n * Object IDs for ASN.1.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nforge.pki = forge.pki || {};\nvar oids = module.exports = forge.pki.oids = forge.oids = forge.oids || {};\n\n// set id to name mapping and name to id mapping\nfunction _IN(id, name) {\n oids[id] = name;\n oids[name] = id;\n}\n// set id to name mapping only\nfunction _I_(id, name) {\n oids[id] = name;\n}\n\n// algorithm OIDs\n_IN('1.2.840.113549.1.1.1', 'rsaEncryption');\n// Note: md2 & md4 not implemented\n//_IN('1.2.840.113549.1.1.2', 'md2WithRSAEncryption');\n//_IN('1.2.840.113549.1.1.3', 'md4WithRSAEncryption');\n_IN('1.2.840.113549.1.1.4', 'md5WithRSAEncryption');\n_IN('1.2.840.113549.1.1.5', 'sha1WithRSAEncryption');\n_IN('1.2.840.113549.1.1.7', 'RSAES-OAEP');\n_IN('1.2.840.113549.1.1.8', 'mgf1');\n_IN('1.2.840.113549.1.1.9', 'pSpecified');\n_IN('1.2.840.113549.1.1.10', 'RSASSA-PSS');\n_IN('1.2.840.113549.1.1.11', 'sha256WithRSAEncryption');\n_IN('1.2.840.113549.1.1.12', 'sha384WithRSAEncryption');\n_IN('1.2.840.113549.1.1.13', 'sha512WithRSAEncryption');\n// Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519\n_IN('1.3.101.112', 'EdDSA25519');\n\n_IN('1.2.840.10040.4.3', 'dsa-with-sha1');\n\n_IN('1.3.14.3.2.7', 'desCBC');\n\n_IN('1.3.14.3.2.26', 'sha1');\n// Deprecated equivalent of sha1WithRSAEncryption\n_IN('1.3.14.3.2.29', 'sha1WithRSASignature');\n_IN('2.16.840.1.101.3.4.2.1', 'sha256');\n_IN('2.16.840.1.101.3.4.2.2', 'sha384');\n_IN('2.16.840.1.101.3.4.2.3', 'sha512');\n_IN('2.16.840.1.101.3.4.2.4', 'sha224');\n_IN('2.16.840.1.101.3.4.2.5', 'sha512-224');\n_IN('2.16.840.1.101.3.4.2.6', 'sha512-256');\n_IN('1.2.840.113549.2.2', 'md2');\n_IN('1.2.840.113549.2.5', 'md5');\n\n// pkcs#7 content types\n_IN('1.2.840.113549.1.7.1', 'data');\n_IN('1.2.840.113549.1.7.2', 'signedData');\n_IN('1.2.840.113549.1.7.3', 'envelopedData');\n_IN('1.2.840.113549.1.7.4', 'signedAndEnvelopedData');\n_IN('1.2.840.113549.1.7.5', 'digestedData');\n_IN('1.2.840.113549.1.7.6', 'encryptedData');\n\n// pkcs#9 oids\n_IN('1.2.840.113549.1.9.1', 'emailAddress');\n_IN('1.2.840.113549.1.9.2', 'unstructuredName');\n_IN('1.2.840.113549.1.9.3', 'contentType');\n_IN('1.2.840.113549.1.9.4', 'messageDigest');\n_IN('1.2.840.113549.1.9.5', 'signingTime');\n_IN('1.2.840.113549.1.9.6', 'counterSignature');\n_IN('1.2.840.113549.1.9.7', 'challengePassword');\n_IN('1.2.840.113549.1.9.8', 'unstructuredAddress');\n_IN('1.2.840.113549.1.9.14', 'extensionRequest');\n\n_IN('1.2.840.113549.1.9.20', 'friendlyName');\n_IN('1.2.840.113549.1.9.21', 'localKeyId');\n_IN('1.2.840.113549.1.9.22.1', 'x509Certificate');\n\n// pkcs#12 safe bags\n_IN('1.2.840.113549.1.12.10.1.1', 'keyBag');\n_IN('1.2.840.113549.1.12.10.1.2', 'pkcs8ShroudedKeyBag');\n_IN('1.2.840.113549.1.12.10.1.3', 'certBag');\n_IN('1.2.840.113549.1.12.10.1.4', 'crlBag');\n_IN('1.2.840.113549.1.12.10.1.5', 'secretBag');\n_IN('1.2.840.113549.1.12.10.1.6', 'safeContentsBag');\n\n// password-based-encryption for pkcs#12\n_IN('1.2.840.113549.1.5.13', 'pkcs5PBES2');\n_IN('1.2.840.113549.1.5.12', 'pkcs5PBKDF2');\n\n_IN('1.2.840.113549.1.12.1.1', 'pbeWithSHAAnd128BitRC4');\n_IN('1.2.840.113549.1.12.1.2', 'pbeWithSHAAnd40BitRC4');\n_IN('1.2.840.113549.1.12.1.3', 'pbeWithSHAAnd3-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.4', 'pbeWithSHAAnd2-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.5', 'pbeWithSHAAnd128BitRC2-CBC');\n_IN('1.2.840.113549.1.12.1.6', 'pbewithSHAAnd40BitRC2-CBC');\n\n// hmac OIDs\n_IN('1.2.840.113549.2.7', 'hmacWithSHA1');\n_IN('1.2.840.113549.2.8', 'hmacWithSHA224');\n_IN('1.2.840.113549.2.9', 'hmacWithSHA256');\n_IN('1.2.840.113549.2.10', 'hmacWithSHA384');\n_IN('1.2.840.113549.2.11', 'hmacWithSHA512');\n\n// symmetric key algorithm oids\n_IN('1.2.840.113549.3.7', 'des-EDE3-CBC');\n_IN('2.16.840.1.101.3.4.1.2', 'aes128-CBC');\n_IN('2.16.840.1.101.3.4.1.22', 'aes192-CBC');\n_IN('2.16.840.1.101.3.4.1.42', 'aes256-CBC');\n\n// certificate issuer/subject OIDs\n_IN('2.5.4.3', 'commonName');\n_IN('2.5.4.4', 'surname');\n_IN('2.5.4.5', 'serialNumber');\n_IN('2.5.4.6', 'countryName');\n_IN('2.5.4.7', 'localityName');\n_IN('2.5.4.8', 'stateOrProvinceName');\n_IN('2.5.4.9', 'streetAddress');\n_IN('2.5.4.10', 'organizationName');\n_IN('2.5.4.11', 'organizationalUnitName');\n_IN('2.5.4.12', 'title');\n_IN('2.5.4.13', 'description');\n_IN('2.5.4.15', 'businessCategory');\n_IN('2.5.4.17', 'postalCode');\n_IN('2.5.4.42', 'givenName');\n_IN('1.3.6.1.4.1.311.60.2.1.2', 'jurisdictionOfIncorporationStateOrProvinceName');\n_IN('1.3.6.1.4.1.311.60.2.1.3', 'jurisdictionOfIncorporationCountryName');\n\n// X.509 extension OIDs\n_IN('2.16.840.1.113730.1.1', 'nsCertType');\n_IN('2.16.840.1.113730.1.13', 'nsComment'); // deprecated in theory; still widely used\n_I_('2.5.29.1', 'authorityKeyIdentifier'); // deprecated, use .35\n_I_('2.5.29.2', 'keyAttributes'); // obsolete use .37 or .15\n_I_('2.5.29.3', 'certificatePolicies'); // deprecated, use .32\n_I_('2.5.29.4', 'keyUsageRestriction'); // obsolete use .37 or .15\n_I_('2.5.29.5', 'policyMapping'); // deprecated use .33\n_I_('2.5.29.6', 'subtreesConstraint'); // obsolete use .30\n_I_('2.5.29.7', 'subjectAltName'); // deprecated use .17\n_I_('2.5.29.8', 'issuerAltName'); // deprecated use .18\n_I_('2.5.29.9', 'subjectDirectoryAttributes');\n_I_('2.5.29.10', 'basicConstraints'); // deprecated use .19\n_I_('2.5.29.11', 'nameConstraints'); // deprecated use .30\n_I_('2.5.29.12', 'policyConstraints'); // deprecated use .36\n_I_('2.5.29.13', 'basicConstraints'); // deprecated use .19\n_IN('2.5.29.14', 'subjectKeyIdentifier');\n_IN('2.5.29.15', 'keyUsage');\n_I_('2.5.29.16', 'privateKeyUsagePeriod');\n_IN('2.5.29.17', 'subjectAltName');\n_IN('2.5.29.18', 'issuerAltName');\n_IN('2.5.29.19', 'basicConstraints');\n_I_('2.5.29.20', 'cRLNumber');\n_I_('2.5.29.21', 'cRLReason');\n_I_('2.5.29.22', 'expirationDate');\n_I_('2.5.29.23', 'instructionCode');\n_I_('2.5.29.24', 'invalidityDate');\n_I_('2.5.29.25', 'cRLDistributionPoints'); // deprecated use .31\n_I_('2.5.29.26', 'issuingDistributionPoint'); // deprecated use .28\n_I_('2.5.29.27', 'deltaCRLIndicator');\n_I_('2.5.29.28', 'issuingDistributionPoint');\n_I_('2.5.29.29', 'certificateIssuer');\n_I_('2.5.29.30', 'nameConstraints');\n_IN('2.5.29.31', 'cRLDistributionPoints');\n_IN('2.5.29.32', 'certificatePolicies');\n_I_('2.5.29.33', 'policyMappings');\n_I_('2.5.29.34', 'policyConstraints'); // deprecated use .36\n_IN('2.5.29.35', 'authorityKeyIdentifier');\n_I_('2.5.29.36', 'policyConstraints');\n_IN('2.5.29.37', 'extKeyUsage');\n_I_('2.5.29.46', 'freshestCRL');\n_I_('2.5.29.54', 'inhibitAnyPolicy');\n\n// extKeyUsage purposes\n_IN('1.3.6.1.4.1.11129.2.4.2', 'timestampList');\n_IN('1.3.6.1.5.5.7.1.1', 'authorityInfoAccess');\n_IN('1.3.6.1.5.5.7.3.1', 'serverAuth');\n_IN('1.3.6.1.5.5.7.3.2', 'clientAuth');\n_IN('1.3.6.1.5.5.7.3.3', 'codeSigning');\n_IN('1.3.6.1.5.5.7.3.4', 'emailProtection');\n_IN('1.3.6.1.5.5.7.3.8', 'timeStamping');\n","/**\n * Password-based encryption functions.\n *\n * @author Dave Longley\n * @author Stefan Siegl \n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * An EncryptedPrivateKeyInfo:\n *\n * EncryptedPrivateKeyInfo ::= SEQUENCE {\n * encryptionAlgorithm EncryptionAlgorithmIdentifier,\n * encryptedData EncryptedData }\n *\n * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedData ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./oids');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./random');\nrequire('./rc2');\nrequire('./rsa');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Password-based encryption implementation. */\nvar pki = forge.pki = forge.pki || {};\nmodule.exports = pki.pbe = forge.pbe = forge.pbe || {};\nvar oids = pki.oids;\n\n// validator for an EncryptedPrivateKeyInfo structure\n// Note: Currently only works w/algorithm params\nvar encryptedPrivateKeyValidator = {\n name: 'EncryptedPrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedPrivateKeyInfo.encryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encryptionOid'\n }, {\n name: 'AlgorithmIdentifier.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'encryptionParams'\n }]\n }, {\n // encryptedData\n name: 'EncryptedPrivateKeyInfo.encryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encryptedData'\n }]\n};\n\n// validator for a PBES2Algorithms structure\n// Note: Currently only works w/PBKDF2 + AES encryption schemes\nvar PBES2AlgorithmsValidator = {\n name: 'PBES2Algorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'kdfOid'\n }, {\n name: 'PBES2Algorithms.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.params.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'kdfSalt'\n }, {\n name: 'PBES2Algorithms.params.iterationCount',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'kdfIterationCount'\n }, {\n name: 'PBES2Algorithms.params.keyLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'keyLength'\n }, {\n // prf\n name: 'PBES2Algorithms.params.prf',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'PBES2Algorithms.params.prf.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'prfOid'\n }]\n }]\n }]\n }, {\n name: 'PBES2Algorithms.encryptionScheme',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.encryptionScheme.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encOid'\n }, {\n name: 'PBES2Algorithms.encryptionScheme.iv',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encIv'\n }]\n }]\n};\n\nvar pkcs12PbeParamsValidator = {\n name: 'pkcs-12PbeParams',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'pkcs-12PbeParams.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'salt'\n }, {\n name: 'pkcs-12PbeParams.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'iterations'\n }]\n};\n\n/**\n * Encrypts a ASN.1 PrivateKeyInfo object, producing an EncryptedPrivateKeyInfo.\n *\n * PBES2Algorithms ALGORITHM-IDENTIFIER ::=\n * { {PBES2-params IDENTIFIED BY id-PBES2}, ...}\n *\n * id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}\n *\n * PBES2-params ::= SEQUENCE {\n * keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},\n * encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}\n * }\n *\n * PBES2-KDFs ALGORITHM-IDENTIFIER ::=\n * { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }\n *\n * PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }\n *\n * PBKDF2-params ::= SEQUENCE {\n * salt CHOICE {\n * specified OCTET STRING,\n * otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}\n * },\n * iterationCount INTEGER (1..MAX),\n * keyLength INTEGER (1..MAX) OPTIONAL,\n * prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT algid-hmacWithSHA1\n * }\n *\n * @param obj the ASN.1 PrivateKeyInfo object.\n * @param password the password to encrypt with.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * prfAlgorithm the PRF message digest algorithm to use\n * ('sha1', 'sha224', 'sha256', 'sha384', 'sha512')\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptPrivateKeyInfo = function(obj, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || 'aes128';\n options.prfAlgorithm = options.prfAlgorithm || 'sha1';\n\n // generate PBE params\n var salt = forge.random.getBytesSync(options.saltSize);\n var count = options.count;\n var countBytes = asn1.integerToDer(count);\n var dkLen;\n var encryptionAlgorithm;\n var encryptedData;\n if(options.algorithm.indexOf('aes') === 0 || options.algorithm === 'des') {\n // do PBES2\n var ivLen, encOid, cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n dkLen = 16;\n ivLen = 16;\n encOid = oids['aes128-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n dkLen = 24;\n ivLen = 16;\n encOid = oids['aes192-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n dkLen = 32;\n ivLen = 16;\n encOid = oids['aes256-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'des':\n dkLen = 8;\n ivLen = 8;\n encOid = oids['desCBC'];\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // get PRF message digest\n var prfAlgorithm = 'hmacWith' + options.prfAlgorithm.toUpperCase();\n var md = prfAlgorithmToMessageDigest(prfAlgorithm);\n\n // encrypt private key using pbe SHA-1 and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = forge.random.getBytesSync(ivLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n // get PBKDF2-params\n var params = createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm);\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBES2']).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // keyDerivationFunc\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBKDF2']).getBytes()),\n // PBKDF2-params\n params\n ]),\n // encryptionScheme\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(encOid).getBytes()),\n // iv\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, iv)\n ])\n ])\n ]);\n } else if(options.algorithm === '3des') {\n // Do PKCS12 PBE\n dkLen = 24;\n\n var saltBytes = new forge.util.ByteBuffer(salt);\n var dk = pki.pbe.generatePkcs12Key(password, saltBytes, 1, count, dkLen);\n var iv = pki.pbe.generatePkcs12Key(password, saltBytes, 2, count, dkLen);\n var cipher = forge.des.createEncryptionCipher(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pbeWithSHAAnd3-KeyTripleDES-CBC']).getBytes()),\n // pkcs-12PbeParams\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ])\n ]);\n } else {\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // EncryptedPrivateKeyInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // encryptionAlgorithm\n encryptionAlgorithm,\n // encryptedData\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, encryptedData)\n ]);\n return rval;\n};\n\n/**\n * Decrypts a ASN.1 PrivateKeyInfo object.\n *\n * @param obj the ASN.1 EncryptedPrivateKeyInfo object.\n * @param password the password to decrypt with.\n *\n * @return the ASN.1 PrivateKeyInfo on success, null on failure.\n */\npki.decryptPrivateKeyInfo = function(obj, password) {\n var rval = null;\n\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, encryptedPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // get cipher\n var oid = asn1.derToOid(capture.encryptionOid);\n var cipher = pki.pbe.getCipher(oid, capture.encryptionParams, password);\n\n // get encrypted data\n var encrypted = forge.util.createBuffer(capture.encryptedData);\n\n cipher.update(encrypted);\n if(cipher.finish()) {\n rval = asn1.fromDer(cipher.output);\n }\n\n return rval;\n};\n\n/**\n * Converts a EncryptedPrivateKeyInfo to PEM format.\n *\n * @param epki the EncryptedPrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted encrypted private key.\n */\npki.encryptedPrivateKeyToPem = function(epki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'ENCRYPTED PRIVATE KEY',\n body: asn1.toDer(epki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PEM-encoded EncryptedPrivateKeyInfo to ASN.1 format. Decryption\n * is not performed.\n *\n * @param pem the EncryptedPrivateKeyInfo in PEM-format.\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptedPrivateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY') {\n var error = new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM header type is \"ENCRYPTED PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n return asn1.fromDer(msg.body);\n};\n\n/**\n * Encrypts an RSA private key. By default, the key will be wrapped in\n * a PrivateKeyInfo and encrypted to produce a PKCS#8 EncryptedPrivateKeyInfo.\n * This is the standard, preferred way to encrypt a private key.\n *\n * To produce a non-standard PEM-encrypted private key that uses encapsulated\n * headers to indicate the encryption algorithm (old-style non-PKCS#8 OpenSSL\n * private key encryption), set the 'legacy' option to true. Note: Using this\n * option will cause the iteration count to be forced to 1.\n *\n * Note: The 'des' algorithm is supported, but it is not considered to be\n * secure because it only uses a single 56-bit key. If possible, it is highly\n * recommended that a different algorithm be used.\n *\n * @param rsaKey the RSA key to encrypt.\n * @param password the password to use.\n * @param options:\n * algorithm: the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des', 'des').\n * count: the iteration count to use.\n * saltSize: the salt size to use.\n * legacy: output an old non-PKCS#8 PEM-encrypted+encapsulated\n * headers (DEK-Info) private key.\n *\n * @return the PEM-encoded ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptRsaPrivateKey = function(rsaKey, password, options) {\n // standard PKCS#8\n options = options || {};\n if(!options.legacy) {\n // encrypt PrivateKeyInfo\n var rval = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(rsaKey));\n rval = pki.encryptPrivateKeyInfo(rval, password, options);\n return pki.encryptedPrivateKeyToPem(rval);\n }\n\n // legacy non-PKCS#8\n var algorithm;\n var iv;\n var dkLen;\n var cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n algorithm = 'AES-128-CBC';\n dkLen = 16;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n algorithm = 'AES-192-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n algorithm = 'AES-256-CBC';\n dkLen = 32;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case '3des':\n algorithm = 'DES-EDE3-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n case 'des':\n algorithm = 'DES-CBC';\n dkLen = 8;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Could not encrypt RSA private key; unsupported ' +\n 'encryption algorithm \"' + options.algorithm + '\".');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // encrypt private key using OpenSSL legacy key derivation\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(pki.privateKeyToAsn1(rsaKey)));\n cipher.finish();\n\n var msg = {\n type: 'RSA PRIVATE KEY',\n procType: {\n version: '4',\n type: 'ENCRYPTED'\n },\n dekInfo: {\n algorithm: algorithm,\n parameters: forge.util.bytesToHex(iv).toUpperCase()\n },\n body: cipher.output.getBytes()\n };\n return forge.pem.encode(msg);\n};\n\n/**\n * Decrypts an RSA private key.\n *\n * @param pem the PEM-formatted EncryptedPrivateKeyInfo to decrypt.\n * @param password the password to use.\n *\n * @return the RSA key on success, null on failure.\n */\npki.decryptRsaPrivateKey = function(pem, password) {\n var rval = null;\n\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY' &&\n msg.type !== 'PRIVATE KEY' &&\n msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM header type ' +\n 'is not \"ENCRYPTED PRIVATE KEY\", \"PRIVATE KEY\", or \"RSA PRIVATE KEY\".');\n error.headerType = error;\n throw error;\n }\n\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n var dkLen;\n var cipherFn;\n switch(msg.dekInfo.algorithm) {\n case 'DES-CBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'DES-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'AES-128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'RC2-40-CBC':\n dkLen = 5;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 40);\n };\n break;\n case 'RC2-64-CBC':\n dkLen = 8;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 64);\n };\n break;\n case 'RC2-128-CBC':\n dkLen = 16;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 128);\n };\n break;\n default:\n var error = new Error('Could not decrypt private key; unsupported ' +\n 'encryption algorithm \"' + msg.dekInfo.algorithm + '\".');\n error.algorithm = msg.dekInfo.algorithm;\n throw error;\n }\n\n // use OpenSSL legacy key derivation\n var iv = forge.util.hexToBytes(msg.dekInfo.parameters);\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(forge.util.createBuffer(msg.body));\n if(cipher.finish()) {\n rval = cipher.output.getBytes();\n } else {\n return rval;\n }\n } else {\n rval = msg.body;\n }\n\n if(msg.type === 'ENCRYPTED PRIVATE KEY') {\n rval = pki.decryptPrivateKeyInfo(asn1.fromDer(rval), password);\n } else {\n // decryption already performed above\n rval = asn1.fromDer(rval);\n }\n\n if(rval !== null) {\n rval = pki.privateKeyFromAsn1(rval);\n }\n\n return rval;\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\npki.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md) {\n var j, l;\n\n if(typeof md === 'undefined' || md === null) {\n if(!('sha1' in forge.md)) {\n throw new Error('\"sha1\" hash algorithm unavailable.');\n }\n md = forge.md.sha1.create();\n }\n\n var u = md.digestLength;\n var v = md.blockLength;\n var result = new forge.util.ByteBuffer();\n\n /* Convert password to Unicode byte buffer + trailing 0-byte. */\n var passBuf = new forge.util.ByteBuffer();\n if(password !== null && password !== undefined) {\n for(l = 0; l < password.length; l++) {\n passBuf.putInt16(password.charCodeAt(l));\n }\n passBuf.putInt16(0);\n }\n\n /* Length of salt and password in BYTES. */\n var p = passBuf.length();\n var s = salt.length();\n\n /* 1. Construct a string, D (the \"diversifier\"), by concatenating\n v copies of ID. */\n var D = new forge.util.ByteBuffer();\n D.fillWithByte(id, v);\n\n /* 2. Concatenate copies of the salt together to create a string S of length\n v * ceil(s / v) bytes (the final copy of the salt may be trunacted\n to create S).\n Note that if the salt is the empty string, then so is S. */\n var Slen = v * Math.ceil(s / v);\n var S = new forge.util.ByteBuffer();\n for(l = 0; l < Slen; l++) {\n S.putByte(salt.at(l % s));\n }\n\n /* 3. Concatenate copies of the password together to create a string P of\n length v * ceil(p / v) bytes (the final copy of the password may be\n truncated to create P).\n Note that if the password is the empty string, then so is P. */\n var Plen = v * Math.ceil(p / v);\n var P = new forge.util.ByteBuffer();\n for(l = 0; l < Plen; l++) {\n P.putByte(passBuf.at(l % p));\n }\n\n /* 4. Set I=S||P to be the concatenation of S and P. */\n var I = S;\n I.putBuffer(P);\n\n /* 5. Set c=ceil(n / u). */\n var c = Math.ceil(n / u);\n\n /* 6. For i=1, 2, ..., c, do the following: */\n for(var i = 1; i <= c; i++) {\n /* a) Set Ai=H^r(D||I). (l.e. the rth hash of D||I, H(H(H(...H(D||I)))) */\n var buf = new forge.util.ByteBuffer();\n buf.putBytes(D.bytes());\n buf.putBytes(I.bytes());\n for(var round = 0; round < iter; round++) {\n md.start();\n md.update(buf.getBytes());\n buf = md.digest();\n }\n\n /* b) Concatenate copies of Ai to create a string B of length v bytes (the\n final copy of Ai may be truncated to create B). */\n var B = new forge.util.ByteBuffer();\n for(l = 0; l < v; l++) {\n B.putByte(buf.at(l % u));\n }\n\n /* c) Treating I as a concatenation I0, I1, ..., Ik-1 of v-byte blocks,\n where k=ceil(s / v) + ceil(p / v), modify I by setting\n Ij=(Ij+B+1) mod 2v for each j. */\n var k = Math.ceil(s / v) + Math.ceil(p / v);\n var Inew = new forge.util.ByteBuffer();\n for(j = 0; j < k; j++) {\n var chunk = new forge.util.ByteBuffer(I.getBytes(v));\n var x = 0x1ff;\n for(l = B.length() - 1; l >= 0; l--) {\n x = x >> 8;\n x += B.at(l) + chunk.at(l);\n chunk.setAt(l, x & 0xff);\n }\n Inew.putBuffer(chunk);\n }\n I = Inew;\n\n /* Add Ai to A. */\n result.putBuffer(buf);\n }\n\n result.truncate(result.length() - n);\n return result;\n};\n\n/**\n * Get new Forge cipher object instance.\n *\n * @param oid the OID (in string notation).\n * @param params the ASN.1 params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipher = function(oid, params, password) {\n switch(oid) {\n case pki.oids['pkcs5PBES2']:\n return pki.pbe.getCipherForPBES2(oid, params, password);\n\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n return pki.pbe.getCipherForPKCS12PBE(oid, params, password);\n\n default:\n var error = new Error('Cannot read encrypted PBE data block. Unsupported OID.');\n error.oid = oid;\n error.supportedOids = [\n 'pkcs5PBES2',\n 'pbeWithSHAAnd3-KeyTripleDES-CBC',\n 'pbewithSHAAnd40BitRC2-CBC'\n ];\n throw error;\n }\n};\n\n/**\n * Get new Forge cipher object instance according to PBES2 params block.\n *\n * The returned cipher instance is already started using the IV\n * from PBES2 parameter block.\n *\n * @param oid the PKCS#5 PBKDF2 OID (in string notation).\n * @param params the ASN.1 PBES2-params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipherForPBES2 = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, PBES2AlgorithmsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // check oids\n oid = asn1.derToOid(capture.kdfOid);\n if(oid !== pki.oids['pkcs5PBKDF2']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported key derivation function OID.');\n error.oid = oid;\n error.supportedOids = ['pkcs5PBKDF2'];\n throw error;\n }\n oid = asn1.derToOid(capture.encOid);\n if(oid !== pki.oids['aes128-CBC'] &&\n oid !== pki.oids['aes192-CBC'] &&\n oid !== pki.oids['aes256-CBC'] &&\n oid !== pki.oids['des-EDE3-CBC'] &&\n oid !== pki.oids['desCBC']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported encryption scheme OID.');\n error.oid = oid;\n error.supportedOids = [\n 'aes128-CBC', 'aes192-CBC', 'aes256-CBC', 'des-EDE3-CBC', 'desCBC'];\n throw error;\n }\n\n // set PBE params\n var salt = capture.kdfSalt;\n var count = forge.util.createBuffer(capture.kdfIterationCount);\n count = count.getInt(count.length() << 3);\n var dkLen;\n var cipherFn;\n switch(pki.oids[oid]) {\n case 'aes128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'des-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'desCBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n\n // decrypt private key using pbe with chosen PRF and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = capture.encIv;\n var cipher = cipherFn(dk);\n cipher.start(iv);\n\n return cipher;\n};\n\n/**\n * Get new Forge cipher object instance for PKCS#12 PBE.\n *\n * The returned cipher instance is already started using the key & IV\n * derived from the provided password and PKCS#12 PBE salt.\n *\n * @param oid The PKCS#12 PBE OID (in string notation).\n * @param params The ASN.1 PKCS#12 PBE-params object.\n * @param password The password to decrypt with.\n *\n * @return the new cipher object instance.\n */\npki.pbe.getCipherForPKCS12PBE = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, pkcs12PbeParamsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n var salt = forge.util.createBuffer(capture.salt);\n var count = forge.util.createBuffer(capture.iterations);\n count = count.getInt(count.length() << 3);\n\n var dkLen, dIvLen, cipherFn;\n switch(oid) {\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n dkLen = 24;\n dIvLen = 8;\n cipherFn = forge.des.startDecrypting;\n break;\n\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n dkLen = 5;\n dIvLen = 8;\n cipherFn = function(key, iv) {\n var cipher = forge.rc2.createDecryptionCipher(key, 40);\n cipher.start(iv, null);\n return cipher;\n };\n break;\n\n default:\n var error = new Error('Cannot read PKCS #12 PBE data block. Unsupported OID.');\n error.oid = oid;\n throw error;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n var key = pki.pbe.generatePkcs12Key(password, salt, 1, count, dkLen, md);\n md.start();\n var iv = pki.pbe.generatePkcs12Key(password, salt, 2, count, dIvLen, md);\n\n return cipherFn(key, iv);\n};\n\n/**\n * OpenSSL's legacy key derivation function.\n *\n * See: http://www.openssl.org/docs/crypto/EVP_BytesToKey.html\n *\n * @param password the password to derive the key from.\n * @param salt the salt to use, null for none.\n * @param dkLen the number of bytes needed for the derived key.\n * @param [options] the options to use:\n * [md] an optional message digest object to use.\n */\npki.pbe.opensslDeriveBytes = function(password, salt, dkLen, md) {\n if(typeof md === 'undefined' || md === null) {\n if(!('md5' in forge.md)) {\n throw new Error('\"md5\" hash algorithm unavailable.');\n }\n md = forge.md.md5.create();\n }\n if(salt === null) {\n salt = '';\n }\n var digests = [hash(md, password + salt)];\n for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {\n digests.push(hash(md, digests[i - 1] + password + salt));\n }\n return digests.join('').substr(0, dkLen);\n};\n\nfunction hash(md, bytes) {\n return md.start().update(bytes).digest().getBytes();\n}\n\nfunction prfOidToMessageDigest(prfOid) {\n // get PRF algorithm, default to SHA-1\n var prfAlgorithm;\n if(!prfOid) {\n prfAlgorithm = 'hmacWithSHA1';\n } else {\n prfAlgorithm = pki.oids[asn1.derToOid(prfOid)];\n if(!prfAlgorithm) {\n var error = new Error('Unsupported PRF OID.');\n error.oid = prfOid;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n }\n return prfAlgorithmToMessageDigest(prfAlgorithm);\n}\n\nfunction prfAlgorithmToMessageDigest(prfAlgorithm) {\n var factory = forge.md;\n switch(prfAlgorithm) {\n case 'hmacWithSHA224':\n factory = forge.md.sha512;\n case 'hmacWithSHA1':\n case 'hmacWithSHA256':\n case 'hmacWithSHA384':\n case 'hmacWithSHA512':\n prfAlgorithm = prfAlgorithm.substr(8).toLowerCase();\n break;\n default:\n var error = new Error('Unsupported PRF algorithm.');\n error.algorithm = prfAlgorithm;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n if(!factory || !(prfAlgorithm in factory)) {\n throw new Error('Unknown hash algorithm: ' + prfAlgorithm);\n }\n return factory[prfAlgorithm].create();\n}\n\nfunction createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm) {\n var params = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ]);\n // when PRF algorithm is not SHA-1 default, add key length and PRF algorithm\n if(prfAlgorithm !== 'hmacWithSHA1') {\n params.value.push(\n // key length\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(dkLen.toString(16))),\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids[prfAlgorithm]).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n return params;\n}\n","/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = Buffer.from(p, 'binary');\n s = Buffer.from(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n }\n /* 5. Output the derived key DK. */\n return dk;\n }\n\n // async version\n var i = 1, j;\n function outer() {\n if(i > len) {\n // done\n return callback(null, dk);\n }\n\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n j = 2;\n inner();\n }\n\n function inner() {\n if(j <= c) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n ++j;\n return forge.util.setImmediate(inner);\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n\n ++i;\n outer();\n }\n\n outer();\n};\n","/**\n * Javascript implementation of basic PEM (Privacy Enhanced Mail) algorithms.\n *\n * See: RFC 1421.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n *\n * A Forge PEM object has the following fields:\n *\n * type: identifies the type of message (eg: \"RSA PRIVATE KEY\").\n *\n * procType: identifies the type of processing performed on the message,\n * it has two subfields: version and type, eg: 4,ENCRYPTED.\n *\n * contentDomain: identifies the type of content in the message, typically\n * only uses the value: \"RFC822\".\n *\n * dekInfo: identifies the message encryption algorithm and mode and includes\n * any parameters for the algorithm, it has two subfields: algorithm and\n * parameters, eg: DES-CBC,F8143EDE5960C597.\n *\n * headers: contains all other PEM encapsulated headers -- where order is\n * significant (for pairing data like recipient ID + key info).\n *\n * body: the binary-encoded body.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n// shortcut for pem API\nvar pem = module.exports = forge.pem = forge.pem || {};\n\n/**\n * Encodes (serializes) the given PEM object.\n *\n * @param msg the PEM message object to encode.\n * @param options the options to use:\n * maxline the maximum characters per line for the body, (default: 64).\n *\n * @return the PEM-formatted string.\n */\npem.encode = function(msg, options) {\n options = options || {};\n var rval = '-----BEGIN ' + msg.type + '-----\\r\\n';\n\n // encode special headers\n var header;\n if(msg.procType) {\n header = {\n name: 'Proc-Type',\n values: [String(msg.procType.version), msg.procType.type]\n };\n rval += foldHeader(header);\n }\n if(msg.contentDomain) {\n header = {name: 'Content-Domain', values: [msg.contentDomain]};\n rval += foldHeader(header);\n }\n if(msg.dekInfo) {\n header = {name: 'DEK-Info', values: [msg.dekInfo.algorithm]};\n if(msg.dekInfo.parameters) {\n header.values.push(msg.dekInfo.parameters);\n }\n rval += foldHeader(header);\n }\n\n if(msg.headers) {\n // encode all other headers\n for(var i = 0; i < msg.headers.length; ++i) {\n rval += foldHeader(msg.headers[i]);\n }\n }\n\n // terminate header\n if(msg.procType) {\n rval += '\\r\\n';\n }\n\n // add body\n rval += forge.util.encode64(msg.body, options.maxline || 64) + '\\r\\n';\n\n rval += '-----END ' + msg.type + '-----\\r\\n';\n return rval;\n};\n\n/**\n * Decodes (deserializes) all PEM messages found in the given string.\n *\n * @param str the PEM-formatted string to decode.\n *\n * @return the PEM message objects in an array.\n */\npem.decode = function(str) {\n var rval = [];\n\n // split string into PEM messages (be lenient w/EOF on BEGIN line)\n var rMessage = /\\s*-----BEGIN ([A-Z0-9- ]+)-----\\r?\\n?([\\x21-\\x7e\\s]+?(?:\\r?\\n\\r?\\n))?([:A-Za-z0-9+\\/=\\s]+?)-----END \\1-----/g;\n var rHeader = /([\\x21-\\x7e]+):\\s*([\\x21-\\x7e\\s^:]+)/;\n var rCRLF = /\\r?\\n/;\n var match;\n while(true) {\n match = rMessage.exec(str);\n if(!match) {\n break;\n }\n\n // accept \"NEW CERTIFICATE REQUEST\" as \"CERTIFICATE REQUEST\"\n // https://datatracker.ietf.org/doc/html/rfc7468#section-7\n var type = match[1];\n if(type === 'NEW CERTIFICATE REQUEST') {\n type = 'CERTIFICATE REQUEST';\n }\n\n var msg = {\n type: type,\n procType: null,\n contentDomain: null,\n dekInfo: null,\n headers: [],\n body: forge.util.decode64(match[3])\n };\n rval.push(msg);\n\n // no headers\n if(!match[2]) {\n continue;\n }\n\n // parse headers\n var lines = match[2].split(rCRLF);\n var li = 0;\n while(match && li < lines.length) {\n // get line, trim any rhs whitespace\n var line = lines[li].replace(/\\s+$/, '');\n\n // RFC2822 unfold any following folded lines\n for(var nl = li + 1; nl < lines.length; ++nl) {\n var next = lines[nl];\n if(!/\\s/.test(next[0])) {\n break;\n }\n line += next;\n li = nl;\n }\n\n // parse header\n match = line.match(rHeader);\n if(match) {\n var header = {name: match[1], values: []};\n var values = match[2].split(',');\n for(var vi = 0; vi < values.length; ++vi) {\n header.values.push(ltrim(values[vi]));\n }\n\n // Proc-Type must be the first header\n if(!msg.procType) {\n if(header.name !== 'Proc-Type') {\n throw new Error('Invalid PEM formatted message. The first ' +\n 'encapsulated header must be \"Proc-Type\".');\n } else if(header.values.length !== 2) {\n throw new Error('Invalid PEM formatted message. The \"Proc-Type\" ' +\n 'header must have two subfields.');\n }\n msg.procType = {version: values[0], type: values[1]};\n } else if(!msg.contentDomain && header.name === 'Content-Domain') {\n // special-case Content-Domain\n msg.contentDomain = values[0] || '';\n } else if(!msg.dekInfo && header.name === 'DEK-Info') {\n // special-case DEK-Info\n if(header.values.length === 0) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must have at least one subfield.');\n }\n msg.dekInfo = {algorithm: values[0], parameters: values[1] || null};\n } else {\n msg.headers.push(header);\n }\n }\n\n ++li;\n }\n\n if(msg.procType === 'ENCRYPTED' && !msg.dekInfo) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must be present if \"Proc-Type\" is \"ENCRYPTED\".');\n }\n }\n\n if(rval.length === 0) {\n throw new Error('Invalid PEM formatted message.');\n }\n\n return rval;\n};\n\nfunction foldHeader(header) {\n var rval = header.name + ': ';\n\n // ensure values with CRLF are folded\n var values = [];\n var insertSpace = function(match, $1) {\n return ' ' + $1;\n };\n for(var i = 0; i < header.values.length; ++i) {\n values.push(header.values[i].replace(/^(\\S+\\r\\n)/, insertSpace));\n }\n rval += values.join(',') + '\\r\\n';\n\n // do folding\n var length = 0;\n var candidate = -1;\n for(var i = 0; i < rval.length; ++i, ++length) {\n if(length > 65 && candidate !== -1) {\n var insert = rval[candidate];\n if(insert === ',') {\n ++candidate;\n rval = rval.substr(0, candidate) + '\\r\\n ' + rval.substr(candidate);\n } else {\n rval = rval.substr(0, candidate) +\n '\\r\\n' + insert + rval.substr(candidate + 1);\n }\n length = (i - candidate - 1);\n candidate = -1;\n ++i;\n } else if(rval[i] === ' ' || rval[i] === '\\t' || rval[i] === ',') {\n candidate = i;\n }\n }\n\n return rval;\n}\n\nfunction ltrim(str) {\n return str.replace(/^\\s+/, '');\n}\n","/**\n * Partial implementation of PKCS#1 v2.2: RSA-OEAP\n *\n * Modified but based on the following MIT and BSD licensed code:\n *\n * https://github.com/kjur/jsjws/blob/master/rsa.js:\n *\n * The 'jsjws'(JSON Web Signature JavaScript Library) License\n *\n * Copyright (c) 2012 Kenji Urushima\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * http://webrsa.cvs.sourceforge.net/viewvc/webrsa/Client/RSAES-OAEP.js?content-type=text%2Fplain:\n *\n * RSAES-OAEP.js\n * $Id: RSAES-OAEP.js,v 1.1.1.1 2003/03/19 15:37:20 ellispritchard Exp $\n * JavaScript Implementation of PKCS #1 v2.1 RSA CRYPTOGRAPHY STANDARD (RSA Laboratories, June 14, 2002)\n * Copyright (C) Ellis Pritchard, Guardian Unlimited 2003.\n * Contact: ellis@nukinetics.com\n * Distributed under the BSD License.\n *\n * Official documentation: http://www.rsa.com/rsalabs/node.asp?id=2125\n *\n * @author Evan Jones (http://evanjones.ca/)\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./sha1');\n\n// shortcut for PKCS#1 API\nvar pkcs1 = module.exports = forge.pkcs1 = forge.pkcs1 || {};\n\n/**\n * Encode the given RSAES-OAEP message (M) using key, with optional label (L)\n * and seed.\n *\n * This method does not perform RSA encryption, it only encodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param message the message to encode.\n * @param options the options to use:\n * label an optional label to use.\n * seed the seed to use.\n * md the message digest object to use, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the encoded message bytes.\n */\npkcs1.encode_rsa_oaep = function(key, message, options) {\n // parse arguments\n var label;\n var seed;\n var md;\n var mgf1Md;\n // legacy args (label, seed, md)\n if(typeof options === 'string') {\n label = options;\n seed = arguments[3] || undefined;\n md = arguments[4] || undefined;\n } else if(options) {\n label = options.label || undefined;\n seed = options.seed || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // default OAEP to SHA-1 message digest\n if(!md) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n // compute length in bytes and check output\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n var maxLength = keyLength - 2 * md.digestLength - 2;\n if(message.length > maxLength) {\n var error = new Error('RSAES-OAEP input message length is too long.');\n error.length = message.length;\n error.maxLength = maxLength;\n throw error;\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest();\n\n var PS = '';\n var PS_length = maxLength - message.length;\n for(var i = 0; i < PS_length; i++) {\n PS += '\\x00';\n }\n\n var DB = lHash.getBytes() + PS + '\\x01' + message;\n\n if(!seed) {\n seed = forge.random.getBytes(md.digestLength);\n } else if(seed.length !== md.digestLength) {\n var error = new Error('Invalid RSAES-OAEP seed. The seed length must ' +\n 'match the digest length.');\n error.seedLength = seed.length;\n error.digestLength = md.digestLength;\n throw error;\n }\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var maskedDB = forge.util.xorBytes(DB, dbMask, DB.length);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var maskedSeed = forge.util.xorBytes(seed, seedMask, seed.length);\n\n // return encoded message\n return '\\x00' + maskedSeed + maskedDB;\n};\n\n/**\n * Decode the given RSAES-OAEP encoded message (EM) using key, with optional\n * label (L).\n *\n * This method does not perform RSA decryption, it only decodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param em the encoded message to decode.\n * @param options the options to use:\n * label an optional label to use.\n * md the message digest object to use for OAEP, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the decoded message bytes.\n */\npkcs1.decode_rsa_oaep = function(key, em, options) {\n // parse args\n var label;\n var md;\n var mgf1Md;\n // legacy args\n if(typeof options === 'string') {\n label = options;\n md = arguments[3] || undefined;\n } else if(options) {\n label = options.label || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // compute length in bytes\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n\n if(em.length !== keyLength) {\n var error = new Error('RSAES-OAEP encoded message length is invalid.');\n error.length = em.length;\n error.expectedLength = keyLength;\n throw error;\n }\n\n // default OAEP to SHA-1 message digest\n if(md === undefined) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n if(keyLength < 2 * md.digestLength + 2) {\n throw new Error('RSAES-OAEP key is too short for the hash function.');\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest().getBytes();\n\n // split the message into its parts\n var y = em.charAt(0);\n var maskedSeed = em.substring(1, md.digestLength + 1);\n var maskedDB = em.substring(1 + md.digestLength);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var seed = forge.util.xorBytes(maskedSeed, seedMask, maskedSeed.length);\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var db = forge.util.xorBytes(maskedDB, dbMask, maskedDB.length);\n\n var lHashPrime = db.substring(0, md.digestLength);\n\n // constant time check that all values match what is expected\n var error = (y !== '\\x00');\n\n // constant time check lHash vs lHashPrime\n for(var i = 0; i < md.digestLength; ++i) {\n error |= (lHash.charAt(i) !== lHashPrime.charAt(i));\n }\n\n // \"constant time\" find the 0x1 byte separating the padding (zeros) from the\n // message\n // TODO: It must be possible to do this in a better/smarter way?\n var in_ps = 1;\n var index = md.digestLength;\n for(var j = md.digestLength; j < db.length; j++) {\n var code = db.charCodeAt(j);\n\n var is_0 = (code & 0x1) ^ 0x1;\n\n // non-zero if not 0 or 1 in the ps section\n var error_mask = in_ps ? 0xfffe : 0x0000;\n error |= (code & error_mask);\n\n // latch in_ps to zero after we find 0x1\n in_ps = in_ps & is_0;\n index += in_ps;\n }\n\n if(error || db.charCodeAt(index) !== 0x1) {\n throw new Error('Invalid RSAES-OAEP padding.');\n }\n\n return db.substring(index + 1);\n};\n\nfunction rsa_mgf1(seed, maskLength, hash) {\n // default to SHA-1 message digest\n if(!hash) {\n hash = forge.md.sha1.create();\n }\n var t = '';\n var count = Math.ceil(maskLength / hash.digestLength);\n for(var i = 0; i < count; ++i) {\n var c = String.fromCharCode(\n (i >> 24) & 0xFF, (i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);\n hash.start();\n hash.update(seed + c);\n t += hash.digest().getBytes();\n }\n return t.substring(0, maskLength);\n}\n","/**\n * Javascript implementation of PKCS#12.\n *\n * @author Dave Longley\n * @author Stefan Siegl \n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * The ASN.1 representation of PKCS#12 is as follows\n * (see ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12-tc1.pdf for details)\n *\n * PFX ::= SEQUENCE {\n * version INTEGER {v3(3)}(v3,...),\n * authSafe ContentInfo,\n * macData MacData OPTIONAL\n * }\n *\n * MacData ::= SEQUENCE {\n * mac DigestInfo,\n * macSalt OCTET STRING,\n * iterations INTEGER DEFAULT 1\n * }\n * Note: The iterations default is for historical reasons and its use is\n * deprecated. A higher value, like 1024, is recommended.\n *\n * DigestInfo is defined in PKCS#7 as follows:\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n *\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of SHA1 there is none.\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * Digest ::= OCTET STRING\n *\n *\n * ContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL\n * }\n *\n * ContentType ::= OBJECT IDENTIFIER\n *\n * AuthenticatedSafe ::= SEQUENCE OF ContentInfo\n * -- Data if unencrypted\n * -- EncryptedData if password-encrypted\n * -- EnvelopedData if public key-encrypted\n *\n *\n * SafeContents ::= SEQUENCE OF SafeBag\n *\n * SafeBag ::= SEQUENCE {\n * bagId BAG-TYPE.&id ({PKCS12BagSet})\n * bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),\n * bagAttributes SET OF PKCS12Attribute OPTIONAL\n * }\n *\n * PKCS12Attribute ::= SEQUENCE {\n * attrId ATTRIBUTE.&id ({PKCS12AttrSet}),\n * attrValues SET OF ATTRIBUTE.&Type ({PKCS12AttrSet}{@attrId})\n * } -- This type is compatible with the X.500 type 'Attribute'\n *\n * PKCS12AttrSet ATTRIBUTE ::= {\n * friendlyName | -- from PKCS #9\n * localKeyId, -- from PKCS #9\n * ... -- Other attributes are allowed\n * }\n *\n * CertBag ::= SEQUENCE {\n * certId BAG-TYPE.&id ({CertTypes}),\n * certValue [0] EXPLICIT BAG-TYPE.&Type ({CertTypes}{@certId})\n * }\n *\n * x509Certificate BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {certTypes 1}}\n * -- DER-encoded X.509 certificate stored in OCTET STRING\n *\n * sdsiCertificate BAG-TYPE ::= {IA5String IDENTIFIED BY {certTypes 2}}\n * -- Base64-encoded SDSI certificate stored in IA5String\n *\n * CertTypes BAG-TYPE ::= {\n * x509Certificate |\n * sdsiCertificate,\n * ... -- For future extensions\n * }\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./hmac');\nrequire('./oids');\nrequire('./pkcs7asn1');\nrequire('./pbe');\nrequire('./random');\nrequire('./rsa');\nrequire('./sha1');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for asn.1 & PKI API\nvar asn1 = forge.asn1;\nvar pki = forge.pki;\n\n// shortcut for PKCS#12 API\nvar p12 = module.exports = forge.pkcs12 = forge.pkcs12 || {};\n\nvar contentInfoValidator = {\n name: 'ContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // a ContentInfo\n constructed: true,\n value: [{\n name: 'ContentInfo.contentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'ContentInfo.content',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n constructed: true,\n captureAsn1: 'content'\n }]\n};\n\nvar pfxValidator = {\n name: 'PFX',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PFX.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n },\n contentInfoValidator, {\n name: 'PFX.macData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'mac',\n value: [{\n name: 'PFX.macData.mac',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // DigestInfo\n constructed: true,\n value: [{\n name: 'PFX.macData.mac.digestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // DigestAlgorithmIdentifier\n constructed: true,\n value: [{\n name: 'PFX.macData.mac.digestAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'macAlgorithm'\n }, {\n name: 'PFX.macData.mac.digestAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n captureAsn1: 'macAlgorithmParameters'\n }]\n }, {\n name: 'PFX.macData.mac.digest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'macDigest'\n }]\n }, {\n name: 'PFX.macData.macSalt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'macSalt'\n }, {\n name: 'PFX.macData.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'macIterations'\n }]\n }]\n};\n\nvar safeBagValidator = {\n name: 'SafeBag',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SafeBag.bagId',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'bagId'\n }, {\n name: 'SafeBag.bagValue',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n constructed: true,\n captureAsn1: 'bagValue'\n }, {\n name: 'SafeBag.bagAttributes',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n optional: true,\n capture: 'bagAttributes'\n }]\n};\n\nvar attributeValidator = {\n name: 'Attribute',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Attribute.attrId',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'oid'\n }, {\n name: 'Attribute.attrValues',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n capture: 'values'\n }]\n};\n\nvar certBagValidator = {\n name: 'CertBag',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'CertBag.certId',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certId'\n }, {\n name: 'CertBag.certValue',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n constructed: true,\n /* So far we only support X.509 certificates (which are wrapped in\n an OCTET STRING, hence hard code that here). */\n value: [{\n name: 'CertBag.certValue[0]',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.OCTETSTRING,\n constructed: false,\n capture: 'cert'\n }]\n }]\n};\n\n/**\n * Search SafeContents structure for bags with matching attributes.\n *\n * The search can optionally be narrowed by a certain bag type.\n *\n * @param safeContents the SafeContents structure to search in.\n * @param attrName the name of the attribute to compare against.\n * @param attrValue the attribute value to search for.\n * @param [bagType] bag type to narrow search by.\n *\n * @return an array of matching bags.\n */\nfunction _getBagsByAttribute(safeContents, attrName, attrValue, bagType) {\n var result = [];\n\n for(var i = 0; i < safeContents.length; i++) {\n for(var j = 0; j < safeContents[i].safeBags.length; j++) {\n var bag = safeContents[i].safeBags[j];\n if(bagType !== undefined && bag.type !== bagType) {\n continue;\n }\n // only filter by bag type, no attribute specified\n if(attrName === null) {\n result.push(bag);\n continue;\n }\n if(bag.attributes[attrName] !== undefined &&\n bag.attributes[attrName].indexOf(attrValue) >= 0) {\n result.push(bag);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Converts a PKCS#12 PFX in ASN.1 notation into a PFX object.\n *\n * @param obj The PKCS#12 PFX in ASN.1 notation.\n * @param strict true to use strict DER decoding, false not to (default: true).\n * @param {String} password Password to decrypt with (optional).\n *\n * @return PKCS#12 PFX object.\n */\np12.pkcs12FromAsn1 = function(obj, strict, password) {\n // handle args\n if(typeof strict === 'string') {\n password = strict;\n strict = true;\n } else if(strict === undefined) {\n strict = true;\n }\n\n // validate PFX and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, pfxValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#12 PFX. ' +\n 'ASN.1 object is not an PKCS#12 PFX.');\n error.errors = error;\n throw error;\n }\n\n var pfx = {\n version: capture.version.charCodeAt(0),\n safeContents: [],\n\n /**\n * Gets bags with matching attributes.\n *\n * @param filter the attributes to filter by:\n * [localKeyId] the localKeyId to search for.\n * [localKeyIdHex] the localKeyId in hex to search for.\n * [friendlyName] the friendly name to search for.\n * [bagType] bag type to narrow each attribute search by.\n *\n * @return a map of attribute type to an array of matching bags or, if no\n * attribute was given but a bag type, the map key will be the\n * bag type.\n */\n getBags: function(filter) {\n var rval = {};\n\n var localKeyId;\n if('localKeyId' in filter) {\n localKeyId = filter.localKeyId;\n } else if('localKeyIdHex' in filter) {\n localKeyId = forge.util.hexToBytes(filter.localKeyIdHex);\n }\n\n // filter on bagType only\n if(localKeyId === undefined && !('friendlyName' in filter) &&\n 'bagType' in filter) {\n rval[filter.bagType] = _getBagsByAttribute(\n pfx.safeContents, null, null, filter.bagType);\n }\n\n if(localKeyId !== undefined) {\n rval.localKeyId = _getBagsByAttribute(\n pfx.safeContents, 'localKeyId',\n localKeyId, filter.bagType);\n }\n if('friendlyName' in filter) {\n rval.friendlyName = _getBagsByAttribute(\n pfx.safeContents, 'friendlyName',\n filter.friendlyName, filter.bagType);\n }\n\n return rval;\n },\n\n /**\n * DEPRECATED: use getBags() instead.\n *\n * Get bags with matching friendlyName attribute.\n *\n * @param friendlyName the friendly name to search for.\n * @param [bagType] bag type to narrow search by.\n *\n * @return an array of bags with matching friendlyName attribute.\n */\n getBagsByFriendlyName: function(friendlyName, bagType) {\n return _getBagsByAttribute(\n pfx.safeContents, 'friendlyName', friendlyName, bagType);\n },\n\n /**\n * DEPRECATED: use getBags() instead.\n *\n * Get bags with matching localKeyId attribute.\n *\n * @param localKeyId the localKeyId to search for.\n * @param [bagType] bag type to narrow search by.\n *\n * @return an array of bags with matching localKeyId attribute.\n */\n getBagsByLocalKeyId: function(localKeyId, bagType) {\n return _getBagsByAttribute(\n pfx.safeContents, 'localKeyId', localKeyId, bagType);\n }\n };\n\n if(capture.version.charCodeAt(0) !== 3) {\n var error = new Error('PKCS#12 PFX of version other than 3 not supported.');\n error.version = capture.version.charCodeAt(0);\n throw error;\n }\n\n if(asn1.derToOid(capture.contentType) !== pki.oids.data) {\n var error = new Error('Only PKCS#12 PFX in password integrity mode supported.');\n error.oid = asn1.derToOid(capture.contentType);\n throw error;\n }\n\n var data = capture.content.value[0];\n if(data.tagClass !== asn1.Class.UNIVERSAL ||\n data.type !== asn1.Type.OCTETSTRING) {\n throw new Error('PKCS#12 authSafe content data is not an OCTET STRING.');\n }\n data = _decodePkcs7Data(data);\n\n // check for MAC\n if(capture.mac) {\n var md = null;\n var macKeyBytes = 0;\n var macAlgorithm = asn1.derToOid(capture.macAlgorithm);\n switch(macAlgorithm) {\n case pki.oids.sha1:\n md = forge.md.sha1.create();\n macKeyBytes = 20;\n break;\n case pki.oids.sha256:\n md = forge.md.sha256.create();\n macKeyBytes = 32;\n break;\n case pki.oids.sha384:\n md = forge.md.sha384.create();\n macKeyBytes = 48;\n break;\n case pki.oids.sha512:\n md = forge.md.sha512.create();\n macKeyBytes = 64;\n break;\n case pki.oids.md5:\n md = forge.md.md5.create();\n macKeyBytes = 16;\n break;\n }\n if(md === null) {\n throw new Error('PKCS#12 uses unsupported MAC algorithm: ' + macAlgorithm);\n }\n\n // verify MAC (iterations default to 1)\n var macSalt = new forge.util.ByteBuffer(capture.macSalt);\n var macIterations = (('macIterations' in capture) ?\n parseInt(forge.util.bytesToHex(capture.macIterations), 16) : 1);\n var macKey = p12.generateKey(\n password, macSalt, 3, macIterations, macKeyBytes, md);\n var mac = forge.hmac.create();\n mac.start(md, macKey);\n mac.update(data.value);\n var macValue = mac.getMac();\n if(macValue.getBytes() !== capture.macDigest) {\n throw new Error('PKCS#12 MAC could not be verified. Invalid password?');\n }\n }\n\n _decodeAuthenticatedSafe(pfx, data.value, strict, password);\n return pfx;\n};\n\n/**\n * Decodes PKCS#7 Data. PKCS#7 (RFC 2315) defines \"Data\" as an OCTET STRING,\n * but it is sometimes an OCTET STRING that is composed/constructed of chunks,\n * each its own OCTET STRING. This is BER-encoding vs. DER-encoding. This\n * function transforms this corner-case into the usual simple,\n * non-composed/constructed OCTET STRING.\n *\n * This function may be moved to ASN.1 at some point to better deal with\n * more BER-encoding issues, should they arise.\n *\n * @param data the ASN.1 Data object to transform.\n */\nfunction _decodePkcs7Data(data) {\n // handle special case of \"chunked\" data content: an octet string composed\n // of other octet strings\n if(data.composed || data.constructed) {\n var value = forge.util.createBuffer();\n for(var i = 0; i < data.value.length; ++i) {\n value.putBytes(data.value[i].value);\n }\n data.composed = data.constructed = false;\n data.value = value.getBytes();\n }\n return data;\n}\n\n/**\n * Decode PKCS#12 AuthenticatedSafe (BER encoded) into PFX object.\n *\n * The AuthenticatedSafe is a BER-encoded SEQUENCE OF ContentInfo.\n *\n * @param pfx The PKCS#12 PFX object to fill.\n * @param {String} authSafe BER-encoded AuthenticatedSafe.\n * @param strict true to use strict DER decoding, false not to.\n * @param {String} password Password to decrypt with (optional).\n */\nfunction _decodeAuthenticatedSafe(pfx, authSafe, strict, password) {\n authSafe = asn1.fromDer(authSafe, strict); /* actually it's BER encoded */\n\n if(authSafe.tagClass !== asn1.Class.UNIVERSAL ||\n authSafe.type !== asn1.Type.SEQUENCE ||\n authSafe.constructed !== true) {\n throw new Error('PKCS#12 AuthenticatedSafe expected to be a ' +\n 'SEQUENCE OF ContentInfo');\n }\n\n for(var i = 0; i < authSafe.value.length; i++) {\n var contentInfo = authSafe.value[i];\n\n // validate contentInfo and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(contentInfo, contentInfoValidator, capture, errors)) {\n var error = new Error('Cannot read ContentInfo.');\n error.errors = errors;\n throw error;\n }\n\n var obj = {\n encrypted: false\n };\n var safeContents = null;\n var data = capture.content.value[0];\n switch(asn1.derToOid(capture.contentType)) {\n case pki.oids.data:\n if(data.tagClass !== asn1.Class.UNIVERSAL ||\n data.type !== asn1.Type.OCTETSTRING) {\n throw new Error('PKCS#12 SafeContents Data is not an OCTET STRING.');\n }\n safeContents = _decodePkcs7Data(data).value;\n break;\n case pki.oids.encryptedData:\n safeContents = _decryptSafeContents(data, password);\n obj.encrypted = true;\n break;\n default:\n var error = new Error('Unsupported PKCS#12 contentType.');\n error.contentType = asn1.derToOid(capture.contentType);\n throw error;\n }\n\n obj.safeBags = _decodeSafeContents(safeContents, strict, password);\n pfx.safeContents.push(obj);\n }\n}\n\n/**\n * Decrypt PKCS#7 EncryptedData structure.\n *\n * @param data ASN.1 encoded EncryptedContentInfo object.\n * @param password The user-provided password.\n *\n * @return The decrypted SafeContents (ASN.1 object).\n */\nfunction _decryptSafeContents(data, password) {\n var capture = {};\n var errors = [];\n if(!asn1.validate(\n data, forge.pkcs7.asn1.encryptedDataValidator, capture, errors)) {\n var error = new Error('Cannot read EncryptedContentInfo.');\n error.errors = errors;\n throw error;\n }\n\n var oid = asn1.derToOid(capture.contentType);\n if(oid !== pki.oids.data) {\n var error = new Error(\n 'PKCS#12 EncryptedContentInfo ContentType is not Data.');\n error.oid = oid;\n throw error;\n }\n\n // get cipher\n oid = asn1.derToOid(capture.encAlgorithm);\n var cipher = pki.pbe.getCipher(oid, capture.encParameter, password);\n\n // get encrypted data\n var encryptedContentAsn1 = _decodePkcs7Data(capture.encryptedContentAsn1);\n var encrypted = forge.util.createBuffer(encryptedContentAsn1.value);\n\n cipher.update(encrypted);\n if(!cipher.finish()) {\n throw new Error('Failed to decrypt PKCS#12 SafeContents.');\n }\n\n return cipher.output.getBytes();\n}\n\n/**\n * Decode PKCS#12 SafeContents (BER-encoded) into array of Bag objects.\n *\n * The safeContents is a BER-encoded SEQUENCE OF SafeBag.\n *\n * @param {String} safeContents BER-encoded safeContents.\n * @param strict true to use strict DER decoding, false not to.\n * @param {String} password Password to decrypt with (optional).\n *\n * @return {Array} Array of Bag objects.\n */\nfunction _decodeSafeContents(safeContents, strict, password) {\n // if strict and no safe contents, return empty safes\n if(!strict && safeContents.length === 0) {\n return [];\n }\n\n // actually it's BER-encoded\n safeContents = asn1.fromDer(safeContents, strict);\n\n if(safeContents.tagClass !== asn1.Class.UNIVERSAL ||\n safeContents.type !== asn1.Type.SEQUENCE ||\n safeContents.constructed !== true) {\n throw new Error(\n 'PKCS#12 SafeContents expected to be a SEQUENCE OF SafeBag.');\n }\n\n var res = [];\n for(var i = 0; i < safeContents.value.length; i++) {\n var safeBag = safeContents.value[i];\n\n // validate SafeBag and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(safeBag, safeBagValidator, capture, errors)) {\n var error = new Error('Cannot read SafeBag.');\n error.errors = errors;\n throw error;\n }\n\n /* Create bag object and push to result array. */\n var bag = {\n type: asn1.derToOid(capture.bagId),\n attributes: _decodeBagAttributes(capture.bagAttributes)\n };\n res.push(bag);\n\n var validator, decoder;\n var bagAsn1 = capture.bagValue.value[0];\n switch(bag.type) {\n case pki.oids.pkcs8ShroudedKeyBag:\n /* bagAsn1 has a EncryptedPrivateKeyInfo, which we need to decrypt.\n Afterwards we can handle it like a keyBag,\n which is a PrivateKeyInfo. */\n bagAsn1 = pki.decryptPrivateKeyInfo(bagAsn1, password);\n if(bagAsn1 === null) {\n throw new Error(\n 'Unable to decrypt PKCS#8 ShroudedKeyBag, wrong password?');\n }\n\n /* fall through */\n case pki.oids.keyBag:\n /* A PKCS#12 keyBag is a simple PrivateKeyInfo as understood by our\n PKI module, hence we don't have to do validation/capturing here,\n just pass what we already got. */\n try {\n bag.key = pki.privateKeyFromAsn1(bagAsn1);\n } catch(e) {\n // ignore unknown key type, pass asn1 value\n bag.key = null;\n bag.asn1 = bagAsn1;\n }\n continue; /* Nothing more to do. */\n\n case pki.oids.certBag:\n /* A PKCS#12 certBag can wrap both X.509 and sdsi certificates.\n Therefore put the SafeBag content through another validator to\n capture the fields. Afterwards check & store the results. */\n validator = certBagValidator;\n decoder = function() {\n if(asn1.derToOid(capture.certId) !== pki.oids.x509Certificate) {\n var error = new Error(\n 'Unsupported certificate type, only X.509 supported.');\n error.oid = asn1.derToOid(capture.certId);\n throw error;\n }\n\n // true=produce cert hash\n var certAsn1 = asn1.fromDer(capture.cert, strict);\n try {\n bag.cert = pki.certificateFromAsn1(certAsn1, true);\n } catch(e) {\n // ignore unknown cert type, pass asn1 value\n bag.cert = null;\n bag.asn1 = certAsn1;\n }\n };\n break;\n\n default:\n var error = new Error('Unsupported PKCS#12 SafeBag type.');\n error.oid = bag.type;\n throw error;\n }\n\n /* Validate SafeBag value (i.e. CertBag, etc.) and capture data if needed. */\n if(validator !== undefined &&\n !asn1.validate(bagAsn1, validator, capture, errors)) {\n var error = new Error('Cannot read PKCS#12 ' + validator.name);\n error.errors = errors;\n throw error;\n }\n\n /* Call decoder function from above to store the results. */\n decoder();\n }\n\n return res;\n}\n\n/**\n * Decode PKCS#12 SET OF PKCS12Attribute into JavaScript object.\n *\n * @param attributes SET OF PKCS12Attribute (ASN.1 object).\n *\n * @return the decoded attributes.\n */\nfunction _decodeBagAttributes(attributes) {\n var decodedAttrs = {};\n\n if(attributes !== undefined) {\n for(var i = 0; i < attributes.length; ++i) {\n var capture = {};\n var errors = [];\n if(!asn1.validate(attributes[i], attributeValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#12 BagAttribute.');\n error.errors = errors;\n throw error;\n }\n\n var oid = asn1.derToOid(capture.oid);\n if(pki.oids[oid] === undefined) {\n // unsupported attribute type, ignore.\n continue;\n }\n\n decodedAttrs[pki.oids[oid]] = [];\n for(var j = 0; j < capture.values.length; ++j) {\n decodedAttrs[pki.oids[oid]].push(capture.values[j].value);\n }\n }\n }\n\n return decodedAttrs;\n}\n\n/**\n * Wraps a private key and certificate in a PKCS#12 PFX wrapper. If a\n * password is provided then the private key will be encrypted.\n *\n * An entire certificate chain may also be included. To do this, pass\n * an array for the \"cert\" parameter where the first certificate is\n * the one that is paired with the private key and each subsequent one\n * verifies the previous one. The certificates may be in PEM format or\n * have been already parsed by Forge.\n *\n * @todo implement password-based-encryption for the whole package\n *\n * @param key the private key.\n * @param cert the certificate (may be an array of certificates in order\n * to specify a certificate chain).\n * @param password the password to use, null for none.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * useMac true to include a MAC, false not to, defaults to true.\n * localKeyId the local key ID to use, in hex.\n * friendlyName the friendly name to use.\n * generateLocalKeyId true to generate a random local key ID,\n * false not to, defaults to true.\n *\n * @return the PKCS#12 PFX ASN.1 object.\n */\np12.toPkcs12Asn1 = function(key, cert, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || options.encAlgorithm || 'aes128';\n if(!('useMac' in options)) {\n options.useMac = true;\n }\n if(!('localKeyId' in options)) {\n options.localKeyId = null;\n }\n if(!('generateLocalKeyId' in options)) {\n options.generateLocalKeyId = true;\n }\n\n var localKeyId = options.localKeyId;\n var bagAttrs;\n if(localKeyId !== null) {\n localKeyId = forge.util.hexToBytes(localKeyId);\n } else if(options.generateLocalKeyId) {\n // use SHA-1 of paired cert, if available\n if(cert) {\n var pairedCert = forge.util.isArray(cert) ? cert[0] : cert;\n if(typeof pairedCert === 'string') {\n pairedCert = pki.certificateFromPem(pairedCert);\n }\n var sha1 = forge.md.sha1.create();\n sha1.update(asn1.toDer(pki.certificateToAsn1(pairedCert)).getBytes());\n localKeyId = sha1.digest().getBytes();\n } else {\n // FIXME: consider using SHA-1 of public key (which can be generated\n // from private key components), see: cert.generateSubjectKeyIdentifier\n // generate random bytes\n localKeyId = forge.random.getBytes(20);\n }\n }\n\n var attrs = [];\n if(localKeyId !== null) {\n attrs.push(\n // localKeyID\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // attrId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.localKeyId).getBytes()),\n // attrValues\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n localKeyId)\n ])\n ]));\n }\n if('friendlyName' in options) {\n attrs.push(\n // friendlyName\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // attrId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.friendlyName).getBytes()),\n // attrValues\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BMPSTRING, false,\n options.friendlyName)\n ])\n ]));\n }\n\n if(attrs.length > 0) {\n bagAttrs = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, attrs);\n }\n\n // collect contents for AuthenticatedSafe\n var contents = [];\n\n // create safe bag(s) for certificate chain\n var chain = [];\n if(cert !== null) {\n if(forge.util.isArray(cert)) {\n chain = cert;\n } else {\n chain = [cert];\n }\n }\n\n var certSafeBags = [];\n for(var i = 0; i < chain.length; ++i) {\n // convert cert from PEM as necessary\n cert = chain[i];\n if(typeof cert === 'string') {\n cert = pki.certificateFromPem(cert);\n }\n\n // SafeBag\n var certBagAttrs = (i === 0) ? bagAttrs : undefined;\n var certAsn1 = pki.certificateToAsn1(cert);\n var certSafeBag =\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // bagId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.certBag).getBytes()),\n // bagValue\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // CertBag\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // certId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.x509Certificate).getBytes()),\n // certValue (x509Certificate)\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(certAsn1).getBytes())\n ])])]),\n // bagAttributes (OPTIONAL)\n certBagAttrs\n ]);\n certSafeBags.push(certSafeBag);\n }\n\n if(certSafeBags.length > 0) {\n // SafeContents\n var certSafeContents = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, certSafeBags);\n\n // ContentInfo\n var certCI =\n // PKCS#7 ContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // contentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n // OID for the content type is 'data'\n asn1.oidToDer(pki.oids.data).getBytes()),\n // content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(certSafeContents).getBytes())\n ])\n ]);\n contents.push(certCI);\n }\n\n // create safe contents for private key\n var keyBag = null;\n if(key !== null) {\n // SafeBag\n var pkAsn1 = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(key));\n if(password === null) {\n // no encryption\n keyBag = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // bagId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.keyBag).getBytes()),\n // bagValue\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // PrivateKeyInfo\n pkAsn1\n ]),\n // bagAttributes (OPTIONAL)\n bagAttrs\n ]);\n } else {\n // encrypted PrivateKeyInfo\n keyBag = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // bagId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.pkcs8ShroudedKeyBag).getBytes()),\n // bagValue\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // EncryptedPrivateKeyInfo\n pki.encryptPrivateKeyInfo(pkAsn1, password, options)\n ]),\n // bagAttributes (OPTIONAL)\n bagAttrs\n ]);\n }\n\n // SafeContents\n var keySafeContents =\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [keyBag]);\n\n // ContentInfo\n var keyCI =\n // PKCS#7 ContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // contentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n // OID for the content type is 'data'\n asn1.oidToDer(pki.oids.data).getBytes()),\n // content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(keySafeContents).getBytes())\n ])\n ]);\n contents.push(keyCI);\n }\n\n // create AuthenticatedSafe by stringing together the contents\n var safe = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, contents);\n\n var macData;\n if(options.useMac) {\n // MacData\n var sha1 = forge.md.sha1.create();\n var macSalt = new forge.util.ByteBuffer(\n forge.random.getBytes(options.saltSize));\n var count = options.count;\n // 160-bit key\n var key = p12.generateKey(password, macSalt, 3, count, 20);\n var mac = forge.hmac.create();\n mac.start(sha1, key);\n mac.update(asn1.toDer(safe).getBytes());\n var macValue = mac.getMac();\n macData = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // mac DigestInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // digestAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm = SHA-1\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.sha1).getBytes()),\n // parameters = Null\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // digest\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING,\n false, macValue.getBytes())\n ]),\n // macSalt OCTET STRING\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, macSalt.getBytes()),\n // iterations INTEGER (XXX: Only support count < 65536)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(count).getBytes()\n )\n ]);\n }\n\n // PFX\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (3)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(3).getBytes()),\n // PKCS#7 ContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // contentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n // OID for the content type is 'data'\n asn1.oidToDer(pki.oids.data).getBytes()),\n // content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(safe).getBytes())\n ])\n ]),\n macData\n ]);\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\np12.generateKey = forge.pbe.generatePkcs12Key;\n","/**\n * Javascript implementation of PKCS#7 v1.5.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2012-2015 Digital Bazaar, Inc.\n *\n * Currently this implementation only supports ContentType of EnvelopedData,\n * EncryptedData, or SignedData at the root level. The top level elements may\n * contain only a ContentInfo of ContentType Data, i.e. plain data. Further\n * nesting is not (yet) supported.\n *\n * The Forge validators for PKCS #7's ASN.1 structures are available from\n * a separate file pkcs7asn1.js, since those are referenced from other\n * PKCS standards like PKCS #12.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./oids');\nrequire('./pem');\nrequire('./pkcs7asn1');\nrequire('./random');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for ASN.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for PKCS#7 API\nvar p7 = module.exports = forge.pkcs7 = forge.pkcs7 || {};\n\n/**\n * Converts a PKCS#7 message from PEM format.\n *\n * @param pem the PEM-formatted PKCS#7 message.\n *\n * @return the PKCS#7 message.\n */\np7.messageFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PKCS7') {\n var error = new Error('Could not convert PKCS#7 message from PEM; PEM ' +\n 'header type is not \"PKCS#7\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert PKCS#7 message from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return p7.messageFromAsn1(obj);\n};\n\n/**\n * Converts a PKCS#7 message to PEM format.\n *\n * @param msg The PKCS#7 message object\n * @param maxline The maximum characters per line, defaults to 64.\n *\n * @return The PEM-formatted PKCS#7 message.\n */\np7.messageToPem = function(msg, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var pemObj = {\n type: 'PKCS7',\n body: asn1.toDer(msg.toAsn1()).getBytes()\n };\n return forge.pem.encode(pemObj, {maxline: maxline});\n};\n\n/**\n * Converts a PKCS#7 message from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a ContentInfo.\n *\n * @return the PKCS#7 message.\n */\np7.messageFromAsn1 = function(obj) {\n // validate root level ContentInfo and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, p7.asn1.contentInfoValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 message. ' +\n 'ASN.1 object is not an PKCS#7 ContentInfo.');\n error.errors = errors;\n throw error;\n }\n\n var contentType = asn1.derToOid(capture.contentType);\n var msg;\n\n switch(contentType) {\n case forge.pki.oids.envelopedData:\n msg = p7.createEnvelopedData();\n break;\n\n case forge.pki.oids.encryptedData:\n msg = p7.createEncryptedData();\n break;\n\n case forge.pki.oids.signedData:\n msg = p7.createSignedData();\n break;\n\n default:\n throw new Error('Cannot read PKCS#7 message. ContentType with OID ' +\n contentType + ' is not (yet) supported.');\n }\n\n msg.fromAsn1(capture.content.value[0]);\n return msg;\n};\n\np7.createSignedData = function() {\n var msg = null;\n msg = {\n type: forge.pki.oids.signedData,\n version: 1,\n certificates: [],\n crls: [],\n // TODO: add json-formatted signer stuff here?\n signers: [],\n // populated during sign()\n digestAlgorithmIdentifiers: [],\n contentInfo: null,\n signerInfos: [],\n\n fromAsn1: function(obj) {\n // validate SignedData content block and capture data.\n _fromAsn1(msg, obj, p7.asn1.signedDataValidator);\n msg.certificates = [];\n msg.crls = [];\n msg.digestAlgorithmIdentifiers = [];\n msg.contentInfo = null;\n msg.signerInfos = [];\n\n if(msg.rawCapture.certificates) {\n var certs = msg.rawCapture.certificates.value;\n for(var i = 0; i < certs.length; ++i) {\n msg.certificates.push(forge.pki.certificateFromAsn1(certs[i]));\n }\n }\n\n // TODO: parse crls\n },\n\n toAsn1: function() {\n // degenerate case with no content\n if(!msg.contentInfo) {\n msg.sign();\n }\n\n var certs = [];\n for(var i = 0; i < msg.certificates.length; ++i) {\n certs.push(forge.pki.certificateToAsn1(msg.certificates[i]));\n }\n\n var crls = [];\n // TODO: implement CRLs\n\n // [0] SignedData\n var signedData = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(msg.version).getBytes()),\n // DigestAlgorithmIdentifiers\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SET, true,\n msg.digestAlgorithmIdentifiers),\n // ContentInfo\n msg.contentInfo\n ])\n ]);\n if(certs.length > 0) {\n // [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL\n signedData.value[0].value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, certs));\n }\n if(crls.length > 0) {\n // [1] IMPLICIT CertificateRevocationLists OPTIONAL\n signedData.value[0].value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, crls));\n }\n // SignerInfos\n signedData.value[0].value.push(\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true,\n msg.signerInfos));\n\n // ContentInfo\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // ContentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(msg.type).getBytes()),\n // [0] SignedData\n signedData\n ]);\n },\n\n /**\n * Add (another) entity to list of signers.\n *\n * Note: If authenticatedAttributes are provided, then, per RFC 2315,\n * they must include at least two attributes: content type and\n * message digest. The message digest attribute value will be\n * auto-calculated during signing and will be ignored if provided.\n *\n * Here's an example of providing these two attributes:\n *\n * forge.pkcs7.createSignedData();\n * p7.addSigner({\n * issuer: cert.issuer.attributes,\n * serialNumber: cert.serialNumber,\n * key: privateKey,\n * digestAlgorithm: forge.pki.oids.sha1,\n * authenticatedAttributes: [{\n * type: forge.pki.oids.contentType,\n * value: forge.pki.oids.data\n * }, {\n * type: forge.pki.oids.messageDigest\n * }]\n * });\n *\n * TODO: Support [subjectKeyIdentifier] as signer's ID.\n *\n * @param signer the signer information:\n * key the signer's private key.\n * [certificate] a certificate containing the public key\n * associated with the signer's private key; use this option as\n * an alternative to specifying signer.issuer and\n * signer.serialNumber.\n * [issuer] the issuer attributes (eg: cert.issuer.attributes).\n * [serialNumber] the signer's certificate's serial number in\n * hexadecimal (eg: cert.serialNumber).\n * [digestAlgorithm] the message digest OID, as a string, to use\n * (eg: forge.pki.oids.sha1).\n * [authenticatedAttributes] an optional array of attributes\n * to also sign along with the content.\n */\n addSigner: function(signer) {\n var issuer = signer.issuer;\n var serialNumber = signer.serialNumber;\n if(signer.certificate) {\n var cert = signer.certificate;\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n issuer = cert.issuer.attributes;\n serialNumber = cert.serialNumber;\n }\n var key = signer.key;\n if(!key) {\n throw new Error(\n 'Could not add PKCS#7 signer; no private key specified.');\n }\n if(typeof key === 'string') {\n key = forge.pki.privateKeyFromPem(key);\n }\n\n // ensure OID known for digest algorithm\n var digestAlgorithm = signer.digestAlgorithm || forge.pki.oids.sha1;\n switch(digestAlgorithm) {\n case forge.pki.oids.sha1:\n case forge.pki.oids.sha256:\n case forge.pki.oids.sha384:\n case forge.pki.oids.sha512:\n case forge.pki.oids.md5:\n break;\n default:\n throw new Error(\n 'Could not add PKCS#7 signer; unknown message digest algorithm: ' +\n digestAlgorithm);\n }\n\n // if authenticatedAttributes is present, then the attributes\n // must contain at least PKCS #9 content-type and message-digest\n var authenticatedAttributes = signer.authenticatedAttributes || [];\n if(authenticatedAttributes.length > 0) {\n var contentType = false;\n var messageDigest = false;\n for(var i = 0; i < authenticatedAttributes.length; ++i) {\n var attr = authenticatedAttributes[i];\n if(!contentType && attr.type === forge.pki.oids.contentType) {\n contentType = true;\n if(messageDigest) {\n break;\n }\n continue;\n }\n if(!messageDigest && attr.type === forge.pki.oids.messageDigest) {\n messageDigest = true;\n if(contentType) {\n break;\n }\n continue;\n }\n }\n\n if(!contentType || !messageDigest) {\n throw new Error('Invalid signer.authenticatedAttributes. If ' +\n 'signer.authenticatedAttributes is specified, then it must ' +\n 'contain at least two attributes, PKCS #9 content-type and ' +\n 'PKCS #9 message-digest.');\n }\n }\n\n msg.signers.push({\n key: key,\n version: 1,\n issuer: issuer,\n serialNumber: serialNumber,\n digestAlgorithm: digestAlgorithm,\n signatureAlgorithm: forge.pki.oids.rsaEncryption,\n signature: null,\n authenticatedAttributes: authenticatedAttributes,\n unauthenticatedAttributes: []\n });\n },\n\n /**\n * Signs the content.\n * @param options Options to apply when signing:\n * [detached] boolean. If signing should be done in detached mode. Defaults to false.\n */\n sign: function(options) {\n options = options || {};\n // auto-generate content info\n if(typeof msg.content !== 'object' || msg.contentInfo === null) {\n // use Data ContentInfo\n msg.contentInfo = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // ContentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(forge.pki.oids.data).getBytes())\n ]);\n\n // add actual content, if present\n if('content' in msg) {\n var content;\n if(msg.content instanceof forge.util.ByteBuffer) {\n content = msg.content.bytes();\n } else if(typeof msg.content === 'string') {\n content = forge.util.encodeUtf8(msg.content);\n }\n\n if (options.detached) {\n msg.detachedContent = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, content);\n } else {\n msg.contentInfo.value.push(\n // [0] EXPLICIT content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n content)\n ]));\n }\n }\n }\n\n // no signers, return early (degenerate case for certificate container)\n if(msg.signers.length === 0) {\n return;\n }\n\n // generate digest algorithm identifiers\n var mds = addDigestAlgorithmIds();\n\n // generate signerInfos\n addSignerInfos(mds);\n },\n\n verify: function() {\n throw new Error('PKCS#7 signature verification not yet implemented.');\n },\n\n /**\n * Add a certificate.\n *\n * @param cert the certificate to add.\n */\n addCertificate: function(cert) {\n // convert from PEM\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n msg.certificates.push(cert);\n },\n\n /**\n * Add a certificate revokation list.\n *\n * @param crl the certificate revokation list to add.\n */\n addCertificateRevokationList: function(crl) {\n throw new Error('PKCS#7 CRL support not yet implemented.');\n }\n };\n return msg;\n\n function addDigestAlgorithmIds() {\n var mds = {};\n\n for(var i = 0; i < msg.signers.length; ++i) {\n var signer = msg.signers[i];\n var oid = signer.digestAlgorithm;\n if(!(oid in mds)) {\n // content digest\n mds[oid] = forge.md[forge.pki.oids[oid]].create();\n }\n if(signer.authenticatedAttributes.length === 0) {\n // no custom attributes to digest; use content message digest\n signer.md = mds[oid];\n } else {\n // custom attributes to be digested; use own message digest\n // TODO: optimize to just copy message digest state if that\n // feature is ever supported with message digests\n signer.md = forge.md[forge.pki.oids[oid]].create();\n }\n }\n\n // add unique digest algorithm identifiers\n msg.digestAlgorithmIdentifiers = [];\n for(var oid in mds) {\n msg.digestAlgorithmIdentifiers.push(\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oid).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n\n return mds;\n }\n\n function addSignerInfos(mds) {\n var content;\n\n if (msg.detachedContent) {\n // Signature has been made in detached mode.\n content = msg.detachedContent;\n } else {\n // Note: ContentInfo is a SEQUENCE with 2 values, second value is\n // the content field and is optional for a ContentInfo but required here\n // since signers are present\n // get ContentInfo content\n content = msg.contentInfo.value[1];\n // skip [0] EXPLICIT content wrapper\n content = content.value[0];\n }\n\n if(!content) {\n throw new Error(\n 'Could not sign PKCS#7 message; there is no content to sign.');\n }\n\n // get ContentInfo content type\n var contentType = asn1.derToOid(msg.contentInfo.value[0].value);\n\n // serialize content\n var bytes = asn1.toDer(content);\n\n // skip identifier and length per RFC 2315 9.3\n // skip identifier (1 byte)\n bytes.getByte();\n // read and discard length bytes\n asn1.getBerValueLength(bytes);\n bytes = bytes.getBytes();\n\n // digest content DER value bytes\n for(var oid in mds) {\n mds[oid].start().update(bytes);\n }\n\n // sign content\n var signingTime = new Date();\n for(var i = 0; i < msg.signers.length; ++i) {\n var signer = msg.signers[i];\n\n if(signer.authenticatedAttributes.length === 0) {\n // if ContentInfo content type is not \"Data\", then\n // authenticatedAttributes must be present per RFC 2315\n if(contentType !== forge.pki.oids.data) {\n throw new Error(\n 'Invalid signer; authenticatedAttributes must be present ' +\n 'when the ContentInfo content type is not PKCS#7 Data.');\n }\n } else {\n // process authenticated attributes\n // [0] IMPLICIT\n signer.authenticatedAttributesAsn1 = asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n\n // per RFC 2315, attributes are to be digested using a SET container\n // not the above [0] IMPLICIT container\n var attrsAsn1 = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SET, true, []);\n\n for(var ai = 0; ai < signer.authenticatedAttributes.length; ++ai) {\n var attr = signer.authenticatedAttributes[ai];\n if(attr.type === forge.pki.oids.messageDigest) {\n // use content message digest as value\n attr.value = mds[signer.digestAlgorithm].digest();\n } else if(attr.type === forge.pki.oids.signingTime) {\n // auto-populate signing time if not already set\n if(!attr.value) {\n attr.value = signingTime;\n }\n }\n\n // convert to ASN.1 and push onto Attributes SET (for signing) and\n // onto authenticatedAttributesAsn1 to complete SignedData ASN.1\n // TODO: optimize away duplication\n attrsAsn1.value.push(_attributeToAsn1(attr));\n signer.authenticatedAttributesAsn1.value.push(_attributeToAsn1(attr));\n }\n\n // DER-serialize and digest SET OF attributes only\n bytes = asn1.toDer(attrsAsn1).getBytes();\n signer.md.start().update(bytes);\n }\n\n // sign digest\n signer.signature = signer.key.sign(signer.md, 'RSASSA-PKCS1-V1_5');\n }\n\n // add signer info\n msg.signerInfos = _signersToAsn1(msg.signers);\n }\n};\n\n/**\n * Creates an empty PKCS#7 message of type EncryptedData.\n *\n * @return the message.\n */\np7.createEncryptedData = function() {\n var msg = null;\n msg = {\n type: forge.pki.oids.encryptedData,\n version: 0,\n encryptedContent: {\n algorithm: forge.pki.oids['aes256-CBC']\n },\n\n /**\n * Reads an EncryptedData content block (in ASN.1 format)\n *\n * @param obj The ASN.1 representation of the EncryptedData content block\n */\n fromAsn1: function(obj) {\n // Validate EncryptedData content block and capture data.\n _fromAsn1(msg, obj, p7.asn1.encryptedDataValidator);\n },\n\n /**\n * Decrypt encrypted content\n *\n * @param key The (symmetric) key as a byte buffer\n */\n decrypt: function(key) {\n if(key !== undefined) {\n msg.encryptedContent.key = key;\n }\n _decryptContent(msg);\n }\n };\n return msg;\n};\n\n/**\n * Creates an empty PKCS#7 message of type EnvelopedData.\n *\n * @return the message.\n */\np7.createEnvelopedData = function() {\n var msg = null;\n msg = {\n type: forge.pki.oids.envelopedData,\n version: 0,\n recipients: [],\n encryptedContent: {\n algorithm: forge.pki.oids['aes256-CBC']\n },\n\n /**\n * Reads an EnvelopedData content block (in ASN.1 format)\n *\n * @param obj the ASN.1 representation of the EnvelopedData content block.\n */\n fromAsn1: function(obj) {\n // validate EnvelopedData content block and capture data\n var capture = _fromAsn1(msg, obj, p7.asn1.envelopedDataValidator);\n msg.recipients = _recipientsFromAsn1(capture.recipientInfos.value);\n },\n\n toAsn1: function() {\n // ContentInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // ContentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(msg.type).getBytes()),\n // [0] EnvelopedData\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(msg.version).getBytes()),\n // RecipientInfos\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true,\n _recipientsToAsn1(msg.recipients)),\n // EncryptedContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true,\n _encryptedContentToAsn1(msg.encryptedContent))\n ])\n ])\n ]);\n },\n\n /**\n * Find recipient by X.509 certificate's issuer.\n *\n * @param cert the certificate with the issuer to look for.\n *\n * @return the recipient object.\n */\n findRecipient: function(cert) {\n var sAttr = cert.issuer.attributes;\n\n for(var i = 0; i < msg.recipients.length; ++i) {\n var r = msg.recipients[i];\n var rAttr = r.issuer;\n\n if(r.serialNumber !== cert.serialNumber) {\n continue;\n }\n\n if(rAttr.length !== sAttr.length) {\n continue;\n }\n\n var match = true;\n for(var j = 0; j < sAttr.length; ++j) {\n if(rAttr[j].type !== sAttr[j].type ||\n rAttr[j].value !== sAttr[j].value) {\n match = false;\n break;\n }\n }\n\n if(match) {\n return r;\n }\n }\n\n return null;\n },\n\n /**\n * Decrypt enveloped content\n *\n * @param recipient The recipient object related to the private key\n * @param privKey The (RSA) private key object\n */\n decrypt: function(recipient, privKey) {\n if(msg.encryptedContent.key === undefined && recipient !== undefined &&\n privKey !== undefined) {\n switch(recipient.encryptedContent.algorithm) {\n case forge.pki.oids.rsaEncryption:\n case forge.pki.oids.desCBC:\n var key = privKey.decrypt(recipient.encryptedContent.content);\n msg.encryptedContent.key = forge.util.createBuffer(key);\n break;\n\n default:\n throw new Error('Unsupported asymmetric cipher, ' +\n 'OID ' + recipient.encryptedContent.algorithm);\n }\n }\n\n _decryptContent(msg);\n },\n\n /**\n * Add (another) entity to list of recipients.\n *\n * @param cert The certificate of the entity to add.\n */\n addRecipient: function(cert) {\n msg.recipients.push({\n version: 0,\n issuer: cert.issuer.attributes,\n serialNumber: cert.serialNumber,\n encryptedContent: {\n // We simply assume rsaEncryption here, since forge.pki only\n // supports RSA so far. If the PKI module supports other\n // ciphers one day, we need to modify this one as well.\n algorithm: forge.pki.oids.rsaEncryption,\n key: cert.publicKey\n }\n });\n },\n\n /**\n * Encrypt enveloped content.\n *\n * This function supports two optional arguments, cipher and key, which\n * can be used to influence symmetric encryption. Unless cipher is\n * provided, the cipher specified in encryptedContent.algorithm is used\n * (defaults to AES-256-CBC). If no key is provided, encryptedContent.key\n * is (re-)used. If that one's not set, a random key will be generated\n * automatically.\n *\n * @param [key] The key to be used for symmetric encryption.\n * @param [cipher] The OID of the symmetric cipher to use.\n */\n encrypt: function(key, cipher) {\n // Part 1: Symmetric encryption\n if(msg.encryptedContent.content === undefined) {\n cipher = cipher || msg.encryptedContent.algorithm;\n key = key || msg.encryptedContent.key;\n\n var keyLen, ivLen, ciphFn;\n switch(cipher) {\n case forge.pki.oids['aes128-CBC']:\n keyLen = 16;\n ivLen = 16;\n ciphFn = forge.aes.createEncryptionCipher;\n break;\n\n case forge.pki.oids['aes192-CBC']:\n keyLen = 24;\n ivLen = 16;\n ciphFn = forge.aes.createEncryptionCipher;\n break;\n\n case forge.pki.oids['aes256-CBC']:\n keyLen = 32;\n ivLen = 16;\n ciphFn = forge.aes.createEncryptionCipher;\n break;\n\n case forge.pki.oids['des-EDE3-CBC']:\n keyLen = 24;\n ivLen = 8;\n ciphFn = forge.des.createEncryptionCipher;\n break;\n\n default:\n throw new Error('Unsupported symmetric cipher, OID ' + cipher);\n }\n\n if(key === undefined) {\n key = forge.util.createBuffer(forge.random.getBytes(keyLen));\n } else if(key.length() != keyLen) {\n throw new Error('Symmetric key has wrong length; ' +\n 'got ' + key.length() + ' bytes, expected ' + keyLen + '.');\n }\n\n // Keep a copy of the key & IV in the object, so the caller can\n // use it for whatever reason.\n msg.encryptedContent.algorithm = cipher;\n msg.encryptedContent.key = key;\n msg.encryptedContent.parameter = forge.util.createBuffer(\n forge.random.getBytes(ivLen));\n\n var ciph = ciphFn(key);\n ciph.start(msg.encryptedContent.parameter.copy());\n ciph.update(msg.content);\n\n // The finish function does PKCS#7 padding by default, therefore\n // no action required by us.\n if(!ciph.finish()) {\n throw new Error('Symmetric encryption failed.');\n }\n\n msg.encryptedContent.content = ciph.output;\n }\n\n // Part 2: asymmetric encryption for each recipient\n for(var i = 0; i < msg.recipients.length; ++i) {\n var recipient = msg.recipients[i];\n\n // Nothing to do, encryption already done.\n if(recipient.encryptedContent.content !== undefined) {\n continue;\n }\n\n switch(recipient.encryptedContent.algorithm) {\n case forge.pki.oids.rsaEncryption:\n recipient.encryptedContent.content =\n recipient.encryptedContent.key.encrypt(\n msg.encryptedContent.key.data);\n break;\n\n default:\n throw new Error('Unsupported asymmetric cipher, OID ' +\n recipient.encryptedContent.algorithm);\n }\n }\n }\n };\n return msg;\n};\n\n/**\n * Converts a single recipient from an ASN.1 object.\n *\n * @param obj the ASN.1 RecipientInfo.\n *\n * @return the recipient object.\n */\nfunction _recipientFromAsn1(obj) {\n // validate EnvelopedData content block and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, p7.asn1.recipientInfoValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 RecipientInfo. ' +\n 'ASN.1 object is not an PKCS#7 RecipientInfo.');\n error.errors = errors;\n throw error;\n }\n\n return {\n version: capture.version.charCodeAt(0),\n issuer: forge.pki.RDNAttributesAsArray(capture.issuer),\n serialNumber: forge.util.createBuffer(capture.serial).toHex(),\n encryptedContent: {\n algorithm: asn1.derToOid(capture.encAlgorithm),\n parameter: capture.encParameter ? capture.encParameter.value : undefined,\n content: capture.encKey\n }\n };\n}\n\n/**\n * Converts a single recipient object to an ASN.1 object.\n *\n * @param obj the recipient object.\n *\n * @return the ASN.1 RecipientInfo.\n */\nfunction _recipientToAsn1(obj) {\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(obj.version).getBytes()),\n // IssuerAndSerialNumber\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Name\n forge.pki.distinguishedNameToAsn1({attributes: obj.issuer}),\n // Serial\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(obj.serialNumber))\n ]),\n // KeyEncryptionAlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(obj.encryptedContent.algorithm).getBytes()),\n // Parameter, force NULL, only RSA supported for now.\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // EncryptedKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n obj.encryptedContent.content)\n ]);\n}\n\n/**\n * Map a set of RecipientInfo ASN.1 objects to recipient objects.\n *\n * @param infos an array of ASN.1 representations RecipientInfo (i.e. SET OF).\n *\n * @return an array of recipient objects.\n */\nfunction _recipientsFromAsn1(infos) {\n var ret = [];\n for(var i = 0; i < infos.length; ++i) {\n ret.push(_recipientFromAsn1(infos[i]));\n }\n return ret;\n}\n\n/**\n * Map an array of recipient objects to ASN.1 RecipientInfo objects.\n *\n * @param recipients an array of recipientInfo objects.\n *\n * @return an array of ASN.1 RecipientInfos.\n */\nfunction _recipientsToAsn1(recipients) {\n var ret = [];\n for(var i = 0; i < recipients.length; ++i) {\n ret.push(_recipientToAsn1(recipients[i]));\n }\n return ret;\n}\n\n/**\n * Converts a single signer from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a SignerInfo.\n *\n * @return the signer object.\n */\nfunction _signerFromAsn1(obj) {\n // validate EnvelopedData content block and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, p7.asn1.signerInfoValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 SignerInfo. ' +\n 'ASN.1 object is not an PKCS#7 SignerInfo.');\n error.errors = errors;\n throw error;\n }\n\n var rval = {\n version: capture.version.charCodeAt(0),\n issuer: forge.pki.RDNAttributesAsArray(capture.issuer),\n serialNumber: forge.util.createBuffer(capture.serial).toHex(),\n digestAlgorithm: asn1.derToOid(capture.digestAlgorithm),\n signatureAlgorithm: asn1.derToOid(capture.signatureAlgorithm),\n signature: capture.signature,\n authenticatedAttributes: [],\n unauthenticatedAttributes: []\n };\n\n // TODO: convert attributes\n var authenticatedAttributes = capture.authenticatedAttributes || [];\n var unauthenticatedAttributes = capture.unauthenticatedAttributes || [];\n\n return rval;\n}\n\n/**\n * Converts a single signerInfo object to an ASN.1 object.\n *\n * @param obj the signerInfo object.\n *\n * @return the ASN.1 representation of a SignerInfo.\n */\nfunction _signerToAsn1(obj) {\n // SignerInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(obj.version).getBytes()),\n // issuerAndSerialNumber\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // name\n forge.pki.distinguishedNameToAsn1({attributes: obj.issuer}),\n // serial\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(obj.serialNumber))\n ]),\n // digestAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(obj.digestAlgorithm).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ]);\n\n // authenticatedAttributes (OPTIONAL)\n if(obj.authenticatedAttributesAsn1) {\n // add ASN.1 previously generated during signing\n rval.value.push(obj.authenticatedAttributesAsn1);\n }\n\n // digestEncryptionAlgorithm\n rval.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(obj.signatureAlgorithm).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n\n // encryptedDigest\n rval.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, obj.signature));\n\n // unauthenticatedAttributes (OPTIONAL)\n if(obj.unauthenticatedAttributes.length > 0) {\n // [1] IMPLICIT\n var attrsAsn1 = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, []);\n for(var i = 0; i < obj.unauthenticatedAttributes.length; ++i) {\n var attr = obj.unauthenticatedAttributes[i];\n attrsAsn1.values.push(_attributeToAsn1(attr));\n }\n rval.value.push(attrsAsn1);\n }\n\n return rval;\n}\n\n/**\n * Map a set of SignerInfo ASN.1 objects to an array of signer objects.\n *\n * @param signerInfoAsn1s an array of ASN.1 SignerInfos (i.e. SET OF).\n *\n * @return an array of signers objects.\n */\nfunction _signersFromAsn1(signerInfoAsn1s) {\n var ret = [];\n for(var i = 0; i < signerInfoAsn1s.length; ++i) {\n ret.push(_signerFromAsn1(signerInfoAsn1s[i]));\n }\n return ret;\n}\n\n/**\n * Map an array of signer objects to ASN.1 objects.\n *\n * @param signers an array of signer objects.\n *\n * @return an array of ASN.1 SignerInfos.\n */\nfunction _signersToAsn1(signers) {\n var ret = [];\n for(var i = 0; i < signers.length; ++i) {\n ret.push(_signerToAsn1(signers[i]));\n }\n return ret;\n}\n\n/**\n * Convert an attribute object to an ASN.1 Attribute.\n *\n * @param attr the attribute object.\n *\n * @return the ASN.1 Attribute.\n */\nfunction _attributeToAsn1(attr) {\n var value;\n\n // TODO: generalize to support more attributes\n if(attr.type === forge.pki.oids.contentType) {\n value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.value).getBytes());\n } else if(attr.type === forge.pki.oids.messageDigest) {\n value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n attr.value.bytes());\n } else if(attr.type === forge.pki.oids.signingTime) {\n /* Note per RFC 2985: Dates between 1 January 1950 and 31 December 2049\n (inclusive) MUST be encoded as UTCTime. Any dates with year values\n before 1950 or after 2049 MUST be encoded as GeneralizedTime. [Further,]\n UTCTime values MUST be expressed in Greenwich Mean Time (Zulu) and MUST\n include seconds (i.e., times are YYMMDDHHMMSSZ), even where the\n number of seconds is zero. Midnight (GMT) must be represented as\n \"YYMMDD000000Z\". */\n // TODO: make these module-level constants\n var jan_1_1950 = new Date('1950-01-01T00:00:00Z');\n var jan_1_2050 = new Date('2050-01-01T00:00:00Z');\n var date = attr.value;\n if(typeof date === 'string') {\n // try to parse date\n var timestamp = Date.parse(date);\n if(!isNaN(timestamp)) {\n date = new Date(timestamp);\n } else if(date.length === 13) {\n // YYMMDDHHMMSSZ (13 chars for UTCTime)\n date = asn1.utcTimeToDate(date);\n } else {\n // assume generalized time\n date = asn1.generalizedTimeToDate(date);\n }\n }\n\n if(date >= jan_1_1950 && date < jan_1_2050) {\n value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.UTCTIME, false,\n asn1.dateToUtcTime(date));\n } else {\n value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.GENERALIZEDTIME, false,\n asn1.dateToGeneralizedTime(date));\n }\n }\n\n // TODO: expose as common API call\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n // AttributeValue\n value\n ])\n ]);\n}\n\n/**\n * Map messages encrypted content to ASN.1 objects.\n *\n * @param ec The encryptedContent object of the message.\n *\n * @return ASN.1 representation of the encryptedContent object (SEQUENCE).\n */\nfunction _encryptedContentToAsn1(ec) {\n return [\n // ContentType, always Data for the moment\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(forge.pki.oids.data).getBytes()),\n // ContentEncryptionAlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(ec.algorithm).getBytes()),\n // Parameters (IV)\n !ec.parameter ?\n undefined :\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n ec.parameter.getBytes())\n ]),\n // [0] EncryptedContent\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n ec.content.getBytes())\n ])\n ];\n}\n\n/**\n * Reads the \"common part\" of an PKCS#7 content block (in ASN.1 format)\n *\n * This function reads the \"common part\" of the PKCS#7 content blocks\n * EncryptedData and EnvelopedData, i.e. version number and symmetrically\n * encrypted content block.\n *\n * The result of the ASN.1 validate and capture process is returned\n * to allow the caller to extract further data, e.g. the list of recipients\n * in case of a EnvelopedData object.\n *\n * @param msg the PKCS#7 object to read the data to.\n * @param obj the ASN.1 representation of the content block.\n * @param validator the ASN.1 structure validator object to use.\n *\n * @return the value map captured by validator object.\n */\nfunction _fromAsn1(msg, obj, validator) {\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, validator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 message. ' +\n 'ASN.1 object is not a supported PKCS#7 message.');\n error.errors = error;\n throw error;\n }\n\n // Check contentType, so far we only support (raw) Data.\n var contentType = asn1.derToOid(capture.contentType);\n if(contentType !== forge.pki.oids.data) {\n throw new Error('Unsupported PKCS#7 message. ' +\n 'Only wrapped ContentType Data supported.');\n }\n\n if(capture.encryptedContent) {\n var content = '';\n if(forge.util.isArray(capture.encryptedContent)) {\n for(var i = 0; i < capture.encryptedContent.length; ++i) {\n if(capture.encryptedContent[i].type !== asn1.Type.OCTETSTRING) {\n throw new Error('Malformed PKCS#7 message, expecting encrypted ' +\n 'content constructed of only OCTET STRING objects.');\n }\n content += capture.encryptedContent[i].value;\n }\n } else {\n content = capture.encryptedContent;\n }\n msg.encryptedContent = {\n algorithm: asn1.derToOid(capture.encAlgorithm),\n parameter: forge.util.createBuffer(capture.encParameter.value),\n content: forge.util.createBuffer(content)\n };\n }\n\n if(capture.content) {\n var content = '';\n if(forge.util.isArray(capture.content)) {\n for(var i = 0; i < capture.content.length; ++i) {\n if(capture.content[i].type !== asn1.Type.OCTETSTRING) {\n throw new Error('Malformed PKCS#7 message, expecting ' +\n 'content constructed of only OCTET STRING objects.');\n }\n content += capture.content[i].value;\n }\n } else {\n content = capture.content;\n }\n msg.content = forge.util.createBuffer(content);\n }\n\n msg.version = capture.version.charCodeAt(0);\n msg.rawCapture = capture;\n\n return capture;\n}\n\n/**\n * Decrypt the symmetrically encrypted content block of the PKCS#7 message.\n *\n * Decryption is skipped in case the PKCS#7 message object already has a\n * (decrypted) content attribute. The algorithm, key and cipher parameters\n * (probably the iv) are taken from the encryptedContent attribute of the\n * message object.\n *\n * @param The PKCS#7 message object.\n */\nfunction _decryptContent(msg) {\n if(msg.encryptedContent.key === undefined) {\n throw new Error('Symmetric key not available.');\n }\n\n if(msg.content === undefined) {\n var ciph;\n\n switch(msg.encryptedContent.algorithm) {\n case forge.pki.oids['aes128-CBC']:\n case forge.pki.oids['aes192-CBC']:\n case forge.pki.oids['aes256-CBC']:\n ciph = forge.aes.createDecryptionCipher(msg.encryptedContent.key);\n break;\n\n case forge.pki.oids['desCBC']:\n case forge.pki.oids['des-EDE3-CBC']:\n ciph = forge.des.createDecryptionCipher(msg.encryptedContent.key);\n break;\n\n default:\n throw new Error('Unsupported symmetric cipher, OID ' +\n msg.encryptedContent.algorithm);\n }\n ciph.start(msg.encryptedContent.parameter);\n ciph.update(msg.encryptedContent.content);\n\n if(!ciph.finish()) {\n throw new Error('Symmetric decryption failed.');\n }\n\n msg.content = ciph.output;\n }\n}\n","/**\n * Javascript implementation of ASN.1 validators for PKCS#7 v1.5.\n *\n * @author Dave Longley\n * @author Stefan Siegl\n *\n * Copyright (c) 2012-2015 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * The ASN.1 representation of PKCS#7 is as follows\n * (see RFC #2315 for details, http://www.ietf.org/rfc/rfc2315.txt):\n *\n * A PKCS#7 message consists of a ContentInfo on root level, which may\n * contain any number of further ContentInfo nested into it.\n *\n * ContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL\n * }\n *\n * ContentType ::= OBJECT IDENTIFIER\n *\n * EnvelopedData ::= SEQUENCE {\n * version Version,\n * recipientInfos RecipientInfos,\n * encryptedContentInfo EncryptedContentInfo\n * }\n *\n * EncryptedData ::= SEQUENCE {\n * version Version,\n * encryptedContentInfo EncryptedContentInfo\n * }\n *\n * id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)\n * us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }\n *\n * SignedData ::= SEQUENCE {\n * version INTEGER,\n * digestAlgorithms DigestAlgorithmIdentifiers,\n * contentInfo ContentInfo,\n * certificates [0] IMPLICIT Certificates OPTIONAL,\n * crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,\n * signerInfos SignerInfos\n * }\n *\n * SignerInfos ::= SET OF SignerInfo\n *\n * SignerInfo ::= SEQUENCE {\n * version Version,\n * issuerAndSerialNumber IssuerAndSerialNumber,\n * digestAlgorithm DigestAlgorithmIdentifier,\n * authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,\n * digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,\n * encryptedDigest EncryptedDigest,\n * unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL\n * }\n *\n * EncryptedDigest ::= OCTET STRING\n *\n * Attributes ::= SET OF Attribute\n *\n * Attribute ::= SEQUENCE {\n * attrType OBJECT IDENTIFIER,\n * attrValues SET OF AttributeValue\n * }\n *\n * AttributeValue ::= ANY\n *\n * Version ::= INTEGER\n *\n * RecipientInfos ::= SET OF RecipientInfo\n *\n * EncryptedContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,\n * encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL\n * }\n *\n * ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of AES and DES3, there is only one,\n * the IV.\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * EncryptedContent ::= OCTET STRING\n *\n * RecipientInfo ::= SEQUENCE {\n * version Version,\n * issuerAndSerialNumber IssuerAndSerialNumber,\n * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,\n * encryptedKey EncryptedKey\n * }\n *\n * IssuerAndSerialNumber ::= SEQUENCE {\n * issuer Name,\n * serialNumber CertificateSerialNumber\n * }\n *\n * CertificateSerialNumber ::= INTEGER\n *\n * KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedKey ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./util');\n\n// shortcut for ASN.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for PKCS#7 API\nvar p7v = module.exports = forge.pkcs7asn1 = forge.pkcs7asn1 || {};\nforge.pkcs7 = forge.pkcs7 || {};\nforge.pkcs7.asn1 = p7v;\n\nvar contentInfoValidator = {\n name: 'ContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'ContentInfo.ContentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'ContentInfo.content',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n captureAsn1: 'content'\n }]\n};\np7v.contentInfoValidator = contentInfoValidator;\n\nvar encryptedContentInfoValidator = {\n name: 'EncryptedContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedContentInfo.contentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encAlgorithm'\n }, {\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm.parameter',\n tagClass: asn1.Class.UNIVERSAL,\n captureAsn1: 'encParameter'\n }]\n }, {\n name: 'EncryptedContentInfo.encryptedContent',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n /* The PKCS#7 structure output by OpenSSL somewhat differs from what\n * other implementations do generate.\n *\n * OpenSSL generates a structure like this:\n * SEQUENCE {\n * ...\n * [0]\n * 26 DA 67 D2 17 9C 45 3C B1 2A A8 59 2F 29 33 38\n * C3 C3 DF 86 71 74 7A 19 9F 40 D0 29 BE 85 90 45\n * ...\n * }\n *\n * Whereas other implementations (and this PKCS#7 module) generate:\n * SEQUENCE {\n * ...\n * [0] {\n * OCTET STRING\n * 26 DA 67 D2 17 9C 45 3C B1 2A A8 59 2F 29 33 38\n * C3 C3 DF 86 71 74 7A 19 9F 40 D0 29 BE 85 90 45\n * ...\n * }\n * }\n *\n * In order to support both, we just capture the context specific\n * field here. The OCTET STRING bit is removed below.\n */\n capture: 'encryptedContent',\n captureAsn1: 'encryptedContentAsn1'\n }]\n};\n\np7v.envelopedDataValidator = {\n name: 'EnvelopedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EnvelopedData.Version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }, {\n name: 'EnvelopedData.RecipientInfos',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n captureAsn1: 'recipientInfos'\n }].concat(encryptedContentInfoValidator)\n};\n\np7v.encryptedDataValidator = {\n name: 'EncryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedData.Version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }].concat(encryptedContentInfoValidator)\n};\n\nvar signerValidator = {\n name: 'SignerInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignerInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false\n }, {\n name: 'SignerInfo.issuerAndSerialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignerInfo.issuerAndSerialNumber.issuer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'issuer'\n }, {\n name: 'SignerInfo.issuerAndSerialNumber.serialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'serial'\n }]\n }, {\n name: 'SignerInfo.digestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignerInfo.digestAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'digestAlgorithm'\n }, {\n name: 'SignerInfo.digestAlgorithm.parameter',\n tagClass: asn1.Class.UNIVERSAL,\n constructed: false,\n captureAsn1: 'digestParameter',\n optional: true\n }]\n }, {\n name: 'SignerInfo.authenticatedAttributes',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n capture: 'authenticatedAttributes'\n }, {\n name: 'SignerInfo.digestEncryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n capture: 'signatureAlgorithm'\n }, {\n name: 'SignerInfo.encryptedDigest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'signature'\n }, {\n name: 'SignerInfo.unauthenticatedAttributes',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n optional: true,\n capture: 'unauthenticatedAttributes'\n }]\n};\n\np7v.signedDataValidator = {\n name: 'SignedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignedData.Version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }, {\n name: 'SignedData.DigestAlgorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n captureAsn1: 'digestAlgorithms'\n },\n contentInfoValidator,\n {\n name: 'SignedData.Certificates',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n optional: true,\n captureAsn1: 'certificates'\n }, {\n name: 'SignedData.CertificateRevocationLists',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n optional: true,\n captureAsn1: 'crls'\n }, {\n name: 'SignedData.SignerInfos',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n capture: 'signerInfos',\n optional: true,\n value: [signerValidator]\n }]\n};\n\np7v.recipientInfoValidator = {\n name: 'RecipientInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'RecipientInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }, {\n name: 'RecipientInfo.issuerAndSerial',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'RecipientInfo.issuerAndSerial.issuer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'issuer'\n }, {\n name: 'RecipientInfo.issuerAndSerial.serialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'serial'\n }]\n }, {\n name: 'RecipientInfo.keyEncryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'RecipientInfo.keyEncryptionAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encAlgorithm'\n }, {\n name: 'RecipientInfo.keyEncryptionAlgorithm.parameter',\n tagClass: asn1.Class.UNIVERSAL,\n constructed: false,\n captureAsn1: 'encParameter',\n optional: true\n }]\n }, {\n name: 'RecipientInfo.encryptedKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encKey'\n }]\n};\n","/**\n * Javascript implementation of a basic Public Key Infrastructure, including\n * support for RSA public and private keys.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./oids');\nrequire('./pbe');\nrequire('./pem');\nrequire('./pbkdf2');\nrequire('./pkcs12');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED. Use pem.decode() instead.\n *\n * Converts PEM-formatted data to DER.\n *\n * @param pem the PEM-formatted data.\n *\n * @return the DER-formatted data.\n */\npki.pemToDer = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert PEM to DER; PEM is encrypted.');\n }\n return forge.util.createBuffer(msg.body);\n};\n\n/**\n * Converts an RSA private key from PEM format.\n *\n * @param pem the PEM-formatted private key.\n *\n * @return the private key.\n */\npki.privateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PRIVATE KEY' && msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM ' +\n 'header type is not \"PRIVATE KEY\" or \"RSA PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert private key from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return pki.privateKeyFromAsn1(obj);\n};\n\n/**\n * Converts an RSA private key to PEM format.\n *\n * @param key the private key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyToPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'RSA PRIVATE KEY',\n body: asn1.toDer(pki.privateKeyToAsn1(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PrivateKeyInfo to PEM format.\n *\n * @param pki the PrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyInfoToPem = function(pki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'PRIVATE KEY',\n body: asn1.toDer(pki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n","/**\n * Prime number generation API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./jsbn');\nrequire('./random');\n\n(function() {\n\n// forge.prime already defined\nif(forge.prime) {\n module.exports = forge.prime;\n return;\n}\n\n/* PRIME API */\nvar prime = module.exports = forge.prime = forge.prime || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n// primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\nvar THIRTY = new BigInteger(null);\nTHIRTY.fromInt(30);\nvar op_or = function(x, y) {return x|y;};\n\n/**\n * Generates a random probable prime with the given number of bits.\n *\n * Alternative algorithms can be specified by name as a string or as an\n * object with custom options like so:\n *\n * {\n * name: 'PRIMEINC',\n * options: {\n * maxBlockTime: ,\n * millerRabinTests: ,\n * workerScript: ,\n * workers: .\n * workLoad: the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * }\n * }\n *\n * @param bits the number of bits for the prime number.\n * @param options the options to use.\n * [algorithm] the algorithm to use (default: 'PRIMEINC').\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n *\n * @return callback(err, num) called once the operation completes.\n */\nprime.generateProbablePrime = function(bits, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // default to PRIMEINC algorithm\n var algorithm = options.algorithm || 'PRIMEINC';\n if(typeof algorithm === 'string') {\n algorithm = {name: algorithm};\n }\n algorithm.options = algorithm.options || {};\n\n // create prng with api that matches BigInteger secure random\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n if(algorithm.name === 'PRIMEINC') {\n return primeincFindPrime(bits, rng, algorithm.options, callback);\n }\n\n throw new Error('Invalid prime generation algorithm: ' + algorithm.name);\n};\n\nfunction primeincFindPrime(bits, rng, options, callback) {\n if('workers' in options) {\n return primeincFindPrimeWithWorkers(bits, rng, options, callback);\n }\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n}\n\nfunction primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {\n // initialize random number\n var num = generateRandom(bits, rng);\n\n /* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The\n number we are given is always aligned at 30k + 1. Each time the number is\n determined not to be prime we add to get to the next 'i', eg: if the number\n was at 30k + 1 we add 6. */\n var deltaIdx = 0;\n\n // get required number of MR tests\n var mrTests = getMillerRabinTests(num.bitLength());\n if('millerRabinTests' in options) {\n mrTests = options.millerRabinTests;\n }\n\n // find prime nearest to 'num' for maxBlockTime ms\n // 10 ms gives 5ms of leeway for other calculations before dropping\n // below 60fps (1000/60 == 16.67), but in reality, the number will\n // likely be higher due to an 'atomic' big int modPow\n var maxBlockTime = 10;\n if('maxBlockTime' in options) {\n maxBlockTime = options.maxBlockTime;\n }\n\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n}\n\nfunction _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {\n var start = +new Date();\n do {\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n // do primality test\n if(num.isProbablePrime(mrTests)) {\n return callback(null, num);\n }\n // get next potential prime\n num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n } while(maxBlockTime < 0 || (+new Date() - start < maxBlockTime));\n\n // keep trying later\n forge.util.setImmediate(function() {\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n });\n}\n\n// NOTE: This algorithm is indeterminate in nature because workers\n// run in parallel looking at different segments of numbers. Even if this\n// algorithm is run twice with the same input from a predictable RNG, it\n// may produce different outputs.\nfunction primeincFindPrimeWithWorkers(bits, rng, options, callback) {\n // web workers unavailable\n if(typeof Worker === 'undefined') {\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n }\n\n // initialize random number\n var num = generateRandom(bits, rng);\n\n // use web workers to generate keys\n var numWorkers = options.workers;\n var workLoad = options.workLoad || 100;\n var range = workLoad * 30 / 8;\n var workerScript = options.workerScript || 'forge/prime.worker.js';\n if(numWorkers === -1) {\n return forge.util.estimateCores(function(err, cores) {\n if(err) {\n // default to 2\n cores = 2;\n }\n numWorkers = cores - 1;\n generate();\n });\n }\n generate();\n\n function generate() {\n // require at least 1 worker\n numWorkers = Math.max(1, numWorkers);\n\n // TODO: consider optimizing by starting workers outside getPrime() ...\n // note that in order to clean up they will have to be made internally\n // asynchronous which may actually be slower\n\n // start workers immediately\n var workers = [];\n for(var i = 0; i < numWorkers; ++i) {\n // FIXME: fix path or use blob URLs\n workers[i] = new Worker(workerScript);\n }\n var running = numWorkers;\n\n // listen for requests from workers and assign ranges to find prime\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].addEventListener('message', workerMessage);\n }\n\n /* Note: The distribution of random numbers is unknown. Therefore, each\n web worker is continuously allocated a range of numbers to check for a\n random number until one is found.\n\n Every 30 numbers will be checked just 8 times, because prime numbers\n have the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1 (there are 8 values of i for this)\n\n Therefore, if we want a web worker to run N checks before asking for\n a new range of numbers, each range must contain N*30/8 numbers.\n\n For 100 checks (workLoad), this is a range of 375. */\n\n var found = false;\n function workerMessage(e) {\n // ignore message, prime already found\n if(found) {\n return;\n }\n\n --running;\n var data = e.data;\n if(data.found) {\n // terminate all workers\n for(var i = 0; i < workers.length; ++i) {\n workers[i].terminate();\n }\n found = true;\n return callback(null, new BigInteger(data.prime, 16));\n }\n\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n\n // assign new range to check\n var hex = num.toString(16);\n\n // start prime search\n e.target.postMessage({\n hex: hex,\n workLoad: workLoad\n });\n\n num.dAddOffset(range, 0);\n }\n }\n}\n\n/**\n * Generates a random number using the given number of bits and RNG.\n *\n * @param bits the number of bits for the number.\n * @param rng the random number generator to use.\n *\n * @return the random number.\n */\nfunction generateRandom(bits, rng) {\n var num = new BigInteger(bits, rng);\n // force MSB set\n var bits1 = bits - 1;\n if(!num.testBit(bits1)) {\n num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num);\n }\n // align number on 30k+1 boundary\n num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0);\n return num;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n})();\n","/**\n * A javascript implementation of a cryptographically-secure\n * Pseudo Random Number Generator (PRNG). The Fortuna algorithm is followed\n * here though the use of SHA-256 is not enforced; when generating an\n * a PRNG context, the hashing algorithm and block cipher used for\n * the generator are specified via a plugin.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar _crypto = null;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n !process.versions['node-webkit']) {\n _crypto = require('crypto');\n}\n\n/* PRNG API */\nvar prng = module.exports = forge.prng = forge.prng || {};\n\n/**\n * Creates a new PRNG context.\n *\n * A PRNG plugin must be passed in that will provide:\n *\n * 1. A function that initializes the key and seed of a PRNG context. It\n * will be given a 16 byte key and a 16 byte seed. Any key expansion\n * or transformation of the seed from a byte string into an array of\n * integers (or similar) should be performed.\n * 2. The cryptographic function used by the generator. It takes a key and\n * a seed.\n * 3. A seed increment function. It takes the seed and returns seed + 1.\n * 4. An api to create a message digest.\n *\n * For an example, see random.js.\n *\n * @param plugin the PRNG plugin to use.\n */\nprng.create = function(plugin) {\n var ctx = {\n plugin: plugin,\n key: null,\n seed: null,\n time: null,\n // number of reseeds so far\n reseeds: 0,\n // amount of data generated so far\n generated: 0,\n // no initial key bytes\n keyBytes: ''\n };\n\n // create 32 entropy pools (each is a message digest)\n var md = plugin.md;\n var pools = new Array(32);\n for(var i = 0; i < 32; ++i) {\n pools[i] = md.create();\n }\n ctx.pools = pools;\n\n // entropy pools are written to cyclically, starting at index 0\n ctx.pool = 0;\n\n /**\n * Generates random bytes. The bytes may be generated synchronously or\n * asynchronously. Web workers must use the asynchronous interface or\n * else the behavior is undefined.\n *\n * @param count the number of random bytes to generate.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return count random bytes as a string.\n */\n ctx.generate = function(count, callback) {\n // do synchronously\n if(!callback) {\n return ctx.generateSync(count);\n }\n\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n var b = forge.util.createBuffer();\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generate` call\n ctx.key = null;\n\n generate();\n\n function generate(err) {\n if(err) {\n return callback(err);\n }\n\n // sufficient bytes generated\n if(b.length() >= count) {\n return callback(null, b.getBytes(count));\n }\n\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n // prevent stack overflow\n return forge.util.nextTick(function() {\n _reseed(generate);\n });\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n\n forge.util.setImmediate(generate);\n }\n };\n\n /**\n * Generates random bytes synchronously.\n *\n * @param count the number of random bytes to generate.\n *\n * @return count random bytes as a string.\n */\n ctx.generateSync = function(count) {\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generateSync` call\n ctx.key = null;\n\n var b = forge.util.createBuffer();\n while(b.length() < count) {\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n _reseedSync();\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n }\n\n return b.getBytes(count);\n };\n\n /**\n * Private function that asynchronously reseeds a generator.\n *\n * @param callback(err) called once the operation completes.\n */\n function _reseed(callback) {\n if(ctx.pools[0].messageLength >= 32) {\n _seed();\n return callback();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.seedFile(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n ctx.collect(bytes);\n _seed();\n callback();\n });\n }\n\n /**\n * Private function that synchronously reseeds a generator.\n */\n function _reseedSync() {\n if(ctx.pools[0].messageLength >= 32) {\n return _seed();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.collect(ctx.seedFileSync(needed));\n _seed();\n }\n\n /**\n * Private function that seeds a generator once enough bytes are available.\n */\n function _seed() {\n // update reseed count\n ctx.reseeds = (ctx.reseeds === 0xffffffff) ? 0 : ctx.reseeds + 1;\n\n // goal is to update `key` via:\n // key = hash(key + s)\n // where 's' is all collected entropy from selected pools, then...\n\n // create a plugin-based message digest\n var md = ctx.plugin.md.create();\n\n // consume current key bytes\n md.update(ctx.keyBytes);\n\n // digest the entropy of pools whose index k meet the\n // condition 'n mod 2^k == 0' where n is the number of reseeds\n var _2powK = 1;\n for(var k = 0; k < 32; ++k) {\n if(ctx.reseeds % _2powK === 0) {\n md.update(ctx.pools[k].digest().getBytes());\n ctx.pools[k].start();\n }\n _2powK = _2powK << 1;\n }\n\n // get digest for key bytes\n ctx.keyBytes = md.digest().getBytes();\n\n // paranoid deviation from Fortuna:\n // update `seed` via `seed = hash(key)`\n // instead of initializing to zero once and only\n // ever incrementing it\n md.start();\n md.update(ctx.keyBytes);\n var seedBytes = md.digest().getBytes();\n\n // update state\n ctx.key = ctx.plugin.formatKey(ctx.keyBytes);\n ctx.seed = ctx.plugin.formatSeed(seedBytes);\n ctx.generated = 0;\n }\n\n /**\n * The built-in default seedFile. This seedFile is used when entropy\n * is needed immediately.\n *\n * @param needed the number of bytes that are needed.\n *\n * @return the random bytes.\n */\n function defaultSeedFile(needed) {\n // use window.crypto.getRandomValues strong source of entropy if available\n var getRandomValues = null;\n var globalScope = forge.util.globalScope;\n var _crypto = globalScope.crypto || globalScope.msCrypto;\n if(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n }\n\n var b = forge.util.createBuffer();\n if(getRandomValues) {\n while(b.length() < needed) {\n // max byte length is 65536 before QuotaExceededError is thrown\n // http://www.w3.org/TR/WebCryptoAPI/#RandomSource-method-getRandomValues\n var count = Math.max(1, Math.min(needed - b.length(), 65536) / 4);\n var entropy = new Uint32Array(Math.floor(count));\n try {\n getRandomValues(entropy);\n for(var i = 0; i < entropy.length; ++i) {\n b.putInt32(entropy[i]);\n }\n } catch(e) {\n /* only ignore QuotaExceededError */\n if(!(typeof QuotaExceededError !== 'undefined' &&\n e instanceof QuotaExceededError)) {\n throw e;\n }\n }\n }\n }\n\n // be sad and add some weak random data\n if(b.length() < needed) {\n /* Draws from Park-Miller \"minimal standard\" 31 bit PRNG,\n implemented with David G. Carta's optimization: with 32 bit math\n and without division (Public Domain). */\n var hi, lo, next;\n var seed = Math.floor(Math.random() * 0x010000);\n while(b.length() < needed) {\n lo = 16807 * (seed & 0xFFFF);\n hi = 16807 * (seed >> 16);\n lo += (hi & 0x7FFF) << 16;\n lo += hi >> 15;\n lo = (lo & 0x7FFFFFFF) + (lo >> 31);\n seed = lo & 0xFFFFFFFF;\n\n // consume lower 3 bytes of seed\n for(var i = 0; i < 3; ++i) {\n // throw in more pseudo random\n next = seed >>> (i << 3);\n next ^= Math.floor(Math.random() * 0x0100);\n b.putByte(next & 0xFF);\n }\n }\n }\n\n return b.getBytes(needed);\n }\n // initialize seed file APIs\n if(_crypto) {\n // use nodejs async API\n ctx.seedFile = function(needed, callback) {\n _crypto.randomBytes(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n callback(null, bytes.toString());\n });\n };\n // use nodejs sync API\n ctx.seedFileSync = function(needed) {\n return _crypto.randomBytes(needed).toString();\n };\n } else {\n ctx.seedFile = function(needed, callback) {\n try {\n callback(null, defaultSeedFile(needed));\n } catch(e) {\n callback(e);\n }\n };\n ctx.seedFileSync = defaultSeedFile;\n }\n\n /**\n * Adds entropy to a prng ctx's accumulator.\n *\n * @param bytes the bytes of entropy as a string.\n */\n ctx.collect = function(bytes) {\n // iterate over pools distributing entropy cyclically\n var count = bytes.length;\n for(var i = 0; i < count; ++i) {\n ctx.pools[ctx.pool].update(bytes.substr(i, 1));\n ctx.pool = (ctx.pool === 31) ? 0 : ctx.pool + 1;\n }\n };\n\n /**\n * Collects an integer of n bits.\n *\n * @param i the integer entropy.\n * @param n the number of bits in the integer.\n */\n ctx.collectInt = function(i, n) {\n var bytes = '';\n for(var x = 0; x < n; x += 8) {\n bytes += String.fromCharCode((i >> x) & 0xFF);\n }\n ctx.collect(bytes);\n };\n\n /**\n * Registers a Web Worker to receive immediate entropy from the main thread.\n * This method is required until Web Workers can access the native crypto\n * API. This method should be called twice for each created worker, once in\n * the main thread, and once in the worker itself.\n *\n * @param worker the worker to register.\n */\n ctx.registerWorker = function(worker) {\n // worker receives random bytes\n if(worker === self) {\n ctx.seedFile = function(needed, callback) {\n function listener(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n self.removeEventListener('message', listener);\n callback(data.forge.prng.err, data.forge.prng.bytes);\n }\n }\n self.addEventListener('message', listener);\n self.postMessage({forge: {prng: {needed: needed}}});\n };\n } else {\n // main thread sends random bytes upon request\n var listener = function(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n ctx.seedFile(data.forge.prng.needed, function(err, bytes) {\n worker.postMessage({forge: {prng: {err: err, bytes: bytes}}});\n });\n }\n };\n // TODO: do we need to remove the event listener when the worker dies?\n worker.addEventListener('message', listener);\n }\n };\n\n return ctx;\n};\n","/**\n * Javascript implementation of PKCS#1 PSS signature padding.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n */\nvar forge = require('./forge');\nrequire('./random');\nrequire('./util');\n\n// shortcut for PSS API\nvar pss = module.exports = forge.pss = forge.pss || {};\n\n/**\n * Creates a PSS signature scheme object.\n *\n * There are several ways to provide a salt for encoding:\n *\n * 1. Specify the saltLength only and the built-in PRNG will generate it.\n * 2. Specify the saltLength and a custom PRNG with 'getBytesSync' defined that\n * will be used.\n * 3. Specify the salt itself as a forge.util.ByteBuffer.\n *\n * @param options the options to use:\n * md the message digest object to use, a forge md instance.\n * mgf the mask generation function to use, a forge mgf instance.\n * [saltLength] the length of the salt in octets.\n * [prng] the pseudo-random number generator to use to produce a salt.\n * [salt] the salt to use when encoding.\n *\n * @return a signature scheme object.\n */\npss.create = function(options) {\n // backwards compatibility w/legacy args: hash, mgf, sLen\n if(arguments.length === 3) {\n options = {\n md: arguments[0],\n mgf: arguments[1],\n saltLength: arguments[2]\n };\n }\n\n var hash = options.md;\n var mgf = options.mgf;\n var hLen = hash.digestLength;\n\n var salt_ = options.salt || null;\n if(typeof salt_ === 'string') {\n // assume binary-encoded string\n salt_ = forge.util.createBuffer(salt_);\n }\n\n var sLen;\n if('saltLength' in options) {\n sLen = options.saltLength;\n } else if(salt_ !== null) {\n sLen = salt_.length();\n } else {\n throw new Error('Salt length not specified or specific salt not given.');\n }\n\n if(salt_ !== null && salt_.length() !== sLen) {\n throw new Error('Given salt length does not match length of given salt.');\n }\n\n var prng = options.prng || forge.random;\n\n var pssobj = {};\n\n /**\n * Encodes a PSS signature.\n *\n * This function implements EMSA-PSS-ENCODE as per RFC 3447, section 9.1.1.\n *\n * @param md the message digest object with the hash to sign.\n * @param modsBits the length of the RSA modulus in bits.\n *\n * @return the encoded message as a binary-encoded string of length\n * ceil((modBits - 1) / 8).\n */\n pssobj.encode = function(md, modBits) {\n var i;\n var emBits = modBits - 1;\n var emLen = Math.ceil(emBits / 8);\n\n /* 2. Let mHash = Hash(M), an octet string of length hLen. */\n var mHash = md.digest().getBytes();\n\n /* 3. If emLen < hLen + sLen + 2, output \"encoding error\" and stop. */\n if(emLen < hLen + sLen + 2) {\n throw new Error('Message is too long to encrypt.');\n }\n\n /* 4. Generate a random octet string salt of length sLen; if sLen = 0,\n * then salt is the empty string. */\n var salt;\n if(salt_ === null) {\n salt = prng.getBytesSync(sLen);\n } else {\n salt = salt_.bytes();\n }\n\n /* 5. Let M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt; */\n var m_ = new forge.util.ByteBuffer();\n m_.fillWithByte(0, 8);\n m_.putBytes(mHash);\n m_.putBytes(salt);\n\n /* 6. Let H = Hash(M'), an octet string of length hLen. */\n hash.start();\n hash.update(m_.getBytes());\n var h = hash.digest().getBytes();\n\n /* 7. Generate an octet string PS consisting of emLen - sLen - hLen - 2\n * zero octets. The length of PS may be 0. */\n var ps = new forge.util.ByteBuffer();\n ps.fillWithByte(0, emLen - sLen - hLen - 2);\n\n /* 8. Let DB = PS || 0x01 || salt; DB is an octet string of length\n * emLen - hLen - 1. */\n ps.putByte(0x01);\n ps.putBytes(salt);\n var db = ps.getBytes();\n\n /* 9. Let dbMask = MGF(H, emLen - hLen - 1). */\n var maskLen = emLen - hLen - 1;\n var dbMask = mgf.generate(h, maskLen);\n\n /* 10. Let maskedDB = DB \\xor dbMask. */\n var maskedDB = '';\n for(i = 0; i < maskLen; i++) {\n maskedDB += String.fromCharCode(db.charCodeAt(i) ^ dbMask.charCodeAt(i));\n }\n\n /* 11. Set the leftmost 8emLen - emBits bits of the leftmost octet in\n * maskedDB to zero. */\n var mask = (0xFF00 >> (8 * emLen - emBits)) & 0xFF;\n maskedDB = String.fromCharCode(maskedDB.charCodeAt(0) & ~mask) +\n maskedDB.substr(1);\n\n /* 12. Let EM = maskedDB || H || 0xbc.\n * 13. Output EM. */\n return maskedDB + h + String.fromCharCode(0xbc);\n };\n\n /**\n * Verifies a PSS signature.\n *\n * This function implements EMSA-PSS-VERIFY as per RFC 3447, section 9.1.2.\n *\n * @param mHash the message digest hash, as a binary-encoded string, to\n * compare against the signature.\n * @param em the encoded message, as a binary-encoded string\n * (RSA decryption result).\n * @param modsBits the length of the RSA modulus in bits.\n *\n * @return true if the signature was verified, false if not.\n */\n pssobj.verify = function(mHash, em, modBits) {\n var i;\n var emBits = modBits - 1;\n var emLen = Math.ceil(emBits / 8);\n\n /* c. Convert the message representative m to an encoded message EM\n * of length emLen = ceil((modBits - 1) / 8) octets, where modBits\n * is the length in bits of the RSA modulus n */\n em = em.substr(-emLen);\n\n /* 3. If emLen < hLen + sLen + 2, output \"inconsistent\" and stop. */\n if(emLen < hLen + sLen + 2) {\n throw new Error('Inconsistent parameters to PSS signature verification.');\n }\n\n /* 4. If the rightmost octet of EM does not have hexadecimal value\n * 0xbc, output \"inconsistent\" and stop. */\n if(em.charCodeAt(emLen - 1) !== 0xbc) {\n throw new Error('Encoded message does not end in 0xBC.');\n }\n\n /* 5. Let maskedDB be the leftmost emLen - hLen - 1 octets of EM, and\n * let H be the next hLen octets. */\n var maskLen = emLen - hLen - 1;\n var maskedDB = em.substr(0, maskLen);\n var h = em.substr(maskLen, hLen);\n\n /* 6. If the leftmost 8emLen - emBits bits of the leftmost octet in\n * maskedDB are not all equal to zero, output \"inconsistent\" and stop. */\n var mask = (0xFF00 >> (8 * emLen - emBits)) & 0xFF;\n if((maskedDB.charCodeAt(0) & mask) !== 0) {\n throw new Error('Bits beyond keysize not zero as expected.');\n }\n\n /* 7. Let dbMask = MGF(H, emLen - hLen - 1). */\n var dbMask = mgf.generate(h, maskLen);\n\n /* 8. Let DB = maskedDB \\xor dbMask. */\n var db = '';\n for(i = 0; i < maskLen; i++) {\n db += String.fromCharCode(maskedDB.charCodeAt(i) ^ dbMask.charCodeAt(i));\n }\n\n /* 9. Set the leftmost 8emLen - emBits bits of the leftmost octet\n * in DB to zero. */\n db = String.fromCharCode(db.charCodeAt(0) & ~mask) + db.substr(1);\n\n /* 10. If the emLen - hLen - sLen - 2 leftmost octets of DB are not zero\n * or if the octet at position emLen - hLen - sLen - 1 (the leftmost\n * position is \"position 1\") does not have hexadecimal value 0x01,\n * output \"inconsistent\" and stop. */\n var checkLen = emLen - hLen - sLen - 2;\n for(i = 0; i < checkLen; i++) {\n if(db.charCodeAt(i) !== 0x00) {\n throw new Error('Leftmost octets not zero as expected');\n }\n }\n\n if(db.charCodeAt(checkLen) !== 0x01) {\n throw new Error('Inconsistent PSS signature, 0x01 marker not found');\n }\n\n /* 11. Let salt be the last sLen octets of DB. */\n var salt = db.substr(-sLen);\n\n /* 12. Let M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt */\n var m_ = new forge.util.ByteBuffer();\n m_.fillWithByte(0, 8);\n m_.putBytes(mHash);\n m_.putBytes(salt);\n\n /* 13. Let H' = Hash(M'), an octet string of length hLen. */\n hash.start();\n hash.update(m_.getBytes());\n var h_ = hash.digest().getBytes();\n\n /* 14. If H = H', output \"consistent.\" Otherwise, output \"inconsistent.\" */\n return h === h_;\n };\n\n return pssobj;\n};\n","/**\n * An API for getting cryptographically-secure random bytes. The bytes are\n * generated using the Fortuna algorithm devised by Bruce Schneier and\n * Niels Ferguson.\n *\n * Getting strong random bytes is not yet easy to do in javascript. The only\n * truish random entropy that can be collected is from the mouse, keyboard, or\n * from timing with respect to page loads, etc. This generator makes a poor\n * attempt at providing random bytes when those sources haven't yet provided\n * enough entropy to initially seed or to reseed the PRNG.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./sha256');\nrequire('./prng');\nrequire('./util');\n\n(function() {\n\n// forge.random already defined\nif(forge.random && forge.random.getBytes) {\n module.exports = forge.random;\n return;\n}\n\n(function(jQuery) {\n\n// the default prng plugin, uses AES-128\nvar prng_aes = {};\nvar _prng_aes_output = new Array(4);\nvar _prng_aes_buffer = forge.util.createBuffer();\nprng_aes.formatKey = function(key) {\n // convert the key into 32-bit integers\n var tmp = forge.util.createBuffer(key);\n key = new Array(4);\n key[0] = tmp.getInt32();\n key[1] = tmp.getInt32();\n key[2] = tmp.getInt32();\n key[3] = tmp.getInt32();\n\n // return the expanded key\n return forge.aes._expandKey(key, false);\n};\nprng_aes.formatSeed = function(seed) {\n // convert seed into 32-bit integers\n var tmp = forge.util.createBuffer(seed);\n seed = new Array(4);\n seed[0] = tmp.getInt32();\n seed[1] = tmp.getInt32();\n seed[2] = tmp.getInt32();\n seed[3] = tmp.getInt32();\n return seed;\n};\nprng_aes.cipher = function(key, seed) {\n forge.aes._updateBlock(key, seed, _prng_aes_output, false);\n _prng_aes_buffer.putInt32(_prng_aes_output[0]);\n _prng_aes_buffer.putInt32(_prng_aes_output[1]);\n _prng_aes_buffer.putInt32(_prng_aes_output[2]);\n _prng_aes_buffer.putInt32(_prng_aes_output[3]);\n return _prng_aes_buffer.getBytes();\n};\nprng_aes.increment = function(seed) {\n // FIXME: do we care about carry or signed issues?\n ++seed[3];\n return seed;\n};\nprng_aes.md = forge.md.sha256;\n\n/**\n * Creates a new PRNG.\n */\nfunction spawnPrng() {\n var ctx = forge.prng.create(prng_aes);\n\n /**\n * Gets random bytes. If a native secure crypto API is unavailable, this\n * method tries to make the bytes more unpredictable by drawing from data that\n * can be collected from the user of the browser, eg: mouse movement.\n *\n * If a callback is given, this method will be called asynchronously.\n *\n * @param count the number of random bytes to get.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytes = function(count, callback) {\n return ctx.generate(count, callback);\n };\n\n /**\n * Gets random bytes asynchronously. If a native secure crypto API is\n * unavailable, this method tries to make the bytes more unpredictable by\n * drawing from data that can be collected from the user of the browser,\n * eg: mouse movement.\n *\n * @param count the number of random bytes to get.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytesSync = function(count) {\n return ctx.generate(count);\n };\n\n return ctx;\n}\n\n// create default prng context\nvar _ctx = spawnPrng();\n\n// add other sources of entropy only if window.crypto.getRandomValues is not\n// available -- otherwise this source will be automatically used by the prng\nvar getRandomValues = null;\nvar globalScope = forge.util.globalScope;\nvar _crypto = globalScope.crypto || globalScope.msCrypto;\nif(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n}\n\nif(forge.options.usePureJavaScript ||\n (!forge.util.isNodejs && !getRandomValues)) {\n // if this is a web worker, do not use weak entropy, instead register to\n // receive strong entropy asynchronously from the main thread\n if(typeof window === 'undefined' || window.document === undefined) {\n // FIXME:\n }\n\n // get load time entropy\n _ctx.collectInt(+new Date(), 32);\n\n // add some entropy from navigator object\n if(typeof(navigator) !== 'undefined') {\n var _navBytes = '';\n for(var key in navigator) {\n try {\n if(typeof(navigator[key]) == 'string') {\n _navBytes += navigator[key];\n }\n } catch(e) {\n /* Some navigator keys might not be accessible, e.g. the geolocation\n attribute throws an exception if touched in Mozilla chrome://\n context.\n\n Silently ignore this and just don't use this as a source of\n entropy. */\n }\n }\n _ctx.collect(_navBytes);\n _navBytes = null;\n }\n\n // add mouse and keyboard collectors if jquery is available\n if(jQuery) {\n // set up mouse entropy capture\n jQuery().mousemove(function(e) {\n // add mouse coords\n _ctx.collectInt(e.clientX, 16);\n _ctx.collectInt(e.clientY, 16);\n });\n\n // set up keyboard entropy capture\n jQuery().keypress(function(e) {\n _ctx.collectInt(e.charCode, 8);\n });\n }\n}\n\n/* Random API */\nif(!forge.random) {\n forge.random = _ctx;\n} else {\n // extend forge.random with _ctx\n for(var key in _ctx) {\n forge.random[key] = _ctx[key];\n }\n}\n\n// expose spawn PRNG\nforge.random.createInstance = spawnPrng;\n\nmodule.exports = forge.random;\n\n})(typeof(jQuery) !== 'undefined' ? jQuery : null);\n\n})();\n","/**\n * RC2 implementation.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n *\n * Information on the RC2 cipher is available from RFC #2268,\n * http://www.ietf.org/rfc/rfc2268.txt\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar piTable = [\n 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,\n 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,\n 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,\n 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,\n 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,\n 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,\n 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,\n 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,\n 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,\n 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,\n 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,\n 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,\n 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,\n 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,\n 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,\n 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad\n];\n\nvar s = [1, 2, 3, 5];\n\n/**\n * Rotate a word left by given number of bits.\n *\n * Bits that are shifted out on the left are put back in on the right\n * hand side.\n *\n * @param word The word to shift left.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar rol = function(word, bits) {\n return ((word << bits) & 0xffff) | ((word & 0xffff) >> (16 - bits));\n};\n\n/**\n * Rotate a word right by given number of bits.\n *\n * Bits that are shifted out on the right are put back in on the left\n * hand side.\n *\n * @param word The word to shift right.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar ror = function(word, bits) {\n return ((word & 0xffff) >> bits) | ((word << (16 - bits)) & 0xffff);\n};\n\n/* RC2 API */\nmodule.exports = forge.rc2 = forge.rc2 || {};\n\n/**\n * Perform RC2 key expansion as per RFC #2268, section 2.\n *\n * @param key variable-length user key (between 1 and 128 bytes)\n * @param effKeyBits number of effective key bits (default: 128)\n * @return the expanded RC2 key (ByteBuffer of 128 bytes)\n */\nforge.rc2.expandKey = function(key, effKeyBits) {\n if(typeof key === 'string') {\n key = forge.util.createBuffer(key);\n }\n effKeyBits = effKeyBits || 128;\n\n /* introduce variables that match the names used in RFC #2268 */\n var L = key;\n var T = key.length();\n var T1 = effKeyBits;\n var T8 = Math.ceil(T1 / 8);\n var TM = 0xff >> (T1 & 0x07);\n var i;\n\n for(i = T; i < 128; i++) {\n L.putByte(piTable[(L.at(i - 1) + L.at(i - T)) & 0xff]);\n }\n\n L.setAt(128 - T8, piTable[L.at(128 - T8) & TM]);\n\n for(i = 127 - T8; i >= 0; i--) {\n L.setAt(i, piTable[L.at(i + 1) ^ L.at(i + T8)]);\n }\n\n return L;\n};\n\n/**\n * Creates a RC2 cipher object.\n *\n * @param key the symmetric key to use (as base for key generation).\n * @param bits the number of effective key bits.\n * @param encrypt false for decryption, true for encryption.\n *\n * @return the cipher.\n */\nvar createCipher = function(key, bits, encrypt) {\n var _finish = false, _input = null, _output = null, _iv = null;\n var mixRound, mashRound;\n var i, j, K = [];\n\n /* Expand key and fill into K[] Array */\n key = forge.rc2.expandKey(key, bits);\n for(i = 0; i < 64; i++) {\n K.push(key.getInt16Le());\n }\n\n if(encrypt) {\n /**\n * Perform one mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n R[i] = rol(R[i], s[i]);\n j++;\n }\n };\n\n /**\n * Perform one mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[R[(i + 3) % 4] & 63];\n }\n };\n } else {\n /**\n * Perform one r-mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] = ror(R[i], s[i]);\n R[i] -= K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n j--;\n }\n };\n\n /**\n * Perform one r-mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] -= K[R[(i + 3) % 4] & 63];\n }\n };\n }\n\n /**\n * Run the specified cipher execution plan.\n *\n * This function takes four words from the input buffer, applies the IV on\n * it (if requested) and runs the provided execution plan.\n *\n * The plan must be put together in form of a array of arrays. Where the\n * outer one is simply a list of steps to perform and the inner one needs\n * to have two elements: the first one telling how many rounds to perform,\n * the second one telling what to do (i.e. the function to call).\n *\n * @param {Array} plan The plan to execute.\n */\n var runPlan = function(plan) {\n var R = [];\n\n /* Get data from input buffer and fill the four words into R */\n for(i = 0; i < 4; i++) {\n var val = _input.getInt16Le();\n\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting, apply the IV first. */\n val ^= _iv.getInt16Le();\n } else {\n /* We're decryption, keep cipher text for next block. */\n _iv.putInt16Le(val);\n }\n }\n\n R.push(val & 0xffff);\n }\n\n /* Reset global \"j\" variable as per spec. */\n j = encrypt ? 0 : 63;\n\n /* Run execution plan. */\n for(var ptr = 0; ptr < plan.length; ptr++) {\n for(var ctr = 0; ctr < plan[ptr][0]; ctr++) {\n plan[ptr][1](R);\n }\n }\n\n /* Write back result to output buffer. */\n for(i = 0; i < 4; i++) {\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting in CBC-mode, feed back encrypted bytes into\n IV buffer to carry it forward to next block. */\n _iv.putInt16Le(R[i]);\n } else {\n R[i] ^= _iv.getInt16Le();\n }\n }\n\n _output.putInt16Le(R[i]);\n }\n };\n\n /* Create cipher object */\n var cipher = null;\n cipher = {\n /**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * To use the cipher in CBC mode, iv may be given either as a string\n * of bytes, or as a byte buffer. For ECB mode, give null as iv.\n *\n * @param iv the initialization vector to use, null for ECB mode.\n * @param output the output the buffer to write to, null to create one.\n */\n start: function(iv, output) {\n if(iv) {\n /* CBC mode */\n if(typeof iv === 'string') {\n iv = forge.util.createBuffer(iv);\n }\n }\n\n _finish = false;\n _input = forge.util.createBuffer();\n _output = output || new forge.util.createBuffer();\n _iv = iv;\n\n cipher.output = _output;\n },\n\n /**\n * Updates the next block.\n *\n * @param input the buffer to read from.\n */\n update: function(input) {\n if(!_finish) {\n // not finishing, so fill the input buffer with more input\n _input.putBuffer(input);\n }\n\n while(_input.length() >= 8) {\n runPlan([\n [ 5, mixRound ],\n [ 1, mashRound ],\n [ 6, mixRound ],\n [ 1, mashRound ],\n [ 5, mixRound ]\n ]);\n }\n },\n\n /**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use, null for PKCS#7 padding,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\n finish: function(pad) {\n var rval = true;\n\n if(encrypt) {\n if(pad) {\n rval = pad(8, _input, !encrypt);\n } else {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (_input.length() === 8) ? 8 : (8 - _input.length());\n _input.fillWithByte(padding, padding);\n }\n }\n\n if(rval) {\n // do final update\n _finish = true;\n cipher.update();\n }\n\n if(!encrypt) {\n // check for error: input data not a multiple of block size\n rval = (_input.length() === 0);\n if(rval) {\n if(pad) {\n rval = pad(8, _output, !encrypt);\n } else {\n // ensure padding byte count is valid\n var len = _output.length();\n var count = _output.at(len - 1);\n\n if(count > len) {\n rval = false;\n } else {\n // trim off padding bytes\n _output.truncate(count);\n }\n }\n }\n }\n\n return rval;\n }\n };\n\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startEncrypting = function(key, iv, output) {\n var cipher = forge.rc2.createEncryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start encrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createEncryptionCipher = function(key, bits) {\n return createCipher(key, bits, true);\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startDecrypting = function(key, iv, output) {\n var cipher = forge.rc2.createDecryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start decrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createDecryptionCipher = function(key, bits) {\n return createCipher(key, bits, false);\n};\n","/**\n * Javascript implementation of basic RSA algorithms.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The only algorithm currently supported for PKI is RSA.\n *\n * An RSA key is often stored in ASN.1 DER format. The SubjectPublicKeyInfo\n * ASN.1 structure is composed of an algorithm of type AlgorithmIdentifier\n * and a subjectPublicKey of type bit string.\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of RSA, there aren't any.\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * For an RSA public key, the subjectPublicKey is:\n *\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n *\n * PrivateKeyInfo ::= SEQUENCE {\n * version Version,\n * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,\n * privateKey PrivateKey,\n * attributes [0] IMPLICIT Attributes OPTIONAL\n * }\n *\n * Version ::= INTEGER\n * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier\n * PrivateKey ::= OCTET STRING\n * Attributes ::= SET OF Attribute\n *\n * An RSA private key as the following structure:\n *\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p-1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER -- (inverse of q) mod p\n * }\n *\n * Version ::= INTEGER\n *\n * The OID for the RSA key algorithm is: 1.2.840.113549.1.1.1\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./jsbn');\nrequire('./oids');\nrequire('./pkcs1');\nrequire('./prime');\nrequire('./random');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\nvar _crypto = forge.util.isNodejs ? require('crypto') : null;\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for util API\nvar util = forge.util;\n\n/*\n * RSA encryption and decryption, see RFC 2313.\n */\nforge.pki = forge.pki || {};\nmodule.exports = forge.pki.rsa = forge.rsa = forge.rsa || {};\nvar pki = forge.pki;\n\n// for finding primes, which are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\n\n// validator for a PrivateKeyInfo structure\nvar privateKeyValidator = {\n // PrivateKeyInfo\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'PrivateKeyInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // privateKeyAlgorithm\n name: 'PrivateKeyInfo.privateKeyAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'privateKeyOid'\n }]\n }, {\n // PrivateKey\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'privateKey'\n }]\n};\n\n// validator for an RSA private key\nvar rsaPrivateKeyValidator = {\n // RSAPrivateKey\n name: 'RSAPrivateKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'RSAPrivateKey.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // modulus (n)\n name: 'RSAPrivateKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPrivateKey.publicExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPublicExponent'\n }, {\n // privateExponent (d)\n name: 'RSAPrivateKey.privateExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrivateExponent'\n }, {\n // prime1 (p)\n name: 'RSAPrivateKey.prime1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime1'\n }, {\n // prime2 (q)\n name: 'RSAPrivateKey.prime2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime2'\n }, {\n // exponent1 (d mod (p-1))\n name: 'RSAPrivateKey.exponent1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent1'\n }, {\n // exponent2 (d mod (q-1))\n name: 'RSAPrivateKey.exponent2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent2'\n }, {\n // coefficient ((inverse of q) mod p)\n name: 'RSAPrivateKey.coefficient',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyCoefficient'\n }]\n};\n\n// validator for an RSA public key\nvar rsaPublicKeyValidator = {\n // RSAPublicKey\n name: 'RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // modulus (n)\n name: 'RSAPublicKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPublicKey.exponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyExponent'\n }]\n};\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator = {\n name: 'SubjectPublicKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'subjectPublicKeyInfo',\n value: [{\n name: 'SubjectPublicKeyInfo.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'publicKeyOid'\n }]\n }, {\n // subjectPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n value: [{\n // RSAPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'rsaPublicKey'\n }]\n }]\n};\n\n// validator for a DigestInfo structure\nvar digestInfoValidator = {\n name: 'DigestInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm.algorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'algorithmIdentifier'\n }, {\n // NULL paramters\n name: 'DigestInfo.DigestAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.NULL,\n // captured only to check existence for md2 and md5\n capture: 'parameters',\n optional: true,\n constructed: false\n }]\n }, {\n // digest\n name: 'DigestInfo.digest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'digest'\n }]\n};\n\n/**\n * Wrap digest in DigestInfo object.\n *\n * This function implements EMSA-PKCS1-v1_5-ENCODE as per RFC 3447.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n *\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * @param md the message digest object with the hash to sign.\n *\n * @return the encoded message (ready for RSA encrytion)\n */\nvar emsaPkcs1v15encode = function(md) {\n // get the oid for the algorithm\n var oid;\n if(md.algorithm in pki.oids) {\n oid = pki.oids[md.algorithm];\n } else {\n var error = new Error('Unknown message digest algorithm.');\n error.algorithm = md.algorithm;\n throw error;\n }\n var oidBytes = asn1.oidToDer(oid).getBytes();\n\n // create the digest info\n var digestInfo = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var digestAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false, oidBytes));\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.NULL, false, ''));\n var digest = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING,\n false, md.digest().getBytes());\n digestInfo.value.push(digestAlgorithm);\n digestInfo.value.push(digest);\n\n // encode digest info\n return asn1.toDer(digestInfo).getBytes();\n};\n\n/**\n * Performs x^c mod n (RSA encryption or decryption operation).\n *\n * @param x the number to raise and mod.\n * @param key the key to use.\n * @param pub true if the key is public, false if private.\n *\n * @return the result of x^c mod n.\n */\nvar _modPow = function(x, key, pub) {\n if(pub) {\n return x.modPow(key.e, key.n);\n }\n\n if(!key.p || !key.q) {\n // allow calculation without CRT params (slow)\n return x.modPow(key.d, key.n);\n }\n\n // pre-compute dP, dQ, and qInv if necessary\n if(!key.dP) {\n key.dP = key.d.mod(key.p.subtract(BigInteger.ONE));\n }\n if(!key.dQ) {\n key.dQ = key.d.mod(key.q.subtract(BigInteger.ONE));\n }\n if(!key.qInv) {\n key.qInv = key.q.modInverse(key.p);\n }\n\n /* Chinese remainder theorem (CRT) states:\n\n Suppose n1, n2, ..., nk are positive integers which are pairwise\n coprime (n1 and n2 have no common factors other than 1). For any\n integers x1, x2, ..., xk there exists an integer x solving the\n system of simultaneous congruences (where ~= means modularly\n congruent so a ~= b mod n means a mod n = b mod n):\n\n x ~= x1 mod n1\n x ~= x2 mod n2\n ...\n x ~= xk mod nk\n\n This system of congruences has a single simultaneous solution x\n between 0 and n - 1. Furthermore, each xk solution and x itself\n is congruent modulo the product n = n1*n2*...*nk.\n So x1 mod n = x2 mod n = xk mod n = x mod n.\n\n The single simultaneous solution x can be solved with the following\n equation:\n\n x = sum(xi*ri*si) mod n where ri = n/ni and si = ri^-1 mod ni.\n\n Where x is less than n, xi = x mod ni.\n\n For RSA we are only concerned with k = 2. The modulus n = pq, where\n p and q are coprime. The RSA decryption algorithm is:\n\n y = x^d mod n\n\n Given the above:\n\n x1 = x^d mod p\n r1 = n/p = q\n s1 = q^-1 mod p\n x2 = x^d mod q\n r2 = n/q = p\n s2 = p^-1 mod q\n\n So y = (x1r1s1 + x2r2s2) mod n\n = ((x^d mod p)q(q^-1 mod p) + (x^d mod q)p(p^-1 mod q)) mod n\n\n According to Fermat's Little Theorem, if the modulus P is prime,\n for any integer A not evenly divisible by P, A^(P-1) ~= 1 mod P.\n Since A is not divisible by P it follows that if:\n N ~= M mod (P - 1), then A^N mod P = A^M mod P. Therefore:\n\n A^N mod P = A^(M mod (P - 1)) mod P. (The latter takes less effort\n to calculate). In order to calculate x^d mod p more quickly the\n exponent d mod (p - 1) is stored in the RSA private key (the same\n is done for x^d mod q). These values are referred to as dP and dQ\n respectively. Therefore we now have:\n\n y = ((x^dP mod p)q(q^-1 mod p) + (x^dQ mod q)p(p^-1 mod q)) mod n\n\n Since we'll be reducing x^dP by modulo p (same for q) we can also\n reduce x by p (and q respectively) before hand. Therefore, let\n\n xp = ((x mod p)^dP mod p), and\n xq = ((x mod q)^dQ mod q), yielding:\n\n y = (xp*q*(q^-1 mod p) + xq*p*(p^-1 mod q)) mod n\n\n This can be further reduced to a simple algorithm that only\n requires 1 inverse (the q inverse is used) to be used and stored.\n The algorithm is called Garner's algorithm. If qInv is the\n inverse of q, we simply calculate:\n\n y = (qInv*(xp - xq) mod p) * q + xq\n\n However, there are two further complications. First, we need to\n ensure that xp > xq to prevent signed BigIntegers from being used\n so we add p until this is true (since we will be mod'ing with\n p anyway). Then, there is a known timing attack on algorithms\n using the CRT. To mitigate this risk, \"cryptographic blinding\"\n should be used. This requires simply generating a random number r\n between 0 and n-1 and its inverse and multiplying x by r^e before\n calculating y and then multiplying y by r^-1 afterwards. Note that\n r must be coprime with n (gcd(r, n) === 1) in order to have an\n inverse.\n */\n\n // cryptographic blinding\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(forge.random.getBytes(key.n.bitLength() / 8)),\n 16);\n } while(r.compareTo(key.n) >= 0 || !r.gcd(key.n).equals(BigInteger.ONE));\n x = x.multiply(r.modPow(key.e, key.n)).mod(key.n);\n\n // calculate xp and xq\n var xp = x.mod(key.p).modPow(key.dP, key.p);\n var xq = x.mod(key.q).modPow(key.dQ, key.q);\n\n // xp must be larger than xq to avoid signed bit usage\n while(xp.compareTo(xq) < 0) {\n xp = xp.add(key.p);\n }\n\n // do last step\n var y = xp.subtract(xq)\n .multiply(key.qInv).mod(key.p)\n .multiply(key.q).add(xq);\n\n // remove effect of random for cryptographic blinding\n y = y.multiply(r.modInverse(key.n)).mod(key.n);\n\n return y;\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'sign' on a private key object or\n * 'encrypt' on a public key object instead.\n *\n * Performs RSA encryption.\n *\n * The parameter bt controls whether to put padding bytes before the\n * message passed in. Set bt to either true or false to disable padding\n * completely (in order to handle e.g. EMSA-PSS encoding seperately before),\n * signaling whether the encryption operation is a public key operation\n * (i.e. encrypting data) or not, i.e. private key operation (data signing).\n *\n * For PKCS#1 v1.5 padding pass in the block type to use, i.e. either 0x01\n * (for signing) or 0x02 (for encryption). The key operation mode (private\n * or public) is derived from this flag in that case).\n *\n * @param m the message to encrypt as a byte string.\n * @param key the RSA key to use.\n * @param bt for PKCS#1 v1.5 padding, the block type to use\n * (0x01 for private key, 0x02 for public),\n * to disable padding: true = public key, false = private key.\n *\n * @return the encrypted bytes as a string.\n */\npki.rsa.encrypt = function(m, key, bt) {\n var pub = bt;\n var eb;\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n if(bt !== false && bt !== true) {\n // legacy, default to PKCS#1 v1.5 padding\n pub = (bt === 0x02);\n eb = _encodePkcs1_v1_5(m, key, bt);\n } else {\n eb = forge.util.createBuffer();\n eb.putBytes(m);\n }\n\n // load encryption block as big integer 'x'\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var x = new BigInteger(eb.toHex(), 16);\n\n // do RSA encryption\n var y = _modPow(x, key, pub);\n\n // convert y into the encrypted data byte string, if y is shorter in\n // bytes than k, then prepend zero bytes to fill up ed\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var yhex = y.toString(16);\n var ed = forge.util.createBuffer();\n var zeros = k - Math.ceil(yhex.length / 2);\n while(zeros > 0) {\n ed.putByte(0x00);\n --zeros;\n }\n ed.putBytes(forge.util.hexToBytes(yhex));\n return ed.getBytes();\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'decrypt' on a private key object or\n * 'verify' on a public key object instead.\n *\n * Performs RSA decryption.\n *\n * The parameter ml controls whether to apply PKCS#1 v1.5 padding\n * or not. Set ml = false to disable padding removal completely\n * (in order to handle e.g. EMSA-PSS later on) and simply pass back\n * the RSA encryption block.\n *\n * @param ed the encrypted data to decrypt in as a byte string.\n * @param key the RSA key to use.\n * @param pub true for a public key operation, false for private.\n * @param ml the message length, if known, false to disable padding.\n *\n * @return the decrypted message as a byte string.\n */\npki.rsa.decrypt = function(ed, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n // error if the length of the encrypted data ED is not k\n if(ed.length !== k) {\n var error = new Error('Encrypted message length is invalid.');\n error.length = ed.length;\n error.expected = k;\n throw error;\n }\n\n // convert encrypted data into a big integer\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var y = new BigInteger(forge.util.createBuffer(ed).toHex(), 16);\n\n // y must be less than the modulus or it wasn't the result of\n // a previous mod operation (encryption) using that modulus\n if(y.compareTo(key.n) >= 0) {\n throw new Error('Encrypted message is invalid.');\n }\n\n // do RSA decryption\n var x = _modPow(y, key, pub);\n\n // create the encryption block, if x is shorter in bytes than k, then\n // prepend zero bytes to fill up eb\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var xhex = x.toString(16);\n var eb = forge.util.createBuffer();\n var zeros = k - Math.ceil(xhex.length / 2);\n while(zeros > 0) {\n eb.putByte(0x00);\n --zeros;\n }\n eb.putBytes(forge.util.hexToBytes(xhex));\n\n if(ml !== false) {\n // legacy, default to PKCS#1 v1.5 padding\n return _decodePkcs1_v1_5(eb.getBytes(), key, pub);\n }\n\n // return message\n return eb.getBytes();\n};\n\n/**\n * Creates an RSA key-pair generation state object. It is used to allow\n * key-generation to be performed in steps. It also allows for a UI to\n * display progress updates.\n *\n * @param bits the size for the private key in bits, defaults to 2048.\n * @param e the public exponent to use, defaults to 65537 (0x10001).\n * @param [options] the options to use.\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n * algorithm the algorithm to use (default: 'PRIMEINC').\n *\n * @return the state object to use to generate the key-pair.\n */\npki.rsa.createKeyPairGenerationState = function(bits, e, options) {\n // TODO: migrate step-based prime generation code to forge.prime\n\n // set default bits\n if(typeof(bits) === 'string') {\n bits = parseInt(bits, 10);\n }\n bits = bits || 2048;\n\n // create prng with api that matches BigInteger secure random\n options = options || {};\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n var algorithm = options.algorithm || 'PRIMEINC';\n\n // create PRIMEINC algorithm state\n var rval;\n if(algorithm === 'PRIMEINC') {\n rval = {\n algorithm: algorithm,\n state: 0,\n bits: bits,\n rng: rng,\n eInt: e || 65537,\n e: new BigInteger(null),\n p: null,\n q: null,\n qBits: bits >> 1,\n pBits: bits - (bits >> 1),\n pqState: 0,\n num: null,\n keys: null\n };\n rval.e.fromInt(rval.eInt);\n } else {\n throw new Error('Invalid key generation algorithm: ' + algorithm);\n }\n\n return rval;\n};\n\n/**\n * Attempts to runs the key-generation algorithm for at most n seconds\n * (approximately) using the given state. When key-generation has completed,\n * the keys will be stored in state.keys.\n *\n * To use this function to update a UI while generating a key or to prevent\n * causing browser lockups/warnings, set \"n\" to a value other than 0. A\n * simple pattern for generating a key and showing a progress indicator is:\n *\n * var state = pki.rsa.createKeyPairGenerationState(2048);\n * var step = function() {\n * // step key-generation, run algorithm for 100 ms, repeat\n * if(!forge.pki.rsa.stepKeyPairGenerationState(state, 100)) {\n * setTimeout(step, 1);\n * } else {\n * // key-generation complete\n * // TODO: turn off progress indicator here\n * // TODO: use the generated key-pair in \"state.keys\"\n * }\n * };\n * // TODO: turn on progress indicator here\n * setTimeout(step, 0);\n *\n * @param state the state to use.\n * @param n the maximum number of milliseconds to run the algorithm for, 0\n * to run the algorithm to completion.\n *\n * @return true if the key-generation completed, false if not.\n */\npki.rsa.stepKeyPairGenerationState = function(state, n) {\n // set default algorithm if not set\n if(!('algorithm' in state)) {\n state.algorithm = 'PRIMEINC';\n }\n\n // TODO: migrate step-based prime generation code to forge.prime\n // TODO: abstract as PRIMEINC algorithm\n\n // do key generation (based on Tom Wu's rsa.js, see jsbn.js license)\n // with some minor optimizations and designed to run in steps\n\n // local state vars\n var THIRTY = new BigInteger(null);\n THIRTY.fromInt(30);\n var deltaIdx = 0;\n var op_or = function(x, y) {return x | y;};\n\n // keep stepping until time limit is reached or done\n var t1 = +new Date();\n var t2;\n var total = 0;\n while(state.keys === null && (n <= 0 || total < n)) {\n // generate p or q\n if(state.state === 0) {\n /* Note: All primes are of the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1, where there are 8 values for i\n\n When we generate a random number, we always align it at 30k + 1. Each\n time the number is determined not to be prime we add to get to the\n next 'i', eg: if the number was at 30k + 1 we add 6. */\n var bits = (state.p === null) ? state.pBits : state.qBits;\n var bits1 = bits - 1;\n\n // get a random number\n if(state.pqState === 0) {\n state.num = new BigInteger(bits, state.rng);\n // force MSB set\n if(!state.num.testBit(bits1)) {\n state.num.bitwiseTo(\n BigInteger.ONE.shiftLeft(bits1), op_or, state.num);\n }\n // align number on 30k+1 boundary\n state.num.dAddOffset(31 - state.num.mod(THIRTY).byteValue(), 0);\n deltaIdx = 0;\n\n ++state.pqState;\n } else if(state.pqState === 1) {\n // try to make the number a prime\n if(state.num.bitLength() > bits) {\n // overflow, try again\n state.pqState = 0;\n // do primality test\n } else if(state.num.isProbablePrime(\n _getMillerRabinTests(state.num.bitLength()))) {\n ++state.pqState;\n } else {\n // get next potential prime\n state.num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n }\n } else if(state.pqState === 2) {\n // ensure number is coprime with e\n state.pqState =\n (state.num.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) === 0) ? 3 : 0;\n } else if(state.pqState === 3) {\n // store p or q\n state.pqState = 0;\n if(state.p === null) {\n state.p = state.num;\n } else {\n state.q = state.num;\n }\n\n // advance state if both p and q are ready\n if(state.p !== null && state.q !== null) {\n ++state.state;\n }\n state.num = null;\n }\n } else if(state.state === 1) {\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n state.num = state.p;\n state.p = state.q;\n state.q = state.num;\n }\n ++state.state;\n } else if(state.state === 2) {\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n ++state.state;\n } else if(state.state === 3) {\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) === 0) {\n // phi and e are coprime, advance\n ++state.state;\n } else {\n // phi and e aren't coprime, so generate a new p and q\n state.p = null;\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 4) {\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n\n // ensure n is right number of bits\n if(state.n.bitLength() === state.bits) {\n // success, advance\n ++state.state;\n } else {\n // failed, get new q\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 5) {\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n }\n\n // update timing\n t2 = +new Date();\n total += t2 - t1;\n t1 = t2;\n }\n\n return state.keys !== null;\n};\n\n/**\n * Generates an RSA public-private key pair in a single call.\n *\n * To generate a key-pair in steps (to allow for progress updates and to\n * prevent blocking or warnings in slow browsers) then use the key-pair\n * generation state functions.\n *\n * To generate a key-pair asynchronously (either through web-workers, if\n * available, or by breaking up the work on the main thread), pass a\n * callback function.\n *\n * @param [bits] the size for the private key in bits, defaults to 2048.\n * @param [e] the public exponent to use, defaults to 65537.\n * @param [options] options for key-pair generation, if given then 'bits'\n * and 'e' must *not* be given:\n * bits the size for the private key in bits, (default: 2048).\n * e the public exponent to use, (default: 65537 (0x10001)).\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\". Disables use of native APIs.\n * algorithm the algorithm to use (default: 'PRIMEINC').\n * @param [callback(err, keypair)] called once the operation completes.\n *\n * @return an object with privateKey and publicKey properties.\n */\npki.rsa.generateKeyPair = function(bits, e, options, callback) {\n // (bits), (options), (callback)\n if(arguments.length === 1) {\n if(typeof bits === 'object') {\n options = bits;\n bits = undefined;\n } else if(typeof bits === 'function') {\n callback = bits;\n bits = undefined;\n }\n } else if(arguments.length === 2) {\n // (bits, e), (bits, options), (bits, callback), (options, callback)\n if(typeof bits === 'number') {\n if(typeof e === 'function') {\n callback = e;\n e = undefined;\n } else if(typeof e !== 'number') {\n options = e;\n e = undefined;\n }\n } else {\n options = bits;\n callback = e;\n bits = undefined;\n e = undefined;\n }\n } else if(arguments.length === 3) {\n // (bits, e, options), (bits, e, callback), (bits, options, callback)\n if(typeof e === 'number') {\n if(typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n } else {\n callback = options;\n options = e;\n e = undefined;\n }\n }\n options = options || {};\n if(bits === undefined) {\n bits = options.bits || 2048;\n }\n if(e === undefined) {\n e = options.e || 0x10001;\n }\n\n // use native code if permitted, available, and parameters are acceptable\n if(!forge.options.usePureJavaScript && !options.prng &&\n bits >= 256 && bits <= 16384 && (e === 0x10001 || e === 3)) {\n if(callback) {\n // try native async\n if(_detectNodeCrypto('generateKeyPair')) {\n return _crypto.generateKeyPair('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n }, function(err, pub, priv) {\n if(err) {\n return callback(err);\n }\n callback(null, {\n privateKey: pki.privateKeyFromPem(priv),\n publicKey: pki.publicKeyFromPem(pub)\n });\n });\n }\n if(_detectSubtleCrypto('generateKey') &&\n _detectSubtleCrypto('exportKey')) {\n // use standard native generateKey\n return util.globalScope.crypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify'])\n .then(function(pair) {\n return util.globalScope.crypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n // avoiding catch(function(err) {...}) to support IE <= 8\n }).then(undefined, function(err) {\n callback(err);\n }).then(function(pkcs8) {\n if(pkcs8) {\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n }\n });\n }\n if(_detectSubtleMsCrypto('generateKey') &&\n _detectSubtleMsCrypto('exportKey')) {\n var genOp = util.globalScope.msCrypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify']);\n genOp.oncomplete = function(e) {\n var pair = e.target.result;\n var exportOp = util.globalScope.msCrypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n exportOp.oncomplete = function(e) {\n var pkcs8 = e.target.result;\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n };\n exportOp.onerror = function(err) {\n callback(err);\n };\n };\n genOp.onerror = function(err) {\n callback(err);\n };\n return;\n }\n } else {\n // try native sync\n if(_detectNodeCrypto('generateKeyPairSync')) {\n var keypair = _crypto.generateKeyPairSync('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n });\n return {\n privateKey: pki.privateKeyFromPem(keypair.privateKey),\n publicKey: pki.publicKeyFromPem(keypair.publicKey)\n };\n }\n }\n }\n\n // use JavaScript implementation\n var state = pki.rsa.createKeyPairGenerationState(bits, e, options);\n if(!callback) {\n pki.rsa.stepKeyPairGenerationState(state, 0);\n return state.keys;\n }\n _generateKeyPair(state, options, callback);\n};\n\n/**\n * Sets an RSA public key from BigIntegers modulus and exponent.\n *\n * @param n the modulus.\n * @param e the exponent.\n *\n * @return the public key.\n */\npki.setRsaPublicKey = pki.rsa.setPublicKey = function(n, e) {\n var key = {\n n: n,\n e: e\n };\n\n /**\n * Encrypts the given data with this public key. Newer applications\n * should use the 'RSA-OAEP' decryption scheme, 'RSAES-PKCS1-V1_5' is for\n * legacy applications.\n *\n * @param data the byte string to encrypt.\n * @param scheme the encryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA encryption,\n * an object with an 'encode' property set to a function\n * with the signature 'function(data, key)' that returns\n * a binary-encoded string representing the encoded data.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the encrypted byte string.\n */\n key.encrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {\n encode: function(m, key, pub) {\n return _encodePkcs1_v1_5(m, key, 0x02).getBytes();\n }\n };\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n encode: function(m, key) {\n return forge.pkcs1.encode_rsa_oaep(key, m, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {encode: function(e) {return e;}};\n } else if(typeof scheme === 'string') {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // do scheme-based encoding then rsa encryption\n var e = scheme.encode(data, key, true);\n return pki.rsa.encrypt(e, key, true);\n };\n\n /**\n * Verifies the given signature against the given digest.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5, in which case once RSA-decrypted, the\n * signature is an OCTET STRING that holds a DigestInfo.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * To perform PSS signature verification, provide an instance\n * of Forge PSS object as the scheme parameter.\n *\n * @param digest the message digest hash to compare against the signature,\n * as a binary-encoded string.\n * @param signature the signature to verify, as a binary-encoded string.\n * @param scheme signature verification scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be expected, but\n * PKCS#1 v1.5 padding will still be used.\n * @param options optional verify options\n * _parseAllDigestBytes testing flag to control parsing of all\n * digest bytes. Unsupported and not for general usage.\n * (default: true)\n *\n * @return true if the signature was verified, false if not.\n */\n key.verify = function(digest, signature, scheme, options) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSASSA-PKCS1-V1_5';\n }\n if(options === undefined) {\n options = {\n _parseAllDigestBytes: true\n };\n }\n if(!('_parseAllDigestBytes' in options)) {\n options._parseAllDigestBytes = true;\n }\n\n if(scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n // d is ASN.1 BER-encoded DigestInfo\n var obj = asn1.fromDer(d, {\n parseAllBytes: options._parseAllDigestBytes\n });\n\n // validate DigestInfo\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, digestInfoValidator, capture, errors)) {\n var error = new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value.');\n error.errors = errors;\n throw error;\n }\n // check hash algorithm identifier\n // see PKCS1-v1-5DigestAlgorithms in RFC 8017\n // FIXME: add support to vaidator for strict value choices\n var oid = asn1.derToOid(capture.algorithmIdentifier);\n if(!(oid === forge.oids.md2 ||\n oid === forge.oids.md5 ||\n oid === forge.oids.sha1 ||\n oid === forge.oids.sha224 ||\n oid === forge.oids.sha256 ||\n oid === forge.oids.sha384 ||\n oid === forge.oids.sha512 ||\n oid === forge.oids['sha512-224'] ||\n oid === forge.oids['sha512-256'])) {\n var error = new Error(\n 'Unknown RSASSA-PKCS1-v1_5 DigestAlgorithm identifier.');\n error.oid = oid;\n throw error;\n }\n\n // special check for md2 and md5 that NULL parameters exist\n if(oid === forge.oids.md2 || oid === forge.oids.md5) {\n if(!('parameters' in capture)) {\n throw new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value. ' +\n 'Missing algorithm identifer NULL parameters.');\n }\n }\n\n // compare the given digest to the decrypted one\n return digest === capture.digest;\n }\n };\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n return digest === d;\n }\n };\n }\n\n // do rsa decryption w/o any decoding, then verify -- which does decoding\n var d = pki.rsa.decrypt(signature, key, true, false);\n return scheme.verify(digest, d, key.n.bitLength());\n };\n\n return key;\n};\n\n/**\n * Sets an RSA private key from BigIntegers modulus, exponent, primes,\n * prime exponents, and modular multiplicative inverse.\n *\n * @param n the modulus.\n * @param e the public exponent.\n * @param d the private exponent ((inverse of e) mod n).\n * @param p the first prime.\n * @param q the second prime.\n * @param dP exponent1 (d mod (p-1)).\n * @param dQ exponent2 (d mod (q-1)).\n * @param qInv ((inverse of q) mod p)\n *\n * @return the private key.\n */\npki.setRsaPrivateKey = pki.rsa.setPrivateKey = function(\n n, e, d, p, q, dP, dQ, qInv) {\n var key = {\n n: n,\n e: e,\n d: d,\n p: p,\n q: q,\n dP: dP,\n dQ: dQ,\n qInv: qInv\n };\n\n /**\n * Decrypts the given data with this private key. The decryption scheme\n * must match the one used to encrypt the data.\n *\n * @param data the byte string to decrypt.\n * @param scheme the decryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA decryption.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the decrypted byte string.\n */\n key.decrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n // do rsa decryption w/o any decoding\n var d = pki.rsa.decrypt(data, key, false, false);\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {decode: _decodePkcs1_v1_5};\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n decode: function(d, key) {\n return forge.pkcs1.decode_rsa_oaep(key, d, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {decode: function(d) {return d;}};\n } else {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // decode according to scheme\n return scheme.decode(d, key, false);\n };\n\n /**\n * Signs the given digest, producing a signature.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5. In order to generate a PSS signature, provide\n * an instance of Forge PSS object as the scheme parameter.\n *\n * @param md the message digest object with the hash to sign.\n * @param scheme the signature scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be used but\n * PKCS#1 v1.5 padding will still be used.\n *\n * @return the signature as a byte string.\n */\n key.sign = function(md, scheme) {\n /* Note: The internal implementation of RSA operations is being\n transitioned away from a PKCS#1 v1.5 hard-coded scheme. Some legacy\n code like the use of an encoding block identifier 'bt' will eventually\n be removed. */\n\n // private key operation\n var bt = false;\n\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n }\n\n if(scheme === undefined || scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {encode: emsaPkcs1v15encode};\n bt = 0x01;\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {encode: function() {return md;}};\n bt = 0x01;\n }\n\n // encode and then encrypt\n var d = scheme.encode(md, key.n.bitLength());\n return pki.rsa.encrypt(d, key, bt);\n };\n\n return key;\n};\n\n/**\n * Wraps an RSAPrivateKey ASN.1 object in an ASN.1 PrivateKeyInfo object.\n *\n * @param rsaKey the ASN.1 RSAPrivateKey.\n *\n * @return the ASN.1 PrivateKeyInfo.\n */\npki.wrapRsaPrivateKey = function(rsaKey) {\n // PrivateKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // privateKeyAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // PrivateKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(rsaKey).getBytes())\n ]);\n};\n\n/**\n * Converts a private key from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a PrivateKeyInfo containing an\n * RSAPrivateKey or an RSAPrivateKey.\n *\n * @return the private key.\n */\npki.privateKeyFromAsn1 = function(obj) {\n // get PrivateKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, privateKeyValidator, capture, errors)) {\n obj = asn1.fromDer(forge.util.createBuffer(capture.privateKey));\n }\n\n // get RSAPrivateKey\n capture = {};\n errors = [];\n if(!asn1.validate(obj, rsaPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read private key. ' +\n 'ASN.1 object does not contain an RSAPrivateKey.');\n error.errors = errors;\n throw error;\n }\n\n // Note: Version is currently ignored.\n // capture.privateKeyVersion\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n, e, d, p, q, dP, dQ, qInv;\n n = forge.util.createBuffer(capture.privateKeyModulus).toHex();\n e = forge.util.createBuffer(capture.privateKeyPublicExponent).toHex();\n d = forge.util.createBuffer(capture.privateKeyPrivateExponent).toHex();\n p = forge.util.createBuffer(capture.privateKeyPrime1).toHex();\n q = forge.util.createBuffer(capture.privateKeyPrime2).toHex();\n dP = forge.util.createBuffer(capture.privateKeyExponent1).toHex();\n dQ = forge.util.createBuffer(capture.privateKeyExponent2).toHex();\n qInv = forge.util.createBuffer(capture.privateKeyCoefficient).toHex();\n\n // set private key\n return pki.setRsaPrivateKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16),\n new BigInteger(d, 16),\n new BigInteger(p, 16),\n new BigInteger(q, 16),\n new BigInteger(dP, 16),\n new BigInteger(dQ, 16),\n new BigInteger(qInv, 16));\n};\n\n/**\n * Converts a private key to an ASN.1 RSAPrivateKey.\n *\n * @param key the private key.\n *\n * @return the ASN.1 representation of an RSAPrivateKey.\n */\npki.privateKeyToAsn1 = pki.privateKeyToRSAPrivateKey = function(key) {\n // RSAPrivateKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0 = only 2 primes, 1 multiple primes)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e)),\n // privateExponent (d)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.d)),\n // privateKeyPrime1 (p)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.p)),\n // privateKeyPrime2 (q)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.q)),\n // privateKeyExponent1 (dP)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dP)),\n // privateKeyExponent2 (dQ)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dQ)),\n // coefficient (qInv)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.qInv))\n ]);\n};\n\n/**\n * Converts a public key from an ASN.1 SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @param obj the asn1 representation of a SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @return the public key.\n */\npki.publicKeyFromAsn1 = function(obj) {\n // get SubjectPublicKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, publicKeyValidator, capture, errors)) {\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n var error = new Error('Cannot read public key. Unknown OID.');\n error.oid = oid;\n throw error;\n }\n obj = capture.rsaPublicKey;\n }\n\n // get RSA params\n errors = [];\n if(!asn1.validate(obj, rsaPublicKeyValidator, capture, errors)) {\n var error = new Error('Cannot read public key. ' +\n 'ASN.1 object does not contain an RSAPublicKey.');\n error.errors = errors;\n throw error;\n }\n\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n = forge.util.createBuffer(capture.publicKeyModulus).toHex();\n var e = forge.util.createBuffer(capture.publicKeyExponent).toHex();\n\n // set public key\n return pki.setRsaPublicKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16));\n};\n\n/**\n * Converts a public key to an ASN.1 SubjectPublicKeyInfo.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a SubjectPublicKeyInfo.\n */\npki.publicKeyToAsn1 = pki.publicKeyToSubjectPublicKeyInfo = function(key) {\n // SubjectPublicKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // subjectPublicKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, [\n pki.publicKeyToRSAPublicKey(key)\n ])\n ]);\n};\n\n/**\n * Converts a public key to an ASN.1 RSAPublicKey.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a RSAPublicKey.\n */\npki.publicKeyToRSAPublicKey = function(key) {\n // RSAPublicKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e))\n ]);\n};\n\n/**\n * Encodes a message using PKCS#1 v1.5 padding.\n *\n * @param m the message to encode.\n * @param key the RSA key to use.\n * @param bt the block type to use, i.e. either 0x01 (for signing) or 0x02\n * (for encryption).\n *\n * @return the padded byte buffer.\n */\nfunction _encodePkcs1_v1_5(m, key, bt) {\n var eb = forge.util.createBuffer();\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* use PKCS#1 v1.5 padding */\n if(m.length > (k - 11)) {\n var error = new Error('Message is too long for PKCS#1 v1.5 padding.');\n error.length = m.length;\n error.max = k - 11;\n throw error;\n }\n\n /* A block type BT, a padding string PS, and the data D shall be\n formatted into an octet string EB, the encryption block:\n\n EB = 00 || BT || PS || 00 || D\n\n The block type BT shall be a single octet indicating the structure of\n the encryption block. For this version of the document it shall have\n value 00, 01, or 02. For a private-key operation, the block type\n shall be 00 or 01. For a public-key operation, it shall be 02.\n\n The padding string PS shall consist of k-3-||D|| octets. For block\n type 00, the octets shall have value 00; for block type 01, they\n shall have value FF; and for block type 02, they shall be\n pseudorandomly generated and nonzero. This makes the length of the\n encryption block EB equal to k. */\n\n // build the encryption block\n eb.putByte(0x00);\n eb.putByte(bt);\n\n // create the padding\n var padNum = k - 3 - m.length;\n var padByte;\n // private key op\n if(bt === 0x00 || bt === 0x01) {\n padByte = (bt === 0x00) ? 0x00 : 0xFF;\n for(var i = 0; i < padNum; ++i) {\n eb.putByte(padByte);\n }\n } else {\n // public key op\n // pad with random non-zero values\n while(padNum > 0) {\n var numZeros = 0;\n var padBytes = forge.random.getBytes(padNum);\n for(var i = 0; i < padNum; ++i) {\n padByte = padBytes.charCodeAt(i);\n if(padByte === 0) {\n ++numZeros;\n } else {\n eb.putByte(padByte);\n }\n }\n padNum = numZeros;\n }\n }\n\n // zero followed by message\n eb.putByte(0x00);\n eb.putBytes(m);\n\n return eb;\n}\n\n/**\n * Decodes a message using PKCS#1 v1.5 padding.\n *\n * @param em the message to decode.\n * @param key the RSA key to use.\n * @param pub true if the key is a public key, false if it is private.\n * @param ml the message length, if specified.\n *\n * @return the decoded bytes.\n */\nfunction _decodePkcs1_v1_5(em, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* It is an error if any of the following conditions occurs:\n\n 1. The encryption block EB cannot be parsed unambiguously.\n 2. The padding string PS consists of fewer than eight octets\n or is inconsisent with the block type BT.\n 3. The decryption process is a public-key operation and the block\n type BT is not 00 or 01, or the decryption process is a\n private-key operation and the block type is not 02.\n */\n\n // parse the encryption block\n var eb = forge.util.createBuffer(em);\n var first = eb.getByte();\n var bt = eb.getByte();\n if(first !== 0x00 ||\n (pub && bt !== 0x00 && bt !== 0x01) ||\n (!pub && bt != 0x02) ||\n (pub && bt === 0x00 && typeof(ml) === 'undefined')) {\n throw new Error('Encryption block is invalid.');\n }\n\n var padNum = 0;\n if(bt === 0x00) {\n // check all padding bytes for 0x00\n padNum = k - 3 - ml;\n for(var i = 0; i < padNum; ++i) {\n if(eb.getByte() !== 0x00) {\n throw new Error('Encryption block is invalid.');\n }\n }\n } else if(bt === 0x01) {\n // find the first byte that isn't 0xFF, should be after all padding\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() !== 0xFF) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n } else if(bt === 0x02) {\n // look for 0x00 byte\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() === 0x00) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n }\n\n // zero must be 0x00 and padNum must be (k - 3 - message length)\n var zero = eb.getByte();\n if(zero !== 0x00 || padNum !== (k - 3 - eb.length())) {\n throw new Error('Encryption block is invalid.');\n }\n\n return eb.getBytes();\n}\n\n/**\n * Runs the key-generation algorithm asynchronously, either in the background\n * via Web Workers, or using the main thread and setImmediate.\n *\n * @param state the key-pair generation state.\n * @param [options] options for key-pair generation:\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2, -1 to use estimated cores minus one).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * @param callback(err, keypair) called once the operation completes.\n */\nfunction _generateKeyPair(state, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n var opts = {\n algorithm: {\n name: options.algorithm || 'PRIMEINC',\n options: {\n workers: options.workers || 2,\n workLoad: options.workLoad || 100,\n workerScript: options.workerScript\n }\n }\n };\n if('prng' in options) {\n opts.prng = options.prng;\n }\n\n generate();\n\n function generate() {\n // find p and then q (done in series to simplify)\n getPrime(state.pBits, function(err, num) {\n if(err) {\n return callback(err);\n }\n state.p = num;\n if(state.q !== null) {\n return finish(err, state.q);\n }\n getPrime(state.qBits, finish);\n });\n }\n\n function getPrime(bits, callback) {\n forge.prime.generateProbablePrime(bits, opts, callback);\n }\n\n function finish(err, num) {\n if(err) {\n return callback(err);\n }\n\n // set q\n state.q = num;\n\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n var tmp = state.p;\n state.p = state.q;\n state.q = tmp;\n }\n\n // ensure p is coprime with e\n if(state.p.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.p = null;\n generate();\n return;\n }\n\n // ensure q is coprime with e\n if(state.q.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) !== 0) {\n // phi and e aren't coprime, so generate a new p and q\n state.p = state.q = null;\n generate();\n return;\n }\n\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n if(state.n.bitLength() !== state.bits) {\n // failed, get new q\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n\n callback(null, state.keys);\n }\n}\n\n/**\n * Converts a positive BigInteger into 2's-complement big-endian bytes.\n *\n * @param b the big integer to convert.\n *\n * @return the bytes.\n */\nfunction _bnToBytes(b) {\n // prepend 0x00 if first byte >= 0x80\n var hex = b.toString(16);\n if(hex[0] >= '8') {\n hex = '00' + hex;\n }\n var bytes = forge.util.hexToBytes(hex);\n\n // ensure integer is minimally-encoded\n if(bytes.length > 1 &&\n // leading 0x00 for positive integer\n ((bytes.charCodeAt(0) === 0 &&\n (bytes.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (bytes.charCodeAt(0) === 0xFF &&\n (bytes.charCodeAt(1) & 0x80) === 0x80))) {\n return bytes.substr(1);\n }\n return bytes;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction _getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n/**\n * Performs feature detection on the Node crypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectNodeCrypto(fn) {\n return forge.util.isNodejs && typeof _crypto[fn] === 'function';\n}\n\n/**\n * Performs feature detection on the SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.crypto === 'object' &&\n typeof util.globalScope.crypto.subtle === 'object' &&\n typeof util.globalScope.crypto.subtle[fn] === 'function');\n}\n\n/**\n * Performs feature detection on the deprecated Microsoft Internet Explorer\n * outdated SubtleCrypto interface. This function should only be used after\n * checking for the modern, standard SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleMsCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.msCrypto === 'object' &&\n typeof util.globalScope.msCrypto.subtle === 'object' &&\n typeof util.globalScope.msCrypto.subtle[fn] === 'function');\n}\n\nfunction _intToUint8Array(x) {\n var bytes = forge.util.hexToBytes(x.toString(16));\n var buffer = new Uint8Array(bytes.length);\n for(var i = 0; i < bytes.length; ++i) {\n buffer[i] = bytes.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction _privateKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error(\n 'Unsupported key algorithm \"' + jwk.kty + '\"; algorithm must be \"RSA\".');\n }\n return pki.setRsaPrivateKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e),\n _base64ToBigInt(jwk.d),\n _base64ToBigInt(jwk.p),\n _base64ToBigInt(jwk.q),\n _base64ToBigInt(jwk.dp),\n _base64ToBigInt(jwk.dq),\n _base64ToBigInt(jwk.qi));\n}\n\nfunction _publicKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error('Key algorithm must be \"RSA\".');\n }\n return pki.setRsaPublicKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e));\n}\n\nfunction _base64ToBigInt(b64) {\n return new BigInteger(forge.util.bytesToHex(forge.util.decode64(b64)), 16);\n}\n","/**\n * Secure Hash Algorithm with 160-bit digest (SHA-1) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha1 = module.exports = forge.sha1 = forge.sha1 || {};\nforge.md.sha1 = forge.md.algorithms.sha1 = sha1;\n\n/**\n * Creates a SHA-1 message digest object.\n *\n * @return a message digest object.\n */\nsha1.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-1 state contains five 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(80);\n\n // message digest object\n var md = {\n algorithm: 'sha1',\n blockLength: 64,\n digestLength: 20,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476,\n h4: 0xC3D2E1F0\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-1 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n return rval;\n };\n\n return md;\n};\n\n// sha-1 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-1 state with the given byte buffer.\n *\n * @param s the SHA-1 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t, a, b, c, d, e, f, i;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 80 32-bit words according to SHA-1 algorithm\n // and for 32-79 using Max Locktyukhin's optimization\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n\n // round 1\n for(i = 0; i < 16; ++i) {\n t = bytes.getInt32();\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 20; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 2\n for(; i < 32; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 40; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 3\n for(; i < 60; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = (b & c) | (d & (b ^ c));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x8F1BBCDC + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 4\n for(; i < 80; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0xCA62C1D6 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n\n len -= 64;\n }\n}\n","/**\n * Secure Hash Algorithm with 256-bit digest (SHA-256) implementation.\n *\n * See FIPS 180-2 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha256 = module.exports = forge.sha256 = forge.sha256 || {};\nforge.md.sha256 = forge.md.algorithms.sha256 = sha256;\n\n/**\n * Creates a SHA-256 message digest object.\n *\n * @return a message digest object.\n */\nsha256.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-256 state contains eight 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(64);\n\n // message digest object\n var md = {\n algorithm: 'sha256',\n blockLength: 64,\n digestLength: 32,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x6A09E667,\n h1: 0xBB67AE85,\n h2: 0x3C6EF372,\n h3: 0xA54FF53A,\n h4: 0x510E527F,\n h5: 0x9B05688C,\n h6: 0x1F83D9AB,\n h7: 0x5BE0CD19\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-256 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4,\n h5: _state.h5,\n h6: _state.h6,\n h7: _state.h7\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n rval.putInt32(s2.h5);\n rval.putInt32(s2.h6);\n rval.putInt32(s2.h7);\n return rval;\n };\n\n return md;\n};\n\n// sha-256 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // create K table for SHA-256\n _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 // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-256 state with the given byte buffer.\n *\n * @param s the SHA-256 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t1, t2, s0, s1, ch, maj, i, a, b, c, d, e, f, g, h;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 64 32-bit words according to SHA-256\n for(i = 0; i < 16; ++i) {\n w[i] = bytes.getInt32();\n }\n for(; i < 64; ++i) {\n // XOR word 2 words ago rot right 17, rot right 19, shft right 10\n t1 = w[i - 2];\n t1 =\n ((t1 >>> 17) | (t1 << 15)) ^\n ((t1 >>> 19) | (t1 << 13)) ^\n (t1 >>> 10);\n // XOR word 15 words ago rot right 7, rot right 18, shft right 3\n t2 = w[i - 15];\n t2 =\n ((t2 >>> 7) | (t2 << 25)) ^\n ((t2 >>> 18) | (t2 << 14)) ^\n (t2 >>> 3);\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^32\n w[i] = (t1 + w[i - 7] + t2 + w[i - 16]) | 0;\n }\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n f = s.h5;\n g = s.h6;\n h = s.h7;\n\n // round function\n for(i = 0; i < 64; ++i) {\n // Sum1(e)\n s1 =\n ((e >>> 6) | (e << 26)) ^\n ((e >>> 11) | (e << 21)) ^\n ((e >>> 25) | (e << 7));\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch = g ^ (e & (f ^ g));\n // Sum0(a)\n s0 =\n ((a >>> 2) | (a << 30)) ^\n ((a >>> 13) | (a << 19)) ^\n ((a >>> 22) | (a << 10));\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj = (a & b) | (c & (a ^ b));\n\n // main algorithm\n t1 = h + s1 + ch + _k[i] + w[i];\n t2 = s0 + maj;\n h = g;\n g = f;\n f = e;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n e = (d + t1) >>> 0;\n d = c;\n c = b;\n b = a;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n a = (t1 + t2) >>> 0;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n s.h5 = (s.h5 + f) | 0;\n s.h6 = (s.h6 + g) | 0;\n s.h7 = (s.h7 + h) | 0;\n len -= 64;\n }\n}\n","/**\n * Secure Hash Algorithm with a 1024-bit block size implementation.\n *\n * This includes: SHA-512, SHA-384, SHA-512/224, and SHA-512/256. For\n * SHA-256 (block size 512 bits), see sha256.js.\n *\n * See FIPS 180-4 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha512 = module.exports = forge.sha512 = forge.sha512 || {};\n\n// SHA-512\nforge.md.sha512 = forge.md.algorithms.sha512 = sha512;\n\n// SHA-384\nvar sha384 = forge.sha384 = forge.sha512.sha384 = forge.sha512.sha384 || {};\nsha384.create = function() {\n return sha512.create('SHA-384');\n};\nforge.md.sha384 = forge.md.algorithms.sha384 = sha384;\n\n// SHA-512/256\nforge.sha512.sha256 = forge.sha512.sha256 || {\n create: function() {\n return sha512.create('SHA-512/256');\n }\n};\nforge.md['sha512/256'] = forge.md.algorithms['sha512/256'] =\n forge.sha512.sha256;\n\n// SHA-512/224\nforge.sha512.sha224 = forge.sha512.sha224 || {\n create: function() {\n return sha512.create('SHA-512/224');\n }\n};\nforge.md['sha512/224'] = forge.md.algorithms['sha512/224'] =\n forge.sha512.sha224;\n\n/**\n * Creates a SHA-2 message digest object.\n *\n * @param algorithm the algorithm to use (SHA-512, SHA-384, SHA-512/224,\n * SHA-512/256).\n *\n * @return a message digest object.\n */\nsha512.create = function(algorithm) {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n if(typeof algorithm === 'undefined') {\n algorithm = 'SHA-512';\n }\n\n if(!(algorithm in _states)) {\n throw new Error('Invalid SHA-512 algorithm: ' + algorithm);\n }\n\n // SHA-512 state contains eight 64-bit integers (each as two 32-bit ints)\n var _state = _states[algorithm];\n var _h = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for 64-bit word storage\n var _w = new Array(80);\n for(var wi = 0; wi < 80; ++wi) {\n _w[wi] = new Array(2);\n }\n\n // determine digest length by algorithm name (default)\n var digestLength = 64;\n switch(algorithm) {\n case 'SHA-384':\n digestLength = 48;\n break;\n case 'SHA-512/256':\n digestLength = 32;\n break;\n case 'SHA-512/224':\n digestLength = 28;\n break;\n }\n\n // message digest object\n var md = {\n // SHA-512 => sha512\n algorithm: algorithm.replace('-', '').toLowerCase(),\n blockLength: 128,\n digestLength: digestLength,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 16\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength128 for backwards-compatibility)\n md.fullMessageLength = md.messageLength128 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _h = new Array(_state.length);\n for(var i = 0; i < _state.length; ++i) {\n _h[i] = _state[i].slice(0);\n }\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_h, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-512 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 896 mod 1024. In other words,\n the data to be digested must be a multiple of 1024 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 16 bytes (128\n bits), that means that the last segment of the data must have 112 bytes\n (896 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 896 mod 1024 because\n 1024 - 128 = 896.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 896 mod 1024, then 1024 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var h = new Array(_h.length);\n for(var i = 0; i < _h.length; ++i) {\n h[i] = _h[i].slice(0);\n }\n _update(h, _w, finalBlock);\n var rval = forge.util.createBuffer();\n var hlen;\n if(algorithm === 'SHA-512') {\n hlen = h.length;\n } else if(algorithm === 'SHA-384') {\n hlen = h.length - 2;\n } else {\n hlen = h.length - 4;\n }\n for(var i = 0; i < hlen; ++i) {\n rval.putInt32(h[i][0]);\n if(i !== hlen - 1 || algorithm !== 'SHA-512/224') {\n rval.putInt32(h[i][1]);\n }\n }\n return rval;\n };\n\n return md;\n};\n\n// sha-512 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n// initial hash states\nvar _states = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 128);\n\n // create K table for SHA-512\n _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\n // initial hash states\n _states = {};\n _states['SHA-512'] = [\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 ];\n _states['SHA-384'] = [\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 ];\n _states['SHA-512/256'] = [\n [0x22312194, 0xFC2BF72C],\n [0x9F555FA3, 0xC84C64C2],\n [0x2393B86B, 0x6F53B151],\n [0x96387719, 0x5940EABD],\n [0x96283EE2, 0xA88EFFE3],\n [0xBE5E1E25, 0x53863992],\n [0x2B0199FC, 0x2C85B8AA],\n [0x0EB72DDC, 0x81C52CA2]\n ];\n _states['SHA-512/224'] = [\n [0x8C3D37C8, 0x19544DA2],\n [0x73E19966, 0x89DCD4D6],\n [0x1DFAB7AE, 0x32FF9C82],\n [0x679DD514, 0x582F9FCF],\n [0x0F6D2B69, 0x7BD44DA8],\n [0x77E36F73, 0x04C48942],\n [0x3F9D85A8, 0x6A1D36C8],\n [0x1112E6AD, 0x91D692A1]\n ];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-512 state with the given byte buffer.\n *\n * @param s the SHA-512 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (128 byte) chunks\n var t1_hi, t1_lo;\n var t2_hi, t2_lo;\n var s0_hi, s0_lo;\n var s1_hi, s1_lo;\n var ch_hi, ch_lo;\n var maj_hi, maj_lo;\n var a_hi, a_lo;\n var b_hi, b_lo;\n var c_hi, c_lo;\n var d_hi, d_lo;\n var e_hi, e_lo;\n var f_hi, f_lo;\n var g_hi, g_lo;\n var h_hi, h_lo;\n var i, hi, lo, w2, w7, w15, w16;\n var len = bytes.length();\n while(len >= 128) {\n // the w array will be populated with sixteen 64-bit big-endian words\n // and then extended into 64 64-bit words according to SHA-512\n for(i = 0; i < 16; ++i) {\n w[i][0] = bytes.getInt32() >>> 0;\n w[i][1] = bytes.getInt32() >>> 0;\n }\n for(; i < 80; ++i) {\n // for word 2 words ago: ROTR 19(x) ^ ROTR 61(x) ^ SHR 6(x)\n w2 = w[i - 2];\n hi = w2[0];\n lo = w2[1];\n\n // high bits\n t1_hi = (\n ((hi >>> 19) | (lo << 13)) ^ // ROTR 19\n ((lo >>> 29) | (hi << 3)) ^ // ROTR 61/(swap + ROTR 29)\n (hi >>> 6)) >>> 0; // SHR 6\n // low bits\n t1_lo = (\n ((hi << 13) | (lo >>> 19)) ^ // ROTR 19\n ((lo << 3) | (hi >>> 29)) ^ // ROTR 61/(swap + ROTR 29)\n ((hi << 26) | (lo >>> 6))) >>> 0; // SHR 6\n\n // for word 15 words ago: ROTR 1(x) ^ ROTR 8(x) ^ SHR 7(x)\n w15 = w[i - 15];\n hi = w15[0];\n lo = w15[1];\n\n // high bits\n t2_hi = (\n ((hi >>> 1) | (lo << 31)) ^ // ROTR 1\n ((hi >>> 8) | (lo << 24)) ^ // ROTR 8\n (hi >>> 7)) >>> 0; // SHR 7\n // low bits\n t2_lo = (\n ((hi << 31) | (lo >>> 1)) ^ // ROTR 1\n ((hi << 24) | (lo >>> 8)) ^ // ROTR 8\n ((hi << 25) | (lo >>> 7))) >>> 0; // SHR 7\n\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^64 (carry lo overflow)\n w7 = w[i - 7];\n w16 = w[i - 16];\n lo = (t1_lo + w7[1] + t2_lo + w16[1]);\n w[i][0] = (t1_hi + w7[0] + t2_hi + w16[0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n w[i][1] = lo >>> 0;\n }\n\n // initialize hash value for this chunk\n a_hi = s[0][0];\n a_lo = s[0][1];\n b_hi = s[1][0];\n b_lo = s[1][1];\n c_hi = s[2][0];\n c_lo = s[2][1];\n d_hi = s[3][0];\n d_lo = s[3][1];\n e_hi = s[4][0];\n e_lo = s[4][1];\n f_hi = s[5][0];\n f_lo = s[5][1];\n g_hi = s[6][0];\n g_lo = s[6][1];\n h_hi = s[7][0];\n h_lo = s[7][1];\n\n // round function\n for(i = 0; i < 80; ++i) {\n // Sum1(e) = ROTR 14(e) ^ ROTR 18(e) ^ ROTR 41(e)\n s1_hi = (\n ((e_hi >>> 14) | (e_lo << 18)) ^ // ROTR 14\n ((e_hi >>> 18) | (e_lo << 14)) ^ // ROTR 18\n ((e_lo >>> 9) | (e_hi << 23))) >>> 0; // ROTR 41/(swap + ROTR 9)\n s1_lo = (\n ((e_hi << 18) | (e_lo >>> 14)) ^ // ROTR 14\n ((e_hi << 14) | (e_lo >>> 18)) ^ // ROTR 18\n ((e_lo << 23) | (e_hi >>> 9))) >>> 0; // ROTR 41/(swap + ROTR 9)\n\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch_hi = (g_hi ^ (e_hi & (f_hi ^ g_hi))) >>> 0;\n ch_lo = (g_lo ^ (e_lo & (f_lo ^ g_lo))) >>> 0;\n\n // Sum0(a) = ROTR 28(a) ^ ROTR 34(a) ^ ROTR 39(a)\n s0_hi = (\n ((a_hi >>> 28) | (a_lo << 4)) ^ // ROTR 28\n ((a_lo >>> 2) | (a_hi << 30)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo >>> 7) | (a_hi << 25))) >>> 0; // ROTR 39/(swap + ROTR 7)\n s0_lo = (\n ((a_hi << 4) | (a_lo >>> 28)) ^ // ROTR 28\n ((a_lo << 30) | (a_hi >>> 2)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo << 25) | (a_hi >>> 7))) >>> 0; // ROTR 39/(swap + ROTR 7)\n\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj_hi = ((a_hi & b_hi) | (c_hi & (a_hi ^ b_hi))) >>> 0;\n maj_lo = ((a_lo & b_lo) | (c_lo & (a_lo ^ b_lo))) >>> 0;\n\n // main algorithm\n // t1 = (h + s1 + ch + _k[i] + _w[i]) modulo 2^64 (carry lo overflow)\n lo = (h_lo + s1_lo + ch_lo + _k[i][1] + w[i][1]);\n t1_hi = (h_hi + s1_hi + ch_hi + _k[i][0] + w[i][0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n t1_lo = lo >>> 0;\n\n // t2 = s0 + maj modulo 2^64 (carry lo overflow)\n lo = s0_lo + maj_lo;\n t2_hi = (s0_hi + maj_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n t2_lo = lo >>> 0;\n\n h_hi = g_hi;\n h_lo = g_lo;\n\n g_hi = f_hi;\n g_lo = f_lo;\n\n f_hi = e_hi;\n f_lo = e_lo;\n\n // e = (d + t1) modulo 2^64 (carry lo overflow)\n lo = d_lo + t1_lo;\n e_hi = (d_hi + t1_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n e_lo = lo >>> 0;\n\n d_hi = c_hi;\n d_lo = c_lo;\n\n c_hi = b_hi;\n c_lo = b_lo;\n\n b_hi = a_hi;\n b_lo = a_lo;\n\n // a = (t1 + t2) modulo 2^64 (carry lo overflow)\n lo = t1_lo + t2_lo;\n a_hi = (t1_hi + t2_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n a_lo = lo >>> 0;\n }\n\n // update hash state (additional modulo 2^64)\n lo = s[0][1] + a_lo;\n s[0][0] = (s[0][0] + a_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[0][1] = lo >>> 0;\n\n lo = s[1][1] + b_lo;\n s[1][0] = (s[1][0] + b_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[1][1] = lo >>> 0;\n\n lo = s[2][1] + c_lo;\n s[2][0] = (s[2][0] + c_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[2][1] = lo >>> 0;\n\n lo = s[3][1] + d_lo;\n s[3][0] = (s[3][0] + d_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[3][1] = lo >>> 0;\n\n lo = s[4][1] + e_lo;\n s[4][0] = (s[4][0] + e_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[4][1] = lo >>> 0;\n\n lo = s[5][1] + f_lo;\n s[5][0] = (s[5][0] + f_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[5][1] = lo >>> 0;\n\n lo = s[6][1] + g_lo;\n s[6][0] = (s[6][0] + g_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[6][1] = lo >>> 0;\n\n lo = s[7][1] + h_lo;\n s[7][0] = (s[7][0] + h_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[7][1] = lo >>> 0;\n\n len -= 128;\n }\n}\n","/**\n * Functions to output keys in SSH-friendly formats.\n *\n * This is part of the Forge project which may be used under the terms of\n * either the BSD License or the GNU General Public License (GPL) Version 2.\n *\n * See: https://github.com/digitalbazaar/forge/blob/cbebca3780658703d925b61b2caffb1d263a6c1d/LICENSE\n *\n * @author https://github.com/shellac\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./hmac');\nrequire('./md5');\nrequire('./sha1');\nrequire('./util');\n\nvar ssh = module.exports = forge.ssh = forge.ssh || {};\n\n/**\n * Encodes (and optionally encrypts) a private RSA key as a Putty PPK file.\n *\n * @param privateKey the key.\n * @param passphrase a passphrase to protect the key (falsy for no encryption).\n * @param comment a comment to include in the key file.\n *\n * @return the PPK file as a string.\n */\nssh.privateKeyToPutty = function(privateKey, passphrase, comment) {\n comment = comment || '';\n passphrase = passphrase || '';\n var algorithm = 'ssh-rsa';\n var encryptionAlgorithm = (passphrase === '') ? 'none' : 'aes256-cbc';\n\n var ppk = 'PuTTY-User-Key-File-2: ' + algorithm + '\\r\\n';\n ppk += 'Encryption: ' + encryptionAlgorithm + '\\r\\n';\n ppk += 'Comment: ' + comment + '\\r\\n';\n\n // public key into buffer for ppk\n var pubbuffer = forge.util.createBuffer();\n _addStringToBuffer(pubbuffer, algorithm);\n _addBigIntegerToBuffer(pubbuffer, privateKey.e);\n _addBigIntegerToBuffer(pubbuffer, privateKey.n);\n\n // write public key\n var pub = forge.util.encode64(pubbuffer.bytes(), 64);\n var length = Math.floor(pub.length / 66) + 1; // 66 = 64 + \\r\\n\n ppk += 'Public-Lines: ' + length + '\\r\\n';\n ppk += pub;\n\n // private key into a buffer\n var privbuffer = forge.util.createBuffer();\n _addBigIntegerToBuffer(privbuffer, privateKey.d);\n _addBigIntegerToBuffer(privbuffer, privateKey.p);\n _addBigIntegerToBuffer(privbuffer, privateKey.q);\n _addBigIntegerToBuffer(privbuffer, privateKey.qInv);\n\n // optionally encrypt the private key\n var priv;\n if(!passphrase) {\n // use the unencrypted buffer\n priv = forge.util.encode64(privbuffer.bytes(), 64);\n } else {\n // encrypt RSA key using passphrase\n var encLen = privbuffer.length() + 16 - 1;\n encLen -= encLen % 16;\n\n // pad private key with sha1-d data -- needs to be a multiple of 16\n var padding = _sha1(privbuffer.bytes());\n\n padding.truncate(padding.length() - encLen + privbuffer.length());\n privbuffer.putBuffer(padding);\n\n var aeskey = forge.util.createBuffer();\n aeskey.putBuffer(_sha1('\\x00\\x00\\x00\\x00', passphrase));\n aeskey.putBuffer(_sha1('\\x00\\x00\\x00\\x01', passphrase));\n\n // encrypt some bytes using CBC mode\n // key is 40 bytes, so truncate *by* 8 bytes\n var cipher = forge.aes.createEncryptionCipher(aeskey.truncate(8), 'CBC');\n cipher.start(forge.util.createBuffer().fillWithByte(0, 16));\n cipher.update(privbuffer.copy());\n cipher.finish();\n var encrypted = cipher.output;\n\n // Note: this appears to differ from Putty -- is forge wrong, or putty?\n // due to padding we finish as an exact multiple of 16\n encrypted.truncate(16); // all padding\n\n priv = forge.util.encode64(encrypted.bytes(), 64);\n }\n\n // output private key\n length = Math.floor(priv.length / 66) + 1; // 64 + \\r\\n\n ppk += '\\r\\nPrivate-Lines: ' + length + '\\r\\n';\n ppk += priv;\n\n // MAC\n var mackey = _sha1('putty-private-key-file-mac-key', passphrase);\n\n var macbuffer = forge.util.createBuffer();\n _addStringToBuffer(macbuffer, algorithm);\n _addStringToBuffer(macbuffer, encryptionAlgorithm);\n _addStringToBuffer(macbuffer, comment);\n macbuffer.putInt32(pubbuffer.length());\n macbuffer.putBuffer(pubbuffer);\n macbuffer.putInt32(privbuffer.length());\n macbuffer.putBuffer(privbuffer);\n\n var hmac = forge.hmac.create();\n hmac.start('sha1', mackey);\n hmac.update(macbuffer.bytes());\n\n ppk += '\\r\\nPrivate-MAC: ' + hmac.digest().toHex() + '\\r\\n';\n\n return ppk;\n};\n\n/**\n * Encodes a public RSA key as an OpenSSH file.\n *\n * @param key the key.\n * @param comment a comment.\n *\n * @return the public key in OpenSSH format.\n */\nssh.publicKeyToOpenSSH = function(key, comment) {\n var type = 'ssh-rsa';\n comment = comment || '';\n\n var buffer = forge.util.createBuffer();\n _addStringToBuffer(buffer, type);\n _addBigIntegerToBuffer(buffer, key.e);\n _addBigIntegerToBuffer(buffer, key.n);\n\n return type + ' ' + forge.util.encode64(buffer.bytes()) + ' ' + comment;\n};\n\n/**\n * Encodes a private RSA key as an OpenSSH file.\n *\n * @param key the key.\n * @param passphrase a passphrase to protect the key (falsy for no encryption).\n *\n * @return the public key in OpenSSH format.\n */\nssh.privateKeyToOpenSSH = function(privateKey, passphrase) {\n if(!passphrase) {\n return forge.pki.privateKeyToPem(privateKey);\n }\n // OpenSSH private key is just a legacy format, it seems\n return forge.pki.encryptRsaPrivateKey(privateKey, passphrase,\n {legacy: true, algorithm: 'aes128'});\n};\n\n/**\n * Gets the SSH fingerprint for the given public key.\n *\n * @param options the options to use.\n * [md] the message digest object to use (defaults to forge.md.md5).\n * [encoding] an alternative output encoding, such as 'hex'\n * (defaults to none, outputs a byte buffer).\n * [delimiter] the delimiter to use between bytes for 'hex' encoded\n * output, eg: ':' (defaults to none).\n *\n * @return the fingerprint as a byte buffer or other encoding based on options.\n */\nssh.getPublicKeyFingerprint = function(key, options) {\n options = options || {};\n var md = options.md || forge.md.md5.create();\n\n var type = 'ssh-rsa';\n var buffer = forge.util.createBuffer();\n _addStringToBuffer(buffer, type);\n _addBigIntegerToBuffer(buffer, key.e);\n _addBigIntegerToBuffer(buffer, key.n);\n\n // hash public key bytes\n md.start();\n md.update(buffer.getBytes());\n var digest = md.digest();\n if(options.encoding === 'hex') {\n var hex = digest.toHex();\n if(options.delimiter) {\n return hex.match(/.{2}/g).join(options.delimiter);\n }\n return hex;\n } else if(options.encoding === 'binary') {\n return digest.getBytes();\n } else if(options.encoding) {\n throw new Error('Unknown encoding \"' + options.encoding + '\".');\n }\n return digest;\n};\n\n/**\n * Adds len(val) then val to a buffer.\n *\n * @param buffer the buffer to add to.\n * @param val a big integer.\n */\nfunction _addBigIntegerToBuffer(buffer, val) {\n var hexVal = val.toString(16);\n // ensure 2s complement +ve\n if(hexVal[0] >= '8') {\n hexVal = '00' + hexVal;\n }\n var bytes = forge.util.hexToBytes(hexVal);\n buffer.putInt32(bytes.length);\n buffer.putBytes(bytes);\n}\n\n/**\n * Adds len(val) then val to a buffer.\n *\n * @param buffer the buffer to add to.\n * @param val a string.\n */\nfunction _addStringToBuffer(buffer, val) {\n buffer.putInt32(val.length);\n buffer.putString(val);\n}\n\n/**\n * Hashes the arguments into one value using SHA-1.\n *\n * @return the sha1 hash of the provided arguments.\n */\nfunction _sha1() {\n var sha = forge.md.sha1.create();\n var num = arguments.length;\n for (var i = 0; i < num; ++i) {\n sha.update(arguments[i]);\n }\n return sha.digest();\n}\n","/**\n * A Javascript implementation of Transport Layer Security (TLS).\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n *\n * The TLS Handshake Protocol involves the following steps:\n *\n * - Exchange hello messages to agree on algorithms, exchange random values,\n * and check for session resumption.\n *\n * - Exchange the necessary cryptographic parameters to allow the client and\n * server to agree on a premaster secret.\n *\n * - Exchange certificates and cryptographic information to allow the client\n * and server to authenticate themselves.\n *\n * - Generate a master secret from the premaster secret and exchanged random\n * values.\n *\n * - Provide security parameters to the record layer.\n *\n * - Allow the client and server to verify that their peer has calculated the\n * same security parameters and that the handshake occurred without tampering\n * by an attacker.\n *\n * Up to 4 different messages may be sent during a key exchange. The server\n * certificate, the server key exchange, the client certificate, and the\n * client key exchange.\n *\n * A typical handshake (from the client's perspective).\n *\n * 1. Client sends ClientHello.\n * 2. Client receives ServerHello.\n * 3. Client receives optional Certificate.\n * 4. Client receives optional ServerKeyExchange.\n * 5. Client receives ServerHelloDone.\n * 6. Client sends optional Certificate.\n * 7. Client sends ClientKeyExchange.\n * 8. Client sends optional CertificateVerify.\n * 9. Client sends ChangeCipherSpec.\n * 10. Client sends Finished.\n * 11. Client receives ChangeCipherSpec.\n * 12. Client receives Finished.\n * 13. Client sends/receives application data.\n *\n * To reuse an existing session:\n *\n * 1. Client sends ClientHello with session ID for reuse.\n * 2. Client receives ServerHello with same session ID if reusing.\n * 3. Client receives ChangeCipherSpec message if reusing.\n * 4. Client receives Finished.\n * 5. Client sends ChangeCipherSpec.\n * 6. Client sends Finished.\n *\n * Note: Client ignores HelloRequest if in the middle of a handshake.\n *\n * Record Layer:\n *\n * The record layer fragments information blocks into TLSPlaintext records\n * carrying data in chunks of 2^14 bytes or less. Client message boundaries are\n * not preserved in the record layer (i.e., multiple client messages of the\n * same ContentType MAY be coalesced into a single TLSPlaintext record, or a\n * single message MAY be fragmented across several records).\n *\n * struct {\n * uint8 major;\n * uint8 minor;\n * } ProtocolVersion;\n *\n * struct {\n * ContentType type;\n * ProtocolVersion version;\n * uint16 length;\n * opaque fragment[TLSPlaintext.length];\n * } TLSPlaintext;\n *\n * type:\n * The higher-level protocol used to process the enclosed fragment.\n *\n * version:\n * The version of the protocol being employed. TLS Version 1.2 uses version\n * {3, 3}. TLS Version 1.0 uses version {3, 1}. Note that a client that\n * supports multiple versions of TLS may not know what version will be\n * employed before it receives the ServerHello.\n *\n * length:\n * The length (in bytes) of the following TLSPlaintext.fragment. The length\n * MUST NOT exceed 2^14 = 16384 bytes.\n *\n * fragment:\n * The application data. This data is transparent and treated as an\n * independent block to be dealt with by the higher-level protocol specified\n * by the type field.\n *\n * Implementations MUST NOT send zero-length fragments of Handshake, Alert, or\n * ChangeCipherSpec content types. Zero-length fragments of Application data\n * MAY be sent as they are potentially useful as a traffic analysis\n * countermeasure.\n *\n * Note: Data of different TLS record layer content types MAY be interleaved.\n * Application data is generally of lower precedence for transmission than\n * other content types. However, records MUST be delivered to the network in\n * the same order as they are protected by the record layer. Recipients MUST\n * receive and process interleaved application layer traffic during handshakes\n * subsequent to the first one on a connection.\n *\n * struct {\n * ContentType type; // same as TLSPlaintext.type\n * ProtocolVersion version;// same as TLSPlaintext.version\n * uint16 length;\n * opaque fragment[TLSCompressed.length];\n * } TLSCompressed;\n *\n * length:\n * The length (in bytes) of the following TLSCompressed.fragment.\n * The length MUST NOT exceed 2^14 + 1024.\n *\n * fragment:\n * The compressed form of TLSPlaintext.fragment.\n *\n * Note: A CompressionMethod.null operation is an identity operation; no fields\n * are altered. In this implementation, since no compression is supported,\n * uncompressed records are always the same as compressed records.\n *\n * Encryption Information:\n *\n * The encryption and MAC functions translate a TLSCompressed structure into a\n * TLSCiphertext. The decryption functions reverse the process. The MAC of the\n * record also includes a sequence number so that missing, extra, or repeated\n * messages are detectable.\n *\n * struct {\n * ContentType type;\n * ProtocolVersion version;\n * uint16 length;\n * select (SecurityParameters.cipher_type) {\n * case stream: GenericStreamCipher;\n * case block: GenericBlockCipher;\n * case aead: GenericAEADCipher;\n * } fragment;\n * } TLSCiphertext;\n *\n * type:\n * The type field is identical to TLSCompressed.type.\n *\n * version:\n * The version field is identical to TLSCompressed.version.\n *\n * length:\n * The length (in bytes) of the following TLSCiphertext.fragment.\n * The length MUST NOT exceed 2^14 + 2048.\n *\n * fragment:\n * The encrypted form of TLSCompressed.fragment, with the MAC.\n *\n * Note: Only CBC Block Ciphers are supported by this implementation.\n *\n * The TLSCompressed.fragment structures are converted to/from block\n * TLSCiphertext.fragment structures.\n *\n * struct {\n * opaque IV[SecurityParameters.record_iv_length];\n * block-ciphered struct {\n * opaque content[TLSCompressed.length];\n * opaque MAC[SecurityParameters.mac_length];\n * uint8 padding[GenericBlockCipher.padding_length];\n * uint8 padding_length;\n * };\n * } GenericBlockCipher;\n *\n * The MAC is generated as described in Section 6.2.3.1.\n *\n * IV:\n * The Initialization Vector (IV) SHOULD be chosen at random, and MUST be\n * unpredictable. Note that in versions of TLS prior to 1.1, there was no\n * IV field, and the last ciphertext block of the previous record (the \"CBC\n * residue\") was used as the IV. This was changed to prevent the attacks\n * described in [CBCATT]. For block ciphers, the IV length is of length\n * SecurityParameters.record_iv_length, which is equal to the\n * SecurityParameters.block_size.\n *\n * padding:\n * Padding that is added to force the length of the plaintext to be an\n * integral multiple of the block cipher's block length. The padding MAY be\n * any length up to 255 bytes, as long as it results in the\n * TLSCiphertext.length being an integral multiple of the block length.\n * Lengths longer than necessary might be desirable to frustrate attacks on\n * a protocol that are based on analysis of the lengths of exchanged\n * messages. Each uint8 in the padding data vector MUST be filled with the\n * padding length value. The receiver MUST check this padding and MUST use\n * the bad_record_mac alert to indicate padding errors.\n *\n * padding_length:\n * The padding length MUST be such that the total size of the\n * GenericBlockCipher structure is a multiple of the cipher's block length.\n * Legal values range from zero to 255, inclusive. This length specifies the\n * length of the padding field exclusive of the padding_length field itself.\n *\n * The encrypted data length (TLSCiphertext.length) is one more than the sum of\n * SecurityParameters.block_length, TLSCompressed.length,\n * SecurityParameters.mac_length, and padding_length.\n *\n * Example: If the block length is 8 bytes, the content length\n * (TLSCompressed.length) is 61 bytes, and the MAC length is 20 bytes, then the\n * length before padding is 82 bytes (this does not include the IV. Thus, the\n * padding length modulo 8 must be equal to 6 in order to make the total length\n * an even multiple of 8 bytes (the block length). The padding length can be\n * 6, 14, 22, and so on, through 254. If the padding length were the minimum\n * necessary, 6, the padding would be 6 bytes, each containing the value 6.\n * Thus, the last 8 octets of the GenericBlockCipher before block encryption\n * would be xx 06 06 06 06 06 06 06, where xx is the last octet of the MAC.\n *\n * Note: With block ciphers in CBC mode (Cipher Block Chaining), it is critical\n * that the entire plaintext of the record be known before any ciphertext is\n * transmitted. Otherwise, it is possible for the attacker to mount the attack\n * described in [CBCATT].\n *\n * Implementation note: Canvel et al. [CBCTIME] have demonstrated a timing\n * attack on CBC padding based on the time required to compute the MAC. In\n * order to defend against this attack, implementations MUST ensure that\n * record processing time is essentially the same whether or not the padding\n * is correct. In general, the best way to do this is to compute the MAC even\n * if the padding is incorrect, and only then reject the packet. For instance,\n * if the pad appears to be incorrect, the implementation might assume a\n * zero-length pad and then compute the MAC. This leaves a small timing\n * channel, since MAC performance depends, to some extent, on the size of the\n * data fragment, but it is not believed to be large enough to be exploitable,\n * due to the large block size of existing MACs and the small size of the\n * timing signal.\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./hmac');\nrequire('./md5');\nrequire('./pem');\nrequire('./pki');\nrequire('./random');\nrequire('./sha1');\nrequire('./util');\n\n/**\n * Generates pseudo random bytes by mixing the result of two hash functions,\n * MD5 and SHA-1.\n *\n * prf_TLS1(secret, label, seed) =\n * P_MD5(S1, label + seed) XOR P_SHA-1(S2, label + seed);\n *\n * Each P_hash function functions as follows:\n *\n * P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) +\n * HMAC_hash(secret, A(2) + seed) +\n * HMAC_hash(secret, A(3) + seed) + ...\n * A() is defined as:\n * A(0) = seed\n * A(i) = HMAC_hash(secret, A(i-1))\n *\n * The '+' operator denotes concatenation.\n *\n * As many iterations A(N) as are needed are performed to generate enough\n * pseudo random byte output. If an iteration creates more data than is\n * necessary, then it is truncated.\n *\n * Therefore:\n * A(1) = HMAC_hash(secret, A(0))\n * = HMAC_hash(secret, seed)\n * A(2) = HMAC_hash(secret, A(1))\n * = HMAC_hash(secret, HMAC_hash(secret, seed))\n *\n * Therefore:\n * P_hash(secret, seed) =\n * HMAC_hash(secret, HMAC_hash(secret, A(0)) + seed) +\n * HMAC_hash(secret, HMAC_hash(secret, A(1)) + seed) +\n * ...\n *\n * Therefore:\n * P_hash(secret, seed) =\n * HMAC_hash(secret, HMAC_hash(secret, seed) + seed) +\n * HMAC_hash(secret, HMAC_hash(secret, HMAC_hash(secret, seed)) + seed) +\n * ...\n *\n * @param secret the secret to use.\n * @param label the label to use.\n * @param seed the seed value to use.\n * @param length the number of bytes to generate.\n *\n * @return the pseudo random bytes in a byte buffer.\n */\nvar prf_TLS1 = function(secret, label, seed, length) {\n var rval = forge.util.createBuffer();\n\n /* For TLS 1.0, the secret is split in half, into two secrets of equal\n length. If the secret has an odd length then the last byte of the first\n half will be the same as the first byte of the second. The length of the\n two secrets is half of the secret rounded up. */\n var idx = (secret.length >> 1);\n var slen = idx + (secret.length & 1);\n var s1 = secret.substr(0, slen);\n var s2 = secret.substr(idx, slen);\n var ai = forge.util.createBuffer();\n var hmac = forge.hmac.create();\n seed = label + seed;\n\n // determine the number of iterations that must be performed to generate\n // enough output bytes, md5 creates 16 byte hashes, sha1 creates 20\n var md5itr = Math.ceil(length / 16);\n var sha1itr = Math.ceil(length / 20);\n\n // do md5 iterations\n hmac.start('MD5', s1);\n var md5bytes = forge.util.createBuffer();\n ai.putBytes(seed);\n for(var i = 0; i < md5itr; ++i) {\n // HMAC_hash(secret, A(i-1))\n hmac.start(null, null);\n hmac.update(ai.getBytes());\n ai.putBuffer(hmac.digest());\n\n // HMAC_hash(secret, A(i) + seed)\n hmac.start(null, null);\n hmac.update(ai.bytes() + seed);\n md5bytes.putBuffer(hmac.digest());\n }\n\n // do sha1 iterations\n hmac.start('SHA1', s2);\n var sha1bytes = forge.util.createBuffer();\n ai.clear();\n ai.putBytes(seed);\n for(var i = 0; i < sha1itr; ++i) {\n // HMAC_hash(secret, A(i-1))\n hmac.start(null, null);\n hmac.update(ai.getBytes());\n ai.putBuffer(hmac.digest());\n\n // HMAC_hash(secret, A(i) + seed)\n hmac.start(null, null);\n hmac.update(ai.bytes() + seed);\n sha1bytes.putBuffer(hmac.digest());\n }\n\n // XOR the md5 bytes with the sha1 bytes\n rval.putBytes(forge.util.xorBytes(\n md5bytes.getBytes(), sha1bytes.getBytes(), length));\n\n return rval;\n};\n\n/**\n * Generates pseudo random bytes using a SHA256 algorithm. For TLS 1.2.\n *\n * @param secret the secret to use.\n * @param label the label to use.\n * @param seed the seed value to use.\n * @param length the number of bytes to generate.\n *\n * @return the pseudo random bytes in a byte buffer.\n */\nvar prf_sha256 = function(secret, label, seed, length) {\n // FIXME: implement me for TLS 1.2\n};\n\n/**\n * Gets a MAC for a record using the SHA-1 hash algorithm.\n *\n * @param key the mac key.\n * @param state the sequence number (array of two 32-bit integers).\n * @param record the record.\n *\n * @return the sha-1 hash (20 bytes) for the given record.\n */\nvar hmac_sha1 = function(key, seqNum, record) {\n /* MAC is computed like so:\n HMAC_hash(\n key, seqNum +\n TLSCompressed.type +\n TLSCompressed.version +\n TLSCompressed.length +\n TLSCompressed.fragment)\n */\n var hmac = forge.hmac.create();\n hmac.start('SHA1', key);\n var b = forge.util.createBuffer();\n b.putInt32(seqNum[0]);\n b.putInt32(seqNum[1]);\n b.putByte(record.type);\n b.putByte(record.version.major);\n b.putByte(record.version.minor);\n b.putInt16(record.length);\n b.putBytes(record.fragment.bytes());\n hmac.update(b.getBytes());\n return hmac.digest().getBytes();\n};\n\n/**\n * Compresses the TLSPlaintext record into a TLSCompressed record using the\n * deflate algorithm.\n *\n * @param c the TLS connection.\n * @param record the TLSPlaintext record to compress.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nvar deflate = function(c, record, s) {\n var rval = false;\n\n try {\n var bytes = c.deflate(record.fragment.getBytes());\n record.fragment = forge.util.createBuffer(bytes);\n record.length = bytes.length;\n rval = true;\n } catch(ex) {\n // deflate error, fail out\n }\n\n return rval;\n};\n\n/**\n * Decompresses the TLSCompressed record into a TLSPlaintext record using the\n * deflate algorithm.\n *\n * @param c the TLS connection.\n * @param record the TLSCompressed record to decompress.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nvar inflate = function(c, record, s) {\n var rval = false;\n\n try {\n var bytes = c.inflate(record.fragment.getBytes());\n record.fragment = forge.util.createBuffer(bytes);\n record.length = bytes.length;\n rval = true;\n } catch(ex) {\n // inflate error, fail out\n }\n\n return rval;\n};\n\n/**\n * Reads a TLS variable-length vector from a byte buffer.\n *\n * Variable-length vectors are defined by specifying a subrange of legal\n * lengths, inclusively, using the notation . When these are\n * encoded, the actual length precedes the vector's contents in the byte\n * stream. The length will be in the form of a number consuming as many bytes\n * as required to hold the vector's specified maximum (ceiling) length. A\n * variable-length vector with an actual length field of zero is referred to\n * as an empty vector.\n *\n * @param b the byte buffer.\n * @param lenBytes the number of bytes required to store the length.\n *\n * @return the resulting byte buffer.\n */\nvar readVector = function(b, lenBytes) {\n var len = 0;\n switch(lenBytes) {\n case 1:\n len = b.getByte();\n break;\n case 2:\n len = b.getInt16();\n break;\n case 3:\n len = b.getInt24();\n break;\n case 4:\n len = b.getInt32();\n break;\n }\n\n // read vector bytes into a new buffer\n return forge.util.createBuffer(b.getBytes(len));\n};\n\n/**\n * Writes a TLS variable-length vector to a byte buffer.\n *\n * @param b the byte buffer.\n * @param lenBytes the number of bytes required to store the length.\n * @param v the byte buffer vector.\n */\nvar writeVector = function(b, lenBytes, v) {\n // encode length at the start of the vector, where the number of bytes for\n // the length is the maximum number of bytes it would take to encode the\n // vector's ceiling\n b.putInt(v.length(), lenBytes << 3);\n b.putBuffer(v);\n};\n\n/**\n * The tls implementation.\n */\nvar tls = {};\n\n/**\n * Version: TLS 1.2 = 3.3, TLS 1.1 = 3.2, TLS 1.0 = 3.1. Both TLS 1.1 and\n * TLS 1.2 were still too new (ie: openSSL didn't implement them) at the time\n * of this implementation so TLS 1.0 was implemented instead.\n */\ntls.Versions = {\n TLS_1_0: {major: 3, minor: 1},\n TLS_1_1: {major: 3, minor: 2},\n TLS_1_2: {major: 3, minor: 3}\n};\ntls.SupportedVersions = [\n tls.Versions.TLS_1_1,\n tls.Versions.TLS_1_0\n];\ntls.Version = tls.SupportedVersions[0];\n\n/**\n * Maximum fragment size. True maximum is 16384, but we fragment before that\n * to allow for unusual small increases during compression.\n */\ntls.MaxFragment = 16384 - 1024;\n\n/**\n * Whether this entity is considered the \"client\" or \"server\".\n * enum { server, client } ConnectionEnd;\n */\ntls.ConnectionEnd = {\n server: 0,\n client: 1\n};\n\n/**\n * Pseudo-random function algorithm used to generate keys from the master\n * secret.\n * enum { tls_prf_sha256 } PRFAlgorithm;\n */\ntls.PRFAlgorithm = {\n tls_prf_sha256: 0\n};\n\n/**\n * Bulk encryption algorithms.\n * enum { null, rc4, des3, aes } BulkCipherAlgorithm;\n */\ntls.BulkCipherAlgorithm = {\n none: null,\n rc4: 0,\n des3: 1,\n aes: 2\n};\n\n/**\n * Cipher types.\n * enum { stream, block, aead } CipherType;\n */\ntls.CipherType = {\n stream: 0,\n block: 1,\n aead: 2\n};\n\n/**\n * MAC (Message Authentication Code) algorithms.\n * enum { null, hmac_md5, hmac_sha1, hmac_sha256,\n * hmac_sha384, hmac_sha512} MACAlgorithm;\n */\ntls.MACAlgorithm = {\n none: null,\n hmac_md5: 0,\n hmac_sha1: 1,\n hmac_sha256: 2,\n hmac_sha384: 3,\n hmac_sha512: 4\n};\n\n/**\n * Compression algorithms.\n * enum { null(0), deflate(1), (255) } CompressionMethod;\n */\ntls.CompressionMethod = {\n none: 0,\n deflate: 1\n};\n\n/**\n * TLS record content types.\n * enum {\n * change_cipher_spec(20), alert(21), handshake(22),\n * application_data(23), (255)\n * } ContentType;\n */\ntls.ContentType = {\n change_cipher_spec: 20,\n alert: 21,\n handshake: 22,\n application_data: 23,\n heartbeat: 24\n};\n\n/**\n * TLS handshake types.\n * enum {\n * hello_request(0), client_hello(1), server_hello(2),\n * certificate(11), server_key_exchange (12),\n * certificate_request(13), server_hello_done(14),\n * certificate_verify(15), client_key_exchange(16),\n * finished(20), (255)\n * } HandshakeType;\n */\ntls.HandshakeType = {\n hello_request: 0,\n client_hello: 1,\n server_hello: 2,\n certificate: 11,\n server_key_exchange: 12,\n certificate_request: 13,\n server_hello_done: 14,\n certificate_verify: 15,\n client_key_exchange: 16,\n finished: 20\n};\n\n/**\n * TLS Alert Protocol.\n *\n * enum { warning(1), fatal(2), (255) } AlertLevel;\n *\n * enum {\n * close_notify(0),\n * unexpected_message(10),\n * bad_record_mac(20),\n * decryption_failed(21),\n * record_overflow(22),\n * decompression_failure(30),\n * handshake_failure(40),\n * bad_certificate(42),\n * unsupported_certificate(43),\n * certificate_revoked(44),\n * certificate_expired(45),\n * certificate_unknown(46),\n * illegal_parameter(47),\n * unknown_ca(48),\n * access_denied(49),\n * decode_error(50),\n * decrypt_error(51),\n * export_restriction(60),\n * protocol_version(70),\n * insufficient_security(71),\n * internal_error(80),\n * user_canceled(90),\n * no_renegotiation(100),\n * (255)\n * } AlertDescription;\n *\n * struct {\n * AlertLevel level;\n * AlertDescription description;\n * } Alert;\n */\ntls.Alert = {};\ntls.Alert.Level = {\n warning: 1,\n fatal: 2\n};\ntls.Alert.Description = {\n close_notify: 0,\n unexpected_message: 10,\n bad_record_mac: 20,\n decryption_failed: 21,\n record_overflow: 22,\n decompression_failure: 30,\n handshake_failure: 40,\n bad_certificate: 42,\n unsupported_certificate: 43,\n certificate_revoked: 44,\n certificate_expired: 45,\n certificate_unknown: 46,\n illegal_parameter: 47,\n unknown_ca: 48,\n access_denied: 49,\n decode_error: 50,\n decrypt_error: 51,\n export_restriction: 60,\n protocol_version: 70,\n insufficient_security: 71,\n internal_error: 80,\n user_canceled: 90,\n no_renegotiation: 100\n};\n\n/**\n * TLS Heartbeat Message types.\n * enum {\n * heartbeat_request(1),\n * heartbeat_response(2),\n * (255)\n * } HeartbeatMessageType;\n */\ntls.HeartbeatMessageType = {\n heartbeat_request: 1,\n heartbeat_response: 2\n};\n\n/**\n * Supported cipher suites.\n */\ntls.CipherSuites = {};\n\n/**\n * Gets a supported cipher suite from its 2 byte ID.\n *\n * @param twoBytes two bytes in a string.\n *\n * @return the matching supported cipher suite or null.\n */\ntls.getCipherSuite = function(twoBytes) {\n var rval = null;\n for(var key in tls.CipherSuites) {\n var cs = tls.CipherSuites[key];\n if(cs.id[0] === twoBytes.charCodeAt(0) &&\n cs.id[1] === twoBytes.charCodeAt(1)) {\n rval = cs;\n break;\n }\n }\n return rval;\n};\n\n/**\n * Called when an unexpected record is encountered.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleUnexpected = function(c, record) {\n // if connection is client and closed, ignore unexpected messages\n var ignore = (!c.open && c.entity === tls.ConnectionEnd.client);\n if(!ignore) {\n c.error(c, {\n message: 'Unexpected message. Received TLS record out of order.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.unexpected_message\n }\n });\n }\n};\n\n/**\n * Called when a client receives a HelloRequest record.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleHelloRequest = function(c, record, length) {\n // ignore renegotiation requests from the server during a handshake, but\n // if handshaking, send a warning alert that renegotation is denied\n if(!c.handshaking && c.handshakes > 0) {\n // send alert warning\n tls.queue(c, tls.createAlert(c, {\n level: tls.Alert.Level.warning,\n description: tls.Alert.Description.no_renegotiation\n }));\n tls.flush(c);\n }\n\n // continue\n c.process();\n};\n\n/**\n * Parses a hello message from a ClientHello or ServerHello record.\n *\n * @param record the record to parse.\n *\n * @return the parsed message.\n */\ntls.parseHelloMessage = function(c, record, length) {\n var msg = null;\n\n var client = (c.entity === tls.ConnectionEnd.client);\n\n // minimum of 38 bytes in message\n if(length < 38) {\n c.error(c, {\n message: client ?\n 'Invalid ServerHello message. Message too short.' :\n 'Invalid ClientHello message. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n } else {\n // use 'remaining' to calculate # of remaining bytes in the message\n var b = record.fragment;\n var remaining = b.length();\n msg = {\n version: {\n major: b.getByte(),\n minor: b.getByte()\n },\n random: forge.util.createBuffer(b.getBytes(32)),\n session_id: readVector(b, 1),\n extensions: []\n };\n if(client) {\n msg.cipher_suite = b.getBytes(2);\n msg.compression_method = b.getByte();\n } else {\n msg.cipher_suites = readVector(b, 2);\n msg.compression_methods = readVector(b, 1);\n }\n\n // read extensions if there are any bytes left in the message\n remaining = length - (remaining - b.length());\n if(remaining > 0) {\n // parse extensions\n var exts = readVector(b, 2);\n while(exts.length() > 0) {\n msg.extensions.push({\n type: [exts.getByte(), exts.getByte()],\n data: readVector(exts, 2)\n });\n }\n\n // TODO: make extension support modular\n if(!client) {\n for(var i = 0; i < msg.extensions.length; ++i) {\n var ext = msg.extensions[i];\n\n // support SNI extension\n if(ext.type[0] === 0x00 && ext.type[1] === 0x00) {\n // get server name list\n var snl = readVector(ext.data, 2);\n while(snl.length() > 0) {\n // read server name type\n var snType = snl.getByte();\n\n // only HostName type (0x00) is known, break out if\n // another type is detected\n if(snType !== 0x00) {\n break;\n }\n\n // add host name to server name list\n c.session.extensions.server_name.serverNameList.push(\n readVector(snl, 2).getBytes());\n }\n }\n }\n }\n }\n\n // version already set, do not allow version change\n if(c.session.version) {\n if(msg.version.major !== c.session.version.major ||\n msg.version.minor !== c.session.version.minor) {\n return c.error(c, {\n message: 'TLS version change is disallowed during renegotiation.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.protocol_version\n }\n });\n }\n }\n\n // get the chosen (ServerHello) cipher suite\n if(client) {\n // FIXME: should be checking configured acceptable cipher suites\n c.session.cipherSuite = tls.getCipherSuite(msg.cipher_suite);\n } else {\n // get a supported preferred (ClientHello) cipher suite\n // choose the first supported cipher suite\n var tmp = forge.util.createBuffer(msg.cipher_suites.bytes());\n while(tmp.length() > 0) {\n // FIXME: should be checking configured acceptable suites\n // cipher suites take up 2 bytes\n c.session.cipherSuite = tls.getCipherSuite(tmp.getBytes(2));\n if(c.session.cipherSuite !== null) {\n break;\n }\n }\n }\n\n // cipher suite not supported\n if(c.session.cipherSuite === null) {\n return c.error(c, {\n message: 'No cipher suites in common.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.handshake_failure\n },\n cipherSuite: forge.util.bytesToHex(msg.cipher_suite)\n });\n }\n\n // TODO: handle compression methods\n if(client) {\n c.session.compressionMethod = msg.compression_method;\n } else {\n // no compression\n c.session.compressionMethod = tls.CompressionMethod.none;\n }\n }\n\n return msg;\n};\n\n/**\n * Creates security parameters for the given connection based on the given\n * hello message.\n *\n * @param c the TLS connection.\n * @param msg the hello message.\n */\ntls.createSecurityParameters = function(c, msg) {\n /* Note: security params are from TLS 1.2, some values like prf_algorithm\n are ignored for TLS 1.0/1.1 and the builtin as specified in the spec is\n used. */\n\n // TODO: handle other options from server when more supported\n\n // get client and server randoms\n var client = (c.entity === tls.ConnectionEnd.client);\n var msgRandom = msg.random.bytes();\n var cRandom = client ? c.session.sp.client_random : msgRandom;\n var sRandom = client ? msgRandom : tls.createRandom().getBytes();\n\n // create new security parameters\n c.session.sp = {\n entity: c.entity,\n prf_algorithm: tls.PRFAlgorithm.tls_prf_sha256,\n bulk_cipher_algorithm: null,\n cipher_type: null,\n enc_key_length: null,\n block_length: null,\n fixed_iv_length: null,\n record_iv_length: null,\n mac_algorithm: null,\n mac_length: null,\n mac_key_length: null,\n compression_algorithm: c.session.compressionMethod,\n pre_master_secret: null,\n master_secret: null,\n client_random: cRandom,\n server_random: sRandom\n };\n};\n\n/**\n * Called when a client receives a ServerHello record.\n *\n * When a ServerHello message will be sent:\n * The server will send this message in response to a client hello message\n * when it was able to find an acceptable set of algorithms. If it cannot\n * find such a match, it will respond with a handshake failure alert.\n *\n * uint24 length;\n * struct {\n * ProtocolVersion server_version;\n * Random random;\n * SessionID session_id;\n * CipherSuite cipher_suite;\n * CompressionMethod compression_method;\n * select(extensions_present) {\n * case false:\n * struct {};\n * case true:\n * Extension extensions<0..2^16-1>;\n * };\n * } ServerHello;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleServerHello = function(c, record, length) {\n var msg = tls.parseHelloMessage(c, record, length);\n if(c.fail) {\n return;\n }\n\n // ensure server version is compatible\n if(msg.version.minor <= c.version.minor) {\n c.version.minor = msg.version.minor;\n } else {\n return c.error(c, {\n message: 'Incompatible TLS version.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.protocol_version\n }\n });\n }\n\n // indicate session version has been set\n c.session.version = c.version;\n\n // get the session ID from the message\n var sessionId = msg.session_id.bytes();\n\n // if the session ID is not blank and matches the cached one, resume\n // the session\n if(sessionId.length > 0 && sessionId === c.session.id) {\n // resuming session, expect a ChangeCipherSpec next\n c.expect = SCC;\n c.session.resuming = true;\n\n // get new server random\n c.session.sp.server_random = msg.random.bytes();\n } else {\n // not resuming, expect a server Certificate message next\n c.expect = SCE;\n c.session.resuming = false;\n\n // create new security parameters\n tls.createSecurityParameters(c, msg);\n }\n\n // set new session ID\n c.session.id = sessionId;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a server receives a ClientHello record.\n *\n * When a ClientHello message will be sent:\n * When a client first connects to a server it is required to send the\n * client hello as its first message. The client can also send a client\n * hello in response to a hello request or on its own initiative in order\n * to renegotiate the security parameters in an existing connection.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleClientHello = function(c, record, length) {\n var msg = tls.parseHelloMessage(c, record, length);\n if(c.fail) {\n return;\n }\n\n // get the session ID from the message\n var sessionId = msg.session_id.bytes();\n\n // see if the given session ID is in the cache\n var session = null;\n if(c.sessionCache) {\n session = c.sessionCache.getSession(sessionId);\n if(session === null) {\n // session ID not found\n sessionId = '';\n } else if(session.version.major !== msg.version.major ||\n session.version.minor > msg.version.minor) {\n // if session version is incompatible with client version, do not resume\n session = null;\n sessionId = '';\n }\n }\n\n // no session found to resume, generate a new session ID\n if(sessionId.length === 0) {\n sessionId = forge.random.getBytes(32);\n }\n\n // update session\n c.session.id = sessionId;\n c.session.clientHelloVersion = msg.version;\n c.session.sp = {};\n if(session) {\n // use version and security parameters from resumed session\n c.version = c.session.version = session.version;\n c.session.sp = session.sp;\n } else {\n // use highest compatible minor version\n var version;\n for(var i = 1; i < tls.SupportedVersions.length; ++i) {\n version = tls.SupportedVersions[i];\n if(version.minor <= msg.version.minor) {\n break;\n }\n }\n c.version = {major: version.major, minor: version.minor};\n c.session.version = c.version;\n }\n\n // if a session is set, resume it\n if(session !== null) {\n // resuming session, expect a ChangeCipherSpec next\n c.expect = CCC;\n c.session.resuming = true;\n\n // get new client random\n c.session.sp.client_random = msg.random.bytes();\n } else {\n // not resuming, expect a Certificate or ClientKeyExchange\n c.expect = (c.verifyClient !== false) ? CCE : CKE;\n c.session.resuming = false;\n\n // create new security parameters\n tls.createSecurityParameters(c, msg);\n }\n\n // connection now open\n c.open = true;\n\n // queue server hello\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createServerHello(c)\n }));\n\n if(c.session.resuming) {\n // queue change cipher spec message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.change_cipher_spec,\n data: tls.createChangeCipherSpec()\n }));\n\n // create pending state\n c.state.pending = tls.createConnectionState(c);\n\n // change current write state to pending write state\n c.state.current.write = c.state.pending.write;\n\n // queue finished\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createFinished(c)\n }));\n } else {\n // queue server certificate\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificate(c)\n }));\n\n if(!c.fail) {\n // queue server key exchange\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createServerKeyExchange(c)\n }));\n\n // request client certificate if set\n if(c.verifyClient !== false) {\n // queue certificate request\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificateRequest(c)\n }));\n }\n\n // queue server hello done\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createServerHelloDone(c)\n }));\n }\n }\n\n // send records\n tls.flush(c);\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a Certificate record.\n *\n * When this message will be sent:\n * The server must send a certificate whenever the agreed-upon key exchange\n * method is not an anonymous one. This message will always immediately\n * follow the server hello message.\n *\n * Meaning of this message:\n * The certificate type must be appropriate for the selected cipher suite's\n * key exchange algorithm, and is generally an X.509v3 certificate. It must\n * contain a key which matches the key exchange method, as follows. Unless\n * otherwise specified, the signing algorithm for the certificate must be\n * the same as the algorithm for the certificate key. Unless otherwise\n * specified, the public key may be of any length.\n *\n * opaque ASN.1Cert<1..2^24-1>;\n * struct {\n * ASN.1Cert certificate_list<1..2^24-1>;\n * } Certificate;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleCertificate = function(c, record, length) {\n // minimum of 3 bytes in message\n if(length < 3) {\n return c.error(c, {\n message: 'Invalid Certificate message. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n var b = record.fragment;\n var msg = {\n certificate_list: readVector(b, 3)\n };\n\n /* The sender's certificate will be first in the list (chain), each\n subsequent one that follows will certify the previous one, but root\n certificates (self-signed) that specify the certificate authority may\n be omitted under the assumption that clients must already possess it. */\n var cert, asn1;\n var certs = [];\n try {\n while(msg.certificate_list.length() > 0) {\n // each entry in msg.certificate_list is a vector with 3 len bytes\n cert = readVector(msg.certificate_list, 3);\n asn1 = forge.asn1.fromDer(cert);\n cert = forge.pki.certificateFromAsn1(asn1, true);\n certs.push(cert);\n }\n } catch(ex) {\n return c.error(c, {\n message: 'Could not parse certificate list.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.bad_certificate\n }\n });\n }\n\n // ensure at least 1 certificate was provided if in client-mode\n // or if verifyClient was set to true to require a certificate\n // (as opposed to 'optional')\n var client = (c.entity === tls.ConnectionEnd.client);\n if((client || c.verifyClient === true) && certs.length === 0) {\n // error, no certificate\n c.error(c, {\n message: client ?\n 'No server certificate provided.' :\n 'No client certificate provided.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n } else if(certs.length === 0) {\n // no certs to verify\n // expect a ServerKeyExchange or ClientKeyExchange message next\n c.expect = client ? SKE : CKE;\n } else {\n // save certificate in session\n if(client) {\n c.session.serverCertificate = certs[0];\n } else {\n c.session.clientCertificate = certs[0];\n }\n\n if(tls.verifyCertificateChain(c, certs)) {\n // expect a ServerKeyExchange or ClientKeyExchange message next\n c.expect = client ? SKE : CKE;\n }\n }\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a ServerKeyExchange record.\n *\n * When this message will be sent:\n * This message will be sent immediately after the server certificate\n * message (or the server hello message, if this is an anonymous\n * negotiation).\n *\n * The server key exchange message is sent by the server only when the\n * server certificate message (if sent) does not contain enough data to\n * allow the client to exchange a premaster secret.\n *\n * Meaning of this message:\n * This message conveys cryptographic information to allow the client to\n * communicate the premaster secret: either an RSA public key to encrypt\n * the premaster secret with, or a Diffie-Hellman public key with which the\n * client can complete a key exchange (with the result being the premaster\n * secret.)\n *\n * enum {\n * dhe_dss, dhe_rsa, dh_anon, rsa, dh_dss, dh_rsa\n * } KeyExchangeAlgorithm;\n *\n * struct {\n * opaque dh_p<1..2^16-1>;\n * opaque dh_g<1..2^16-1>;\n * opaque dh_Ys<1..2^16-1>;\n * } ServerDHParams;\n *\n * struct {\n * select(KeyExchangeAlgorithm) {\n * case dh_anon:\n * ServerDHParams params;\n * case dhe_dss:\n * case dhe_rsa:\n * ServerDHParams params;\n * digitally-signed struct {\n * opaque client_random[32];\n * opaque server_random[32];\n * ServerDHParams params;\n * } signed_params;\n * case rsa:\n * case dh_dss:\n * case dh_rsa:\n * struct {};\n * };\n * } ServerKeyExchange;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleServerKeyExchange = function(c, record, length) {\n // this implementation only supports RSA, no Diffie-Hellman support\n // so any length > 0 is invalid\n if(length > 0) {\n return c.error(c, {\n message: 'Invalid key parameters. Only RSA is supported.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.unsupported_certificate\n }\n });\n }\n\n // expect an optional CertificateRequest message next\n c.expect = SCR;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a ClientKeyExchange record.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleClientKeyExchange = function(c, record, length) {\n // this implementation only supports RSA, no Diffie-Hellman support\n // so any length < 48 is invalid\n if(length < 48) {\n return c.error(c, {\n message: 'Invalid key parameters. Only RSA is supported.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.unsupported_certificate\n }\n });\n }\n\n var b = record.fragment;\n var msg = {\n enc_pre_master_secret: readVector(b, 2).getBytes()\n };\n\n // do rsa decryption\n var privateKey = null;\n if(c.getPrivateKey) {\n try {\n privateKey = c.getPrivateKey(c, c.session.serverCertificate);\n privateKey = forge.pki.privateKeyFromPem(privateKey);\n } catch(ex) {\n c.error(c, {\n message: 'Could not get private key.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n }\n\n if(privateKey === null) {\n return c.error(c, {\n message: 'No private key set.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n\n try {\n // decrypt 48-byte pre-master secret\n var sp = c.session.sp;\n sp.pre_master_secret = privateKey.decrypt(msg.enc_pre_master_secret);\n\n // ensure client hello version matches first 2 bytes\n var version = c.session.clientHelloVersion;\n if(version.major !== sp.pre_master_secret.charCodeAt(0) ||\n version.minor !== sp.pre_master_secret.charCodeAt(1)) {\n // error, do not send alert (see BLEI attack below)\n throw new Error('TLS version rollback attack detected.');\n }\n } catch(ex) {\n /* Note: Daniel Bleichenbacher [BLEI] can be used to attack a\n TLS server which is using PKCS#1 encoded RSA, so instead of\n failing here, we generate 48 random bytes and use that as\n the pre-master secret. */\n sp.pre_master_secret = forge.random.getBytes(48);\n }\n\n // expect a CertificateVerify message if a Certificate was received that\n // does not have fixed Diffie-Hellman params, otherwise expect\n // ChangeCipherSpec\n c.expect = CCC;\n if(c.session.clientCertificate !== null) {\n // only RSA support, so expect CertificateVerify\n // TODO: support Diffie-Hellman\n c.expect = CCV;\n }\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a CertificateRequest record.\n *\n * When this message will be sent:\n * A non-anonymous server can optionally request a certificate from the\n * client, if appropriate for the selected cipher suite. This message, if\n * sent, will immediately follow the Server Key Exchange message (if it is\n * sent; otherwise, the Server Certificate message).\n *\n * enum {\n * rsa_sign(1), dss_sign(2), rsa_fixed_dh(3), dss_fixed_dh(4),\n * rsa_ephemeral_dh_RESERVED(5), dss_ephemeral_dh_RESERVED(6),\n * fortezza_dms_RESERVED(20), (255)\n * } ClientCertificateType;\n *\n * opaque DistinguishedName<1..2^16-1>;\n *\n * struct {\n * ClientCertificateType certificate_types<1..2^8-1>;\n * SignatureAndHashAlgorithm supported_signature_algorithms<2^16-1>;\n * DistinguishedName certificate_authorities<0..2^16-1>;\n * } CertificateRequest;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleCertificateRequest = function(c, record, length) {\n // minimum of 3 bytes in message\n if(length < 3) {\n return c.error(c, {\n message: 'Invalid CertificateRequest. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n // TODO: TLS 1.2+ has different format including\n // SignatureAndHashAlgorithm after cert types\n var b = record.fragment;\n var msg = {\n certificate_types: readVector(b, 1),\n certificate_authorities: readVector(b, 2)\n };\n\n // save certificate request in session\n c.session.certificateRequest = msg;\n\n // expect a ServerHelloDone message next\n c.expect = SHD;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a server receives a CertificateVerify record.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleCertificateVerify = function(c, record, length) {\n if(length < 2) {\n return c.error(c, {\n message: 'Invalid CertificateVerify. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n // rewind to get full bytes for message so it can be manually\n // digested below (special case for CertificateVerify messages because\n // they must be digested *after* handling as opposed to all others)\n var b = record.fragment;\n b.read -= 4;\n var msgBytes = b.bytes();\n b.read += 4;\n\n var msg = {\n signature: readVector(b, 2).getBytes()\n };\n\n // TODO: add support for DSA\n\n // generate data to verify\n var verify = forge.util.createBuffer();\n verify.putBuffer(c.session.md5.digest());\n verify.putBuffer(c.session.sha1.digest());\n verify = verify.getBytes();\n\n try {\n var cert = c.session.clientCertificate;\n /*b = forge.pki.rsa.decrypt(\n msg.signature, cert.publicKey, true, verify.length);\n if(b !== verify) {*/\n if(!cert.publicKey.verify(verify, msg.signature, 'NONE')) {\n throw new Error('CertificateVerify signature does not match.');\n }\n\n // digest message now that it has been handled\n c.session.md5.update(msgBytes);\n c.session.sha1.update(msgBytes);\n } catch(ex) {\n return c.error(c, {\n message: 'Bad signature in CertificateVerify.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.handshake_failure\n }\n });\n }\n\n // expect ChangeCipherSpec\n c.expect = CCC;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a ServerHelloDone record.\n *\n * When this message will be sent:\n * The server hello done message is sent by the server to indicate the end\n * of the server hello and associated messages. After sending this message\n * the server will wait for a client response.\n *\n * Meaning of this message:\n * This message means that the server is done sending messages to support\n * the key exchange, and the client can proceed with its phase of the key\n * exchange.\n *\n * Upon receipt of the server hello done message the client should verify\n * that the server provided a valid certificate if required and check that\n * the server hello parameters are acceptable.\n *\n * struct {} ServerHelloDone;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleServerHelloDone = function(c, record, length) {\n // len must be 0 bytes\n if(length > 0) {\n return c.error(c, {\n message: 'Invalid ServerHelloDone message. Invalid length.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.record_overflow\n }\n });\n }\n\n if(c.serverCertificate === null) {\n // no server certificate was provided\n var error = {\n message: 'No server certificate provided. Not enough security.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.insufficient_security\n }\n };\n\n // call application callback\n var depth = 0;\n var ret = c.verify(c, error.alert.description, depth, []);\n if(ret !== true) {\n // check for custom alert info\n if(ret || ret === 0) {\n // set custom message and alert description\n if(typeof ret === 'object' && !forge.util.isArray(ret)) {\n if(ret.message) {\n error.message = ret.message;\n }\n if(ret.alert) {\n error.alert.description = ret.alert;\n }\n } else if(typeof ret === 'number') {\n // set custom alert description\n error.alert.description = ret;\n }\n }\n\n // send error\n return c.error(c, error);\n }\n }\n\n // create client certificate message if requested\n if(c.session.certificateRequest !== null) {\n record = tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificate(c)\n });\n tls.queue(c, record);\n }\n\n // create client key exchange message\n record = tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createClientKeyExchange(c)\n });\n tls.queue(c, record);\n\n // expect no messages until the following callback has been called\n c.expect = SER;\n\n // create callback to handle client signature (for client-certs)\n var callback = function(c, signature) {\n if(c.session.certificateRequest !== null &&\n c.session.clientCertificate !== null) {\n // create certificate verify message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificateVerify(c, signature)\n }));\n }\n\n // create change cipher spec message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.change_cipher_spec,\n data: tls.createChangeCipherSpec()\n }));\n\n // create pending state\n c.state.pending = tls.createConnectionState(c);\n\n // change current write state to pending write state\n c.state.current.write = c.state.pending.write;\n\n // create finished message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createFinished(c)\n }));\n\n // expect a server ChangeCipherSpec message next\n c.expect = SCC;\n\n // send records\n tls.flush(c);\n\n // continue\n c.process();\n };\n\n // if there is no certificate request or no client certificate, do\n // callback immediately\n if(c.session.certificateRequest === null ||\n c.session.clientCertificate === null) {\n return callback(c, null);\n }\n\n // otherwise get the client signature\n tls.getClientSignature(c, callback);\n};\n\n/**\n * Called when a ChangeCipherSpec record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleChangeCipherSpec = function(c, record) {\n if(record.fragment.getByte() !== 0x01) {\n return c.error(c, {\n message: 'Invalid ChangeCipherSpec message received.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n // create pending state if:\n // 1. Resuming session in client mode OR\n // 2. NOT resuming session in server mode\n var client = (c.entity === tls.ConnectionEnd.client);\n if((c.session.resuming && client) || (!c.session.resuming && !client)) {\n c.state.pending = tls.createConnectionState(c);\n }\n\n // change current read state to pending read state\n c.state.current.read = c.state.pending.read;\n\n // clear pending state if:\n // 1. NOT resuming session in client mode OR\n // 2. resuming a session in server mode\n if((!c.session.resuming && client) || (c.session.resuming && !client)) {\n c.state.pending = null;\n }\n\n // expect a Finished record next\n c.expect = client ? SFI : CFI;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a Finished record is received.\n *\n * When this message will be sent:\n * A finished message is always sent immediately after a change\n * cipher spec message to verify that the key exchange and\n * authentication processes were successful. It is essential that a\n * change cipher spec message be received between the other\n * handshake messages and the Finished message.\n *\n * Meaning of this message:\n * The finished message is the first protected with the just-\n * negotiated algorithms, keys, and secrets. Recipients of finished\n * messages must verify that the contents are correct. Once a side\n * has sent its Finished message and received and validated the\n * Finished message from its peer, it may begin to send and receive\n * application data over the connection.\n *\n * struct {\n * opaque verify_data[verify_data_length];\n * } Finished;\n *\n * verify_data\n * PRF(master_secret, finished_label, Hash(handshake_messages))\n * [0..verify_data_length-1];\n *\n * finished_label\n * For Finished messages sent by the client, the string\n * \"client finished\". For Finished messages sent by the server, the\n * string \"server finished\".\n *\n * verify_data_length depends on the cipher suite. If it is not specified\n * by the cipher suite, then it is 12. Versions of TLS < 1.2 always used\n * 12 bytes.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleFinished = function(c, record, length) {\n // rewind to get full bytes for message so it can be manually\n // digested below (special case for Finished messages because they\n // must be digested *after* handling as opposed to all others)\n var b = record.fragment;\n b.read -= 4;\n var msgBytes = b.bytes();\n b.read += 4;\n\n // message contains only verify_data\n var vd = record.fragment.getBytes();\n\n // ensure verify data is correct\n b = forge.util.createBuffer();\n b.putBuffer(c.session.md5.digest());\n b.putBuffer(c.session.sha1.digest());\n\n // set label based on entity type\n var client = (c.entity === tls.ConnectionEnd.client);\n var label = client ? 'server finished' : 'client finished';\n\n // TODO: determine prf function and verify length for TLS 1.2\n var sp = c.session.sp;\n var vdl = 12;\n var prf = prf_TLS1;\n b = prf(sp.master_secret, label, b.getBytes(), vdl);\n if(b.getBytes() !== vd) {\n return c.error(c, {\n message: 'Invalid verify_data in Finished message.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.decrypt_error\n }\n });\n }\n\n // digest finished message now that it has been handled\n c.session.md5.update(msgBytes);\n c.session.sha1.update(msgBytes);\n\n // resuming session as client or NOT resuming session as server\n if((c.session.resuming && client) || (!c.session.resuming && !client)) {\n // create change cipher spec message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.change_cipher_spec,\n data: tls.createChangeCipherSpec()\n }));\n\n // change current write state to pending write state, clear pending\n c.state.current.write = c.state.pending.write;\n c.state.pending = null;\n\n // create finished message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createFinished(c)\n }));\n }\n\n // expect application data next\n c.expect = client ? SAD : CAD;\n\n // handshake complete\n c.handshaking = false;\n ++c.handshakes;\n\n // save access to peer certificate\n c.peerCertificate = client ?\n c.session.serverCertificate : c.session.clientCertificate;\n\n // send records\n tls.flush(c);\n\n // now connected\n c.isConnected = true;\n c.connected(c);\n\n // continue\n c.process();\n};\n\n/**\n * Called when an Alert record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleAlert = function(c, record) {\n // read alert\n var b = record.fragment;\n var alert = {\n level: b.getByte(),\n description: b.getByte()\n };\n\n // TODO: consider using a table?\n // get appropriate message\n var msg;\n switch(alert.description) {\n case tls.Alert.Description.close_notify:\n msg = 'Connection closed.';\n break;\n case tls.Alert.Description.unexpected_message:\n msg = 'Unexpected message.';\n break;\n case tls.Alert.Description.bad_record_mac:\n msg = 'Bad record MAC.';\n break;\n case tls.Alert.Description.decryption_failed:\n msg = 'Decryption failed.';\n break;\n case tls.Alert.Description.record_overflow:\n msg = 'Record overflow.';\n break;\n case tls.Alert.Description.decompression_failure:\n msg = 'Decompression failed.';\n break;\n case tls.Alert.Description.handshake_failure:\n msg = 'Handshake failure.';\n break;\n case tls.Alert.Description.bad_certificate:\n msg = 'Bad certificate.';\n break;\n case tls.Alert.Description.unsupported_certificate:\n msg = 'Unsupported certificate.';\n break;\n case tls.Alert.Description.certificate_revoked:\n msg = 'Certificate revoked.';\n break;\n case tls.Alert.Description.certificate_expired:\n msg = 'Certificate expired.';\n break;\n case tls.Alert.Description.certificate_unknown:\n msg = 'Certificate unknown.';\n break;\n case tls.Alert.Description.illegal_parameter:\n msg = 'Illegal parameter.';\n break;\n case tls.Alert.Description.unknown_ca:\n msg = 'Unknown certificate authority.';\n break;\n case tls.Alert.Description.access_denied:\n msg = 'Access denied.';\n break;\n case tls.Alert.Description.decode_error:\n msg = 'Decode error.';\n break;\n case tls.Alert.Description.decrypt_error:\n msg = 'Decrypt error.';\n break;\n case tls.Alert.Description.export_restriction:\n msg = 'Export restriction.';\n break;\n case tls.Alert.Description.protocol_version:\n msg = 'Unsupported protocol version.';\n break;\n case tls.Alert.Description.insufficient_security:\n msg = 'Insufficient security.';\n break;\n case tls.Alert.Description.internal_error:\n msg = 'Internal error.';\n break;\n case tls.Alert.Description.user_canceled:\n msg = 'User canceled.';\n break;\n case tls.Alert.Description.no_renegotiation:\n msg = 'Renegotiation not supported.';\n break;\n default:\n msg = 'Unknown error.';\n break;\n }\n\n // close connection on close_notify, not an error\n if(alert.description === tls.Alert.Description.close_notify) {\n return c.close();\n }\n\n // call error handler\n c.error(c, {\n message: msg,\n send: false,\n // origin is the opposite end\n origin: (c.entity === tls.ConnectionEnd.client) ? 'server' : 'client',\n alert: alert\n });\n\n // continue\n c.process();\n};\n\n/**\n * Called when a Handshake record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleHandshake = function(c, record) {\n // get the handshake type and message length\n var b = record.fragment;\n var type = b.getByte();\n var length = b.getInt24();\n\n // see if the record fragment doesn't yet contain the full message\n if(length > b.length()) {\n // cache the record, clear its fragment, and reset the buffer read\n // pointer before the type and length were read\n c.fragmented = record;\n record.fragment = forge.util.createBuffer();\n b.read -= 4;\n\n // continue\n return c.process();\n }\n\n // full message now available, clear cache, reset read pointer to\n // before type and length\n c.fragmented = null;\n b.read -= 4;\n\n // save the handshake bytes for digestion after handler is found\n // (include type and length of handshake msg)\n var bytes = b.bytes(length + 4);\n\n // restore read pointer\n b.read += 4;\n\n // handle expected message\n if(type in hsTable[c.entity][c.expect]) {\n // initialize server session\n if(c.entity === tls.ConnectionEnd.server && !c.open && !c.fail) {\n c.handshaking = true;\n c.session = {\n version: null,\n extensions: {\n server_name: {\n serverNameList: []\n }\n },\n cipherSuite: null,\n compressionMethod: null,\n serverCertificate: null,\n clientCertificate: null,\n md5: forge.md.md5.create(),\n sha1: forge.md.sha1.create()\n };\n }\n\n /* Update handshake messages digest. Finished and CertificateVerify\n messages are not digested here. They can't be digested as part of\n the verify_data that they contain. These messages are manually\n digested in their handlers. HelloRequest messages are simply never\n included in the handshake message digest according to spec. */\n if(type !== tls.HandshakeType.hello_request &&\n type !== tls.HandshakeType.certificate_verify &&\n type !== tls.HandshakeType.finished) {\n c.session.md5.update(bytes);\n c.session.sha1.update(bytes);\n }\n\n // handle specific handshake type record\n hsTable[c.entity][c.expect][type](c, record, length);\n } else {\n // unexpected record\n tls.handleUnexpected(c, record);\n }\n};\n\n/**\n * Called when an ApplicationData record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleApplicationData = function(c, record) {\n // buffer data, notify that its ready\n c.data.putBuffer(record.fragment);\n c.dataReady(c);\n\n // continue\n c.process();\n};\n\n/**\n * Called when a Heartbeat record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleHeartbeat = function(c, record) {\n // get the heartbeat type and payload\n var b = record.fragment;\n var type = b.getByte();\n var length = b.getInt16();\n var payload = b.getBytes(length);\n\n if(type === tls.HeartbeatMessageType.heartbeat_request) {\n // discard request during handshake or if length is too large\n if(c.handshaking || length > payload.length) {\n // continue\n return c.process();\n }\n // retransmit payload\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.heartbeat,\n data: tls.createHeartbeat(\n tls.HeartbeatMessageType.heartbeat_response, payload)\n }));\n tls.flush(c);\n } else if(type === tls.HeartbeatMessageType.heartbeat_response) {\n // check payload against expected payload, discard heartbeat if no match\n if(payload !== c.expectedHeartbeatPayload) {\n // continue\n return c.process();\n }\n\n // notify that a valid heartbeat was received\n if(c.heartbeatReceived) {\n c.heartbeatReceived(c, forge.util.createBuffer(payload));\n }\n }\n\n // continue\n c.process();\n};\n\n/**\n * The transistional state tables for receiving TLS records. It maps the\n * current TLS engine state and a received record to a function to handle the\n * record and update the state.\n *\n * For instance, if the current state is SHE, then the TLS engine is expecting\n * a ServerHello record. Once a record is received, the handler function is\n * looked up using the state SHE and the record's content type.\n *\n * The resulting function will either be an error handler or a record handler.\n * The function will take whatever action is appropriate and update the state\n * for the next record.\n *\n * The states are all based on possible server record types. Note that the\n * client will never specifically expect to receive a HelloRequest or an alert\n * from the server so there is no state that reflects this. These messages may\n * occur at any time.\n *\n * There are two tables for mapping states because there is a second tier of\n * types for handshake messages. Once a record with a content type of handshake\n * is received, the handshake record handler will look up the handshake type in\n * the secondary map to get its appropriate handler.\n *\n * Valid message orders are as follows:\n *\n * =======================FULL HANDSHAKE======================\n * Client Server\n *\n * ClientHello -------->\n * ServerHello\n * Certificate*\n * ServerKeyExchange*\n * CertificateRequest*\n * <-------- ServerHelloDone\n * Certificate*\n * ClientKeyExchange\n * CertificateVerify*\n * [ChangeCipherSpec]\n * Finished -------->\n * [ChangeCipherSpec]\n * <-------- Finished\n * Application Data <-------> Application Data\n *\n * =====================SESSION RESUMPTION=====================\n * Client Server\n *\n * ClientHello -------->\n * ServerHello\n * [ChangeCipherSpec]\n * <-------- Finished\n * [ChangeCipherSpec]\n * Finished -------->\n * Application Data <-------> Application Data\n */\n// client expect states (indicate which records are expected to be received)\nvar SHE = 0; // rcv server hello\nvar SCE = 1; // rcv server certificate\nvar SKE = 2; // rcv server key exchange\nvar SCR = 3; // rcv certificate request\nvar SHD = 4; // rcv server hello done\nvar SCC = 5; // rcv change cipher spec\nvar SFI = 6; // rcv finished\nvar SAD = 7; // rcv application data\nvar SER = 8; // not expecting any messages at this point\n\n// server expect states\nvar CHE = 0; // rcv client hello\nvar CCE = 1; // rcv client certificate\nvar CKE = 2; // rcv client key exchange\nvar CCV = 3; // rcv certificate verify\nvar CCC = 4; // rcv change cipher spec\nvar CFI = 5; // rcv finished\nvar CAD = 6; // rcv application data\nvar CER = 7; // not expecting any messages at this point\n\n// map client current expect state and content type to function\nvar __ = tls.handleUnexpected;\nvar R0 = tls.handleChangeCipherSpec;\nvar R1 = tls.handleAlert;\nvar R2 = tls.handleHandshake;\nvar R3 = tls.handleApplicationData;\nvar R4 = tls.handleHeartbeat;\nvar ctTable = [];\nctTable[tls.ConnectionEnd.client] = [\n// CC,AL,HS,AD,HB\n/*SHE*/[__,R1,R2,__,R4],\n/*SCE*/[__,R1,R2,__,R4],\n/*SKE*/[__,R1,R2,__,R4],\n/*SCR*/[__,R1,R2,__,R4],\n/*SHD*/[__,R1,R2,__,R4],\n/*SCC*/[R0,R1,__,__,R4],\n/*SFI*/[__,R1,R2,__,R4],\n/*SAD*/[__,R1,R2,R3,R4],\n/*SER*/[__,R1,R2,__,R4]\n];\n\n// map server current expect state and content type to function\nctTable[tls.ConnectionEnd.server] = [\n// CC,AL,HS,AD\n/*CHE*/[__,R1,R2,__,R4],\n/*CCE*/[__,R1,R2,__,R4],\n/*CKE*/[__,R1,R2,__,R4],\n/*CCV*/[__,R1,R2,__,R4],\n/*CCC*/[R0,R1,__,__,R4],\n/*CFI*/[__,R1,R2,__,R4],\n/*CAD*/[__,R1,R2,R3,R4],\n/*CER*/[__,R1,R2,__,R4]\n];\n\n// map client current expect state and handshake type to function\nvar H0 = tls.handleHelloRequest;\nvar H1 = tls.handleServerHello;\nvar H2 = tls.handleCertificate;\nvar H3 = tls.handleServerKeyExchange;\nvar H4 = tls.handleCertificateRequest;\nvar H5 = tls.handleServerHelloDone;\nvar H6 = tls.handleFinished;\nvar hsTable = [];\nhsTable[tls.ConnectionEnd.client] = [\n// HR,01,SH,03,04,05,06,07,08,09,10,SC,SK,CR,HD,15,CK,17,18,19,FI\n/*SHE*/[__,__,H1,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*SCE*/[H0,__,__,__,__,__,__,__,__,__,__,H2,H3,H4,H5,__,__,__,__,__,__],\n/*SKE*/[H0,__,__,__,__,__,__,__,__,__,__,__,H3,H4,H5,__,__,__,__,__,__],\n/*SCR*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,H4,H5,__,__,__,__,__,__],\n/*SHD*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,H5,__,__,__,__,__,__],\n/*SCC*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*SFI*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H6],\n/*SAD*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*SER*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__]\n];\n\n// map server current expect state and handshake type to function\n// Note: CAD[CH] does not map to FB because renegotation is prohibited\nvar H7 = tls.handleClientHello;\nvar H8 = tls.handleClientKeyExchange;\nvar H9 = tls.handleCertificateVerify;\nhsTable[tls.ConnectionEnd.server] = [\n// 01,CH,02,03,04,05,06,07,08,09,10,CC,12,13,14,CV,CK,17,18,19,FI\n/*CHE*/[__,H7,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*CCE*/[__,__,__,__,__,__,__,__,__,__,__,H2,__,__,__,__,__,__,__,__,__],\n/*CKE*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H8,__,__,__,__],\n/*CCV*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H9,__,__,__,__,__],\n/*CCC*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*CFI*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H6],\n/*CAD*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*CER*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__]\n];\n\n/**\n * Generates the master_secret and keys using the given security parameters.\n *\n * The security parameters for a TLS connection state are defined as such:\n *\n * struct {\n * ConnectionEnd entity;\n * PRFAlgorithm prf_algorithm;\n * BulkCipherAlgorithm bulk_cipher_algorithm;\n * CipherType cipher_type;\n * uint8 enc_key_length;\n * uint8 block_length;\n * uint8 fixed_iv_length;\n * uint8 record_iv_length;\n * MACAlgorithm mac_algorithm;\n * uint8 mac_length;\n * uint8 mac_key_length;\n * CompressionMethod compression_algorithm;\n * opaque master_secret[48];\n * opaque client_random[32];\n * opaque server_random[32];\n * } SecurityParameters;\n *\n * Note that this definition is from TLS 1.2. In TLS 1.0 some of these\n * parameters are ignored because, for instance, the PRFAlgorithm is a\n * builtin-fixed algorithm combining iterations of MD5 and SHA-1 in TLS 1.0.\n *\n * The Record Protocol requires an algorithm to generate keys required by the\n * current connection state.\n *\n * The master secret is expanded into a sequence of secure bytes, which is then\n * split to a client write MAC key, a server write MAC key, a client write\n * encryption key, and a server write encryption key. In TLS 1.0 a client write\n * IV and server write IV are also generated. Each of these is generated from\n * the byte sequence in that order. Unused values are empty. In TLS 1.2, some\n * AEAD ciphers may additionally require a client write IV and a server write\n * IV (see Section 6.2.3.3).\n *\n * When keys, MAC keys, and IVs are generated, the master secret is used as an\n * entropy source.\n *\n * To generate the key material, compute:\n *\n * master_secret = PRF(pre_master_secret, \"master secret\",\n * ClientHello.random + ServerHello.random)\n *\n * key_block = PRF(SecurityParameters.master_secret,\n * \"key expansion\",\n * SecurityParameters.server_random +\n * SecurityParameters.client_random);\n *\n * until enough output has been generated. Then, the key_block is\n * partitioned as follows:\n *\n * client_write_MAC_key[SecurityParameters.mac_key_length]\n * server_write_MAC_key[SecurityParameters.mac_key_length]\n * client_write_key[SecurityParameters.enc_key_length]\n * server_write_key[SecurityParameters.enc_key_length]\n * client_write_IV[SecurityParameters.fixed_iv_length]\n * server_write_IV[SecurityParameters.fixed_iv_length]\n *\n * In TLS 1.2, the client_write_IV and server_write_IV are only generated for\n * implicit nonce techniques as described in Section 3.2.1 of [AEAD]. This\n * implementation uses TLS 1.0 so IVs are generated.\n *\n * Implementation note: The currently defined cipher suite which requires the\n * most material is AES_256_CBC_SHA256. It requires 2 x 32 byte keys and 2 x 32\n * byte MAC keys, for a total 128 bytes of key material. In TLS 1.0 it also\n * requires 2 x 16 byte IVs, so it actually takes 160 bytes of key material.\n *\n * @param c the connection.\n * @param sp the security parameters to use.\n *\n * @return the security keys.\n */\ntls.generateKeys = function(c, sp) {\n // TLS_RSA_WITH_AES_128_CBC_SHA (required to be compliant with TLS 1.2) &\n // TLS_RSA_WITH_AES_256_CBC_SHA are the only cipher suites implemented\n // at present\n\n // TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA is required to be compliant with\n // TLS 1.0 but we don't care right now because AES is better and we have\n // an implementation for it\n\n // TODO: TLS 1.2 implementation\n /*\n // determine the PRF\n var prf;\n switch(sp.prf_algorithm) {\n case tls.PRFAlgorithm.tls_prf_sha256:\n prf = prf_sha256;\n break;\n default:\n // should never happen\n throw new Error('Invalid PRF');\n }\n */\n\n // TLS 1.0/1.1 implementation\n var prf = prf_TLS1;\n\n // concatenate server and client random\n var random = sp.client_random + sp.server_random;\n\n // only create master secret if session is new\n if(!c.session.resuming) {\n // create master secret, clean up pre-master secret\n sp.master_secret = prf(\n sp.pre_master_secret, 'master secret', random, 48).bytes();\n sp.pre_master_secret = null;\n }\n\n // generate the amount of key material needed\n random = sp.server_random + sp.client_random;\n var length = 2 * sp.mac_key_length + 2 * sp.enc_key_length;\n\n // include IV for TLS/1.0\n var tls10 = (c.version.major === tls.Versions.TLS_1_0.major &&\n c.version.minor === tls.Versions.TLS_1_0.minor);\n if(tls10) {\n length += 2 * sp.fixed_iv_length;\n }\n var km = prf(sp.master_secret, 'key expansion', random, length);\n\n // split the key material into the MAC and encryption keys\n var rval = {\n client_write_MAC_key: km.getBytes(sp.mac_key_length),\n server_write_MAC_key: km.getBytes(sp.mac_key_length),\n client_write_key: km.getBytes(sp.enc_key_length),\n server_write_key: km.getBytes(sp.enc_key_length)\n };\n\n // include TLS 1.0 IVs\n if(tls10) {\n rval.client_write_IV = km.getBytes(sp.fixed_iv_length);\n rval.server_write_IV = km.getBytes(sp.fixed_iv_length);\n }\n\n return rval;\n};\n\n/**\n * Creates a new initialized TLS connection state. A connection state has\n * a read mode and a write mode.\n *\n * compression state:\n * The current state of the compression algorithm.\n *\n * cipher state:\n * The current state of the encryption algorithm. This will consist of the\n * scheduled key for that connection. For stream ciphers, this will also\n * contain whatever state information is necessary to allow the stream to\n * continue to encrypt or decrypt data.\n *\n * MAC key:\n * The MAC key for the connection.\n *\n * sequence number:\n * Each connection state contains a sequence number, which is maintained\n * separately for read and write states. The sequence number MUST be set to\n * zero whenever a connection state is made the active state. Sequence\n * numbers are of type uint64 and may not exceed 2^64-1. Sequence numbers do\n * not wrap. If a TLS implementation would need to wrap a sequence number,\n * it must renegotiate instead. A sequence number is incremented after each\n * record: specifically, the first record transmitted under a particular\n * connection state MUST use sequence number 0.\n *\n * @param c the connection.\n *\n * @return the new initialized TLS connection state.\n */\ntls.createConnectionState = function(c) {\n var client = (c.entity === tls.ConnectionEnd.client);\n\n var createMode = function() {\n var mode = {\n // two 32-bit numbers, first is most significant\n sequenceNumber: [0, 0],\n macKey: null,\n macLength: 0,\n macFunction: null,\n cipherState: null,\n cipherFunction: function(record) {return true;},\n compressionState: null,\n compressFunction: function(record) {return true;},\n updateSequenceNumber: function() {\n if(mode.sequenceNumber[1] === 0xFFFFFFFF) {\n mode.sequenceNumber[1] = 0;\n ++mode.sequenceNumber[0];\n } else {\n ++mode.sequenceNumber[1];\n }\n }\n };\n return mode;\n };\n var state = {\n read: createMode(),\n write: createMode()\n };\n\n // update function in read mode will decrypt then decompress a record\n state.read.update = function(c, record) {\n if(!state.read.cipherFunction(record, state.read)) {\n c.error(c, {\n message: 'Could not decrypt record or bad MAC.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n // doesn't matter if decryption failed or MAC was\n // invalid, return the same error so as not to reveal\n // which one occurred\n description: tls.Alert.Description.bad_record_mac\n }\n });\n } else if(!state.read.compressFunction(c, record, state.read)) {\n c.error(c, {\n message: 'Could not decompress record.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.decompression_failure\n }\n });\n }\n return !c.fail;\n };\n\n // update function in write mode will compress then encrypt a record\n state.write.update = function(c, record) {\n if(!state.write.compressFunction(c, record, state.write)) {\n // error, but do not send alert since it would require\n // compression as well\n c.error(c, {\n message: 'Could not compress record.',\n send: false,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n } else if(!state.write.cipherFunction(record, state.write)) {\n // error, but do not send alert since it would require\n // encryption as well\n c.error(c, {\n message: 'Could not encrypt record.',\n send: false,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n return !c.fail;\n };\n\n // handle security parameters\n if(c.session) {\n var sp = c.session.sp;\n c.session.cipherSuite.initSecurityParameters(sp);\n\n // generate keys\n sp.keys = tls.generateKeys(c, sp);\n state.read.macKey = client ?\n sp.keys.server_write_MAC_key : sp.keys.client_write_MAC_key;\n state.write.macKey = client ?\n sp.keys.client_write_MAC_key : sp.keys.server_write_MAC_key;\n\n // cipher suite setup\n c.session.cipherSuite.initConnectionState(state, c, sp);\n\n // compression setup\n switch(sp.compression_algorithm) {\n case tls.CompressionMethod.none:\n break;\n case tls.CompressionMethod.deflate:\n state.read.compressFunction = inflate;\n state.write.compressFunction = deflate;\n break;\n default:\n throw new Error('Unsupported compression algorithm.');\n }\n }\n\n return state;\n};\n\n/**\n * Creates a Random structure.\n *\n * struct {\n * uint32 gmt_unix_time;\n * opaque random_bytes[28];\n * } Random;\n *\n * gmt_unix_time:\n * The current time and date in standard UNIX 32-bit format (seconds since\n * the midnight starting Jan 1, 1970, UTC, ignoring leap seconds) according\n * to the sender's internal clock. Clocks are not required to be set\n * correctly by the basic TLS protocol; higher-level or application\n * protocols may define additional requirements. Note that, for historical\n * reasons, the data element is named using GMT, the predecessor of the\n * current worldwide time base, UTC.\n * random_bytes:\n * 28 bytes generated by a secure random number generator.\n *\n * @return the Random structure as a byte array.\n */\ntls.createRandom = function() {\n // get UTC milliseconds\n var d = new Date();\n var utc = +d + d.getTimezoneOffset() * 60000;\n var rval = forge.util.createBuffer();\n rval.putInt32(utc);\n rval.putBytes(forge.random.getBytes(28));\n return rval;\n};\n\n/**\n * Creates a TLS record with the given type and data.\n *\n * @param c the connection.\n * @param options:\n * type: the record type.\n * data: the plain text data in a byte buffer.\n *\n * @return the created record.\n */\ntls.createRecord = function(c, options) {\n if(!options.data) {\n return null;\n }\n var record = {\n type: options.type,\n version: {\n major: c.version.major,\n minor: c.version.minor\n },\n length: options.data.length(),\n fragment: options.data\n };\n return record;\n};\n\n/**\n * Creates a TLS alert record.\n *\n * @param c the connection.\n * @param alert:\n * level: the TLS alert level.\n * description: the TLS alert description.\n *\n * @return the created alert record.\n */\ntls.createAlert = function(c, alert) {\n var b = forge.util.createBuffer();\n b.putByte(alert.level);\n b.putByte(alert.description);\n return tls.createRecord(c, {\n type: tls.ContentType.alert,\n data: b\n });\n};\n\n/* The structure of a TLS handshake message.\n *\n * struct {\n * HandshakeType msg_type; // handshake type\n * uint24 length; // bytes in message\n * select(HandshakeType) {\n * case hello_request: HelloRequest;\n * case client_hello: ClientHello;\n * case server_hello: ServerHello;\n * case certificate: Certificate;\n * case server_key_exchange: ServerKeyExchange;\n * case certificate_request: CertificateRequest;\n * case server_hello_done: ServerHelloDone;\n * case certificate_verify: CertificateVerify;\n * case client_key_exchange: ClientKeyExchange;\n * case finished: Finished;\n * } body;\n * } Handshake;\n */\n\n/**\n * Creates a ClientHello message.\n *\n * opaque SessionID<0..32>;\n * enum { null(0), deflate(1), (255) } CompressionMethod;\n * uint8 CipherSuite[2];\n *\n * struct {\n * ProtocolVersion client_version;\n * Random random;\n * SessionID session_id;\n * CipherSuite cipher_suites<2..2^16-2>;\n * CompressionMethod compression_methods<1..2^8-1>;\n * select(extensions_present) {\n * case false:\n * struct {};\n * case true:\n * Extension extensions<0..2^16-1>;\n * };\n * } ClientHello;\n *\n * The extension format for extended client hellos and server hellos is:\n *\n * struct {\n * ExtensionType extension_type;\n * opaque extension_data<0..2^16-1>;\n * } Extension;\n *\n * Here:\n *\n * - \"extension_type\" identifies the particular extension type.\n * - \"extension_data\" contains information specific to the particular\n * extension type.\n *\n * The extension types defined in this document are:\n *\n * enum {\n * server_name(0), max_fragment_length(1),\n * client_certificate_url(2), trusted_ca_keys(3),\n * truncated_hmac(4), status_request(5), (65535)\n * } ExtensionType;\n *\n * @param c the connection.\n *\n * @return the ClientHello byte buffer.\n */\ntls.createClientHello = function(c) {\n // save hello version\n c.session.clientHelloVersion = {\n major: c.version.major,\n minor: c.version.minor\n };\n\n // create supported cipher suites\n var cipherSuites = forge.util.createBuffer();\n for(var i = 0; i < c.cipherSuites.length; ++i) {\n var cs = c.cipherSuites[i];\n cipherSuites.putByte(cs.id[0]);\n cipherSuites.putByte(cs.id[1]);\n }\n var cSuites = cipherSuites.length();\n\n // create supported compression methods, null always supported, but\n // also support deflate if connection has inflate and deflate methods\n var compressionMethods = forge.util.createBuffer();\n compressionMethods.putByte(tls.CompressionMethod.none);\n // FIXME: deflate support disabled until issues with raw deflate data\n // without zlib headers are resolved\n /*\n if(c.inflate !== null && c.deflate !== null) {\n compressionMethods.putByte(tls.CompressionMethod.deflate);\n }\n */\n var cMethods = compressionMethods.length();\n\n // create TLS SNI (server name indication) extension if virtual host\n // has been specified, see RFC 3546\n var extensions = forge.util.createBuffer();\n if(c.virtualHost) {\n // create extension struct\n var ext = forge.util.createBuffer();\n ext.putByte(0x00); // type server_name (ExtensionType is 2 bytes)\n ext.putByte(0x00);\n\n /* In order to provide the server name, clients MAY include an\n * extension of type \"server_name\" in the (extended) client hello.\n * The \"extension_data\" field of this extension SHALL contain\n * \"ServerNameList\" where:\n *\n * struct {\n * NameType name_type;\n * select(name_type) {\n * case host_name: HostName;\n * } name;\n * } ServerName;\n *\n * enum {\n * host_name(0), (255)\n * } NameType;\n *\n * opaque HostName<1..2^16-1>;\n *\n * struct {\n * ServerName server_name_list<1..2^16-1>\n * } ServerNameList;\n */\n var serverName = forge.util.createBuffer();\n serverName.putByte(0x00); // type host_name\n writeVector(serverName, 2, forge.util.createBuffer(c.virtualHost));\n\n // ServerNameList is in extension_data\n var snList = forge.util.createBuffer();\n writeVector(snList, 2, serverName);\n writeVector(ext, 2, snList);\n extensions.putBuffer(ext);\n }\n var extLength = extensions.length();\n if(extLength > 0) {\n // add extension vector length\n extLength += 2;\n }\n\n // determine length of the handshake message\n // cipher suites and compression methods size will need to be\n // updated if more get added to the list\n var sessionId = c.session.id;\n var length =\n sessionId.length + 1 + // session ID vector\n 2 + // version (major + minor)\n 4 + 28 + // random time and random bytes\n 2 + cSuites + // cipher suites vector\n 1 + cMethods + // compression methods vector\n extLength; // extensions vector\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.client_hello);\n rval.putInt24(length); // handshake length\n rval.putByte(c.version.major); // major version\n rval.putByte(c.version.minor); // minor version\n rval.putBytes(c.session.sp.client_random); // random time + bytes\n writeVector(rval, 1, forge.util.createBuffer(sessionId));\n writeVector(rval, 2, cipherSuites);\n writeVector(rval, 1, compressionMethods);\n if(extLength > 0) {\n writeVector(rval, 2, extensions);\n }\n return rval;\n};\n\n/**\n * Creates a ServerHello message.\n *\n * @param c the connection.\n *\n * @return the ServerHello byte buffer.\n */\ntls.createServerHello = function(c) {\n // determine length of the handshake message\n var sessionId = c.session.id;\n var length =\n sessionId.length + 1 + // session ID vector\n 2 + // version (major + minor)\n 4 + 28 + // random time and random bytes\n 2 + // chosen cipher suite\n 1; // chosen compression method\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.server_hello);\n rval.putInt24(length); // handshake length\n rval.putByte(c.version.major); // major version\n rval.putByte(c.version.minor); // minor version\n rval.putBytes(c.session.sp.server_random); // random time + bytes\n writeVector(rval, 1, forge.util.createBuffer(sessionId));\n rval.putByte(c.session.cipherSuite.id[0]);\n rval.putByte(c.session.cipherSuite.id[1]);\n rval.putByte(c.session.compressionMethod);\n return rval;\n};\n\n/**\n * Creates a Certificate message.\n *\n * When this message will be sent:\n * This is the first message the client can send after receiving a server\n * hello done message and the first message the server can send after\n * sending a ServerHello. This client message is only sent if the server\n * requests a certificate. If no suitable certificate is available, the\n * client should send a certificate message containing no certificates. If\n * client authentication is required by the server for the handshake to\n * continue, it may respond with a fatal handshake failure alert.\n *\n * opaque ASN.1Cert<1..2^24-1>;\n *\n * struct {\n * ASN.1Cert certificate_list<0..2^24-1>;\n * } Certificate;\n *\n * @param c the connection.\n *\n * @return the Certificate byte buffer.\n */\ntls.createCertificate = function(c) {\n // TODO: check certificate request to ensure types are supported\n\n // get a certificate (a certificate as a PEM string)\n var client = (c.entity === tls.ConnectionEnd.client);\n var cert = null;\n if(c.getCertificate) {\n var hint;\n if(client) {\n hint = c.session.certificateRequest;\n } else {\n hint = c.session.extensions.server_name.serverNameList;\n }\n cert = c.getCertificate(c, hint);\n }\n\n // buffer to hold certificate list\n var certList = forge.util.createBuffer();\n if(cert !== null) {\n try {\n // normalize cert to a chain of certificates\n if(!forge.util.isArray(cert)) {\n cert = [cert];\n }\n var asn1 = null;\n for(var i = 0; i < cert.length; ++i) {\n var msg = forge.pem.decode(cert[i])[0];\n if(msg.type !== 'CERTIFICATE' &&\n msg.type !== 'X509 CERTIFICATE' &&\n msg.type !== 'TRUSTED CERTIFICATE') {\n var error = new Error('Could not convert certificate from PEM; PEM ' +\n 'header type is not \"CERTIFICATE\", \"X509 CERTIFICATE\", or ' +\n '\"TRUSTED CERTIFICATE\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert certificate from PEM; PEM is encrypted.');\n }\n\n var der = forge.util.createBuffer(msg.body);\n if(asn1 === null) {\n asn1 = forge.asn1.fromDer(der.bytes(), false);\n }\n\n // certificate entry is itself a vector with 3 length bytes\n var certBuffer = forge.util.createBuffer();\n writeVector(certBuffer, 3, der);\n\n // add cert vector to cert list vector\n certList.putBuffer(certBuffer);\n }\n\n // save certificate\n cert = forge.pki.certificateFromAsn1(asn1);\n if(client) {\n c.session.clientCertificate = cert;\n } else {\n c.session.serverCertificate = cert;\n }\n } catch(ex) {\n return c.error(c, {\n message: 'Could not send certificate list.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.bad_certificate\n }\n });\n }\n }\n\n // determine length of the handshake message\n var length = 3 + certList.length(); // cert list vector\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.certificate);\n rval.putInt24(length);\n writeVector(rval, 3, certList);\n return rval;\n};\n\n/**\n * Creates a ClientKeyExchange message.\n *\n * When this message will be sent:\n * This message is always sent by the client. It will immediately follow the\n * client certificate message, if it is sent. Otherwise it will be the first\n * message sent by the client after it receives the server hello done\n * message.\n *\n * Meaning of this message:\n * With this message, the premaster secret is set, either though direct\n * transmission of the RSA-encrypted secret, or by the transmission of\n * Diffie-Hellman parameters which will allow each side to agree upon the\n * same premaster secret. When the key exchange method is DH_RSA or DH_DSS,\n * client certification has been requested, and the client was able to\n * respond with a certificate which contained a Diffie-Hellman public key\n * whose parameters (group and generator) matched those specified by the\n * server in its certificate, this message will not contain any data.\n *\n * Meaning of this message:\n * If RSA is being used for key agreement and authentication, the client\n * generates a 48-byte premaster secret, encrypts it using the public key\n * from the server's certificate or the temporary RSA key provided in a\n * server key exchange message, and sends the result in an encrypted\n * premaster secret message. This structure is a variant of the client\n * key exchange message, not a message in itself.\n *\n * struct {\n * select(KeyExchangeAlgorithm) {\n * case rsa: EncryptedPreMasterSecret;\n * case diffie_hellman: ClientDiffieHellmanPublic;\n * } exchange_keys;\n * } ClientKeyExchange;\n *\n * struct {\n * ProtocolVersion client_version;\n * opaque random[46];\n * } PreMasterSecret;\n *\n * struct {\n * public-key-encrypted PreMasterSecret pre_master_secret;\n * } EncryptedPreMasterSecret;\n *\n * A public-key-encrypted element is encoded as a vector <0..2^16-1>.\n *\n * @param c the connection.\n *\n * @return the ClientKeyExchange byte buffer.\n */\ntls.createClientKeyExchange = function(c) {\n // create buffer to encrypt\n var b = forge.util.createBuffer();\n\n // add highest client-supported protocol to help server avoid version\n // rollback attacks\n b.putByte(c.session.clientHelloVersion.major);\n b.putByte(c.session.clientHelloVersion.minor);\n\n // generate and add 46 random bytes\n b.putBytes(forge.random.getBytes(46));\n\n // save pre-master secret\n var sp = c.session.sp;\n sp.pre_master_secret = b.getBytes();\n\n // RSA-encrypt the pre-master secret\n var key = c.session.serverCertificate.publicKey;\n b = key.encrypt(sp.pre_master_secret);\n\n /* Note: The encrypted pre-master secret will be stored in a\n public-key-encrypted opaque vector that has the length prefixed using\n 2 bytes, so include those 2 bytes in the handshake message length. This\n is done as a minor optimization instead of calling writeVector(). */\n\n // determine length of the handshake message\n var length = b.length + 2;\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.client_key_exchange);\n rval.putInt24(length);\n // add vector length bytes\n rval.putInt16(b.length);\n rval.putBytes(b);\n return rval;\n};\n\n/**\n * Creates a ServerKeyExchange message.\n *\n * @param c the connection.\n *\n * @return the ServerKeyExchange byte buffer.\n */\ntls.createServerKeyExchange = function(c) {\n // this implementation only supports RSA, no Diffie-Hellman support,\n // so this record is empty\n\n // determine length of the handshake message\n var length = 0;\n\n // build record fragment\n var rval = forge.util.createBuffer();\n if(length > 0) {\n rval.putByte(tls.HandshakeType.server_key_exchange);\n rval.putInt24(length);\n }\n return rval;\n};\n\n/**\n * Gets the signed data used to verify a client-side certificate. See\n * tls.createCertificateVerify() for details.\n *\n * @param c the connection.\n * @param callback the callback to call once the signed data is ready.\n */\ntls.getClientSignature = function(c, callback) {\n // generate data to RSA encrypt\n var b = forge.util.createBuffer();\n b.putBuffer(c.session.md5.digest());\n b.putBuffer(c.session.sha1.digest());\n b = b.getBytes();\n\n // create default signing function as necessary\n c.getSignature = c.getSignature || function(c, b, callback) {\n // do rsa encryption, call callback\n var privateKey = null;\n if(c.getPrivateKey) {\n try {\n privateKey = c.getPrivateKey(c, c.session.clientCertificate);\n privateKey = forge.pki.privateKeyFromPem(privateKey);\n } catch(ex) {\n c.error(c, {\n message: 'Could not get private key.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n }\n if(privateKey === null) {\n c.error(c, {\n message: 'No private key set.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n } else {\n b = privateKey.sign(b, null);\n }\n callback(c, b);\n };\n\n // get client signature\n c.getSignature(c, b, callback);\n};\n\n/**\n * Creates a CertificateVerify message.\n *\n * Meaning of this message:\n * This structure conveys the client's Diffie-Hellman public value\n * (Yc) if it was not already included in the client's certificate.\n * The encoding used for Yc is determined by the enumerated\n * PublicValueEncoding. This structure is a variant of the client\n * key exchange message, not a message in itself.\n *\n * When this message will be sent:\n * This message is used to provide explicit verification of a client\n * certificate. This message is only sent following a client\n * certificate that has signing capability (i.e. all certificates\n * except those containing fixed Diffie-Hellman parameters). When\n * sent, it will immediately follow the client key exchange message.\n *\n * struct {\n * Signature signature;\n * } CertificateVerify;\n *\n * CertificateVerify.signature.md5_hash\n * MD5(handshake_messages);\n *\n * Certificate.signature.sha_hash\n * SHA(handshake_messages);\n *\n * Here handshake_messages refers to all handshake messages sent or\n * received starting at client hello up to but not including this\n * message, including the type and length fields of the handshake\n * messages.\n *\n * select(SignatureAlgorithm) {\n * case anonymous: struct { };\n * case rsa:\n * digitally-signed struct {\n * opaque md5_hash[16];\n * opaque sha_hash[20];\n * };\n * case dsa:\n * digitally-signed struct {\n * opaque sha_hash[20];\n * };\n * } Signature;\n *\n * In digital signing, one-way hash functions are used as input for a\n * signing algorithm. A digitally-signed element is encoded as an opaque\n * vector <0..2^16-1>, where the length is specified by the signing\n * algorithm and key.\n *\n * In RSA signing, a 36-byte structure of two hashes (one SHA and one\n * MD5) is signed (encrypted with the private key). It is encoded with\n * PKCS #1 block type 0 or type 1 as described in [PKCS1].\n *\n * In DSS, the 20 bytes of the SHA hash are run directly through the\n * Digital Signing Algorithm with no additional hashing.\n *\n * @param c the connection.\n * @param signature the signature to include in the message.\n *\n * @return the CertificateVerify byte buffer.\n */\ntls.createCertificateVerify = function(c, signature) {\n /* Note: The signature will be stored in a \"digitally-signed\" opaque\n vector that has the length prefixed using 2 bytes, so include those\n 2 bytes in the handshake message length. This is done as a minor\n optimization instead of calling writeVector(). */\n\n // determine length of the handshake message\n var length = signature.length + 2;\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.certificate_verify);\n rval.putInt24(length);\n // add vector length bytes\n rval.putInt16(signature.length);\n rval.putBytes(signature);\n return rval;\n};\n\n/**\n * Creates a CertificateRequest message.\n *\n * @param c the connection.\n *\n * @return the CertificateRequest byte buffer.\n */\ntls.createCertificateRequest = function(c) {\n // TODO: support other certificate types\n var certTypes = forge.util.createBuffer();\n\n // common RSA certificate type\n certTypes.putByte(0x01);\n\n // add distinguished names from CA store\n var cAs = forge.util.createBuffer();\n for(var key in c.caStore.certs) {\n var cert = c.caStore.certs[key];\n var dn = forge.pki.distinguishedNameToAsn1(cert.subject);\n var byteBuffer = forge.asn1.toDer(dn);\n cAs.putInt16(byteBuffer.length());\n cAs.putBuffer(byteBuffer);\n }\n\n // TODO: TLS 1.2+ has a different format\n\n // determine length of the handshake message\n var length =\n 1 + certTypes.length() +\n 2 + cAs.length();\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.certificate_request);\n rval.putInt24(length);\n writeVector(rval, 1, certTypes);\n writeVector(rval, 2, cAs);\n return rval;\n};\n\n/**\n * Creates a ServerHelloDone message.\n *\n * @param c the connection.\n *\n * @return the ServerHelloDone byte buffer.\n */\ntls.createServerHelloDone = function(c) {\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.server_hello_done);\n rval.putInt24(0);\n return rval;\n};\n\n/**\n * Creates a ChangeCipherSpec message.\n *\n * The change cipher spec protocol exists to signal transitions in\n * ciphering strategies. The protocol consists of a single message,\n * which is encrypted and compressed under the current (not the pending)\n * connection state. The message consists of a single byte of value 1.\n *\n * struct {\n * enum { change_cipher_spec(1), (255) } type;\n * } ChangeCipherSpec;\n *\n * @return the ChangeCipherSpec byte buffer.\n */\ntls.createChangeCipherSpec = function() {\n var rval = forge.util.createBuffer();\n rval.putByte(0x01);\n return rval;\n};\n\n/**\n * Creates a Finished message.\n *\n * struct {\n * opaque verify_data[12];\n * } Finished;\n *\n * verify_data\n * PRF(master_secret, finished_label, MD5(handshake_messages) +\n * SHA-1(handshake_messages)) [0..11];\n *\n * finished_label\n * For Finished messages sent by the client, the string \"client\n * finished\". For Finished messages sent by the server, the\n * string \"server finished\".\n *\n * handshake_messages\n * All of the data from all handshake messages up to but not\n * including this message. This is only data visible at the\n * handshake layer and does not include record layer headers.\n * This is the concatenation of all the Handshake structures as\n * defined in 7.4 exchanged thus far.\n *\n * @param c the connection.\n *\n * @return the Finished byte buffer.\n */\ntls.createFinished = function(c) {\n // generate verify_data\n var b = forge.util.createBuffer();\n b.putBuffer(c.session.md5.digest());\n b.putBuffer(c.session.sha1.digest());\n\n // TODO: determine prf function and verify length for TLS 1.2\n var client = (c.entity === tls.ConnectionEnd.client);\n var sp = c.session.sp;\n var vdl = 12;\n var prf = prf_TLS1;\n var label = client ? 'client finished' : 'server finished';\n b = prf(sp.master_secret, label, b.getBytes(), vdl);\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.finished);\n rval.putInt24(b.length());\n rval.putBuffer(b);\n return rval;\n};\n\n/**\n * Creates a HeartbeatMessage (See RFC 6520).\n *\n * struct {\n * HeartbeatMessageType type;\n * uint16 payload_length;\n * opaque payload[HeartbeatMessage.payload_length];\n * opaque padding[padding_length];\n * } HeartbeatMessage;\n *\n * The total length of a HeartbeatMessage MUST NOT exceed 2^14 or\n * max_fragment_length when negotiated as defined in [RFC6066].\n *\n * type: The message type, either heartbeat_request or heartbeat_response.\n *\n * payload_length: The length of the payload.\n *\n * payload: The payload consists of arbitrary content.\n *\n * padding: The padding is random content that MUST be ignored by the\n * receiver. The length of a HeartbeatMessage is TLSPlaintext.length\n * for TLS and DTLSPlaintext.length for DTLS. Furthermore, the\n * length of the type field is 1 byte, and the length of the\n * payload_length is 2. Therefore, the padding_length is\n * TLSPlaintext.length - payload_length - 3 for TLS and\n * DTLSPlaintext.length - payload_length - 3 for DTLS. The\n * padding_length MUST be at least 16.\n *\n * The sender of a HeartbeatMessage MUST use a random padding of at\n * least 16 bytes. The padding of a received HeartbeatMessage message\n * MUST be ignored.\n *\n * If the payload_length of a received HeartbeatMessage is too large,\n * the received HeartbeatMessage MUST be discarded silently.\n *\n * @param c the connection.\n * @param type the tls.HeartbeatMessageType.\n * @param payload the heartbeat data to send as the payload.\n * @param [payloadLength] the payload length to use, defaults to the\n * actual payload length.\n *\n * @return the HeartbeatRequest byte buffer.\n */\ntls.createHeartbeat = function(type, payload, payloadLength) {\n if(typeof payloadLength === 'undefined') {\n payloadLength = payload.length;\n }\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(type); // heartbeat message type\n rval.putInt16(payloadLength); // payload length\n rval.putBytes(payload); // payload\n // padding\n var plaintextLength = rval.length();\n var paddingLength = Math.max(16, plaintextLength - payloadLength - 3);\n rval.putBytes(forge.random.getBytes(paddingLength));\n return rval;\n};\n\n/**\n * Fragments, compresses, encrypts, and queues a record for delivery.\n *\n * @param c the connection.\n * @param record the record to queue.\n */\ntls.queue = function(c, record) {\n // error during record creation\n if(!record) {\n return;\n }\n\n if(record.fragment.length() === 0) {\n if(record.type === tls.ContentType.handshake ||\n record.type === tls.ContentType.alert ||\n record.type === tls.ContentType.change_cipher_spec) {\n // Empty handshake, alert of change cipher spec messages are not allowed per the TLS specification and should not be sent.\n return;\n }\n }\n\n // if the record is a handshake record, update handshake hashes\n if(record.type === tls.ContentType.handshake) {\n var bytes = record.fragment.bytes();\n c.session.md5.update(bytes);\n c.session.sha1.update(bytes);\n bytes = null;\n }\n\n // handle record fragmentation\n var records;\n if(record.fragment.length() <= tls.MaxFragment) {\n records = [record];\n } else {\n // fragment data as long as it is too long\n records = [];\n var data = record.fragment.bytes();\n while(data.length > tls.MaxFragment) {\n records.push(tls.createRecord(c, {\n type: record.type,\n data: forge.util.createBuffer(data.slice(0, tls.MaxFragment))\n }));\n data = data.slice(tls.MaxFragment);\n }\n // add last record\n if(data.length > 0) {\n records.push(tls.createRecord(c, {\n type: record.type,\n data: forge.util.createBuffer(data)\n }));\n }\n }\n\n // compress and encrypt all fragmented records\n for(var i = 0; i < records.length && !c.fail; ++i) {\n // update the record using current write state\n var rec = records[i];\n var s = c.state.current.write;\n if(s.update(c, rec)) {\n // store record\n c.records.push(rec);\n }\n }\n};\n\n/**\n * Flushes all queued records to the output buffer and calls the\n * tlsDataReady() handler on the given connection.\n *\n * @param c the connection.\n *\n * @return true on success, false on failure.\n */\ntls.flush = function(c) {\n for(var i = 0; i < c.records.length; ++i) {\n var record = c.records[i];\n\n // add record header and fragment\n c.tlsData.putByte(record.type);\n c.tlsData.putByte(record.version.major);\n c.tlsData.putByte(record.version.minor);\n c.tlsData.putInt16(record.fragment.length());\n c.tlsData.putBuffer(c.records[i].fragment);\n }\n c.records = [];\n return c.tlsDataReady(c);\n};\n\n/**\n * Maps a pki.certificateError to a tls.Alert.Description.\n *\n * @param error the error to map.\n *\n * @return the alert description.\n */\nvar _certErrorToAlertDesc = function(error) {\n switch(error) {\n case true:\n return true;\n case forge.pki.certificateError.bad_certificate:\n return tls.Alert.Description.bad_certificate;\n case forge.pki.certificateError.unsupported_certificate:\n return tls.Alert.Description.unsupported_certificate;\n case forge.pki.certificateError.certificate_revoked:\n return tls.Alert.Description.certificate_revoked;\n case forge.pki.certificateError.certificate_expired:\n return tls.Alert.Description.certificate_expired;\n case forge.pki.certificateError.certificate_unknown:\n return tls.Alert.Description.certificate_unknown;\n case forge.pki.certificateError.unknown_ca:\n return tls.Alert.Description.unknown_ca;\n default:\n return tls.Alert.Description.bad_certificate;\n }\n};\n\n/**\n * Maps a tls.Alert.Description to a pki.certificateError.\n *\n * @param desc the alert description.\n *\n * @return the certificate error.\n */\nvar _alertDescToCertError = function(desc) {\n switch(desc) {\n case true:\n return true;\n case tls.Alert.Description.bad_certificate:\n return forge.pki.certificateError.bad_certificate;\n case tls.Alert.Description.unsupported_certificate:\n return forge.pki.certificateError.unsupported_certificate;\n case tls.Alert.Description.certificate_revoked:\n return forge.pki.certificateError.certificate_revoked;\n case tls.Alert.Description.certificate_expired:\n return forge.pki.certificateError.certificate_expired;\n case tls.Alert.Description.certificate_unknown:\n return forge.pki.certificateError.certificate_unknown;\n case tls.Alert.Description.unknown_ca:\n return forge.pki.certificateError.unknown_ca;\n default:\n return forge.pki.certificateError.bad_certificate;\n }\n};\n\n/**\n * Verifies a certificate chain against the given connection's\n * Certificate Authority store.\n *\n * @param c the TLS connection.\n * @param chain the certificate chain to verify, with the root or highest\n * authority at the end.\n *\n * @return true if successful, false if not.\n */\ntls.verifyCertificateChain = function(c, chain) {\n try {\n // Make a copy of c.verifyOptions so that we can modify options.verify\n // without modifying c.verifyOptions.\n var options = {};\n for (var key in c.verifyOptions) {\n options[key] = c.verifyOptions[key];\n }\n\n options.verify = function(vfd, depth, chain) {\n // convert pki.certificateError to tls alert description\n var desc = _certErrorToAlertDesc(vfd);\n\n // call application callback\n var ret = c.verify(c, vfd, depth, chain);\n if(ret !== true) {\n if(typeof ret === 'object' && !forge.util.isArray(ret)) {\n // throw custom error\n var error = new Error('The application rejected the certificate.');\n error.send = true;\n error.alert = {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.bad_certificate\n };\n if(ret.message) {\n error.message = ret.message;\n }\n if(ret.alert) {\n error.alert.description = ret.alert;\n }\n throw error;\n }\n\n // convert tls alert description to pki.certificateError\n if(ret !== vfd) {\n ret = _alertDescToCertError(ret);\n }\n }\n\n return ret;\n };\n\n // verify chain\n forge.pki.verifyCertificateChain(c.caStore, chain, options);\n } catch(ex) {\n // build tls error if not already customized\n var err = ex;\n if(typeof err !== 'object' || forge.util.isArray(err)) {\n err = {\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: _certErrorToAlertDesc(ex)\n }\n };\n }\n if(!('send' in err)) {\n err.send = true;\n }\n if(!('alert' in err)) {\n err.alert = {\n level: tls.Alert.Level.fatal,\n description: _certErrorToAlertDesc(err.error)\n };\n }\n\n // send error\n c.error(c, err);\n }\n\n return !c.fail;\n};\n\n/**\n * Creates a new TLS session cache.\n *\n * @param cache optional map of session ID to cached session.\n * @param capacity the maximum size for the cache (default: 100).\n *\n * @return the new TLS session cache.\n */\ntls.createSessionCache = function(cache, capacity) {\n var rval = null;\n\n // assume input is already a session cache object\n if(cache && cache.getSession && cache.setSession && cache.order) {\n rval = cache;\n } else {\n // create cache\n rval = {};\n rval.cache = cache || {};\n rval.capacity = Math.max(capacity || 100, 1);\n rval.order = [];\n\n // store order for sessions, delete session overflow\n for(var key in cache) {\n if(rval.order.length <= capacity) {\n rval.order.push(key);\n } else {\n delete cache[key];\n }\n }\n\n // get a session from a session ID (or get any session)\n rval.getSession = function(sessionId) {\n var session = null;\n var key = null;\n\n // if session ID provided, use it\n if(sessionId) {\n key = forge.util.bytesToHex(sessionId);\n } else if(rval.order.length > 0) {\n // get first session from cache\n key = rval.order[0];\n }\n\n if(key !== null && key in rval.cache) {\n // get cached session and remove from cache\n session = rval.cache[key];\n delete rval.cache[key];\n for(var i in rval.order) {\n if(rval.order[i] === key) {\n rval.order.splice(i, 1);\n break;\n }\n }\n }\n\n return session;\n };\n\n // set a session in the cache\n rval.setSession = function(sessionId, session) {\n // remove session from cache if at capacity\n if(rval.order.length === rval.capacity) {\n var key = rval.order.shift();\n delete rval.cache[key];\n }\n // add session to cache\n var key = forge.util.bytesToHex(sessionId);\n rval.order.push(key);\n rval.cache[key] = session;\n };\n }\n\n return rval;\n};\n\n/**\n * Creates a new TLS connection.\n *\n * See public createConnection() docs for more details.\n *\n * @param options the options for this connection.\n *\n * @return the new TLS connection.\n */\ntls.createConnection = function(options) {\n var caStore = null;\n if(options.caStore) {\n // if CA store is an array, convert it to a CA store object\n if(forge.util.isArray(options.caStore)) {\n caStore = forge.pki.createCaStore(options.caStore);\n } else {\n caStore = options.caStore;\n }\n } else {\n // create empty CA store\n caStore = forge.pki.createCaStore();\n }\n\n // setup default cipher suites\n var cipherSuites = options.cipherSuites || null;\n if(cipherSuites === null) {\n cipherSuites = [];\n for(var key in tls.CipherSuites) {\n cipherSuites.push(tls.CipherSuites[key]);\n }\n }\n\n // set default entity\n var entity = (options.server || false) ?\n tls.ConnectionEnd.server : tls.ConnectionEnd.client;\n\n // create session cache if requested\n var sessionCache = options.sessionCache ?\n tls.createSessionCache(options.sessionCache) : null;\n\n // create TLS connection\n var c = {\n version: {major: tls.Version.major, minor: tls.Version.minor},\n entity: entity,\n sessionId: options.sessionId,\n caStore: caStore,\n sessionCache: sessionCache,\n cipherSuites: cipherSuites,\n connected: options.connected,\n virtualHost: options.virtualHost || null,\n verifyClient: options.verifyClient || false,\n verify: options.verify || function(cn, vfd, dpth, cts) {return vfd;},\n verifyOptions: options.verifyOptions || {},\n getCertificate: options.getCertificate || null,\n getPrivateKey: options.getPrivateKey || null,\n getSignature: options.getSignature || null,\n input: forge.util.createBuffer(),\n tlsData: forge.util.createBuffer(),\n data: forge.util.createBuffer(),\n tlsDataReady: options.tlsDataReady,\n dataReady: options.dataReady,\n heartbeatReceived: options.heartbeatReceived,\n closed: options.closed,\n error: function(c, ex) {\n // set origin if not set\n ex.origin = ex.origin ||\n ((c.entity === tls.ConnectionEnd.client) ? 'client' : 'server');\n\n // send TLS alert\n if(ex.send) {\n tls.queue(c, tls.createAlert(c, ex.alert));\n tls.flush(c);\n }\n\n // error is fatal by default\n var fatal = (ex.fatal !== false);\n if(fatal) {\n // set fail flag\n c.fail = true;\n }\n\n // call error handler first\n options.error(c, ex);\n\n if(fatal) {\n // fatal error, close connection, do not clear fail\n c.close(false);\n }\n },\n deflate: options.deflate || null,\n inflate: options.inflate || null\n };\n\n /**\n * Resets a closed TLS connection for reuse. Called in c.close().\n *\n * @param clearFail true to clear the fail flag (default: true).\n */\n c.reset = function(clearFail) {\n c.version = {major: tls.Version.major, minor: tls.Version.minor};\n c.record = null;\n c.session = null;\n c.peerCertificate = null;\n c.state = {\n pending: null,\n current: null\n };\n c.expect = (c.entity === tls.ConnectionEnd.client) ? SHE : CHE;\n c.fragmented = null;\n c.records = [];\n c.open = false;\n c.handshakes = 0;\n c.handshaking = false;\n c.isConnected = false;\n c.fail = !(clearFail || typeof(clearFail) === 'undefined');\n c.input.clear();\n c.tlsData.clear();\n c.data.clear();\n c.state.current = tls.createConnectionState(c);\n };\n\n // do initial reset of connection\n c.reset();\n\n /**\n * Updates the current TLS engine state based on the given record.\n *\n * @param c the TLS connection.\n * @param record the TLS record to act on.\n */\n var _update = function(c, record) {\n // get record handler (align type in table by subtracting lowest)\n var aligned = record.type - tls.ContentType.change_cipher_spec;\n var handlers = ctTable[c.entity][c.expect];\n if(aligned in handlers) {\n handlers[aligned](c, record);\n } else {\n // unexpected record\n tls.handleUnexpected(c, record);\n }\n };\n\n /**\n * Reads the record header and initializes the next record on the given\n * connection.\n *\n * @param c the TLS connection with the next record.\n *\n * @return 0 if the input data could be processed, otherwise the\n * number of bytes required for data to be processed.\n */\n var _readRecordHeader = function(c) {\n var rval = 0;\n\n // get input buffer and its length\n var b = c.input;\n var len = b.length();\n\n // need at least 5 bytes to initialize a record\n if(len < 5) {\n rval = 5 - len;\n } else {\n // enough bytes for header\n // initialize record\n c.record = {\n type: b.getByte(),\n version: {\n major: b.getByte(),\n minor: b.getByte()\n },\n length: b.getInt16(),\n fragment: forge.util.createBuffer(),\n ready: false\n };\n\n // check record version\n var compatibleVersion = (c.record.version.major === c.version.major);\n if(compatibleVersion && c.session && c.session.version) {\n // session version already set, require same minor version\n compatibleVersion = (c.record.version.minor === c.version.minor);\n }\n if(!compatibleVersion) {\n c.error(c, {\n message: 'Incompatible TLS version.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.protocol_version\n }\n });\n }\n }\n\n return rval;\n };\n\n /**\n * Reads the next record's contents and appends its message to any\n * previously fragmented message.\n *\n * @param c the TLS connection with the next record.\n *\n * @return 0 if the input data could be processed, otherwise the\n * number of bytes required for data to be processed.\n */\n var _readRecord = function(c) {\n var rval = 0;\n\n // ensure there is enough input data to get the entire record\n var b = c.input;\n var len = b.length();\n if(len < c.record.length) {\n // not enough data yet, return how much is required\n rval = c.record.length - len;\n } else {\n // there is enough data to parse the pending record\n // fill record fragment and compact input buffer\n c.record.fragment.putBytes(b.getBytes(c.record.length));\n b.compact();\n\n // update record using current read state\n var s = c.state.current.read;\n if(s.update(c, c.record)) {\n // see if there is a previously fragmented message that the\n // new record's message fragment should be appended to\n if(c.fragmented !== null) {\n // if the record type matches a previously fragmented\n // record, append the record fragment to it\n if(c.fragmented.type === c.record.type) {\n // concatenate record fragments\n c.fragmented.fragment.putBuffer(c.record.fragment);\n c.record = c.fragmented;\n } else {\n // error, invalid fragmented record\n c.error(c, {\n message: 'Invalid fragmented record.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description:\n tls.Alert.Description.unexpected_message\n }\n });\n }\n }\n\n // record is now ready\n c.record.ready = true;\n }\n }\n\n return rval;\n };\n\n /**\n * Performs a handshake using the TLS Handshake Protocol, as a client.\n *\n * This method should only be called if the connection is in client mode.\n *\n * @param sessionId the session ID to use, null to start a new one.\n */\n c.handshake = function(sessionId) {\n // error to call this in non-client mode\n if(c.entity !== tls.ConnectionEnd.client) {\n // not fatal error\n c.error(c, {\n message: 'Cannot initiate handshake as a server.',\n fatal: false\n });\n } else if(c.handshaking) {\n // handshake is already in progress, fail but not fatal error\n c.error(c, {\n message: 'Handshake already in progress.',\n fatal: false\n });\n } else {\n // clear fail flag on reuse\n if(c.fail && !c.open && c.handshakes === 0) {\n c.fail = false;\n }\n\n // now handshaking\n c.handshaking = true;\n\n // default to blank (new session)\n sessionId = sessionId || '';\n\n // if a session ID was specified, try to find it in the cache\n var session = null;\n if(sessionId.length > 0) {\n if(c.sessionCache) {\n session = c.sessionCache.getSession(sessionId);\n }\n\n // matching session not found in cache, clear session ID\n if(session === null) {\n sessionId = '';\n }\n }\n\n // no session given, grab a session from the cache, if available\n if(sessionId.length === 0 && c.sessionCache) {\n session = c.sessionCache.getSession();\n if(session !== null) {\n sessionId = session.id;\n }\n }\n\n // set up session\n c.session = {\n id: sessionId,\n version: null,\n cipherSuite: null,\n compressionMethod: null,\n serverCertificate: null,\n certificateRequest: null,\n clientCertificate: null,\n sp: {},\n md5: forge.md.md5.create(),\n sha1: forge.md.sha1.create()\n };\n\n // use existing session information\n if(session) {\n // only update version on connection, session version not yet set\n c.version = session.version;\n c.session.sp = session.sp;\n }\n\n // generate new client random\n c.session.sp.client_random = tls.createRandom().getBytes();\n\n // connection now open\n c.open = true;\n\n // send hello\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createClientHello(c)\n }));\n tls.flush(c);\n }\n };\n\n /**\n * Called when TLS protocol data has been received from somewhere and should\n * be processed by the TLS engine.\n *\n * @param data the TLS protocol data, as a string, to process.\n *\n * @return 0 if the data could be processed, otherwise the number of bytes\n * required for data to be processed.\n */\n c.process = function(data) {\n var rval = 0;\n\n // buffer input data\n if(data) {\n c.input.putBytes(data);\n }\n\n // process next record if no failure, process will be called after\n // each record is handled (since handling can be asynchronous)\n if(!c.fail) {\n // reset record if ready and now empty\n if(c.record !== null &&\n c.record.ready && c.record.fragment.isEmpty()) {\n c.record = null;\n }\n\n // if there is no pending record, try to read record header\n if(c.record === null) {\n rval = _readRecordHeader(c);\n }\n\n // read the next record (if record not yet ready)\n if(!c.fail && c.record !== null && !c.record.ready) {\n rval = _readRecord(c);\n }\n\n // record ready to be handled, update engine state\n if(!c.fail && c.record !== null && c.record.ready) {\n _update(c, c.record);\n }\n }\n\n return rval;\n };\n\n /**\n * Requests that application data be packaged into a TLS record. The\n * tlsDataReady handler will be called when the TLS record(s) have been\n * prepared.\n *\n * @param data the application data, as a raw 'binary' encoded string, to\n * be sent; to send utf-16/utf-8 string data, use the return value\n * of util.encodeUtf8(str).\n *\n * @return true on success, false on failure.\n */\n c.prepare = function(data) {\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.application_data,\n data: forge.util.createBuffer(data)\n }));\n return tls.flush(c);\n };\n\n /**\n * Requests that a heartbeat request be packaged into a TLS record for\n * transmission. The tlsDataReady handler will be called when TLS record(s)\n * have been prepared.\n *\n * When a heartbeat response has been received, the heartbeatReceived\n * handler will be called with the matching payload. This handler can\n * be used to clear a retransmission timer, etc.\n *\n * @param payload the heartbeat data to send as the payload in the message.\n * @param [payloadLength] the payload length to use, defaults to the\n * actual payload length.\n *\n * @return true on success, false on failure.\n */\n c.prepareHeartbeatRequest = function(payload, payloadLength) {\n if(payload instanceof forge.util.ByteBuffer) {\n payload = payload.bytes();\n }\n if(typeof payloadLength === 'undefined') {\n payloadLength = payload.length;\n }\n c.expectedHeartbeatPayload = payload;\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.heartbeat,\n data: tls.createHeartbeat(\n tls.HeartbeatMessageType.heartbeat_request, payload, payloadLength)\n }));\n return tls.flush(c);\n };\n\n /**\n * Closes the connection (sends a close_notify alert).\n *\n * @param clearFail true to clear the fail flag (default: true).\n */\n c.close = function(clearFail) {\n // save session if connection didn't fail\n if(!c.fail && c.sessionCache && c.session) {\n // only need to preserve session ID, version, and security params\n var session = {\n id: c.session.id,\n version: c.session.version,\n sp: c.session.sp\n };\n session.sp.keys = null;\n c.sessionCache.setSession(session.id, session);\n }\n\n if(c.open) {\n // connection no longer open, clear input\n c.open = false;\n c.input.clear();\n\n // if connected or handshaking, send an alert\n if(c.isConnected || c.handshaking) {\n c.isConnected = c.handshaking = false;\n\n // send close_notify alert\n tls.queue(c, tls.createAlert(c, {\n level: tls.Alert.Level.warning,\n description: tls.Alert.Description.close_notify\n }));\n tls.flush(c);\n }\n\n // call handler\n c.closed(c);\n }\n\n // reset TLS connection, do not clear fail flag\n c.reset(clearFail);\n };\n\n return c;\n};\n\n/* TLS API */\nmodule.exports = forge.tls = forge.tls || {};\n\n// expose non-functions\nfor(var key in tls) {\n if(typeof tls[key] !== 'function') {\n forge.tls[key] = tls[key];\n }\n}\n\n// expose prf_tls1 for testing\nforge.tls.prf_tls1 = prf_TLS1;\n\n// expose sha1 hmac method\nforge.tls.hmac_sha1 = hmac_sha1;\n\n// expose session cache creation\nforge.tls.createSessionCache = tls.createSessionCache;\n\n/**\n * Creates a new TLS connection. This does not make any assumptions about the\n * transport layer that TLS is working on top of, ie: it does not assume there\n * is a TCP/IP connection or establish one. A TLS connection is totally\n * abstracted away from the layer is runs on top of, it merely establishes a\n * secure channel between a client\" and a \"server\".\n *\n * A TLS connection contains 4 connection states: pending read and write, and\n * current read and write.\n *\n * At initialization, the current read and write states will be null. Only once\n * the security parameters have been set and the keys have been generated can\n * the pending states be converted into current states. Current states will be\n * updated for each record processed.\n *\n * A custom certificate verify callback may be provided to check information\n * like the common name on the server's certificate. It will be called for\n * every certificate in the chain. It has the following signature:\n *\n * variable func(c, certs, index, preVerify)\n * Where:\n * c The TLS connection\n * verified Set to true if certificate was verified, otherwise the alert\n * tls.Alert.Description for why the certificate failed.\n * depth The current index in the chain, where 0 is the server's cert.\n * certs The certificate chain, *NOTE* if the server was anonymous then\n * the chain will be empty.\n *\n * The function returns true on success and on failure either the appropriate\n * tls.Alert.Description or an object with 'alert' set to the appropriate\n * tls.Alert.Description and 'message' set to a custom error message. If true\n * is not returned then the connection will abort using, in order of\n * availability, first the returned alert description, second the preVerify\n * alert description, and lastly the default 'bad_certificate'.\n *\n * There are three callbacks that can be used to make use of client-side\n * certificates where each takes the TLS connection as the first parameter:\n *\n * getCertificate(conn, hint)\n * The second parameter is a hint as to which certificate should be\n * returned. If the connection entity is a client, then the hint will be\n * the CertificateRequest message from the server that is part of the\n * TLS protocol. If the connection entity is a server, then it will be\n * the servername list provided via an SNI extension the ClientHello, if\n * one was provided (empty array if not). The hint can be examined to\n * determine which certificate to use (advanced). Most implementations\n * will just return a certificate. The return value must be a\n * PEM-formatted certificate or an array of PEM-formatted certificates\n * that constitute a certificate chain, with the first in the array/chain\n * being the client's certificate.\n * getPrivateKey(conn, certificate)\n * The second parameter is an forge.pki X.509 certificate object that\n * is associated with the requested private key. The return value must\n * be a PEM-formatted private key.\n * getSignature(conn, bytes, callback)\n * This callback can be used instead of getPrivateKey if the private key\n * is not directly accessible in javascript or should not be. For\n * instance, a secure external web service could provide the signature\n * in exchange for appropriate credentials. The second parameter is a\n * string of bytes to be signed that are part of the TLS protocol. These\n * bytes are used to verify that the private key for the previously\n * provided client-side certificate is accessible to the client. The\n * callback is a function that takes 2 parameters, the TLS connection\n * and the RSA encrypted (signed) bytes as a string. This callback must\n * be called once the signature is ready.\n *\n * @param options the options for this connection:\n * server: true if the connection is server-side, false for client.\n * sessionId: a session ID to reuse, null for a new connection.\n * caStore: an array of certificates to trust.\n * sessionCache: a session cache to use.\n * cipherSuites: an optional array of cipher suites to use,\n * see tls.CipherSuites.\n * connected: function(conn) called when the first handshake completes.\n * virtualHost: the virtual server name to use in a TLS SNI extension.\n * verifyClient: true to require a client certificate in server mode,\n * 'optional' to request one, false not to (default: false).\n * verify: a handler used to custom verify certificates in the chain.\n * verifyOptions: an object with options for the certificate chain validation.\n * See documentation of pki.verifyCertificateChain for possible options.\n * verifyOptions.verify is ignored. If you wish to specify a verify handler\n * use the verify key.\n * getCertificate: an optional callback used to get a certificate or\n * a chain of certificates (as an array).\n * getPrivateKey: an optional callback used to get a private key.\n * getSignature: an optional callback used to get a signature.\n * tlsDataReady: function(conn) called when TLS protocol data has been\n * prepared and is ready to be used (typically sent over a socket\n * connection to its destination), read from conn.tlsData buffer.\n * dataReady: function(conn) called when application data has\n * been parsed from a TLS record and should be consumed by the\n * application, read from conn.data buffer.\n * closed: function(conn) called when the connection has been closed.\n * error: function(conn, error) called when there was an error.\n * deflate: function(inBytes) if provided, will deflate TLS records using\n * the deflate algorithm if the server supports it.\n * inflate: function(inBytes) if provided, will inflate TLS records using\n * the deflate algorithm if the server supports it.\n *\n * @return the new TLS connection.\n */\nforge.tls.createConnection = tls.createConnection;\n","/**\n * Utility functions for web applications.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2018 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nvar baseN = require('./baseN');\n\n/* Utilities API */\nvar util = module.exports = forge.util = forge.util || {};\n\n// define setImmediate and nextTick\n(function() {\n // use native nextTick (unless we're in webpack)\n // webpack (or better node-libs-browser polyfill) sets process.browser.\n // this way we can detect webpack properly\n if(typeof process !== 'undefined' && process.nextTick && !process.browser) {\n util.nextTick = process.nextTick;\n if(typeof setImmediate === 'function') {\n util.setImmediate = setImmediate;\n } else {\n // polyfill setImmediate with nextTick, older versions of node\n // (those w/o setImmediate) won't totally starve IO\n util.setImmediate = util.nextTick;\n }\n return;\n }\n\n // polyfill nextTick with native setImmediate\n if(typeof setImmediate === 'function') {\n util.setImmediate = function() { return setImmediate.apply(undefined, arguments); };\n util.nextTick = function(callback) {\n return setImmediate(callback);\n };\n return;\n }\n\n /* Note: A polyfill upgrade pattern is used here to allow combining\n polyfills. For example, MutationObserver is fast, but blocks UI updates,\n so it needs to allow UI updates periodically, so it falls back on\n postMessage or setTimeout. */\n\n // polyfill with setTimeout\n util.setImmediate = function(callback) {\n setTimeout(callback, 0);\n };\n\n // upgrade polyfill to use postMessage\n if(typeof window !== 'undefined' &&\n typeof window.postMessage === 'function') {\n var msg = 'forge.setImmediate';\n var callbacks = [];\n util.setImmediate = function(callback) {\n callbacks.push(callback);\n // only send message when one hasn't been sent in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n window.postMessage(msg, '*');\n }\n };\n function handler(event) {\n if(event.source === window && event.data === msg) {\n event.stopPropagation();\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }\n }\n window.addEventListener('message', handler, true);\n }\n\n // upgrade polyfill to use MutationObserver\n if(typeof MutationObserver !== 'undefined') {\n // polyfill with MutationObserver\n var now = Date.now();\n var attr = true;\n var div = document.createElement('div');\n var callbacks = [];\n new MutationObserver(function() {\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }).observe(div, {attributes: true});\n var oldSetImmediate = util.setImmediate;\n util.setImmediate = function(callback) {\n if(Date.now() - now > 15) {\n now = Date.now();\n oldSetImmediate(callback);\n } else {\n callbacks.push(callback);\n // only trigger observer when it hasn't been triggered in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n div.setAttribute('a', attr = !attr);\n }\n }\n };\n }\n\n util.nextTick = util.setImmediate;\n})();\n\n// check if running under Node.js\nutil.isNodejs =\n typeof process !== 'undefined' && process.versions && process.versions.node;\n\n\n// 'self' will also work in Web Workers (instance of WorkerGlobalScope) while\n// it will point to `window` in the main thread.\n// To remain compatible with older browsers, we fall back to 'window' if 'self'\n// is not available.\nutil.globalScope = (function() {\n if(util.isNodejs) {\n return global;\n }\n\n return typeof self === 'undefined' ? window : self;\n})();\n\n// define isArray\nutil.isArray = Array.isArray || function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n};\n\n// define isArrayBuffer\nutil.isArrayBuffer = function(x) {\n return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;\n};\n\n// define isArrayBufferView\nutil.isArrayBufferView = function(x) {\n return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;\n};\n\n/**\n * Ensure a bits param is 8, 16, 24, or 32. Used to validate input for\n * algorithms where bit manipulation, JavaScript limitations, and/or algorithm\n * design only allow for byte operations of a limited size.\n *\n * @param n number of bits.\n *\n * Throw Error if n invalid.\n */\nfunction _checkBitsParam(n) {\n if(!(n === 8 || n === 16 || n === 24 || n === 32)) {\n throw new Error('Only 8, 16, 24, or 32 bits supported: ' + n);\n }\n}\n\n// TODO: set ByteBuffer to best available backing\nutil.ByteBuffer = ByteStringBuffer;\n\n/** Buffer w/BinaryString backing */\n\n/**\n * Constructor for a binary string backed byte buffer.\n *\n * @param [b] the bytes to wrap (either encoded as string, one byte per\n * character, or as an ArrayBuffer or Typed Array).\n */\nfunction ByteStringBuffer(b) {\n // TODO: update to match DataBuffer API\n\n // the data in this buffer\n this.data = '';\n // the pointer for reading from this buffer\n this.read = 0;\n\n if(typeof b === 'string') {\n this.data = b;\n } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {\n if(typeof Buffer !== 'undefined' && b instanceof Buffer) {\n this.data = b.toString('binary');\n } else {\n // convert native buffer to forge buffer\n // FIXME: support native buffers internally instead\n var arr = new Uint8Array(b);\n try {\n this.data = String.fromCharCode.apply(null, arr);\n } catch(e) {\n for(var i = 0; i < arr.length; ++i) {\n this.putByte(arr[i]);\n }\n }\n }\n } else if(b instanceof ByteStringBuffer ||\n (typeof b === 'object' && typeof b.data === 'string' &&\n typeof b.read === 'number')) {\n // copy existing buffer\n this.data = b.data;\n this.read = b.read;\n }\n\n // used for v8 optimization\n this._constructedStringLength = 0;\n}\nutil.ByteStringBuffer = ByteStringBuffer;\n\n/* Note: This is an optimization for V8-based browsers. When V8 concatenates\n a string, the strings are only joined logically using a \"cons string\" or\n \"constructed/concatenated string\". These containers keep references to one\n another and can result in very large memory usage. For example, if a 2MB\n string is constructed by concatenating 4 bytes together at a time, the\n memory usage will be ~44MB; so ~22x increase. The strings are only joined\n together when an operation requiring their joining takes place, such as\n substr(). This function is called when adding data to this buffer to ensure\n these types of strings are periodically joined to reduce the memory\n footprint. */\nvar _MAX_CONSTRUCTED_STRING_LENGTH = 4096;\nutil.ByteStringBuffer.prototype._optimizeConstructedString = function(x) {\n this._constructedStringLength += x;\n if(this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) {\n // this substr() should cause the constructed string to join\n this.data.substr(0, 1);\n this._constructedStringLength = 0;\n }\n};\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.ByteStringBuffer.prototype.length = function() {\n return this.data.length - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.ByteStringBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putByte = function(b) {\n return this.putBytes(String.fromCharCode(b));\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.fillWithByte = function(b, n) {\n b = String.fromCharCode(b);\n var d = this.data;\n while(n > 0) {\n if(n & 1) {\n d += b;\n }\n n >>>= 1;\n if(n > 0) {\n b += b;\n }\n }\n this.data = d;\n this._optimizeConstructedString(n);\n return this;\n};\n\n/**\n * Puts bytes in this buffer.\n *\n * @param bytes the bytes (as a binary encoded string) to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBytes = function(bytes) {\n this.data += bytes;\n this._optimizeConstructedString(bytes.length);\n return this;\n};\n\n/**\n * Puts a UTF-16 encoded string into this buffer.\n *\n * @param str the string to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putString = function(str) {\n return this.putBytes(util.encodeUtf8(str));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 24 & 0xFF));\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n var bytes = '';\n do {\n n -= 8;\n bytes += String.fromCharCode((i >> n) & 0xFF);\n } while(n > 0);\n return this.putBytes(bytes);\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putSignedInt = function(i, n) {\n // putInt checks n\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBuffer = function(buffer) {\n return this.putBytes(buffer.getBytes());\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.getByte = function() {\n return this.data.charCodeAt(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 8 ^\n this.data.charCodeAt(this.read + 1));\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 16 ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 24 ^\n this.data.charCodeAt(this.read + 1) << 16 ^\n this.data.charCodeAt(this.read + 2) << 8 ^\n this.data.charCodeAt(this.read + 3));\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16 ^\n this.data.charCodeAt(this.read + 3) << 24);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by ceil(n/8).\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.charCodeAt(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer. Note that the resulting string is binary encoded (in node.js this\n * encoding is referred to as `binary`, it is *not* `utf8`).\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.ByteStringBuffer.prototype.getBytes = function(count) {\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.ByteStringBuffer.prototype.bytes = function(count) {\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.at = function(i) {\n return this.data.charCodeAt(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.setAt = function(i, b) {\n this.data = this.data.substr(0, this.read + i) +\n String.fromCharCode(b) +\n this.data.substr(this.read + i + 1);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.ByteStringBuffer.prototype.last = function() {\n return this.data.charCodeAt(this.data.length - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.ByteStringBuffer.prototype.copy = function() {\n var c = util.createBuffer(this.data);\n c.read = this.read;\n return c;\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.compact = function() {\n if(this.read > 0) {\n this.data = this.data.slice(this.read);\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.clear = function() {\n this.data = '';\n this.read = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.truncate = function(count) {\n var len = Math.max(0, this.length() - count);\n this.data = this.data.substr(this.read, len);\n this.read = 0;\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.ByteStringBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.length; ++i) {\n var b = this.data.charCodeAt(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a UTF-16 string (standard JavaScript string).\n *\n * @return a UTF-16 string.\n */\nutil.ByteStringBuffer.prototype.toString = function() {\n return util.decodeUtf8(this.bytes());\n};\n\n/** End Buffer w/BinaryString backing */\n\n/** Buffer w/UInt8Array backing */\n\n/**\n * FIXME: Experimental. Do not use yet.\n *\n * Constructor for an ArrayBuffer-backed byte buffer.\n *\n * The buffer may be constructed from a string, an ArrayBuffer, DataView, or a\n * TypedArray.\n *\n * If a string is given, its encoding should be provided as an option,\n * otherwise it will default to 'binary'. A 'binary' string is encoded such\n * that each character is one byte in length and size.\n *\n * If an ArrayBuffer, DataView, or TypedArray is given, it will be used\n * *directly* without any copying. Note that, if a write to the buffer requires\n * more space, the buffer will allocate a new backing ArrayBuffer to\n * accommodate. The starting read and write offsets for the buffer may be\n * given as options.\n *\n * @param [b] the initial bytes for this buffer.\n * @param options the options to use:\n * [readOffset] the starting read offset to use (default: 0).\n * [writeOffset] the starting write offset to use (default: the\n * length of the first parameter).\n * [growSize] the minimum amount, in bytes, to grow the buffer by to\n * accommodate writes (default: 1024).\n * [encoding] the encoding ('binary', 'utf8', 'utf16', 'hex') for the\n * first parameter, if it is a string (default: 'binary').\n */\nfunction DataBuffer(b, options) {\n // default options\n options = options || {};\n\n // pointers for read from/write to buffer\n this.read = options.readOffset || 0;\n this.growSize = options.growSize || 1024;\n\n var isArrayBuffer = util.isArrayBuffer(b);\n var isArrayBufferView = util.isArrayBufferView(b);\n if(isArrayBuffer || isArrayBufferView) {\n // use ArrayBuffer directly\n if(isArrayBuffer) {\n this.data = new DataView(b);\n } else {\n // TODO: adjust read/write offset based on the type of view\n // or specify that this must be done in the options ... that the\n // offsets are byte-based\n this.data = new DataView(b.buffer, b.byteOffset, b.byteLength);\n }\n this.write = ('writeOffset' in options ?\n options.writeOffset : this.data.byteLength);\n return;\n }\n\n // initialize to empty array buffer and add any given bytes using putBytes\n this.data = new DataView(new ArrayBuffer(0));\n this.write = 0;\n\n if(b !== null && b !== undefined) {\n this.putBytes(b);\n }\n\n if('writeOffset' in options) {\n this.write = options.writeOffset;\n }\n}\nutil.DataBuffer = DataBuffer;\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.DataBuffer.prototype.length = function() {\n return this.write - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.DataBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Ensures this buffer has enough empty space to accommodate the given number\n * of bytes. An optional parameter may be given that indicates a minimum\n * amount to grow the buffer if necessary. If the parameter is not given,\n * the buffer will be grown by some previously-specified default amount\n * or heuristic.\n *\n * @param amount the number of bytes to accommodate.\n * @param [growSize] the minimum amount, in bytes, to grow the buffer by if\n * necessary.\n */\nutil.DataBuffer.prototype.accommodate = function(amount, growSize) {\n if(this.length() >= amount) {\n return this;\n }\n growSize = Math.max(growSize || this.growSize, amount);\n\n // grow buffer\n var src = new Uint8Array(\n this.data.buffer, this.data.byteOffset, this.data.byteLength);\n var dst = new Uint8Array(this.length() + growSize);\n dst.set(src);\n this.data = new DataView(dst.buffer);\n\n return this;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putByte = function(b) {\n this.accommodate(1);\n this.data.setUint8(this.write++, b);\n return this;\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.fillWithByte = function(b, n) {\n this.accommodate(n);\n for(var i = 0; i < n; ++i) {\n this.data.setUint8(b);\n }\n return this;\n};\n\n/**\n * Puts bytes in this buffer. The bytes may be given as a string, an\n * ArrayBuffer, a DataView, or a TypedArray.\n *\n * @param bytes the bytes to put.\n * @param [encoding] the encoding for the first parameter ('binary', 'utf8',\n * 'utf16', 'hex'), if it is a string (default: 'binary').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBytes = function(bytes, encoding) {\n if(util.isArrayBufferView(bytes)) {\n var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var len = src.byteLength - src.byteOffset;\n this.accommodate(len);\n var dst = new Uint8Array(this.data.buffer, this.write);\n dst.set(src);\n this.write += len;\n return this;\n }\n\n if(util.isArrayBuffer(bytes)) {\n var src = new Uint8Array(bytes);\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(this.data.buffer);\n dst.set(src, this.write);\n this.write += src.byteLength;\n return this;\n }\n\n // bytes is a util.DataBuffer or equivalent\n if(bytes instanceof util.DataBuffer ||\n (typeof bytes === 'object' &&\n typeof bytes.read === 'number' && typeof bytes.write === 'number' &&\n util.isArrayBufferView(bytes.data))) {\n var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length());\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(bytes.data.byteLength, this.write);\n dst.set(src);\n this.write += src.byteLength;\n return this;\n }\n\n if(bytes instanceof util.ByteStringBuffer) {\n // copy binary string and process as the same as a string parameter below\n bytes = bytes.data;\n encoding = 'binary';\n }\n\n // string conversion\n encoding = encoding || 'binary';\n if(typeof bytes === 'string') {\n var view;\n\n // decode from string\n if(encoding === 'hex') {\n this.accommodate(Math.ceil(bytes.length / 2));\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.hex.decode(bytes, view, this.write);\n return this;\n }\n if(encoding === 'base64') {\n this.accommodate(Math.ceil(bytes.length / 4) * 3);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.base64.decode(bytes, view, this.write);\n return this;\n }\n\n // encode text as UTF-8 bytes\n if(encoding === 'utf8') {\n // encode as UTF-8 then decode string as raw binary\n bytes = util.encodeUtf8(bytes);\n encoding = 'binary';\n }\n\n // decode string as raw binary\n if(encoding === 'binary' || encoding === 'raw') {\n // one byte per character\n this.accommodate(bytes.length);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.raw.decode(view);\n return this;\n }\n\n // encode text as UTF-16 bytes\n if(encoding === 'utf16') {\n // two bytes per character\n this.accommodate(bytes.length * 2);\n view = new Uint16Array(this.data.buffer, this.write);\n this.write += util.text.utf16.encode(view);\n return this;\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n }\n\n throw Error('Invalid parameter: ' + bytes);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBuffer = function(buffer) {\n this.putBytes(buffer);\n buffer.clear();\n return this;\n};\n\n/**\n * Puts a string into this buffer.\n *\n * @param str the string to put.\n * @param [encoding] the encoding for the string (default: 'utf16').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putString = function(str) {\n return this.putBytes(str, 'utf16');\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16 = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24 = function(i) {\n this.accommodate(3);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32 = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16Le = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i, true);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24Le = function(i) {\n this.accommodate(3);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF, true);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32Le = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i, true);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n do {\n n -= 8;\n this.data.setInt8(this.write++, (i >> n) & 0xFF);\n } while(n > 0);\n return this;\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putSignedInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.getByte = function() {\n return this.data.getInt8(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16 = function() {\n var rval = this.data.getInt16(this.read);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.getInt16(this.read) << 8 ^\n this.data.getInt8(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32 = function() {\n var rval = this.data.getInt32(this.read);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16Le = function() {\n var rval = this.data.getInt16(this.read, true);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.getInt8(this.read) ^\n this.data.getInt16(this.read + 1, true) << 8);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32Le = function() {\n var rval = this.data.getInt32(this.read, true);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.getInt8(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer.\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.DataBuffer.prototype.getBytes = function(count) {\n // TODO: deprecate this method, it is poorly named and\n // this.toString('binary') replaces it\n // add a toTypedArray()/toArrayBuffer() function\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.DataBuffer.prototype.bytes = function(count) {\n // TODO: deprecate this method, it is poorly named, add \"getString()\"\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.at = function(i) {\n return this.data.getUint8(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.setAt = function(i, b) {\n this.data.setUint8(i, b);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.DataBuffer.prototype.last = function() {\n return this.data.getUint8(this.write - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.DataBuffer.prototype.copy = function() {\n return new util.DataBuffer(this);\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.compact = function() {\n if(this.read > 0) {\n var src = new Uint8Array(this.data.buffer, this.read);\n var dst = new Uint8Array(src.byteLength);\n dst.set(src);\n this.data = new DataView(dst);\n this.write -= this.read;\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.clear = function() {\n this.data = new DataView(new ArrayBuffer(0));\n this.read = this.write = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.truncate = function(count) {\n this.write = Math.max(0, this.length() - count);\n this.read = Math.min(this.read, this.write);\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.DataBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.byteLength; ++i) {\n var b = this.data.getUint8(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a string, using the given encoding. If no\n * encoding is given, 'utf8' (UTF-8) is used.\n *\n * @param [encoding] the encoding to use: 'binary', 'utf8', 'utf16', 'hex',\n * 'base64' (default: 'utf8').\n *\n * @return a string representation of the bytes in this buffer.\n */\nutil.DataBuffer.prototype.toString = function(encoding) {\n var view = new Uint8Array(this.data, this.read, this.length());\n encoding = encoding || 'utf8';\n\n // encode to string\n if(encoding === 'binary' || encoding === 'raw') {\n return util.binary.raw.encode(view);\n }\n if(encoding === 'hex') {\n return util.binary.hex.encode(view);\n }\n if(encoding === 'base64') {\n return util.binary.base64.encode(view);\n }\n\n // decode to text\n if(encoding === 'utf8') {\n return util.text.utf8.decode(view);\n }\n if(encoding === 'utf16') {\n return util.text.utf16.decode(view);\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n};\n\n/** End Buffer w/UInt8Array backing */\n\n/**\n * Creates a buffer that stores bytes. A value may be given to populate the\n * buffer with data. This value can either be string of encoded bytes or a\n * regular string of characters. When passing a string of binary encoded\n * bytes, the encoding `raw` should be given. This is also the default. When\n * passing a string of characters, the encoding `utf8` should be given.\n *\n * @param [input] a string with encoded bytes to store in the buffer.\n * @param [encoding] (default: 'raw', other: 'utf8').\n */\nutil.createBuffer = function(input, encoding) {\n // TODO: deprecate, use new ByteBuffer() instead\n encoding = encoding || 'raw';\n if(input !== undefined && encoding === 'utf8') {\n input = util.encodeUtf8(input);\n }\n return new util.ByteBuffer(input);\n};\n\n/**\n * Fills a string with a particular value. If you want the string to be a byte\n * string, pass in String.fromCharCode(theByte).\n *\n * @param c the character to fill the string with, use String.fromCharCode\n * to fill the string with a byte value.\n * @param n the number of characters of value c to fill with.\n *\n * @return the filled string.\n */\nutil.fillString = function(c, n) {\n var s = '';\n while(n > 0) {\n if(n & 1) {\n s += c;\n }\n n >>>= 1;\n if(n > 0) {\n c += c;\n }\n }\n return s;\n};\n\n/**\n * Performs a per byte XOR between two byte strings and returns the result as a\n * string of bytes.\n *\n * @param s1 first string of bytes.\n * @param s2 second string of bytes.\n * @param n the number of bytes to XOR.\n *\n * @return the XOR'd result.\n */\nutil.xorBytes = function(s1, s2, n) {\n var s3 = '';\n var b = '';\n var t = '';\n var i = 0;\n var c = 0;\n for(; n > 0; --n, ++i) {\n b = s1.charCodeAt(i) ^ s2.charCodeAt(i);\n if(c >= 10) {\n s3 += t;\n t = '';\n c = 0;\n }\n t += String.fromCharCode(b);\n ++c;\n }\n s3 += t;\n return s3;\n};\n\n/**\n * Converts a hex string into a 'binary' encoded string of bytes.\n *\n * @param hex the hexadecimal string to convert.\n *\n * @return the binary-encoded string of bytes.\n */\nutil.hexToBytes = function(hex) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.decode instead.\"\n var rval = '';\n var i = 0;\n if(hex.length & 1 == 1) {\n // odd number of characters, convert first character alone\n i = 1;\n rval += String.fromCharCode(parseInt(hex[0], 16));\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n }\n return rval;\n};\n\n/**\n * Converts a 'binary' encoded string of bytes to hex.\n *\n * @param bytes the byte string to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.bytesToHex = function(bytes) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.encode instead.\"\n return util.createBuffer(bytes).toHex();\n};\n\n/**\n * Converts an 32-bit integer to 4-big-endian byte string.\n *\n * @param i the integer.\n *\n * @return the byte string.\n */\nutil.int32ToBytes = function(i) {\n return (\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n// base64 characters, reverse mapping\nvar _base64 =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar _base64Idx = [\n/*43 -43 = 0*/\n/*'+', 1, 2, 3,'/' */\n 62, -1, -1, -1, 63,\n\n/*'0','1','2','3','4','5','6','7','8','9' */\n 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,\n\n/*15, 16, 17,'=', 19, 20, 21 */\n -1, -1, -1, 64, -1, -1, -1,\n\n/*65 - 43 = 22*/\n/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n\n/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */\n 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n\n/*91 - 43 = 48 */\n/*48, 49, 50, 51, 52, 53 */\n -1, -1, -1, -1, -1, -1,\n\n/*97 - 43 = 54*/\n/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */\n 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\n\n/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */\n 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51\n];\n\n// base58 characters (Bitcoin alphabet)\nvar _base58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/**\n * Base64 encodes a 'binary' encoded string of bytes.\n *\n * @param input the binary encoded string of bytes to base64-encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output.\n */\nutil.encode64 = function(input, maxline) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.encode instead.\"\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Base64 decodes a string into a 'binary' encoded string of bytes.\n *\n * @param input the base64-encoded input.\n *\n * @return the binary encoded string.\n */\nutil.decode64 = function(input) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.decode instead.\"\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n var output = '';\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n output += String.fromCharCode((enc1 << 2) | (enc2 >> 4));\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n output += String.fromCharCode(((enc2 & 15) << 4) | (enc3 >> 2));\n if(enc4 !== 64) {\n // decoded 3 bytes\n output += String.fromCharCode(((enc3 & 3) << 6) | enc4);\n }\n }\n }\n\n return output;\n};\n\n/**\n * Encodes the given string of characters (a standard JavaScript\n * string) as a binary encoded string where the bytes represent\n * a UTF-8 encoded string of characters. Non-ASCII characters will be\n * encoded as multiple bytes according to UTF-8.\n *\n * @param str a standard string of characters to encode.\n *\n * @return the binary encoded string.\n */\nutil.encodeUtf8 = function(str) {\n return unescape(encodeURIComponent(str));\n};\n\n/**\n * Decodes a binary encoded string that contains bytes that\n * represent a UTF-8 encoded string of characters -- into a\n * string of characters (a standard JavaScript string).\n *\n * @param str the binary encoded string to decode.\n *\n * @return the resulting standard string of characters.\n */\nutil.decodeUtf8 = function(str) {\n return decodeURIComponent(escape(str));\n};\n\n// binary encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.binary = {\n raw: {},\n hex: {},\n base64: {},\n base58: {},\n baseN : {\n encode: baseN.encode,\n decode: baseN.decode\n }\n};\n\n/**\n * Encodes a Uint8Array as a binary-encoded string. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param bytes the Uint8Array to encode.\n *\n * @return the binary-encoded string.\n */\nutil.binary.raw.encode = function(bytes) {\n return String.fromCharCode.apply(null, bytes);\n};\n\n/**\n * Decodes a binary-encoded string to a Uint8Array. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param str the binary-encoded string to decode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.raw.decode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Encodes a 'binary' string, ArrayBuffer, DataView, TypedArray, or\n * ByteBuffer as a string of hexadecimal characters.\n *\n * @param bytes the bytes to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.binary.hex.encode = util.bytesToHex;\n\n/**\n * Decodes a hex-encoded string to a Uint8Array.\n *\n * @param hex the hexadecimal string to convert.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.hex.decode = function(hex, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(hex.length / 2));\n }\n offset = offset || 0;\n var i = 0, j = offset;\n if(hex.length & 1) {\n // odd number of characters, convert first character alone\n i = 1;\n out[j++] = parseInt(hex[0], 16);\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n out[j++] = parseInt(hex.substr(i, 2), 16);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Base64-encodes a Uint8Array.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output string.\n */\nutil.binary.base64.encode = function(input, maxline) {\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.byteLength) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Decodes a base64-encoded string to a Uint8Array.\n *\n * @param input the base64-encoded input string.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.base64.decode = function(input, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(input.length / 4) * 3);\n }\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n offset = offset || 0;\n var enc1, enc2, enc3, enc4;\n var i = 0, j = offset;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n out[j++] = (enc1 << 2) | (enc2 >> 4);\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);\n if(enc4 !== 64) {\n // decoded 3 bytes\n out[j++] = ((enc3 & 3) << 6) | enc4;\n }\n }\n }\n\n // make sure result is the exact decoded length\n return output ? (j - offset) : out.subarray(0, j);\n};\n\n// add support for base58 encoding/decoding with Bitcoin alphabet\nutil.binary.base58.encode = function(input, maxline) {\n return util.binary.baseN.encode(input, _base58, maxline);\n};\nutil.binary.base58.decode = function(input, maxline) {\n return util.binary.baseN.decode(input, _base58, maxline);\n};\n\n// text encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.text = {\n utf8: {},\n utf16: {}\n};\n\n/**\n * Encodes the given string as UTF-8 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf8.encode = function(str, output, offset) {\n str = util.encodeUtf8(str);\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-8 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf8.decode = function(bytes) {\n return util.decodeUtf8(String.fromCharCode.apply(null, bytes));\n};\n\n/**\n * Encodes the given string as UTF-16 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf16.encode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length * 2);\n }\n var view = new Uint16Array(out.buffer);\n offset = offset || 0;\n var j = offset;\n var k = offset;\n for(var i = 0; i < str.length; ++i) {\n view[k++] = str.charCodeAt(i);\n j += 2;\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-16 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf16.decode = function(bytes) {\n return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));\n};\n\n/**\n * Deflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true to return only raw deflate data, false to include zlib\n * header and trailer.\n *\n * @return the deflated data as a string.\n */\nutil.deflate = function(api, bytes, raw) {\n bytes = util.decode64(api.deflate(util.encode64(bytes)).rval);\n\n // strip zlib header and trailer if necessary\n if(raw) {\n // zlib header is 2 bytes (CMF,FLG) where FLG indicates that\n // there is a 4-byte DICT (alder-32) block before the data if\n // its 5th bit is set\n var start = 2;\n var flg = bytes.charCodeAt(1);\n if(flg & 0x20) {\n start = 6;\n }\n // zlib trailer is 4 bytes of adler-32\n bytes = bytes.substring(start, bytes.length - 4);\n }\n\n return bytes;\n};\n\n/**\n * Inflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true if the incoming data has no zlib header or trailer and is\n * raw DEFLATE data.\n *\n * @return the inflated data as a string, null on error.\n */\nutil.inflate = function(api, bytes, raw) {\n // TODO: add zlib header and trailer if necessary/possible\n var rval = api.inflate(util.encode64(bytes)).rval;\n return (rval === null) ? null : util.decode64(rval);\n};\n\n/**\n * Sets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param obj the storage object, null to remove.\n */\nvar _setStorageObject = function(api, id, obj) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n var rval;\n if(obj === null) {\n rval = api.removeItem(id);\n } else {\n // json-encode and base64-encode object\n obj = util.encode64(JSON.stringify(obj));\n rval = api.setItem(id, obj);\n }\n\n // handle potential flash error\n if(typeof(rval) !== 'undefined' && rval.rval !== true) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n};\n\n/**\n * Gets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n *\n * @return the storage object entry or null if none exists.\n */\nvar _getStorageObject = function(api, id) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n // get the existing entry\n var rval = api.getItem(id);\n\n /* Note: We check api.init because we can't do (api == localStorage)\n on IE because of \"Class doesn't support Automation\" exception. Only\n the flash api has an init method so this works too, but we need a\n better solution in the future. */\n\n // flash returns item wrapped in an object, handle special case\n if(api.init) {\n if(rval.rval === null) {\n if(rval.error) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n // no error, but also no item\n rval = null;\n } else {\n rval = rval.rval;\n }\n }\n\n // handle decoding\n if(rval !== null) {\n // base64-decode and json-decode data\n rval = JSON.parse(util.decode64(rval));\n }\n\n return rval;\n};\n\n/**\n * Stores an item in local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n */\nvar _setItem = function(api, id, key, data) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj === null) {\n // create a new storage object\n obj = {};\n }\n // update key\n obj[key] = data;\n\n // set storage object\n _setStorageObject(api, id, obj);\n};\n\n/**\n * Gets an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n *\n * @return the item.\n */\nvar _getItem = function(api, id, key) {\n // get storage object\n var rval = _getStorageObject(api, id);\n if(rval !== null) {\n // return data at key\n rval = (key in rval) ? rval[key] : null;\n }\n\n return rval;\n};\n\n/**\n * Removes an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n */\nvar _removeItem = function(api, id, key) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj !== null && key in obj) {\n // remove key\n delete obj[key];\n\n // see if entry has no keys remaining\n var empty = true;\n for(var prop in obj) {\n empty = false;\n break;\n }\n if(empty) {\n // remove entry entirely if no keys are left\n obj = null;\n }\n\n // set storage object\n _setStorageObject(api, id, obj);\n }\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n */\nvar _clearItems = function(api, id) {\n _setStorageObject(api, id, null);\n};\n\n/**\n * Calls a storage function.\n *\n * @param func the function to call.\n * @param args the arguments for the function.\n * @param location the location argument.\n *\n * @return the return value from the function.\n */\nvar _callStorageFunction = function(func, args, location) {\n var rval = null;\n\n // default storage types\n if(typeof(location) === 'undefined') {\n location = ['web', 'flash'];\n }\n\n // apply storage types in order of preference\n var type;\n var done = false;\n var exception = null;\n for(var idx in location) {\n type = location[idx];\n try {\n if(type === 'flash' || type === 'both') {\n if(args[0] === null) {\n throw new Error('Flash local storage not available.');\n }\n rval = func.apply(this, args);\n done = (type === 'flash');\n }\n if(type === 'web' || type === 'both') {\n args[0] = localStorage;\n rval = func.apply(this, args);\n done = true;\n }\n } catch(ex) {\n exception = ex;\n }\n if(done) {\n break;\n }\n }\n\n if(!done) {\n throw exception;\n }\n\n return rval;\n};\n\n/**\n * Stores an item on local disk.\n *\n * The available types of local storage include 'flash', 'web', and 'both'.\n *\n * The type 'flash' refers to flash local storage (SharedObject). In order\n * to use flash local storage, the 'api' parameter must be valid. The type\n * 'web' refers to WebStorage, if supported by the browser. The type 'both'\n * refers to storing using both 'flash' and 'web', not just one or the\n * other.\n *\n * The location array should list the storage types to use in order of\n * preference:\n *\n * ['flash']: flash only storage\n * ['web']: web only storage\n * ['both']: try to store in both\n * ['flash','web']: store in flash first, but if not available, 'web'\n * ['web','flash']: store in web first, but if not available, 'flash'\n *\n * The location array defaults to: ['web', 'flash']\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n * @param location an array with the preferred types of storage to use.\n */\nutil.setItem = function(api, id, key, data, location) {\n _callStorageFunction(_setItem, arguments, location);\n};\n\n/**\n * Gets an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n *\n * @return the item.\n */\nutil.getItem = function(api, id, key, location) {\n return _callStorageFunction(_getItem, arguments, location);\n};\n\n/**\n * Removes an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n */\nutil.removeItem = function(api, id, key, location) {\n _callStorageFunction(_removeItem, arguments, location);\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface if flash is available.\n * @param id the storage ID to use.\n * @param location an array with the preferred types of storage to use.\n */\nutil.clearItems = function(api, id, location) {\n _callStorageFunction(_clearItems, arguments, location);\n};\n\n/**\n * Check if an object is empty.\n *\n * Taken from:\n * http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object-from-json/679937#679937\n *\n * @param object the object to check.\n */\nutil.isEmpty = function(obj) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Format with simple printf-style interpolation.\n *\n * %%: literal '%'\n * %s,%o: convert next argument into a string.\n *\n * @param format the string to format.\n * @param ... arguments to interpolate into the format string.\n */\nutil.format = function(format) {\n var re = /%./g;\n // current match\n var match;\n // current part\n var part;\n // current arg index\n var argi = 0;\n // collected parts to recombine later\n var parts = [];\n // last index found\n var last = 0;\n // loop while matches remain\n while((match = re.exec(format))) {\n part = format.substring(last, re.lastIndex - 2);\n // don't add empty strings (ie, parts between %s%s)\n if(part.length > 0) {\n parts.push(part);\n }\n last = re.lastIndex;\n // switch on % code\n var code = match[0][1];\n switch(code) {\n case 's':\n case 'o':\n // check if enough arguments were given\n if(argi < arguments.length) {\n parts.push(arguments[argi++ + 1]);\n } else {\n parts.push('');\n }\n break;\n // FIXME: do proper formating for numbers, etc\n //case 'f':\n //case 'd':\n case '%':\n parts.push('%');\n break;\n default:\n parts.push('<%' + code + '?>');\n }\n }\n // add trailing part of format string\n parts.push(format.substring(last));\n return parts.join('');\n};\n\n/**\n * Formats a number.\n *\n * http://snipplr.com/view/5945/javascript-numberformat--ported-from-php/\n */\nutil.formatNumber = function(number, decimals, dec_point, thousands_sep) {\n // http://kevin.vanzonneveld.net\n // + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfix by: Michael White (http://crestidg.com)\n // + bugfix by: Benjamin Lupton\n // + bugfix by: Allan Jensen (http://www.winternet.no)\n // + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // * example 1: number_format(1234.5678, 2, '.', '');\n // * returns 1: 1234.57\n\n var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;\n var d = dec_point === undefined ? ',' : dec_point;\n var t = thousands_sep === undefined ?\n '.' : thousands_sep, s = n < 0 ? '-' : '';\n var i = parseInt((n = Math.abs(+n || 0).toFixed(c)), 10) + '';\n var j = (i.length > 3) ? i.length % 3 : 0;\n return s + (j ? i.substr(0, j) + t : '') +\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + t) +\n (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');\n};\n\n/**\n * Formats a byte size.\n *\n * http://snipplr.com/view/5949/format-humanize-file-byte-size-presentation-in-javascript/\n */\nutil.formatSize = function(size) {\n if(size >= 1073741824) {\n size = util.formatNumber(size / 1073741824, 2, '.', '') + ' GiB';\n } else if(size >= 1048576) {\n size = util.formatNumber(size / 1048576, 2, '.', '') + ' MiB';\n } else if(size >= 1024) {\n size = util.formatNumber(size / 1024, 0) + ' KiB';\n } else {\n size = util.formatNumber(size, 0) + ' bytes';\n }\n return size;\n};\n\n/**\n * Converts an IPv4 or IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv4 or IPv6 address to convert.\n *\n * @return the 4-byte IPv6 or 16-byte IPv6 address or null if the address can't\n * be parsed.\n */\nutil.bytesFromIP = function(ip) {\n if(ip.indexOf('.') !== -1) {\n return util.bytesFromIPv4(ip);\n }\n if(ip.indexOf(':') !== -1) {\n return util.bytesFromIPv6(ip);\n }\n return null;\n};\n\n/**\n * Converts an IPv4 string representation into bytes (in network order).\n *\n * @param ip the IPv4 address to convert.\n *\n * @return the 4-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv4 = function(ip) {\n ip = ip.split('.');\n if(ip.length !== 4) {\n return null;\n }\n var b = util.createBuffer();\n for(var i = 0; i < ip.length; ++i) {\n var num = parseInt(ip[i], 10);\n if(isNaN(num)) {\n return null;\n }\n b.putByte(num);\n }\n return b.getBytes();\n};\n\n/**\n * Converts an IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv6 address to convert.\n *\n * @return the 16-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv6 = function(ip) {\n var blanks = 0;\n ip = ip.split(':').filter(function(e) {\n if(e.length === 0) ++blanks;\n return true;\n });\n var zeros = (8 - ip.length + blanks) * 2;\n var b = util.createBuffer();\n for(var i = 0; i < 8; ++i) {\n if(!ip[i] || ip[i].length === 0) {\n b.fillWithByte(0, zeros);\n zeros = 0;\n continue;\n }\n var bytes = util.hexToBytes(ip[i]);\n if(bytes.length < 2) {\n b.putByte(0);\n }\n b.putBytes(bytes);\n }\n return b.getBytes();\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation or 16-bytes into\n * an IPv6 string representation. The bytes must be in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 or IPv6 string representation if 4 or 16 bytes,\n * respectively, are given, otherwise null.\n */\nutil.bytesToIP = function(bytes) {\n if(bytes.length === 4) {\n return util.bytesToIPv4(bytes);\n }\n if(bytes.length === 16) {\n return util.bytesToIPv6(bytes);\n }\n return null;\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv4 = function(bytes) {\n if(bytes.length !== 4) {\n return null;\n }\n var ip = [];\n for(var i = 0; i < bytes.length; ++i) {\n ip.push(bytes.charCodeAt(i));\n }\n return ip.join('.');\n};\n\n/**\n * Converts 16-bytes into an IPv16 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv16 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv6 = function(bytes) {\n if(bytes.length !== 16) {\n return null;\n }\n var ip = [];\n var zeroGroups = [];\n var zeroMaxGroup = 0;\n for(var i = 0; i < bytes.length; i += 2) {\n var hex = util.bytesToHex(bytes[i] + bytes[i + 1]);\n // canonicalize zero representation\n while(hex[0] === '0' && hex !== '0') {\n hex = hex.substr(1);\n }\n if(hex === '0') {\n var last = zeroGroups[zeroGroups.length - 1];\n var idx = ip.length;\n if(!last || idx !== last.end + 1) {\n zeroGroups.push({start: idx, end: idx});\n } else {\n last.end = idx;\n if((last.end - last.start) >\n (zeroGroups[zeroMaxGroup].end - zeroGroups[zeroMaxGroup].start)) {\n zeroMaxGroup = zeroGroups.length - 1;\n }\n }\n }\n ip.push(hex);\n }\n if(zeroGroups.length > 0) {\n var group = zeroGroups[zeroMaxGroup];\n // only shorten group of length > 0\n if(group.end - group.start > 0) {\n ip.splice(group.start, group.end - group.start + 1, '');\n if(group.start === 0) {\n ip.unshift('');\n }\n if(group.end === 7) {\n ip.push('');\n }\n }\n }\n return ip.join(':');\n};\n\n/**\n * Estimates the number of processes that can be run concurrently. If\n * creating Web Workers, keep in mind that the main JavaScript process needs\n * its own core.\n *\n * @param options the options to use:\n * update true to force an update (not use the cached value).\n * @param callback(err, max) called once the operation completes.\n */\nutil.estimateCores = function(options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n if('cores' in util && !options.update) {\n return callback(null, util.cores);\n }\n if(typeof navigator !== 'undefined' &&\n 'hardwareConcurrency' in navigator &&\n navigator.hardwareConcurrency > 0) {\n util.cores = navigator.hardwareConcurrency;\n return callback(null, util.cores);\n }\n if(typeof Worker === 'undefined') {\n // workers not available\n util.cores = 1;\n return callback(null, util.cores);\n }\n if(typeof Blob === 'undefined') {\n // can't estimate, default to 2\n util.cores = 2;\n return callback(null, util.cores);\n }\n\n // create worker concurrency estimation code as blob\n var blobUrl = URL.createObjectURL(new Blob(['(',\n function() {\n self.addEventListener('message', function(e) {\n // run worker for 4 ms\n var st = Date.now();\n var et = st + 4;\n while(Date.now() < et);\n self.postMessage({st: st, et: et});\n });\n }.toString(),\n ')()'], {type: 'application/javascript'}));\n\n // take 5 samples using 16 workers\n sample([], 5, 16);\n\n function sample(max, samples, numWorkers) {\n if(samples === 0) {\n // get overlap average\n var avg = Math.floor(max.reduce(function(avg, x) {\n return avg + x;\n }, 0) / max.length);\n util.cores = Math.max(1, avg);\n URL.revokeObjectURL(blobUrl);\n return callback(null, util.cores);\n }\n map(numWorkers, function(err, results) {\n max.push(reduce(numWorkers, results));\n sample(max, samples - 1, numWorkers);\n });\n }\n\n function map(numWorkers, callback) {\n var workers = [];\n var results = [];\n for(var i = 0; i < numWorkers; ++i) {\n var worker = new Worker(blobUrl);\n worker.addEventListener('message', function(e) {\n results.push(e.data);\n if(results.length === numWorkers) {\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].terminate();\n }\n callback(null, results);\n }\n });\n workers.push(worker);\n }\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].postMessage(i);\n }\n }\n\n function reduce(numWorkers, results) {\n // find overlapping time windows\n var overlaps = [];\n for(var n = 0; n < numWorkers; ++n) {\n var r1 = results[n];\n var overlap = overlaps[n] = [];\n for(var i = 0; i < numWorkers; ++i) {\n if(n === i) {\n continue;\n }\n var r2 = results[i];\n if((r1.st > r2.st && r1.st < r2.et) ||\n (r2.st > r1.st && r2.st < r1.et)) {\n overlap.push(i);\n }\n }\n }\n // get maximum overlaps ... don't include overlapping worker itself\n // as the main JS process was also being scheduled during the work and\n // would have to be subtracted from the estimate anyway\n return overlaps.reduce(function(max, overlap) {\n return Math.max(max, overlap.length);\n }, 0);\n }\n};\n","/**\n * Javascript implementation of X.509 and related components (such as\n * Certification Signing Requests) of a Public Key Infrastructure.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The ASN.1 representation of an X.509v3 certificate is as follows\n * (see RFC 2459):\n *\n * Certificate ::= SEQUENCE {\n * tbsCertificate TBSCertificate,\n * signatureAlgorithm AlgorithmIdentifier,\n * signatureValue BIT STRING\n * }\n *\n * TBSCertificate ::= SEQUENCE {\n * version [0] EXPLICIT Version DEFAULT v1,\n * serialNumber CertificateSerialNumber,\n * signature AlgorithmIdentifier,\n * issuer Name,\n * validity Validity,\n * subject Name,\n * subjectPublicKeyInfo SubjectPublicKeyInfo,\n * issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * extensions [3] EXPLICIT Extensions OPTIONAL\n * -- If present, version shall be v3\n * }\n *\n * Version ::= INTEGER { v1(0), v2(1), v3(2) }\n *\n * CertificateSerialNumber ::= INTEGER\n *\n * Name ::= CHOICE {\n * // only one possible choice for now\n * RDNSequence\n * }\n *\n * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName\n *\n * RelativeDistinguishedName ::= SET OF AttributeTypeAndValue\n *\n * AttributeTypeAndValue ::= SEQUENCE {\n * type AttributeType,\n * value AttributeValue\n * }\n * AttributeType ::= OBJECT IDENTIFIER\n * AttributeValue ::= ANY DEFINED BY AttributeType\n *\n * Validity ::= SEQUENCE {\n * notBefore Time,\n * notAfter Time\n * }\n *\n * Time ::= CHOICE {\n * utcTime UTCTime,\n * generalTime GeneralizedTime\n * }\n *\n * UniqueIdentifier ::= BIT STRING\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension\n *\n * Extension ::= SEQUENCE {\n * extnID OBJECT IDENTIFIER,\n * critical BOOLEAN DEFAULT FALSE,\n * extnValue OCTET STRING\n * }\n *\n * The only key algorithm currently supported for PKI is RSA.\n *\n * RSASSA-PSS signatures are described in RFC 3447 and RFC 4055.\n *\n * PKCS#10 v1.7 describes certificate signing requests:\n *\n * CertificationRequestInfo:\n *\n * CertificationRequestInfo ::= SEQUENCE {\n * version INTEGER { v1(0) } (v1,...),\n * subject Name,\n * subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},\n * attributes [0] Attributes{{ CRIAttributes }}\n * }\n *\n * Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }}\n *\n * CRIAttributes ATTRIBUTE ::= {\n * ... -- add any locally defined attributes here -- }\n *\n * Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {\n * type ATTRIBUTE.&id({IOSet}),\n * values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})\n * }\n *\n * CertificationRequest ::= SEQUENCE {\n * certificationRequestInfo CertificationRequestInfo,\n * signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},\n * signature BIT STRING\n * }\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./mgf');\nrequire('./oids');\nrequire('./pem');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\nvar oids = pki.oids;\n\n// short name OID mappings\nvar _shortNames = {};\n_shortNames['CN'] = oids['commonName'];\n_shortNames['commonName'] = 'CN';\n_shortNames['C'] = oids['countryName'];\n_shortNames['countryName'] = 'C';\n_shortNames['L'] = oids['localityName'];\n_shortNames['localityName'] = 'L';\n_shortNames['ST'] = oids['stateOrProvinceName'];\n_shortNames['stateOrProvinceName'] = 'ST';\n_shortNames['O'] = oids['organizationName'];\n_shortNames['organizationName'] = 'O';\n_shortNames['OU'] = oids['organizationalUnitName'];\n_shortNames['organizationalUnitName'] = 'OU';\n_shortNames['E'] = oids['emailAddress'];\n_shortNames['emailAddress'] = 'E';\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator;\n\n// validator for an X.509v3 certificate\nvar x509CertificateValidator = {\n name: 'Certificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Certificate.TBSCertificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'tbsCertificate',\n value: [{\n name: 'Certificate.TBSCertificate.version',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.version.integer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certVersion'\n }]\n }, {\n name: 'Certificate.TBSCertificate.serialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certSerialNumber'\n }, {\n name: 'Certificate.TBSCertificate.signature',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Certificate.TBSCertificate.signature.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certinfoSignatureOid'\n }, {\n name: 'Certificate.TBSCertificate.signature.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'certinfoSignatureParams'\n }]\n }, {\n name: 'Certificate.TBSCertificate.issuer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certIssuer'\n }, {\n name: 'Certificate.TBSCertificate.validity',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n // Note: UTC and generalized times may both appear so the capture\n // names are based on their detected order, the names used below\n // are only for the common case, which validity time really means\n // \"notBefore\" and which means \"notAfter\" will be determined by order\n value: [{\n // notBefore (Time) (UTC time case)\n name: 'Certificate.TBSCertificate.validity.notBefore (utc)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.UTCTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity1UTCTime'\n }, {\n // notBefore (Time) (generalized time case)\n name: 'Certificate.TBSCertificate.validity.notBefore (generalized)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.GENERALIZEDTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity2GeneralizedTime'\n }, {\n // notAfter (Time) (only UTC time is supported)\n name: 'Certificate.TBSCertificate.validity.notAfter (utc)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.UTCTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity3UTCTime'\n }, {\n // notAfter (Time) (only UTC time is supported)\n name: 'Certificate.TBSCertificate.validity.notAfter (generalized)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.GENERALIZEDTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity4GeneralizedTime'\n }]\n }, {\n // Name (subject) (RDNSequence)\n name: 'Certificate.TBSCertificate.subject',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certSubject'\n },\n // SubjectPublicKeyInfo\n publicKeyValidator,\n {\n // issuerUniqueID (optional)\n name: 'Certificate.TBSCertificate.issuerUniqueID',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.issuerUniqueID.id',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n // TODO: support arbitrary bit length ids\n captureBitStringValue: 'certIssuerUniqueId'\n }]\n }, {\n // subjectUniqueID (optional)\n name: 'Certificate.TBSCertificate.subjectUniqueID',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 2,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.subjectUniqueID.id',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n // TODO: support arbitrary bit length ids\n captureBitStringValue: 'certSubjectUniqueId'\n }]\n }, {\n // Extensions (optional)\n name: 'Certificate.TBSCertificate.extensions',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 3,\n constructed: true,\n captureAsn1: 'certExtensions',\n optional: true\n }]\n }, {\n // AlgorithmIdentifier (signature algorithm)\n name: 'Certificate.signatureAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // algorithm\n name: 'Certificate.signatureAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certSignatureOid'\n }, {\n name: 'Certificate.TBSCertificate.signature.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'certSignatureParams'\n }]\n }, {\n // SignatureValue\n name: 'Certificate.signatureValue',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n captureBitStringValue: 'certSignature'\n }]\n};\n\nvar rsassaPssParameterValidator = {\n name: 'rsapss',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'rsapss.hashAlgorithm',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n value: [{\n name: 'rsapss.hashAlgorithm.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'hashOid'\n /* parameter block omitted, for SHA1 NULL anyhow. */\n }]\n }]\n }, {\n name: 'rsapss.maskGenAlgorithm',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'maskGenOid'\n }, {\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'maskGenHashOid'\n /* parameter block omitted, for SHA1 NULL anyhow. */\n }]\n }]\n }]\n }, {\n name: 'rsapss.saltLength',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 2,\n optional: true,\n value: [{\n name: 'rsapss.saltLength.saltLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.INTEGER,\n constructed: false,\n capture: 'saltLength'\n }]\n }, {\n name: 'rsapss.trailerField',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 3,\n optional: true,\n value: [{\n name: 'rsapss.trailer.trailer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.INTEGER,\n constructed: false,\n capture: 'trailer'\n }]\n }]\n};\n\n// validator for a CertificationRequestInfo structure\nvar certificationRequestInfoValidator = {\n name: 'CertificationRequestInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certificationRequestInfo',\n value: [{\n name: 'CertificationRequestInfo.integer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certificationRequestInfoVersion'\n }, {\n // Name (subject) (RDNSequence)\n name: 'CertificationRequestInfo.subject',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certificationRequestInfoSubject'\n },\n // SubjectPublicKeyInfo\n publicKeyValidator,\n {\n name: 'CertificationRequestInfo.attributes',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n capture: 'certificationRequestInfoAttributes',\n value: [{\n name: 'CertificationRequestInfo.attributes',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'CertificationRequestInfo.attributes.type',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false\n }, {\n name: 'CertificationRequestInfo.attributes.value',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true\n }]\n }]\n }]\n};\n\n// validator for a CertificationRequest structure\nvar certificationRequestValidator = {\n name: 'CertificationRequest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'csr',\n value: [\n certificationRequestInfoValidator, {\n // AlgorithmIdentifier (signature algorithm)\n name: 'CertificationRequest.signatureAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // algorithm\n name: 'CertificationRequest.signatureAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'csrSignatureOid'\n }, {\n name: 'CertificationRequest.signatureAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'csrSignatureParams'\n }]\n }, {\n // signature\n name: 'CertificationRequest.signature',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n captureBitStringValue: 'csrSignature'\n }\n ]\n};\n\n/**\n * Converts an RDNSequence of ASN.1 DER-encoded RelativeDistinguishedName\n * sets into an array with objects that have type and value properties.\n *\n * @param rdn the RDNSequence to convert.\n * @param md a message digest to append type and value to if provided.\n */\npki.RDNAttributesAsArray = function(rdn, md) {\n var rval = [];\n\n // each value in 'rdn' in is a SET of RelativeDistinguishedName\n var set, attr, obj;\n for(var si = 0; si < rdn.value.length; ++si) {\n // get the RelativeDistinguishedName set\n set = rdn.value[si];\n\n // each value in the SET is an AttributeTypeAndValue sequence\n // containing first a type (an OID) and second a value (defined by\n // the OID)\n for(var i = 0; i < set.value.length; ++i) {\n obj = {};\n attr = set.value[i];\n obj.type = asn1.derToOid(attr.value[0].value);\n obj.value = attr.value[1].value;\n obj.valueTagClass = attr.value[1].type;\n // if the OID is known, get its name and short name\n if(obj.type in oids) {\n obj.name = oids[obj.type];\n if(obj.name in _shortNames) {\n obj.shortName = _shortNames[obj.name];\n }\n }\n if(md) {\n md.update(obj.type);\n md.update(obj.value);\n }\n rval.push(obj);\n }\n }\n\n return rval;\n};\n\n/**\n * Converts ASN.1 CRIAttributes into an array with objects that have type and\n * value properties.\n *\n * @param attributes the CRIAttributes to convert.\n */\npki.CRIAttributesAsArray = function(attributes) {\n var rval = [];\n\n // each value in 'attributes' in is a SEQUENCE with an OID and a SET\n for(var si = 0; si < attributes.length; ++si) {\n // get the attribute sequence\n var seq = attributes[si];\n\n // each value in the SEQUENCE containing first a type (an OID) and\n // second a set of values (defined by the OID)\n var type = asn1.derToOid(seq.value[0].value);\n var values = seq.value[1].value;\n for(var vi = 0; vi < values.length; ++vi) {\n var obj = {};\n obj.type = type;\n obj.value = values[vi].value;\n obj.valueTagClass = values[vi].type;\n // if the OID is known, get its name and short name\n if(obj.type in oids) {\n obj.name = oids[obj.type];\n if(obj.name in _shortNames) {\n obj.shortName = _shortNames[obj.name];\n }\n }\n // parse extensions\n if(obj.type === oids.extensionRequest) {\n obj.extensions = [];\n for(var ei = 0; ei < obj.value.length; ++ei) {\n obj.extensions.push(pki.certificateExtensionFromAsn1(obj.value[ei]));\n }\n }\n rval.push(obj);\n }\n }\n\n return rval;\n};\n\n/**\n * Gets an issuer or subject attribute from its name, type, or short name.\n *\n * @param obj the issuer or subject object.\n * @param options a short name string or an object with:\n * shortName the short name for the attribute.\n * name the name for the attribute.\n * type the type for the attribute.\n *\n * @return the attribute.\n */\nfunction _getAttribute(obj, options) {\n if(typeof options === 'string') {\n options = {shortName: options};\n }\n\n var rval = null;\n var attr;\n for(var i = 0; rval === null && i < obj.attributes.length; ++i) {\n attr = obj.attributes[i];\n if(options.type && options.type === attr.type) {\n rval = attr;\n } else if(options.name && options.name === attr.name) {\n rval = attr;\n } else if(options.shortName && options.shortName === attr.shortName) {\n rval = attr;\n }\n }\n return rval;\n}\n\n/**\n * Converts signature parameters from ASN.1 structure.\n *\n * Currently only RSASSA-PSS supported. The PKCS#1 v1.5 signature scheme had\n * no parameters.\n *\n * RSASSA-PSS-params ::= SEQUENCE {\n * hashAlgorithm [0] HashAlgorithm DEFAULT\n * sha1Identifier,\n * maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT\n * mgf1SHA1Identifier,\n * saltLength [2] INTEGER DEFAULT 20,\n * trailerField [3] INTEGER DEFAULT 1\n * }\n *\n * HashAlgorithm ::= AlgorithmIdentifier\n *\n * MaskGenAlgorithm ::= AlgorithmIdentifier\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * @param oid The OID specifying the signature algorithm\n * @param obj The ASN.1 structure holding the parameters\n * @param fillDefaults Whether to use return default values where omitted\n * @return signature parameter object\n */\nvar _readSignatureParameters = function(oid, obj, fillDefaults) {\n var params = {};\n\n if(oid !== oids['RSASSA-PSS']) {\n return params;\n }\n\n if(fillDefaults) {\n params = {\n hash: {\n algorithmOid: oids['sha1']\n },\n mgf: {\n algorithmOid: oids['mgf1'],\n hash: {\n algorithmOid: oids['sha1']\n }\n },\n saltLength: 20\n };\n }\n\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, rsassaPssParameterValidator, capture, errors)) {\n var error = new Error('Cannot read RSASSA-PSS parameter block.');\n error.errors = errors;\n throw error;\n }\n\n if(capture.hashOid !== undefined) {\n params.hash = params.hash || {};\n params.hash.algorithmOid = asn1.derToOid(capture.hashOid);\n }\n\n if(capture.maskGenOid !== undefined) {\n params.mgf = params.mgf || {};\n params.mgf.algorithmOid = asn1.derToOid(capture.maskGenOid);\n params.mgf.hash = params.mgf.hash || {};\n params.mgf.hash.algorithmOid = asn1.derToOid(capture.maskGenHashOid);\n }\n\n if(capture.saltLength !== undefined) {\n params.saltLength = capture.saltLength.charCodeAt(0);\n }\n\n return params;\n};\n\n/**\n * Create signature digest for OID.\n *\n * @param options\n * signatureOid: the OID specifying the signature algorithm.\n * type: a human readable type for error messages\n * @return a created md instance. throws if unknown oid.\n */\nvar _createSignatureDigest = function(options) {\n switch(oids[options.signatureOid]) {\n case 'sha1WithRSAEncryption':\n // deprecated alias\n case 'sha1WithRSASignature':\n return forge.md.sha1.create();\n case 'md5WithRSAEncryption':\n return forge.md.md5.create();\n case 'sha256WithRSAEncryption':\n return forge.md.sha256.create();\n case 'sha384WithRSAEncryption':\n return forge.md.sha384.create();\n case 'sha512WithRSAEncryption':\n return forge.md.sha512.create();\n case 'RSASSA-PSS':\n return forge.md.sha256.create();\n default:\n var error = new Error(\n 'Could not compute ' + options.type + ' digest. ' +\n 'Unknown signature OID.');\n error.signatureOid = options.signatureOid;\n throw error;\n }\n};\n\n/**\n * Verify signature on certificate or CSR.\n *\n * @param options:\n * certificate the certificate or CSR to verify.\n * md the signature digest.\n * signature the signature\n * @return a created md instance. throws if unknown oid.\n */\nvar _verifySignature = function(options) {\n var cert = options.certificate;\n var scheme;\n\n switch(cert.signatureOid) {\n case oids.sha1WithRSAEncryption:\n // deprecated alias\n case oids.sha1WithRSASignature:\n /* use PKCS#1 v1.5 padding scheme */\n break;\n case oids['RSASSA-PSS']:\n var hash, mgf;\n\n /* initialize mgf */\n hash = oids[cert.signatureParameters.mgf.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n var error = new Error('Unsupported MGF hash function.');\n error.oid = cert.signatureParameters.mgf.hash.algorithmOid;\n error.name = hash;\n throw error;\n }\n\n mgf = oids[cert.signatureParameters.mgf.algorithmOid];\n if(mgf === undefined || forge.mgf[mgf] === undefined) {\n var error = new Error('Unsupported MGF function.');\n error.oid = cert.signatureParameters.mgf.algorithmOid;\n error.name = mgf;\n throw error;\n }\n\n mgf = forge.mgf[mgf].create(forge.md[hash].create());\n\n /* initialize hash function */\n hash = oids[cert.signatureParameters.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n var error = new Error('Unsupported RSASSA-PSS hash function.');\n error.oid = cert.signatureParameters.hash.algorithmOid;\n error.name = hash;\n throw error;\n }\n\n scheme = forge.pss.create(\n forge.md[hash].create(), mgf, cert.signatureParameters.saltLength\n );\n break;\n }\n\n // verify signature on cert using public key\n return cert.publicKey.verify(\n options.md.digest().getBytes(), options.signature, scheme\n );\n};\n\n/**\n * Converts an X.509 certificate from PEM format.\n *\n * Note: If the certificate is to be verified then compute hash should\n * be set to true. This will scan the TBSCertificate part of the ASN.1\n * object while it is converted so it doesn't need to be converted back\n * to ASN.1-DER-encoding later.\n *\n * @param pem the PEM-formatted certificate.\n * @param computeHash true to compute the hash for verification.\n * @param strict true to be strict when checking ASN.1 value lengths, false to\n * allow truncated values (default: true).\n *\n * @return the certificate.\n */\npki.certificateFromPem = function(pem, computeHash, strict) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'CERTIFICATE' &&\n msg.type !== 'X509 CERTIFICATE' &&\n msg.type !== 'TRUSTED CERTIFICATE') {\n var error = new Error(\n 'Could not convert certificate from PEM; PEM header type ' +\n 'is not \"CERTIFICATE\", \"X509 CERTIFICATE\", or \"TRUSTED CERTIFICATE\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error(\n 'Could not convert certificate from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body, strict);\n\n return pki.certificateFromAsn1(obj, computeHash);\n};\n\n/**\n * Converts an X.509 certificate to PEM format.\n *\n * @param cert the certificate.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted certificate.\n */\npki.certificateToPem = function(cert, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'CERTIFICATE',\n body: asn1.toDer(pki.certificateToAsn1(cert)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts an RSA public key from PEM format.\n *\n * @param pem the PEM-formatted public key.\n *\n * @return the public key.\n */\npki.publicKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PUBLIC KEY' && msg.type !== 'RSA PUBLIC KEY') {\n var error = new Error('Could not convert public key from PEM; PEM header ' +\n 'type is not \"PUBLIC KEY\" or \"RSA PUBLIC KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert public key from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return pki.publicKeyFromAsn1(obj);\n};\n\n/**\n * Converts an RSA public key to PEM format (using a SubjectPublicKeyInfo).\n *\n * @param key the public key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted public key.\n */\npki.publicKeyToPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'PUBLIC KEY',\n body: asn1.toDer(pki.publicKeyToAsn1(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts an RSA public key to PEM format (using an RSAPublicKey).\n *\n * @param key the public key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted public key.\n */\npki.publicKeyToRSAPublicKeyPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'RSA PUBLIC KEY',\n body: asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Gets a fingerprint for the given public key.\n *\n * @param options the options to use.\n * [md] the message digest object to use (defaults to forge.md.sha1).\n * [type] the type of fingerprint, such as 'RSAPublicKey',\n * 'SubjectPublicKeyInfo' (defaults to 'RSAPublicKey').\n * [encoding] an alternative output encoding, such as 'hex'\n * (defaults to none, outputs a byte buffer).\n * [delimiter] the delimiter to use between bytes for 'hex' encoded\n * output, eg: ':' (defaults to none).\n *\n * @return the fingerprint as a byte buffer or other encoding based on options.\n */\npki.getPublicKeyFingerprint = function(key, options) {\n options = options || {};\n var md = options.md || forge.md.sha1.create();\n var type = options.type || 'RSAPublicKey';\n\n var bytes;\n switch(type) {\n case 'RSAPublicKey':\n bytes = asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes();\n break;\n case 'SubjectPublicKeyInfo':\n bytes = asn1.toDer(pki.publicKeyToAsn1(key)).getBytes();\n break;\n default:\n throw new Error('Unknown fingerprint type \"' + options.type + '\".');\n }\n\n // hash public key bytes\n md.start();\n md.update(bytes);\n var digest = md.digest();\n if(options.encoding === 'hex') {\n var hex = digest.toHex();\n if(options.delimiter) {\n return hex.match(/.{2}/g).join(options.delimiter);\n }\n return hex;\n } else if(options.encoding === 'binary') {\n return digest.getBytes();\n } else if(options.encoding) {\n throw new Error('Unknown encoding \"' + options.encoding + '\".');\n }\n return digest;\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) from PEM format.\n *\n * Note: If the certification request is to be verified then compute hash\n * should be set to true. This will scan the CertificationRequestInfo part of\n * the ASN.1 object while it is converted so it doesn't need to be converted\n * back to ASN.1-DER-encoding later.\n *\n * @param pem the PEM-formatted certificate.\n * @param computeHash true to compute the hash for verification.\n * @param strict true to be strict when checking ASN.1 value lengths, false to\n * allow truncated values (default: true).\n *\n * @return the certification request (CSR).\n */\npki.certificationRequestFromPem = function(pem, computeHash, strict) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'CERTIFICATE REQUEST') {\n var error = new Error('Could not convert certification request from PEM; ' +\n 'PEM header type is not \"CERTIFICATE REQUEST\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert certification request from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body, strict);\n\n return pki.certificationRequestFromAsn1(obj, computeHash);\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) to PEM format.\n *\n * @param csr the certification request.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted certification request.\n */\npki.certificationRequestToPem = function(csr, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'CERTIFICATE REQUEST',\n body: asn1.toDer(pki.certificationRequestToAsn1(csr)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Creates an empty X.509v3 RSA certificate.\n *\n * @return the certificate.\n */\npki.createCertificate = function() {\n var cert = {};\n cert.version = 0x02;\n cert.serialNumber = '00';\n cert.signatureOid = null;\n cert.signature = null;\n cert.siginfo = {};\n cert.siginfo.algorithmOid = null;\n cert.validity = {};\n cert.validity.notBefore = new Date();\n cert.validity.notAfter = new Date();\n\n cert.issuer = {};\n cert.issuer.getField = function(sn) {\n return _getAttribute(cert.issuer, sn);\n };\n cert.issuer.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.issuer.attributes.push(attr);\n };\n cert.issuer.attributes = [];\n cert.issuer.hash = null;\n\n cert.subject = {};\n cert.subject.getField = function(sn) {\n return _getAttribute(cert.subject, sn);\n };\n cert.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.subject.attributes.push(attr);\n };\n cert.subject.attributes = [];\n cert.subject.hash = null;\n\n cert.extensions = [];\n cert.publicKey = null;\n cert.md = null;\n\n /**\n * Sets the subject of this certificate.\n *\n * @param attrs the array of subject attributes to use.\n * @param uniqueId an optional a unique ID to use.\n */\n cert.setSubject = function(attrs, uniqueId) {\n // set new attributes, clear hash\n _fillMissingFields(attrs);\n cert.subject.attributes = attrs;\n delete cert.subject.uniqueId;\n if(uniqueId) {\n // TODO: support arbitrary bit length ids\n cert.subject.uniqueId = uniqueId;\n }\n cert.subject.hash = null;\n };\n\n /**\n * Sets the issuer of this certificate.\n *\n * @param attrs the array of issuer attributes to use.\n * @param uniqueId an optional a unique ID to use.\n */\n cert.setIssuer = function(attrs, uniqueId) {\n // set new attributes, clear hash\n _fillMissingFields(attrs);\n cert.issuer.attributes = attrs;\n delete cert.issuer.uniqueId;\n if(uniqueId) {\n // TODO: support arbitrary bit length ids\n cert.issuer.uniqueId = uniqueId;\n }\n cert.issuer.hash = null;\n };\n\n /**\n * Sets the extensions of this certificate.\n *\n * @param exts the array of extensions to use.\n */\n cert.setExtensions = function(exts) {\n for(var i = 0; i < exts.length; ++i) {\n _fillMissingExtensionFields(exts[i], {cert: cert});\n }\n // set new extensions\n cert.extensions = exts;\n };\n\n /**\n * Gets an extension by its name or id.\n *\n * @param options the name to use or an object with:\n * name the name to use.\n * id the id to use.\n *\n * @return the extension or null if not found.\n */\n cert.getExtension = function(options) {\n if(typeof options === 'string') {\n options = {name: options};\n }\n\n var rval = null;\n var ext;\n for(var i = 0; rval === null && i < cert.extensions.length; ++i) {\n ext = cert.extensions[i];\n if(options.id && ext.id === options.id) {\n rval = ext;\n } else if(options.name && ext.name === options.name) {\n rval = ext;\n }\n }\n return rval;\n };\n\n /**\n * Signs this certificate using the given private key.\n *\n * @param key the private key to sign with.\n * @param md the message digest object to use (defaults to forge.md.sha1).\n */\n cert.sign = function(key, md) {\n // TODO: get signature OID from private key\n cert.md = md || forge.md.sha1.create();\n var algorithmOid = oids[cert.md.algorithm + 'WithRSAEncryption'];\n if(!algorithmOid) {\n var error = new Error('Could not compute certificate digest. ' +\n 'Unknown message digest algorithm OID.');\n error.algorithm = cert.md.algorithm;\n throw error;\n }\n cert.signatureOid = cert.siginfo.algorithmOid = algorithmOid;\n\n // get TBSCertificate, convert to DER\n cert.tbsCertificate = pki.getTBSCertificate(cert);\n var bytes = asn1.toDer(cert.tbsCertificate);\n\n // digest and sign\n cert.md.update(bytes.getBytes());\n cert.signature = key.sign(cert.md);\n };\n\n /**\n * Attempts verify the signature on the passed certificate using this\n * certificate's public key.\n *\n * @param child the certificate to verify.\n *\n * @return true if verified, false if not.\n */\n cert.verify = function(child) {\n var rval = false;\n\n if(!cert.issued(child)) {\n var issuer = child.issuer;\n var subject = cert.subject;\n var error = new Error(\n 'The parent certificate did not issue the given child ' +\n 'certificate; the child certificate\\'s issuer does not match the ' +\n 'parent\\'s subject.');\n error.expectedIssuer = subject.attributes;\n error.actualIssuer = issuer.attributes;\n throw error;\n }\n\n var md = child.md;\n if(md === null) {\n // create digest for OID signature types\n md = _createSignatureDigest({\n signatureOid: child.signatureOid,\n type: 'certificate'\n });\n\n // produce DER formatted TBSCertificate and digest it\n var tbsCertificate = child.tbsCertificate || pki.getTBSCertificate(child);\n var bytes = asn1.toDer(tbsCertificate);\n md.update(bytes.getBytes());\n }\n\n if(md !== null) {\n rval = _verifySignature({\n certificate: cert, md: md, signature: child.signature\n });\n }\n\n return rval;\n };\n\n /**\n * Returns true if this certificate's issuer matches the passed\n * certificate's subject. Note that no signature check is performed.\n *\n * @param parent the certificate to check.\n *\n * @return true if this certificate's issuer matches the passed certificate's\n * subject.\n */\n cert.isIssuer = function(parent) {\n var rval = false;\n\n var i = cert.issuer;\n var s = parent.subject;\n\n // compare hashes if present\n if(i.hash && s.hash) {\n rval = (i.hash === s.hash);\n } else if(i.attributes.length === s.attributes.length) {\n // all attributes are the same so issuer matches subject\n rval = true;\n var iattr, sattr;\n for(var n = 0; rval && n < i.attributes.length; ++n) {\n iattr = i.attributes[n];\n sattr = s.attributes[n];\n if(iattr.type !== sattr.type || iattr.value !== sattr.value) {\n // attribute mismatch\n rval = false;\n }\n }\n }\n\n return rval;\n };\n\n /**\n * Returns true if this certificate's subject matches the issuer of the\n * given certificate). Note that not signature check is performed.\n *\n * @param child the certificate to check.\n *\n * @return true if this certificate's subject matches the passed\n * certificate's issuer.\n */\n cert.issued = function(child) {\n return child.isIssuer(cert);\n };\n\n /**\n * Generates the subjectKeyIdentifier for this certificate as byte buffer.\n *\n * @return the subjectKeyIdentifier for this certificate as byte buffer.\n */\n cert.generateSubjectKeyIdentifier = function() {\n /* See: 4.2.1.2 section of the the RFC3280, keyIdentifier is either:\n\n (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the\n value of the BIT STRING subjectPublicKey (excluding the tag,\n length, and number of unused bits).\n\n (2) The keyIdentifier is composed of a four bit type field with\n the value 0100 followed by the least significant 60 bits of the\n SHA-1 hash of the value of the BIT STRING subjectPublicKey\n (excluding the tag, length, and number of unused bit string bits).\n */\n\n // skipping the tag, length, and number of unused bits is the same\n // as just using the RSAPublicKey (for RSA keys, which are the\n // only ones supported)\n return pki.getPublicKeyFingerprint(cert.publicKey, {type: 'RSAPublicKey'});\n };\n\n /**\n * Verifies the subjectKeyIdentifier extension value for this certificate\n * against its public key. If no extension is found, false will be\n * returned.\n *\n * @return true if verified, false if not.\n */\n cert.verifySubjectKeyIdentifier = function() {\n var oid = oids['subjectKeyIdentifier'];\n for(var i = 0; i < cert.extensions.length; ++i) {\n var ext = cert.extensions[i];\n if(ext.id === oid) {\n var ski = cert.generateSubjectKeyIdentifier().getBytes();\n return (forge.util.hexToBytes(ext.subjectKeyIdentifier) === ski);\n }\n }\n return false;\n };\n\n return cert;\n};\n\n/**\n * Converts an X.509v3 RSA certificate from an ASN.1 object.\n *\n * Note: If the certificate is to be verified then compute hash should\n * be set to true. There is currently no implementation for converting\n * a certificate back to ASN.1 so the TBSCertificate part of the ASN.1\n * object needs to be scanned before the cert object is created.\n *\n * @param obj the asn1 representation of an X.509v3 RSA certificate.\n * @param computeHash true to compute the hash for verification.\n *\n * @return the certificate.\n */\npki.certificateFromAsn1 = function(obj, computeHash) {\n // validate certificate and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, x509CertificateValidator, capture, errors)) {\n var error = new Error('Cannot read X.509 certificate. ' +\n 'ASN.1 object is not an X509v3 Certificate.');\n error.errors = errors;\n throw error;\n }\n\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n throw new Error('Cannot read public key. OID is not RSA.');\n }\n\n // create certificate\n var cert = pki.createCertificate();\n cert.version = capture.certVersion ?\n capture.certVersion.charCodeAt(0) : 0;\n var serial = forge.util.createBuffer(capture.certSerialNumber);\n cert.serialNumber = serial.toHex();\n cert.signatureOid = forge.asn1.derToOid(capture.certSignatureOid);\n cert.signatureParameters = _readSignatureParameters(\n cert.signatureOid, capture.certSignatureParams, true);\n cert.siginfo.algorithmOid = forge.asn1.derToOid(capture.certinfoSignatureOid);\n cert.siginfo.parameters = _readSignatureParameters(cert.siginfo.algorithmOid,\n capture.certinfoSignatureParams, false);\n cert.signature = capture.certSignature;\n\n var validity = [];\n if(capture.certValidity1UTCTime !== undefined) {\n validity.push(asn1.utcTimeToDate(capture.certValidity1UTCTime));\n }\n if(capture.certValidity2GeneralizedTime !== undefined) {\n validity.push(asn1.generalizedTimeToDate(\n capture.certValidity2GeneralizedTime));\n }\n if(capture.certValidity3UTCTime !== undefined) {\n validity.push(asn1.utcTimeToDate(capture.certValidity3UTCTime));\n }\n if(capture.certValidity4GeneralizedTime !== undefined) {\n validity.push(asn1.generalizedTimeToDate(\n capture.certValidity4GeneralizedTime));\n }\n if(validity.length > 2) {\n throw new Error('Cannot read notBefore/notAfter validity times; more ' +\n 'than two times were provided in the certificate.');\n }\n if(validity.length < 2) {\n throw new Error('Cannot read notBefore/notAfter validity times; they ' +\n 'were not provided as either UTCTime or GeneralizedTime.');\n }\n cert.validity.notBefore = validity[0];\n cert.validity.notAfter = validity[1];\n\n // keep TBSCertificate to preserve signature when exporting\n cert.tbsCertificate = capture.tbsCertificate;\n\n if(computeHash) {\n // create digest for OID signature type\n cert.md = _createSignatureDigest({\n signatureOid: cert.signatureOid,\n type: 'certificate'\n });\n\n // produce DER formatted TBSCertificate and digest it\n var bytes = asn1.toDer(cert.tbsCertificate);\n cert.md.update(bytes.getBytes());\n }\n\n // handle issuer, build issuer message digest\n var imd = forge.md.sha1.create();\n var ibytes = asn1.toDer(capture.certIssuer);\n imd.update(ibytes.getBytes());\n cert.issuer.getField = function(sn) {\n return _getAttribute(cert.issuer, sn);\n };\n cert.issuer.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.issuer.attributes.push(attr);\n };\n cert.issuer.attributes = pki.RDNAttributesAsArray(capture.certIssuer);\n if(capture.certIssuerUniqueId) {\n cert.issuer.uniqueId = capture.certIssuerUniqueId;\n }\n cert.issuer.hash = imd.digest().toHex();\n\n // handle subject, build subject message digest\n var smd = forge.md.sha1.create();\n var sbytes = asn1.toDer(capture.certSubject);\n smd.update(sbytes.getBytes());\n cert.subject.getField = function(sn) {\n return _getAttribute(cert.subject, sn);\n };\n cert.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.subject.attributes.push(attr);\n };\n cert.subject.attributes = pki.RDNAttributesAsArray(capture.certSubject);\n if(capture.certSubjectUniqueId) {\n cert.subject.uniqueId = capture.certSubjectUniqueId;\n }\n cert.subject.hash = smd.digest().toHex();\n\n // handle extensions\n if(capture.certExtensions) {\n cert.extensions = pki.certificateExtensionsFromAsn1(capture.certExtensions);\n } else {\n cert.extensions = [];\n }\n\n // convert RSA public key from ASN.1\n cert.publicKey = pki.publicKeyFromAsn1(capture.subjectPublicKeyInfo);\n\n return cert;\n};\n\n/**\n * Converts an ASN.1 extensions object (with extension sequences as its\n * values) into an array of extension objects with types and values.\n *\n * Supported extensions:\n *\n * id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }\n * KeyUsage ::= BIT STRING {\n * digitalSignature (0),\n * nonRepudiation (1),\n * keyEncipherment (2),\n * dataEncipherment (3),\n * keyAgreement (4),\n * keyCertSign (5),\n * cRLSign (6),\n * encipherOnly (7),\n * decipherOnly (8)\n * }\n *\n * id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 }\n * BasicConstraints ::= SEQUENCE {\n * cA BOOLEAN DEFAULT FALSE,\n * pathLenConstraint INTEGER (0..MAX) OPTIONAL\n * }\n *\n * subjectAltName EXTENSION ::= {\n * SYNTAX GeneralNames\n * IDENTIFIED BY id-ce-subjectAltName\n * }\n *\n * GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName\n *\n * GeneralName ::= CHOICE {\n * otherName [0] INSTANCE OF OTHER-NAME,\n * rfc822Name [1] IA5String,\n * dNSName [2] IA5String,\n * x400Address [3] ORAddress,\n * directoryName [4] Name,\n * ediPartyName [5] EDIPartyName,\n * uniformResourceIdentifier [6] IA5String,\n * IPAddress [7] OCTET STRING,\n * registeredID [8] OBJECT IDENTIFIER\n * }\n *\n * OTHER-NAME ::= TYPE-IDENTIFIER\n *\n * EDIPartyName ::= SEQUENCE {\n * nameAssigner [0] DirectoryString {ub-name} OPTIONAL,\n * partyName [1] DirectoryString {ub-name}\n * }\n *\n * @param exts the extensions ASN.1 with extension sequences to parse.\n *\n * @return the array.\n */\npki.certificateExtensionsFromAsn1 = function(exts) {\n var rval = [];\n for(var i = 0; i < exts.value.length; ++i) {\n // get extension sequence\n var extseq = exts.value[i];\n for(var ei = 0; ei < extseq.value.length; ++ei) {\n rval.push(pki.certificateExtensionFromAsn1(extseq.value[ei]));\n }\n }\n\n return rval;\n};\n\n/**\n * Parses a single certificate extension from ASN.1.\n *\n * @param ext the extension in ASN.1 format.\n *\n * @return the parsed extension as an object.\n */\npki.certificateExtensionFromAsn1 = function(ext) {\n // an extension has:\n // [0] extnID OBJECT IDENTIFIER\n // [1] critical BOOLEAN DEFAULT FALSE\n // [2] extnValue OCTET STRING\n var e = {};\n e.id = asn1.derToOid(ext.value[0].value);\n e.critical = false;\n if(ext.value[1].type === asn1.Type.BOOLEAN) {\n e.critical = (ext.value[1].value.charCodeAt(0) !== 0x00);\n e.value = ext.value[2].value;\n } else {\n e.value = ext.value[1].value;\n }\n // if the oid is known, get its name\n if(e.id in oids) {\n e.name = oids[e.id];\n\n // handle key usage\n if(e.name === 'keyUsage') {\n // get value as BIT STRING\n var ev = asn1.fromDer(e.value);\n var b2 = 0x00;\n var b3 = 0x00;\n if(ev.value.length > 1) {\n // skip first byte, just indicates unused bits which\n // will be padded with 0s anyway\n // get bytes with flag bits\n b2 = ev.value.charCodeAt(1);\n b3 = ev.value.length > 2 ? ev.value.charCodeAt(2) : 0;\n }\n // set flags\n e.digitalSignature = (b2 & 0x80) === 0x80;\n e.nonRepudiation = (b2 & 0x40) === 0x40;\n e.keyEncipherment = (b2 & 0x20) === 0x20;\n e.dataEncipherment = (b2 & 0x10) === 0x10;\n e.keyAgreement = (b2 & 0x08) === 0x08;\n e.keyCertSign = (b2 & 0x04) === 0x04;\n e.cRLSign = (b2 & 0x02) === 0x02;\n e.encipherOnly = (b2 & 0x01) === 0x01;\n e.decipherOnly = (b3 & 0x80) === 0x80;\n } else if(e.name === 'basicConstraints') {\n // handle basic constraints\n // get value as SEQUENCE\n var ev = asn1.fromDer(e.value);\n // get cA BOOLEAN flag (defaults to false)\n if(ev.value.length > 0 && ev.value[0].type === asn1.Type.BOOLEAN) {\n e.cA = (ev.value[0].value.charCodeAt(0) !== 0x00);\n } else {\n e.cA = false;\n }\n // get path length constraint\n var value = null;\n if(ev.value.length > 0 && ev.value[0].type === asn1.Type.INTEGER) {\n value = ev.value[0].value;\n } else if(ev.value.length > 1) {\n value = ev.value[1].value;\n }\n if(value !== null) {\n e.pathLenConstraint = asn1.derToInteger(value);\n }\n } else if(e.name === 'extKeyUsage') {\n // handle extKeyUsage\n // value is a SEQUENCE of OIDs\n var ev = asn1.fromDer(e.value);\n for(var vi = 0; vi < ev.value.length; ++vi) {\n var oid = asn1.derToOid(ev.value[vi].value);\n if(oid in oids) {\n e[oids[oid]] = true;\n } else {\n e[oid] = true;\n }\n }\n } else if(e.name === 'nsCertType') {\n // handle nsCertType\n // get value as BIT STRING\n var ev = asn1.fromDer(e.value);\n var b2 = 0x00;\n if(ev.value.length > 1) {\n // skip first byte, just indicates unused bits which\n // will be padded with 0s anyway\n // get bytes with flag bits\n b2 = ev.value.charCodeAt(1);\n }\n // set flags\n e.client = (b2 & 0x80) === 0x80;\n e.server = (b2 & 0x40) === 0x40;\n e.email = (b2 & 0x20) === 0x20;\n e.objsign = (b2 & 0x10) === 0x10;\n e.reserved = (b2 & 0x08) === 0x08;\n e.sslCA = (b2 & 0x04) === 0x04;\n e.emailCA = (b2 & 0x02) === 0x02;\n e.objCA = (b2 & 0x01) === 0x01;\n } else if(\n e.name === 'subjectAltName' ||\n e.name === 'issuerAltName') {\n // handle subjectAltName/issuerAltName\n e.altNames = [];\n\n // ev is a SYNTAX SEQUENCE\n var gn;\n var ev = asn1.fromDer(e.value);\n for(var n = 0; n < ev.value.length; ++n) {\n // get GeneralName\n gn = ev.value[n];\n\n var altName = {\n type: gn.type,\n value: gn.value\n };\n e.altNames.push(altName);\n\n // Note: Support for types 1,2,6,7,8\n switch(gn.type) {\n // rfc822Name\n case 1:\n // dNSName\n case 2:\n // uniformResourceIdentifier (URI)\n case 6:\n break;\n // IPAddress\n case 7:\n // convert to IPv4/IPv6 string representation\n altName.ip = forge.util.bytesToIP(gn.value);\n break;\n // registeredID\n case 8:\n altName.oid = asn1.derToOid(gn.value);\n break;\n default:\n // unsupported\n }\n }\n } else if(e.name === 'subjectKeyIdentifier') {\n // value is an OCTETSTRING w/the hash of the key-type specific\n // public key structure (eg: RSAPublicKey)\n var ev = asn1.fromDer(e.value);\n e.subjectKeyIdentifier = forge.util.bytesToHex(ev.value);\n }\n }\n return e;\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) from an ASN.1 object.\n *\n * Note: If the certification request is to be verified then compute hash\n * should be set to true. There is currently no implementation for converting\n * a certificate back to ASN.1 so the CertificationRequestInfo part of the\n * ASN.1 object needs to be scanned before the csr object is created.\n *\n * @param obj the asn1 representation of a PKCS#10 certification request (CSR).\n * @param computeHash true to compute the hash for verification.\n *\n * @return the certification request (CSR).\n */\npki.certificationRequestFromAsn1 = function(obj, computeHash) {\n // validate certification request and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, certificationRequestValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#10 certificate request. ' +\n 'ASN.1 object is not a PKCS#10 CertificationRequest.');\n error.errors = errors;\n throw error;\n }\n\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n throw new Error('Cannot read public key. OID is not RSA.');\n }\n\n // create certification request\n var csr = pki.createCertificationRequest();\n csr.version = capture.csrVersion ? capture.csrVersion.charCodeAt(0) : 0;\n csr.signatureOid = forge.asn1.derToOid(capture.csrSignatureOid);\n csr.signatureParameters = _readSignatureParameters(\n csr.signatureOid, capture.csrSignatureParams, true);\n csr.siginfo.algorithmOid = forge.asn1.derToOid(capture.csrSignatureOid);\n csr.siginfo.parameters = _readSignatureParameters(\n csr.siginfo.algorithmOid, capture.csrSignatureParams, false);\n csr.signature = capture.csrSignature;\n\n // keep CertificationRequestInfo to preserve signature when exporting\n csr.certificationRequestInfo = capture.certificationRequestInfo;\n\n if(computeHash) {\n // create digest for OID signature type\n csr.md = _createSignatureDigest({\n signatureOid: csr.signatureOid,\n type: 'certification request'\n });\n\n // produce DER formatted CertificationRequestInfo and digest it\n var bytes = asn1.toDer(csr.certificationRequestInfo);\n csr.md.update(bytes.getBytes());\n }\n\n // handle subject, build subject message digest\n var smd = forge.md.sha1.create();\n csr.subject.getField = function(sn) {\n return _getAttribute(csr.subject, sn);\n };\n csr.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n csr.subject.attributes.push(attr);\n };\n csr.subject.attributes = pki.RDNAttributesAsArray(\n capture.certificationRequestInfoSubject, smd);\n csr.subject.hash = smd.digest().toHex();\n\n // convert RSA public key from ASN.1\n csr.publicKey = pki.publicKeyFromAsn1(capture.subjectPublicKeyInfo);\n\n // convert attributes from ASN.1\n csr.getAttribute = function(sn) {\n return _getAttribute(csr, sn);\n };\n csr.addAttribute = function(attr) {\n _fillMissingFields([attr]);\n csr.attributes.push(attr);\n };\n csr.attributes = pki.CRIAttributesAsArray(\n capture.certificationRequestInfoAttributes || []);\n\n return csr;\n};\n\n/**\n * Creates an empty certification request (a CSR or certificate signing\n * request). Once created, its public key and attributes can be set and then\n * it can be signed.\n *\n * @return the empty certification request.\n */\npki.createCertificationRequest = function() {\n var csr = {};\n csr.version = 0x00;\n csr.signatureOid = null;\n csr.signature = null;\n csr.siginfo = {};\n csr.siginfo.algorithmOid = null;\n\n csr.subject = {};\n csr.subject.getField = function(sn) {\n return _getAttribute(csr.subject, sn);\n };\n csr.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n csr.subject.attributes.push(attr);\n };\n csr.subject.attributes = [];\n csr.subject.hash = null;\n\n csr.publicKey = null;\n csr.attributes = [];\n csr.getAttribute = function(sn) {\n return _getAttribute(csr, sn);\n };\n csr.addAttribute = function(attr) {\n _fillMissingFields([attr]);\n csr.attributes.push(attr);\n };\n csr.md = null;\n\n /**\n * Sets the subject of this certification request.\n *\n * @param attrs the array of subject attributes to use.\n */\n csr.setSubject = function(attrs) {\n // set new attributes\n _fillMissingFields(attrs);\n csr.subject.attributes = attrs;\n csr.subject.hash = null;\n };\n\n /**\n * Sets the attributes of this certification request.\n *\n * @param attrs the array of attributes to use.\n */\n csr.setAttributes = function(attrs) {\n // set new attributes\n _fillMissingFields(attrs);\n csr.attributes = attrs;\n };\n\n /**\n * Signs this certification request using the given private key.\n *\n * @param key the private key to sign with.\n * @param md the message digest object to use (defaults to forge.md.sha1).\n */\n csr.sign = function(key, md) {\n // TODO: get signature OID from private key\n csr.md = md || forge.md.sha1.create();\n var algorithmOid = oids[csr.md.algorithm + 'WithRSAEncryption'];\n if(!algorithmOid) {\n var error = new Error('Could not compute certification request digest. ' +\n 'Unknown message digest algorithm OID.');\n error.algorithm = csr.md.algorithm;\n throw error;\n }\n csr.signatureOid = csr.siginfo.algorithmOid = algorithmOid;\n\n // get CertificationRequestInfo, convert to DER\n csr.certificationRequestInfo = pki.getCertificationRequestInfo(csr);\n var bytes = asn1.toDer(csr.certificationRequestInfo);\n\n // digest and sign\n csr.md.update(bytes.getBytes());\n csr.signature = key.sign(csr.md);\n };\n\n /**\n * Attempts verify the signature on the passed certification request using\n * its public key.\n *\n * A CSR that has been exported to a file in PEM format can be verified using\n * OpenSSL using this command:\n *\n * openssl req -in -verify -noout -text\n *\n * @return true if verified, false if not.\n */\n csr.verify = function() {\n var rval = false;\n\n var md = csr.md;\n if(md === null) {\n md = _createSignatureDigest({\n signatureOid: csr.signatureOid,\n type: 'certification request'\n });\n\n // produce DER formatted CertificationRequestInfo and digest it\n var cri = csr.certificationRequestInfo ||\n pki.getCertificationRequestInfo(csr);\n var bytes = asn1.toDer(cri);\n md.update(bytes.getBytes());\n }\n\n if(md !== null) {\n rval = _verifySignature({\n certificate: csr, md: md, signature: csr.signature\n });\n }\n\n return rval;\n };\n\n return csr;\n};\n\n/**\n * Converts an X.509 subject or issuer to an ASN.1 RDNSequence.\n *\n * @param obj the subject or issuer (distinguished name).\n *\n * @return the ASN.1 RDNSequence.\n */\nfunction _dnToAsn1(obj) {\n // create an empty RDNSequence\n var rval = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // iterate over attributes\n var attr, set;\n var attrs = obj.attributes;\n for(var i = 0; i < attrs.length; ++i) {\n attr = attrs[i];\n var value = attr.value;\n\n // reuse tag class for attribute value if available\n var valueTagClass = asn1.Type.PRINTABLESTRING;\n if('valueTagClass' in attr) {\n valueTagClass = attr.valueTagClass;\n\n if(valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(value);\n }\n // FIXME: handle more encodings\n }\n\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n set = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n // AttributeValue\n asn1.create(asn1.Class.UNIVERSAL, valueTagClass, false, value)\n ])\n ]);\n rval.value.push(set);\n }\n\n return rval;\n}\n\n/**\n * Gets all printable attributes (typically of an issuer or subject) in a\n * simplified JSON format for display.\n *\n * @param attrs the attributes.\n *\n * @return the JSON for display.\n */\nfunction _getAttributesAsJson(attrs) {\n var rval = {};\n for(var i = 0; i < attrs.length; ++i) {\n var attr = attrs[i];\n if(attr.shortName && (\n attr.valueTagClass === asn1.Type.UTF8 ||\n attr.valueTagClass === asn1.Type.PRINTABLESTRING ||\n attr.valueTagClass === asn1.Type.IA5STRING)) {\n var value = attr.value;\n if(attr.valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(attr.value);\n }\n if(!(attr.shortName in rval)) {\n rval[attr.shortName] = value;\n } else if(forge.util.isArray(rval[attr.shortName])) {\n rval[attr.shortName].push(value);\n } else {\n rval[attr.shortName] = [rval[attr.shortName], value];\n }\n }\n }\n return rval;\n}\n\n/**\n * Fills in missing fields in attributes.\n *\n * @param attrs the attributes to fill missing fields in.\n */\nfunction _fillMissingFields(attrs) {\n var attr;\n for(var i = 0; i < attrs.length; ++i) {\n attr = attrs[i];\n\n // populate missing name\n if(typeof attr.name === 'undefined') {\n if(attr.type && attr.type in pki.oids) {\n attr.name = pki.oids[attr.type];\n } else if(attr.shortName && attr.shortName in _shortNames) {\n attr.name = pki.oids[_shortNames[attr.shortName]];\n }\n }\n\n // populate missing type (OID)\n if(typeof attr.type === 'undefined') {\n if(attr.name && attr.name in pki.oids) {\n attr.type = pki.oids[attr.name];\n } else {\n var error = new Error('Attribute type not specified.');\n error.attribute = attr;\n throw error;\n }\n }\n\n // populate missing shortname\n if(typeof attr.shortName === 'undefined') {\n if(attr.name && attr.name in _shortNames) {\n attr.shortName = _shortNames[attr.name];\n }\n }\n\n // convert extensions to value\n if(attr.type === oids.extensionRequest) {\n attr.valueConstructed = true;\n attr.valueTagClass = asn1.Type.SEQUENCE;\n if(!attr.value && attr.extensions) {\n attr.value = [];\n for(var ei = 0; ei < attr.extensions.length; ++ei) {\n attr.value.push(pki.certificateExtensionToAsn1(\n _fillMissingExtensionFields(attr.extensions[ei])));\n }\n }\n }\n\n if(typeof attr.value === 'undefined') {\n var error = new Error('Attribute value not specified.');\n error.attribute = attr;\n throw error;\n }\n }\n}\n\n/**\n * Fills in missing fields in certificate extensions.\n *\n * @param e the extension.\n * @param [options] the options to use.\n * [cert] the certificate the extensions are for.\n *\n * @return the extension.\n */\nfunction _fillMissingExtensionFields(e, options) {\n options = options || {};\n\n // populate missing name\n if(typeof e.name === 'undefined') {\n if(e.id && e.id in pki.oids) {\n e.name = pki.oids[e.id];\n }\n }\n\n // populate missing id\n if(typeof e.id === 'undefined') {\n if(e.name && e.name in pki.oids) {\n e.id = pki.oids[e.name];\n } else {\n var error = new Error('Extension ID not specified.');\n error.extension = e;\n throw error;\n }\n }\n\n if(typeof e.value !== 'undefined') {\n return e;\n }\n\n // handle missing value:\n\n // value is a BIT STRING\n if(e.name === 'keyUsage') {\n // build flags\n var unused = 0;\n var b2 = 0x00;\n var b3 = 0x00;\n if(e.digitalSignature) {\n b2 |= 0x80;\n unused = 7;\n }\n if(e.nonRepudiation) {\n b2 |= 0x40;\n unused = 6;\n }\n if(e.keyEncipherment) {\n b2 |= 0x20;\n unused = 5;\n }\n if(e.dataEncipherment) {\n b2 |= 0x10;\n unused = 4;\n }\n if(e.keyAgreement) {\n b2 |= 0x08;\n unused = 3;\n }\n if(e.keyCertSign) {\n b2 |= 0x04;\n unused = 2;\n }\n if(e.cRLSign) {\n b2 |= 0x02;\n unused = 1;\n }\n if(e.encipherOnly) {\n b2 |= 0x01;\n unused = 0;\n }\n if(e.decipherOnly) {\n b3 |= 0x80;\n unused = 7;\n }\n\n // create bit string\n var value = String.fromCharCode(unused);\n if(b3 !== 0) {\n value += String.fromCharCode(b2) + String.fromCharCode(b3);\n } else if(b2 !== 0) {\n value += String.fromCharCode(b2);\n }\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value);\n } else if(e.name === 'basicConstraints') {\n // basicConstraints is a SEQUENCE\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n // cA BOOLEAN flag defaults to false\n if(e.cA) {\n e.value.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false,\n String.fromCharCode(0xFF)));\n }\n if('pathLenConstraint' in e) {\n e.value.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(e.pathLenConstraint).getBytes()));\n }\n } else if(e.name === 'extKeyUsage') {\n // extKeyUsage is a SEQUENCE of OIDs\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n for(var key in e) {\n if(e[key] !== true) {\n continue;\n }\n // key is name in OID map\n if(key in oids) {\n seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID,\n false, asn1.oidToDer(oids[key]).getBytes()));\n } else if(key.indexOf('.') !== -1) {\n // assume key is an OID\n seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID,\n false, asn1.oidToDer(key).getBytes()));\n }\n }\n } else if(e.name === 'nsCertType') {\n // nsCertType is a BIT STRING\n // build flags\n var unused = 0;\n var b2 = 0x00;\n\n if(e.client) {\n b2 |= 0x80;\n unused = 7;\n }\n if(e.server) {\n b2 |= 0x40;\n unused = 6;\n }\n if(e.email) {\n b2 |= 0x20;\n unused = 5;\n }\n if(e.objsign) {\n b2 |= 0x10;\n unused = 4;\n }\n if(e.reserved) {\n b2 |= 0x08;\n unused = 3;\n }\n if(e.sslCA) {\n b2 |= 0x04;\n unused = 2;\n }\n if(e.emailCA) {\n b2 |= 0x02;\n unused = 1;\n }\n if(e.objCA) {\n b2 |= 0x01;\n unused = 0;\n }\n\n // create bit string\n var value = String.fromCharCode(unused);\n if(b2 !== 0) {\n value += String.fromCharCode(b2);\n }\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value);\n } else if(e.name === 'subjectAltName' || e.name === 'issuerAltName') {\n // SYNTAX SEQUENCE\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n var altName;\n for(var n = 0; n < e.altNames.length; ++n) {\n altName = e.altNames[n];\n var value = altName.value;\n // handle IP\n if(altName.type === 7 && altName.ip) {\n value = forge.util.bytesFromIP(altName.ip);\n if(value === null) {\n var error = new Error(\n 'Extension \"ip\" value is not a valid IPv4 or IPv6 address.');\n error.extension = e;\n throw error;\n }\n } else if(altName.type === 8) {\n // handle OID\n if(altName.oid) {\n value = asn1.oidToDer(asn1.oidToDer(altName.oid));\n } else {\n // deprecated ... convert value to OID\n value = asn1.oidToDer(value);\n }\n }\n e.value.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, altName.type, false,\n value));\n }\n } else if(e.name === 'nsComment' && options.cert) {\n // sanity check value is ASCII (req'd) and not too big\n if(!(/^[\\x00-\\x7F]*$/.test(e.comment)) ||\n (e.comment.length < 1) || (e.comment.length > 128)) {\n throw new Error('Invalid \"nsComment\" content.');\n }\n // IA5STRING opaque comment\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.IA5STRING, false, e.comment);\n } else if(e.name === 'subjectKeyIdentifier' && options.cert) {\n var ski = options.cert.generateSubjectKeyIdentifier();\n e.subjectKeyIdentifier = ski.toHex();\n // OCTETSTRING w/digest\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, ski.getBytes());\n } else if(e.name === 'authorityKeyIdentifier' && options.cert) {\n // SYNTAX SEQUENCE\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n\n if(e.keyIdentifier) {\n var keyIdentifier = (e.keyIdentifier === true ?\n options.cert.generateSubjectKeyIdentifier().getBytes() :\n e.keyIdentifier);\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, false, keyIdentifier));\n }\n\n if(e.authorityCertIssuer) {\n var authorityCertIssuer = [\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 4, true, [\n _dnToAsn1(e.authorityCertIssuer === true ?\n options.cert.issuer : e.authorityCertIssuer)\n ])\n ];\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, authorityCertIssuer));\n }\n\n if(e.serialNumber) {\n var serialNumber = forge.util.hexToBytes(e.serialNumber === true ?\n options.cert.serialNumber : e.serialNumber);\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, false, serialNumber));\n }\n } else if(e.name === 'cRLDistributionPoints') {\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n\n // Create sub SEQUENCE of DistributionPointName\n var subSeq = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // Create fullName CHOICE\n var fullNameGeneralNames = asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n var altName;\n for(var n = 0; n < e.altNames.length; ++n) {\n altName = e.altNames[n];\n var value = altName.value;\n // handle IP\n if(altName.type === 7 && altName.ip) {\n value = forge.util.bytesFromIP(altName.ip);\n if(value === null) {\n var error = new Error(\n 'Extension \"ip\" value is not a valid IPv4 or IPv6 address.');\n error.extension = e;\n throw error;\n }\n } else if(altName.type === 8) {\n // handle OID\n if(altName.oid) {\n value = asn1.oidToDer(asn1.oidToDer(altName.oid));\n } else {\n // deprecated ... convert value to OID\n value = asn1.oidToDer(value);\n }\n }\n fullNameGeneralNames.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, altName.type, false,\n value));\n }\n\n // Add to the parent SEQUENCE\n subSeq.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, [fullNameGeneralNames]));\n seq.push(subSeq);\n }\n\n // ensure value has been defined by now\n if(typeof e.value === 'undefined') {\n var error = new Error('Extension value not specified.');\n error.extension = e;\n throw error;\n }\n\n return e;\n}\n\n/**\n * Convert signature parameters object to ASN.1\n *\n * @param {String} oid Signature algorithm OID\n * @param params The signature parametrs object\n * @return ASN.1 object representing signature parameters\n */\nfunction _signatureParametersToAsn1(oid, params) {\n switch(oid) {\n case oids['RSASSA-PSS']:\n var parts = [];\n\n if(params.hash.algorithmOid !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.hash.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ]));\n }\n\n if(params.mgf.algorithmOid !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.mgf.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.mgf.hash.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ])\n ]));\n }\n\n if(params.saltLength !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(params.saltLength).getBytes())\n ]));\n }\n\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, parts);\n\n default:\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '');\n }\n}\n\n/**\n * Converts a certification request's attributes to an ASN.1 set of\n * CRIAttributes.\n *\n * @param csr certification request.\n *\n * @return the ASN.1 set of CRIAttributes.\n */\nfunction _CRIAttributesToAsn1(csr) {\n // create an empty context-specific container\n var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n\n // no attributes, return empty container\n if(csr.attributes.length === 0) {\n return rval;\n }\n\n // each attribute has a sequence with a type and a set of values\n var attrs = csr.attributes;\n for(var i = 0; i < attrs.length; ++i) {\n var attr = attrs[i];\n var value = attr.value;\n\n // reuse tag class for attribute value if available\n var valueTagClass = asn1.Type.UTF8;\n if('valueTagClass' in attr) {\n valueTagClass = attr.valueTagClass;\n }\n if(valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(value);\n }\n var valueConstructed = false;\n if('valueConstructed' in attr) {\n valueConstructed = attr.valueConstructed;\n }\n // FIXME: handle more encodings\n\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n // AttributeValue\n asn1.create(\n asn1.Class.UNIVERSAL, valueTagClass, valueConstructed, value)\n ])\n ]);\n rval.value.push(seq);\n }\n\n return rval;\n}\n\nvar jan_1_1950 = new Date('1950-01-01T00:00:00Z');\nvar jan_1_2050 = new Date('2050-01-01T00:00:00Z');\n\n/**\n * Converts a Date object to ASN.1\n * Handles the different format before and after 1st January 2050\n *\n * @param date date object.\n *\n * @return the ASN.1 object representing the date.\n */\nfunction _dateToAsn1(date) {\n if(date >= jan_1_1950 && date < jan_1_2050) {\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.UTCTIME, false,\n asn1.dateToUtcTime(date));\n } else {\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.GENERALIZEDTIME, false,\n asn1.dateToGeneralizedTime(date));\n }\n}\n\n/**\n * Gets the ASN.1 TBSCertificate part of an X.509v3 certificate.\n *\n * @param cert the certificate.\n *\n * @return the asn1 TBSCertificate.\n */\npki.getTBSCertificate = function(cert) {\n // TBSCertificate\n var notBefore = _dateToAsn1(cert.validity.notBefore);\n var notAfter = _dateToAsn1(cert.validity.notAfter);\n var tbs = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // integer\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(cert.version).getBytes())\n ]),\n // serialNumber\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(cert.serialNumber)),\n // signature\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(cert.siginfo.algorithmOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(\n cert.siginfo.algorithmOid, cert.siginfo.parameters)\n ]),\n // issuer\n _dnToAsn1(cert.issuer),\n // validity\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n notBefore,\n notAfter\n ]),\n // subject\n _dnToAsn1(cert.subject),\n // SubjectPublicKeyInfo\n pki.publicKeyToAsn1(cert.publicKey)\n ]);\n\n if(cert.issuer.uniqueId) {\n // issuerUniqueID (optional)\n tbs.value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n // TODO: support arbitrary bit length ids\n String.fromCharCode(0x00) +\n cert.issuer.uniqueId\n )\n ])\n );\n }\n if(cert.subject.uniqueId) {\n // subjectUniqueID (optional)\n tbs.value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n // TODO: support arbitrary bit length ids\n String.fromCharCode(0x00) +\n cert.subject.uniqueId\n )\n ])\n );\n }\n\n if(cert.extensions.length > 0) {\n // extensions (optional)\n tbs.value.push(pki.certificateExtensionsToAsn1(cert.extensions));\n }\n\n return tbs;\n};\n\n/**\n * Gets the ASN.1 CertificationRequestInfo part of a\n * PKCS#10 CertificationRequest.\n *\n * @param csr the certification request.\n *\n * @return the asn1 CertificationRequestInfo.\n */\npki.getCertificationRequestInfo = function(csr) {\n // CertificationRequestInfo\n var cri = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(csr.version).getBytes()),\n // subject\n _dnToAsn1(csr.subject),\n // SubjectPublicKeyInfo\n pki.publicKeyToAsn1(csr.publicKey),\n // attributes\n _CRIAttributesToAsn1(csr)\n ]);\n\n return cri;\n};\n\n/**\n * Converts a DistinguishedName (subject or issuer) to an ASN.1 object.\n *\n * @param dn the DistinguishedName.\n *\n * @return the asn1 representation of a DistinguishedName.\n */\npki.distinguishedNameToAsn1 = function(dn) {\n return _dnToAsn1(dn);\n};\n\n/**\n * Converts an X.509v3 RSA certificate to an ASN.1 object.\n *\n * @param cert the certificate.\n *\n * @return the asn1 representation of an X.509v3 RSA certificate.\n */\npki.certificateToAsn1 = function(cert) {\n // prefer cached TBSCertificate over generating one\n var tbsCertificate = cert.tbsCertificate || pki.getTBSCertificate(cert);\n\n // Certificate\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // TBSCertificate\n tbsCertificate,\n // AlgorithmIdentifier (signature algorithm)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(cert.signatureOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(cert.signatureOid, cert.signatureParameters)\n ]),\n // SignatureValue\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n String.fromCharCode(0x00) + cert.signature)\n ]);\n};\n\n/**\n * Converts X.509v3 certificate extensions to ASN.1.\n *\n * @param exts the extensions to convert.\n *\n * @return the extensions in ASN.1 format.\n */\npki.certificateExtensionsToAsn1 = function(exts) {\n // create top-level extension container\n var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 3, true, []);\n\n // create extension sequence (stores a sequence for each extension)\n var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n rval.value.push(seq);\n\n for(var i = 0; i < exts.length; ++i) {\n seq.value.push(pki.certificateExtensionToAsn1(exts[i]));\n }\n\n return rval;\n};\n\n/**\n * Converts a single certificate extension to ASN.1.\n *\n * @param ext the extension to convert.\n *\n * @return the extension in ASN.1 format.\n */\npki.certificateExtensionToAsn1 = function(ext) {\n // create a sequence for each extension\n var extseq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // extnID (OID)\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(ext.id).getBytes()));\n\n // critical defaults to false\n if(ext.critical) {\n // critical BOOLEAN DEFAULT FALSE\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false,\n String.fromCharCode(0xFF)));\n }\n\n var value = ext.value;\n if(typeof ext.value !== 'string') {\n // value is asn.1\n value = asn1.toDer(value).getBytes();\n }\n\n // extnValue (OCTET STRING)\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, value));\n\n return extseq;\n};\n\n/**\n * Converts a PKCS#10 certification request to an ASN.1 object.\n *\n * @param csr the certification request.\n *\n * @return the asn1 representation of a certification request.\n */\npki.certificationRequestToAsn1 = function(csr) {\n // prefer cached CertificationRequestInfo over generating one\n var cri = csr.certificationRequestInfo ||\n pki.getCertificationRequestInfo(csr);\n\n // Certificate\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // CertificationRequestInfo\n cri,\n // AlgorithmIdentifier (signature algorithm)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(csr.signatureOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(csr.signatureOid, csr.signatureParameters)\n ]),\n // signature\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n String.fromCharCode(0x00) + csr.signature)\n ]);\n};\n\n/**\n * Creates a CA store.\n *\n * @param certs an optional array of certificate objects or PEM-formatted\n * certificate strings to add to the CA store.\n *\n * @return the CA store.\n */\npki.createCaStore = function(certs) {\n // create CA store\n var caStore = {\n // stored certificates\n certs: {}\n };\n\n /**\n * Gets the certificate that issued the passed certificate or its\n * 'parent'.\n *\n * @param cert the certificate to get the parent for.\n *\n * @return the parent certificate or null if none was found.\n */\n caStore.getIssuer = function(cert) {\n var rval = getBySubject(cert.issuer);\n\n // see if there are multiple matches\n /*if(forge.util.isArray(rval)) {\n // TODO: resolve multiple matches by checking\n // authorityKey/subjectKey/issuerUniqueID/other identifiers, etc.\n // FIXME: or alternatively do authority key mapping\n // if possible (X.509v1 certs can't work?)\n throw new Error('Resolving multiple issuer matches not implemented yet.');\n }*/\n\n return rval;\n };\n\n /**\n * Adds a trusted certificate to the store.\n *\n * @param cert the certificate to add as a trusted certificate (either a\n * pki.certificate object or a PEM-formatted certificate).\n */\n caStore.addCertificate = function(cert) {\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n\n ensureSubjectHasHash(cert.subject);\n\n if(!caStore.hasCertificate(cert)) { // avoid duplicate certificates in store\n if(cert.subject.hash in caStore.certs) {\n // subject hash already exists, append to array\n var tmp = caStore.certs[cert.subject.hash];\n if(!forge.util.isArray(tmp)) {\n tmp = [tmp];\n }\n tmp.push(cert);\n caStore.certs[cert.subject.hash] = tmp;\n } else {\n caStore.certs[cert.subject.hash] = cert;\n }\n }\n };\n\n /**\n * Checks to see if the given certificate is in the store.\n *\n * @param cert the certificate to check (either a pki.certificate or a\n * PEM-formatted certificate).\n *\n * @return true if the certificate is in the store, false if not.\n */\n caStore.hasCertificate = function(cert) {\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n\n var match = getBySubject(cert.subject);\n if(!match) {\n return false;\n }\n if(!forge.util.isArray(match)) {\n match = [match];\n }\n // compare DER-encoding of certificates\n var der1 = asn1.toDer(pki.certificateToAsn1(cert)).getBytes();\n for(var i = 0; i < match.length; ++i) {\n var der2 = asn1.toDer(pki.certificateToAsn1(match[i])).getBytes();\n if(der1 === der2) {\n return true;\n }\n }\n return false;\n };\n\n /**\n * Lists all of the certificates kept in the store.\n *\n * @return an array of all of the pki.certificate objects in the store.\n */\n caStore.listAllCertificates = function() {\n var certList = [];\n\n for(var hash in caStore.certs) {\n if(caStore.certs.hasOwnProperty(hash)) {\n var value = caStore.certs[hash];\n if(!forge.util.isArray(value)) {\n certList.push(value);\n } else {\n for(var i = 0; i < value.length; ++i) {\n certList.push(value[i]);\n }\n }\n }\n }\n\n return certList;\n };\n\n /**\n * Removes a certificate from the store.\n *\n * @param cert the certificate to remove (either a pki.certificate or a\n * PEM-formatted certificate).\n *\n * @return the certificate that was removed or null if the certificate\n * wasn't in store.\n */\n caStore.removeCertificate = function(cert) {\n var result;\n\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n ensureSubjectHasHash(cert.subject);\n if(!caStore.hasCertificate(cert)) {\n return null;\n }\n\n var match = getBySubject(cert.subject);\n\n if(!forge.util.isArray(match)) {\n result = caStore.certs[cert.subject.hash];\n delete caStore.certs[cert.subject.hash];\n return result;\n }\n\n // compare DER-encoding of certificates\n var der1 = asn1.toDer(pki.certificateToAsn1(cert)).getBytes();\n for(var i = 0; i < match.length; ++i) {\n var der2 = asn1.toDer(pki.certificateToAsn1(match[i])).getBytes();\n if(der1 === der2) {\n result = match[i];\n match.splice(i, 1);\n }\n }\n if(match.length === 0) {\n delete caStore.certs[cert.subject.hash];\n }\n\n return result;\n };\n\n function getBySubject(subject) {\n ensureSubjectHasHash(subject);\n return caStore.certs[subject.hash] || null;\n }\n\n function ensureSubjectHasHash(subject) {\n // produce subject hash if it doesn't exist\n if(!subject.hash) {\n var md = forge.md.sha1.create();\n subject.attributes = pki.RDNAttributesAsArray(_dnToAsn1(subject), md);\n subject.hash = md.digest().toHex();\n }\n }\n\n // auto-add passed in certs\n if(certs) {\n // parse PEM-formatted certificates as necessary\n for(var i = 0; i < certs.length; ++i) {\n var cert = certs[i];\n caStore.addCertificate(cert);\n }\n }\n\n return caStore;\n};\n\n/**\n * Certificate verification errors, based on TLS.\n */\npki.certificateError = {\n bad_certificate: 'forge.pki.BadCertificate',\n unsupported_certificate: 'forge.pki.UnsupportedCertificate',\n certificate_revoked: 'forge.pki.CertificateRevoked',\n certificate_expired: 'forge.pki.CertificateExpired',\n certificate_unknown: 'forge.pki.CertificateUnknown',\n unknown_ca: 'forge.pki.UnknownCertificateAuthority'\n};\n\n/**\n * Verifies a certificate chain against the given Certificate Authority store\n * with an optional custom verify callback.\n *\n * @param caStore a certificate store to verify against.\n * @param chain the certificate chain to verify, with the root or highest\n * authority at the end (an array of certificates).\n * @param options a callback to be called for every certificate in the chain or\n * an object with:\n * verify a callback to be called for every certificate in the\n * chain\n * validityCheckDate the date against which the certificate\n * validity period should be checked. Pass null to not check\n * the validity period. By default, the current date is used.\n *\n * The verify callback has the following signature:\n *\n * verified - Set to true if certificate was verified, otherwise the\n * pki.certificateError for why the certificate failed.\n * depth - The current index in the chain, where 0 is the end point's cert.\n * certs - The certificate chain, *NOTE* an empty chain indicates an anonymous\n * end point.\n *\n * The function returns true on success and on failure either the appropriate\n * pki.certificateError or an object with 'error' set to the appropriate\n * pki.certificateError and 'message' set to a custom error message.\n *\n * @return true if successful, error thrown if not.\n */\npki.verifyCertificateChain = function(caStore, chain, options) {\n /* From: RFC3280 - Internet X.509 Public Key Infrastructure Certificate\n Section 6: Certification Path Validation\n See inline parentheticals related to this particular implementation.\n\n The primary goal of path validation is to verify the binding between\n a subject distinguished name or a subject alternative name and subject\n public key, as represented in the end entity certificate, based on the\n public key of the trust anchor. This requires obtaining a sequence of\n certificates that support that binding. That sequence should be provided\n in the passed 'chain'. The trust anchor should be in the given CA\n store. The 'end entity' certificate is the certificate provided by the\n end point (typically a server) and is the first in the chain.\n\n To meet this goal, the path validation process verifies, among other\n things, that a prospective certification path (a sequence of n\n certificates or a 'chain') satisfies the following conditions:\n\n (a) for all x in {1, ..., n-1}, the subject of certificate x is\n the issuer of certificate x+1;\n\n (b) certificate 1 is issued by the trust anchor;\n\n (c) certificate n is the certificate to be validated; and\n\n (d) for all x in {1, ..., n}, the certificate was valid at the\n time in question.\n\n Note that here 'n' is index 0 in the chain and 1 is the last certificate\n in the chain and it must be signed by a certificate in the connection's\n CA store.\n\n The path validation process also determines the set of certificate\n policies that are valid for this path, based on the certificate policies\n extension, policy mapping extension, policy constraints extension, and\n inhibit any-policy extension.\n\n Note: Policy mapping extension not supported (Not Required).\n\n Note: If the certificate has an unsupported critical extension, then it\n must be rejected.\n\n Note: A certificate is self-issued if the DNs that appear in the subject\n and issuer fields are identical and are not empty.\n\n The path validation algorithm assumes the following seven inputs are\n provided to the path processing logic. What this specific implementation\n will use is provided parenthetically:\n\n (a) a prospective certification path of length n (the 'chain')\n (b) the current date/time: ('now').\n (c) user-initial-policy-set: A set of certificate policy identifiers\n naming the policies that are acceptable to the certificate user.\n The user-initial-policy-set contains the special value any-policy\n if the user is not concerned about certificate policy\n (Not implemented. Any policy is accepted).\n (d) trust anchor information, describing a CA that serves as a trust\n anchor for the certification path. The trust anchor information\n includes:\n\n (1) the trusted issuer name,\n (2) the trusted public key algorithm,\n (3) the trusted public key, and\n (4) optionally, the trusted public key parameters associated\n with the public key.\n\n (Trust anchors are provided via certificates in the CA store).\n\n The trust anchor information may be provided to the path processing\n procedure in the form of a self-signed certificate. The trusted anchor\n information is trusted because it was delivered to the path processing\n procedure by some trustworthy out-of-band procedure. If the trusted\n public key algorithm requires parameters, then the parameters are\n provided along with the trusted public key (No parameters used in this\n implementation).\n\n (e) initial-policy-mapping-inhibit, which indicates if policy mapping is\n allowed in the certification path.\n (Not implemented, no policy checking)\n\n (f) initial-explicit-policy, which indicates if the path must be valid\n for at least one of the certificate policies in the user-initial-\n policy-set.\n (Not implemented, no policy checking)\n\n (g) initial-any-policy-inhibit, which indicates whether the\n anyPolicy OID should be processed if it is included in a\n certificate.\n (Not implemented, so any policy is valid provided that it is\n not marked as critical) */\n\n /* Basic Path Processing:\n\n For each certificate in the 'chain', the following is checked:\n\n 1. The certificate validity period includes the current time.\n 2. The certificate was signed by its parent (where the parent is either\n the next in the chain or from the CA store). Allow processing to\n continue to the next step if no parent is found but the certificate is\n in the CA store.\n 3. TODO: The certificate has not been revoked.\n 4. The certificate issuer name matches the parent's subject name.\n 5. TODO: If the certificate is self-issued and not the final certificate\n in the chain, skip this step, otherwise verify that the subject name\n is within one of the permitted subtrees of X.500 distinguished names\n and that each of the alternative names in the subjectAltName extension\n (critical or non-critical) is within one of the permitted subtrees for\n that name type.\n 6. TODO: If the certificate is self-issued and not the final certificate\n in the chain, skip this step, otherwise verify that the subject name\n is not within one of the excluded subtrees for X.500 distinguished\n names and none of the subjectAltName extension names are excluded for\n that name type.\n 7. The other steps in the algorithm for basic path processing involve\n handling the policy extension which is not presently supported in this\n implementation. Instead, if a critical policy extension is found, the\n certificate is rejected as not supported.\n 8. If the certificate is not the first or if its the only certificate in\n the chain (having no parent from the CA store or is self-signed) and it\n has a critical key usage extension, verify that the keyCertSign bit is\n set. If the key usage extension exists, verify that the basic\n constraints extension exists. If the basic constraints extension exists,\n verify that the cA flag is set. If pathLenConstraint is set, ensure that\n the number of certificates that precede in the chain (come earlier\n in the chain as implemented below), excluding the very first in the\n chain (typically the end-entity one), isn't greater than the\n pathLenConstraint. This constraint limits the number of intermediate\n CAs that may appear below a CA before only end-entity certificates\n may be issued. */\n\n // if a verify callback is passed as the third parameter, package it within\n // the options object. This is to support a legacy function signature that\n // expected the verify callback as the third parameter.\n if(typeof options === 'function') {\n options = {verify: options};\n }\n options = options || {};\n\n // copy cert chain references to another array to protect against changes\n // in verify callback\n chain = chain.slice(0);\n var certs = chain.slice(0);\n\n var validityCheckDate = options.validityCheckDate;\n // if no validityCheckDate is specified, default to the current date. Make\n // sure to maintain the value null because it indicates that the validity\n // period should not be checked.\n if(typeof validityCheckDate === 'undefined') {\n validityCheckDate = new Date();\n }\n\n // verify each cert in the chain using its parent, where the parent\n // is either the next in the chain or from the CA store\n var first = true;\n var error = null;\n var depth = 0;\n do {\n var cert = chain.shift();\n var parent = null;\n var selfSigned = false;\n\n if(validityCheckDate) {\n // 1. check valid time\n if(validityCheckDate < cert.validity.notBefore ||\n validityCheckDate > cert.validity.notAfter) {\n error = {\n message: 'Certificate is not valid yet or has expired.',\n error: pki.certificateError.certificate_expired,\n notBefore: cert.validity.notBefore,\n notAfter: cert.validity.notAfter,\n // TODO: we might want to reconsider renaming 'now' to\n // 'validityCheckDate' should this API be changed in the future.\n now: validityCheckDate\n };\n }\n }\n\n // 2. verify with parent from chain or CA store\n if(error === null) {\n parent = chain[0] || caStore.getIssuer(cert);\n if(parent === null) {\n // check for self-signed cert\n if(cert.isIssuer(cert)) {\n selfSigned = true;\n parent = cert;\n }\n }\n\n if(parent) {\n // FIXME: current CA store implementation might have multiple\n // certificates where the issuer can't be determined from the\n // certificate (happens rarely with, eg: old certificates) so normalize\n // by always putting parents into an array\n // TODO: there's may be an extreme degenerate case currently uncovered\n // where an old intermediate certificate seems to have a matching parent\n // but none of the parents actually verify ... but the intermediate\n // is in the CA and it should pass this check; needs investigation\n var parents = parent;\n if(!forge.util.isArray(parents)) {\n parents = [parents];\n }\n\n // try to verify with each possible parent (typically only one)\n var verified = false;\n while(!verified && parents.length > 0) {\n parent = parents.shift();\n try {\n verified = parent.verify(cert);\n } catch(ex) {\n // failure to verify, don't care why, try next one\n }\n }\n\n if(!verified) {\n error = {\n message: 'Certificate signature is invalid.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n\n if(error === null && (!parent || selfSigned) &&\n !caStore.hasCertificate(cert)) {\n // no parent issuer and certificate itself is not trusted\n error = {\n message: 'Certificate is not trusted.',\n error: pki.certificateError.unknown_ca\n };\n }\n }\n\n // TODO: 3. check revoked\n\n // 4. check for matching issuer/subject\n if(error === null && parent && !cert.isIssuer(parent)) {\n // parent is not issuer\n error = {\n message: 'Certificate issuer is invalid.',\n error: pki.certificateError.bad_certificate\n };\n }\n\n // 5. TODO: check names with permitted names tree\n\n // 6. TODO: check names against excluded names tree\n\n // 7. check for unsupported critical extensions\n if(error === null) {\n // supported extensions\n var se = {\n keyUsage: true,\n basicConstraints: true\n };\n for(var i = 0; error === null && i < cert.extensions.length; ++i) {\n var ext = cert.extensions[i];\n if(ext.critical && !(ext.name in se)) {\n error = {\n message:\n 'Certificate has an unsupported critical extension.',\n error: pki.certificateError.unsupported_certificate\n };\n }\n }\n }\n\n // 8. check for CA if cert is not first or is the only certificate\n // remaining in chain with no parent or is self-signed\n if(error === null &&\n (!first || (chain.length === 0 && (!parent || selfSigned)))) {\n // first check keyUsage extension and then basic constraints\n var bcExt = cert.getExtension('basicConstraints');\n var keyUsageExt = cert.getExtension('keyUsage');\n if(keyUsageExt !== null) {\n // keyCertSign must be true and there must be a basic\n // constraints extension\n if(!keyUsageExt.keyCertSign || bcExt === null) {\n // bad certificate\n error = {\n message:\n 'Certificate keyUsage or basicConstraints conflict ' +\n 'or indicate that the certificate is not a CA. ' +\n 'If the certificate is the only one in the chain or ' +\n 'isn\\'t the first then the certificate must be a ' +\n 'valid CA.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n // basic constraints cA flag must be set\n if(error === null && bcExt !== null && !bcExt.cA) {\n // bad certificate\n error = {\n message:\n 'Certificate basicConstraints indicates the certificate ' +\n 'is not a CA.',\n error: pki.certificateError.bad_certificate\n };\n }\n // if error is not null and keyUsage is available, then we know it\n // has keyCertSign and there is a basic constraints extension too,\n // which means we can check pathLenConstraint (if it exists)\n if(error === null && keyUsageExt !== null &&\n 'pathLenConstraint' in bcExt) {\n // pathLen is the maximum # of intermediate CA certs that can be\n // found between the current certificate and the end-entity (depth 0)\n // certificate; this number does not include the end-entity (depth 0,\n // last in the chain) even if it happens to be a CA certificate itself\n var pathLen = depth - 1;\n if(pathLen > bcExt.pathLenConstraint) {\n // pathLenConstraint violated, bad certificate\n error = {\n message:\n 'Certificate basicConstraints pathLenConstraint violated.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n }\n\n // call application callback\n var vfd = (error === null) ? true : error.error;\n var ret = options.verify ? options.verify(vfd, depth, certs) : vfd;\n if(ret === true) {\n // clear any set error\n error = null;\n } else {\n // if passed basic tests, set default message and alert\n if(vfd === true) {\n error = {\n message: 'The application rejected the certificate.',\n error: pki.certificateError.bad_certificate\n };\n }\n\n // check for custom error info\n if(ret || ret === 0) {\n // set custom message and error\n if(typeof ret === 'object' && !forge.util.isArray(ret)) {\n if(ret.message) {\n error.message = ret.message;\n }\n if(ret.error) {\n error.error = ret.error;\n }\n } else if(typeof ret === 'string') {\n // set custom error\n error.error = ret;\n }\n }\n\n // throw error\n throw error;\n }\n\n // no longer first cert in chain\n first = false;\n ++depth;\n } while(chain.length > 0);\n\n return true;\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nconst { Deflate, deflate, deflateRaw, gzip } = require('./lib/deflate');\n\nconst { Inflate, inflate, inflateRaw, ungzip } = require('./lib/inflate');\n\nconst constants = require('./lib/zlib/constants');\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = ungzip;\nmodule.exports.constants = constants;\n","'use strict';\n\n\nconst zlib_deflate = require('./zlib/deflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = zlib_deflate.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n this.result = utils.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n const deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.constants = require('./zlib/constants');\n","'use strict';\n\n\nconst zlib_inflate = require('./zlib/inflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\nconst GZheader = require('./zlib/gzheader');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n this.options = utils.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = zlib_inflate.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n zlib_inflate.inflateReset(strm);\n status = zlib_inflate.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n const inflator = new Inflate(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || msg[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = inflate;\nmodule.exports.constants = require('./zlib/constants');\n","'use strict';\n\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nmodule.exports.assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nmodule.exports.flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n","// String encode/decode helpers\n'use strict';\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nmodule.exports.string2buf = (str) => {\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nmodule.exports.buf2string = (buf, max) => {\n let i, out;\n const len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nmodule.exports.utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = require('./trees');\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_PARTIAL_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_BLOCK,\n Z_OK, Z_STREAM_END, Z_STREAM_ERROR, Z_DATA_ERROR, Z_BUF_ERROR,\n Z_DEFAULT_COMPRESSION,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY,\n Z_UNKNOWN,\n Z_DEFLATED\n} = require('./constants');\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42;\nconst EXTRA_STATE = 69;\nconst NAME_STATE = 73;\nconst COMMENT_STATE = 91;\nconst HCRC_STATE = 103;\nconst BUSY_STATE = 113;\nconst FINISH_STATE = 666;\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = msg[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n let max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n const max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n};\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nconst deflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n};\n\n\nconst deflate = (strm, flush) => {\n\n let beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n let header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n let bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n const status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n};\n\n\nmodule.exports.deflateInit = deflateInit;\nmodule.exports.deflateInit2 = deflateInit2;\nmodule.exports.deflateReset = deflateReset;\nmodule.exports.deflateResetKeep = deflateResetKeep;\nmodule.exports.deflateSetHeader = deflateSetHeader;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateEnd = deflateEnd;\nmodule.exports.deflateSetDictionary = deflateSetDictionary;\nmodule.exports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD = 30; /* got a data error -- remain here until reset */\nconst TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst inflate_fast = require('./inffast');\nconst inflate_table = require('./inftrees');\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH, Z_BLOCK, Z_TREES,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR, Z_BUF_ERROR,\n Z_DEFLATED\n} = require('./constants');\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 1; /* i: waiting for magic header */\nconst FLAGS = 2; /* i: waiting for method and flags (gzip) */\nconst TIME = 3; /* i: waiting for modification time (gzip) */\nconst OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 5; /* i: waiting for extra length (gzip) */\nconst EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nconst NAME = 7; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 8; /* i: waiting for end of comment (gzip) */\nconst HCRC = 9; /* i: waiting for header crc (gzip) */\nconst DICTID = 10; /* i: waiting for dictionary check value */\nconst DICT = 11; /* waiting for inflateSetDictionary() call */\nconst TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 14; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 17; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 18; /* i: waiting for code length code lengths */\nconst CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 20; /* i: same as LEN below, but only first time in */\nconst LEN = 21; /* i: waiting for length/lit/eob code */\nconst LENEXT = 22; /* i: waiting for length extra bits */\nconst DIST = 23; /* i: waiting for distance code */\nconst DISTEXT = 24; /* i: waiting for distance extra bits */\nconst MATCH = 25; /* o: waiting for output space to copy string */\nconst LIT = 26; /* o: waiting for output space to write literal */\nconst CHECK = 27; /* i: waiting for 32-bit check value */\nconst LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 29; /* finished check, done -- remain here until reset */\nconst BAD = 30; /* got a data error -- remain here until reset */\nconst MEM = 31; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateResetKeep = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n};\n\n\nmodule.exports.inflateReset = inflateReset;\nmodule.exports.inflateReset2 = inflateReset2;\nmodule.exports.inflateResetKeep = inflateResetKeep;\nmodule.exports.inflateInit = inflateInit;\nmodule.exports.inflateInit2 = inflateInit2;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateEnd = inflateEnd;\nmodule.exports.inflateGetHeader = inflateGetHeader;\nmodule.exports.inflateSetDictionary = inflateSetDictionary;\nmodule.exports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n let base_index = 0;\n// let shoextra; /* extra bits table to use */\n let end; /* use base and extra for symbol > end */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n let extra_index = 0;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nmodule.exports = inflate_table;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES = 30;\n/* number of distance codes */\n\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) =>\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n const next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nconst copy_block = (s, buf, len, header) =>\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending);\n s.pending += len;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) =>\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let lx = 0; /* running index in l_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) =>\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) =>\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) =>\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let black_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nconst _tr_flush_block = (s, buf, stored_len, last) =>\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally = (s, dist, lc) =>\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //let out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n};\n\nmodule.exports._tr_init = _tr_init;\nmodule.exports._tr_stored_block = _tr_stored_block;\nmodule.exports._tr_flush_block = _tr_flush_block;\nmodule.exports._tr_tally = _tr_tally;\nmodule.exports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\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","// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","/*!\n * MIT License\n * \n * Copyright (c) 2017-2022 Peculiar Ventures, LLC\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n * \n */\n\n'use strict';\n\nconst ARRAY_BUFFER_NAME = \"[object ArrayBuffer]\";\nclass BufferSourceConverter {\n static isArrayBuffer(data) {\n return Object.prototype.toString.call(data) === ARRAY_BUFFER_NAME;\n }\n static toArrayBuffer(data) {\n if (this.isArrayBuffer(data)) {\n return data;\n }\n if (data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n if (data.byteOffset === 0 && data.byteLength === data.buffer.byteLength) {\n return data.buffer;\n }\n return this.toUint8Array(data.buffer)\n .slice(data.byteOffset, data.byteOffset + data.byteLength)\n .buffer;\n }\n static toUint8Array(data) {\n return this.toView(data, Uint8Array);\n }\n static toView(data, type) {\n if (data.constructor === type) {\n return data;\n }\n if (this.isArrayBuffer(data)) {\n return new type(data);\n }\n if (this.isArrayBufferView(data)) {\n return new type(data.buffer, data.byteOffset, data.byteLength);\n }\n throw new TypeError(\"The provided value is not of type '(ArrayBuffer or ArrayBufferView)'\");\n }\n static isBufferSource(data) {\n return this.isArrayBufferView(data)\n || this.isArrayBuffer(data);\n }\n static isArrayBufferView(data) {\n return ArrayBuffer.isView(data)\n || (data && this.isArrayBuffer(data.buffer));\n }\n static isEqual(a, b) {\n const aView = BufferSourceConverter.toUint8Array(a);\n const bView = BufferSourceConverter.toUint8Array(b);\n if (aView.length !== bView.byteLength) {\n return false;\n }\n for (let i = 0; i < aView.length; i++) {\n if (aView[i] !== bView[i]) {\n return false;\n }\n }\n return true;\n }\n static concat(...args) {\n let buffers;\n if (Array.isArray(args[0]) && !(args[1] instanceof Function)) {\n buffers = args[0];\n }\n else if (Array.isArray(args[0]) && args[1] instanceof Function) {\n buffers = args[0];\n }\n else {\n if (args[args.length - 1] instanceof Function) {\n buffers = args.slice(0, args.length - 1);\n }\n else {\n buffers = args;\n }\n }\n let size = 0;\n for (const buffer of buffers) {\n size += buffer.byteLength;\n }\n const res = new Uint8Array(size);\n let offset = 0;\n for (const buffer of buffers) {\n const view = this.toUint8Array(buffer);\n res.set(view, offset);\n offset += view.length;\n }\n if (args[args.length - 1] instanceof Function) {\n return this.toView(res, args[args.length - 1]);\n }\n return res.buffer;\n }\n}\n\nconst STRING_TYPE = \"string\";\nconst HEX_REGEX = /^[0-9a-f]+$/i;\nconst BASE64_REGEX = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\nconst BASE64URL_REGEX = /^[a-zA-Z0-9-_]+$/;\nclass Utf8Converter {\n static fromString(text) {\n const s = unescape(encodeURIComponent(text));\n const uintArray = new Uint8Array(s.length);\n for (let i = 0; i < s.length; i++) {\n uintArray[i] = s.charCodeAt(i);\n }\n return uintArray.buffer;\n }\n static toString(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let encodedString = \"\";\n for (let i = 0; i < buf.length; i++) {\n encodedString += String.fromCharCode(buf[i]);\n }\n const decodedString = decodeURIComponent(escape(encodedString));\n return decodedString;\n }\n}\nclass Utf16Converter {\n static toString(buffer, littleEndian = false) {\n const arrayBuffer = BufferSourceConverter.toArrayBuffer(buffer);\n const dataView = new DataView(arrayBuffer);\n let res = \"\";\n for (let i = 0; i < arrayBuffer.byteLength; i += 2) {\n const code = dataView.getUint16(i, littleEndian);\n res += String.fromCharCode(code);\n }\n return res;\n }\n static fromString(text, littleEndian = false) {\n const res = new ArrayBuffer(text.length * 2);\n const dataView = new DataView(res);\n for (let i = 0; i < text.length; i++) {\n dataView.setUint16(i * 2, text.charCodeAt(i), littleEndian);\n }\n return res;\n }\n}\nclass Convert {\n static isHex(data) {\n return typeof data === STRING_TYPE\n && HEX_REGEX.test(data);\n }\n static isBase64(data) {\n return typeof data === STRING_TYPE\n && BASE64_REGEX.test(data);\n }\n static isBase64Url(data) {\n return typeof data === STRING_TYPE\n && BASE64URL_REGEX.test(data);\n }\n static ToString(buffer, enc = \"utf8\") {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n switch (enc.toLowerCase()) {\n case \"utf8\":\n return this.ToUtf8String(buf);\n case \"binary\":\n return this.ToBinary(buf);\n case \"hex\":\n return this.ToHex(buf);\n case \"base64\":\n return this.ToBase64(buf);\n case \"base64url\":\n return this.ToBase64Url(buf);\n case \"utf16le\":\n return Utf16Converter.toString(buf, true);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.toString(buf);\n default:\n throw new Error(`Unknown type of encoding '${enc}'`);\n }\n }\n static FromString(str, enc = \"utf8\") {\n if (!str) {\n return new ArrayBuffer(0);\n }\n switch (enc.toLowerCase()) {\n case \"utf8\":\n return this.FromUtf8String(str);\n case \"binary\":\n return this.FromBinary(str);\n case \"hex\":\n return this.FromHex(str);\n case \"base64\":\n return this.FromBase64(str);\n case \"base64url\":\n return this.FromBase64Url(str);\n case \"utf16le\":\n return Utf16Converter.fromString(str, true);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.fromString(str);\n default:\n throw new Error(`Unknown type of encoding '${enc}'`);\n }\n }\n static ToBase64(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n if (typeof btoa !== \"undefined\") {\n const binary = this.ToString(buf, \"binary\");\n return btoa(binary);\n }\n else {\n return Buffer.from(buf).toString(\"base64\");\n }\n }\n static FromBase64(base64) {\n const formatted = this.formatString(base64);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isBase64(formatted)) {\n throw new TypeError(\"Argument 'base64Text' is not Base64 encoded\");\n }\n if (typeof atob !== \"undefined\") {\n return this.FromBinary(atob(formatted));\n }\n else {\n return new Uint8Array(Buffer.from(formatted, \"base64\")).buffer;\n }\n }\n static FromBase64Url(base64url) {\n const formatted = this.formatString(base64url);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isBase64Url(formatted)) {\n throw new TypeError(\"Argument 'base64url' is not Base64Url encoded\");\n }\n return this.FromBase64(this.Base64Padding(formatted.replace(/\\-/g, \"+\").replace(/\\_/g, \"/\")));\n }\n static ToBase64Url(data) {\n return this.ToBase64(data).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/\\=/g, \"\");\n }\n static FromUtf8String(text, encoding = Convert.DEFAULT_UTF8_ENCODING) {\n switch (encoding) {\n case \"ascii\":\n return this.FromBinary(text);\n case \"utf8\":\n return Utf8Converter.fromString(text);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.fromString(text);\n case \"utf16le\":\n case \"usc2\":\n return Utf16Converter.fromString(text, true);\n default:\n throw new Error(`Unknown type of encoding '${encoding}'`);\n }\n }\n static ToUtf8String(buffer, encoding = Convert.DEFAULT_UTF8_ENCODING) {\n switch (encoding) {\n case \"ascii\":\n return this.ToBinary(buffer);\n case \"utf8\":\n return Utf8Converter.toString(buffer);\n case \"utf16\":\n case \"utf16be\":\n return Utf16Converter.toString(buffer);\n case \"utf16le\":\n case \"usc2\":\n return Utf16Converter.toString(buffer, true);\n default:\n throw new Error(`Unknown type of encoding '${encoding}'`);\n }\n }\n static FromBinary(text) {\n const stringLength = text.length;\n const resultView = new Uint8Array(stringLength);\n for (let i = 0; i < stringLength; i++) {\n resultView[i] = text.charCodeAt(i);\n }\n return resultView.buffer;\n }\n static ToBinary(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let res = \"\";\n for (let i = 0; i < buf.length; i++) {\n res += String.fromCharCode(buf[i]);\n }\n return res;\n }\n static ToHex(buffer) {\n const buf = BufferSourceConverter.toUint8Array(buffer);\n let result = \"\";\n const len = buf.length;\n for (let i = 0; i < len; i++) {\n const byte = buf[i];\n if (byte < 16) {\n result += \"0\";\n }\n result += byte.toString(16);\n }\n return result;\n }\n static FromHex(hexString) {\n let formatted = this.formatString(hexString);\n if (!formatted) {\n return new ArrayBuffer(0);\n }\n if (!Convert.isHex(formatted)) {\n throw new TypeError(\"Argument 'hexString' is not HEX encoded\");\n }\n if (formatted.length % 2) {\n formatted = `0${formatted}`;\n }\n const res = new Uint8Array(formatted.length / 2);\n for (let i = 0; i < formatted.length; i = i + 2) {\n const c = formatted.slice(i, i + 2);\n res[i / 2] = parseInt(c, 16);\n }\n return res.buffer;\n }\n static ToUtf16String(buffer, littleEndian = false) {\n return Utf16Converter.toString(buffer, littleEndian);\n }\n static FromUtf16String(text, littleEndian = false) {\n return Utf16Converter.fromString(text, littleEndian);\n }\n static Base64Padding(base64) {\n const padCount = 4 - (base64.length % 4);\n if (padCount < 4) {\n for (let i = 0; i < padCount; i++) {\n base64 += \"=\";\n }\n }\n return base64;\n }\n static formatString(data) {\n return (data === null || data === void 0 ? void 0 : data.replace(/[\\n\\r\\t ]/g, \"\")) || \"\";\n }\n}\nConvert.DEFAULT_UTF8_ENCODING = \"utf8\";\n\nfunction assign(target, ...sources) {\n const res = arguments[0];\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i];\n for (const prop in obj) {\n res[prop] = obj[prop];\n }\n }\n return res;\n}\nfunction combine(...buf) {\n const totalByteLength = buf.map((item) => item.byteLength).reduce((prev, cur) => prev + cur);\n const res = new Uint8Array(totalByteLength);\n let currentPos = 0;\n buf.map((item) => new Uint8Array(item)).forEach((arr) => {\n for (const item2 of arr) {\n res[currentPos++] = item2;\n }\n });\n return res.buffer;\n}\nfunction isEqual(bytes1, bytes2) {\n if (!(bytes1 && bytes2)) {\n return false;\n }\n if (bytes1.byteLength !== bytes2.byteLength) {\n return false;\n }\n const b1 = new Uint8Array(bytes1);\n const b2 = new Uint8Array(bytes2);\n for (let i = 0; i < bytes1.byteLength; i++) {\n if (b1[i] !== b2[i]) {\n return false;\n }\n }\n return true;\n}\n\nexports.BufferSourceConverter = BufferSourceConverter;\nexports.Convert = Convert;\nexports.assign = assign;\nexports.combine = combine;\nexports.isEqual = isEqual;\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// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\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'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).filter(Boolean).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || ''\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\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}\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 > 65536) throw new Error('requested too many random bytes')\n // in case browserify isn't using the Uint8Array version\n var rawBytes = new global.Uint8Array(size)\n\n // This will not work in older browsers.\n // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n if (size > 0) { // getRandomValues fails on IE if size == 0\n crypto.getRandomValues(rawBytes)\n }\n\n // XXX: phantomjs doesn't like a buffer being passed here\n var bytes = Buffer.from(rawBytes.buffer)\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 _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","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');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.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 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","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SimpleCrypto = void 0;\n/**\n * SimpleCryptoJS\n *\n * Simplified AES cryptography for safer and easier encryption and decryption processes\n * of any JavaScript objects.\n **/\nvar crypto_js_1 = require(\"crypto-js\");\n/**\n * SimpleCrypto\n *\n * @class\n */\nvar SimpleCrypto = /** @class */ (function () {\n /**\n * Represent a SimpleCrypto instance\n *\n * @constructor\n * @param\t{string}\tsecret\t\tThe secret key for cryptographic process.\n */\n function SimpleCrypto(secret) {\n if (secret === void 0) {\n throw new Error(\"SimpleCrypto object MUST BE initialised with a SECRET KEY.\");\n }\n this._dataBuffer = \"\";\n this._encoder = crypto_js_1.enc.Utf8;\n this._secret = (0, crypto_js_1.SHA3)(typeof secret === \"string\" ? secret : secret.toString());\n this._keySize = 256;\n this._iterations = 100;\n }\n SimpleCrypto.sanitiseData = function (data) {\n if (data === void 0 || data === null) {\n throw new Error(\"There is no data provided. Process halted.\");\n }\n var sanitised = typeof data === \"object\"\n ? JSON.stringify(data)\n : typeof data === \"string\" || typeof data === \"number\" || typeof data === \"boolean\"\n ? data.toString()\n : null;\n if (null === sanitised) {\n throw new Error(\"Invalid data type. Only object, string, number and boolean data types are allowed.\");\n }\n return sanitised;\n };\n SimpleCrypto.transform = function (src) {\n if (src.toLowerCase() === \"true\" || src.toLowerCase() === \"false\") {\n return src.toLowerCase() === \"true\";\n }\n try {\n return JSON.parse(src);\n }\n catch (jsonError) {\n return /^-?[\\d.]+(?:e-?\\d+)?$/.test(src) && !isNaN(parseFloat(src)) ? parseFloat(src) : src;\n }\n };\n Object.defineProperty(SimpleCrypto, \"encoders\", {\n /**\n * Encoders\n *\n * Get Encoder instance available.\n *\n * @since\t\t2017.10.16\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @see WordArray\n *\n * @return {Encoders} Returns object of Encoder instances.\n */\n get: function () {\n return __assign({ Default: crypto_js_1.enc.Utf8 }, crypto_js_1.enc);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Generate Random\n *\n * Generate a random string or WordArray.\n *\n * @since\t\t2017.10.16\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @see WordArray\n *\n * @param {number} length \t\tThe length of random to be generated.\n * @param {boolean} expectsWordArray\tSet to true to return WordArray instance.\n * Default is false and return a string.\n *\n * @return {string | WordArray} Returns a random string or WordArray.\n */\n SimpleCrypto.generateRandom = function (length, expectsWordArray) {\n if (length === void 0) { length = 128; }\n if (expectsWordArray === void 0) { expectsWordArray = false; }\n var random = crypto_js_1.lib.WordArray.random(length / 8);\n return expectsWordArray ? random : random.toString();\n };\n /**\n * Generate Random String\n *\n * Generate a random string\n *\n * @since\t\t2020.05.09\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @see WordArray\n *\n * @param {number} length \t\tThe length of random to be generated.\n *\n * @return {string | WordArray} Returns a random string.\n */\n SimpleCrypto.generateRandomString = function (length) {\n if (length === void 0) { length = 128; }\n return SimpleCrypto.generateRandom(length, false);\n };\n /**\n * Generate Random Word Array\n *\n * Generate a random WordArray.\n *\n * @since\t\t2020.05.09\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @see WordArray\n *\n * @param {number} length \t\tThe length of random to be generated.\n *\n * @return {string | WordArray} Returns a random WordArray.\n */\n SimpleCrypto.generateRandomWordArray = function (length) {\n if (length === void 0) { length = 128; }\n return SimpleCrypto.generateRandom(length, true);\n };\n SimpleCrypto.prototype._decrypt = function () {\n if (this._dataBuffer.length <= 64) {\n throw new Error(\"Invalid cipher text. Decryption halted.\");\n }\n var salt = crypto_js_1.enc.Hex.parse(this._dataBuffer.substring(0, 32));\n var initialVector = crypto_js_1.enc.Hex.parse(this._dataBuffer.substring(32, 64));\n var encrypted = this._dataBuffer.substring(64, this._dataBuffer.length - 64);\n var key = (0, crypto_js_1.PBKDF2)(this._secret.toString(), salt, {\n keySize: this._keySize / 32,\n iterations: this._iterations,\n });\n var hashedCipherText = this._dataBuffer.substring(this._dataBuffer.length - 64);\n var cipherText = this._dataBuffer.substring(0, this._dataBuffer.length - 64);\n if (hashedCipherText != (0, crypto_js_1.HmacSHA256)(cipherText, key).toString()) {\n throw new Error(\"Invalid encrypted text received. Decryption halted.\");\n }\n var decrypted = crypto_js_1.AES.decrypt(encrypted, key, {\n iv: initialVector,\n padding: crypto_js_1.pad.Pkcs7,\n mode: crypto_js_1.mode.CBC,\n });\n return SimpleCrypto.transform(decrypted.toString(SimpleCrypto.encoders.Default));\n };\n SimpleCrypto.prototype._encrypt = function () {\n var salt = SimpleCrypto.generateRandom(128, true);\n var initialVector = SimpleCrypto.generateRandom(128, true);\n var key = (0, crypto_js_1.PBKDF2)(this._secret.toString(), salt, {\n keySize: this._keySize / 32,\n iterations: this._iterations,\n });\n var encrypted = crypto_js_1.AES.encrypt(this._dataBuffer, key, {\n iv: initialVector,\n padding: crypto_js_1.pad.Pkcs7,\n mode: crypto_js_1.mode.CBC,\n });\n // Combining the encrypted string with salt and IV to form cipher-text\n var cipherText = salt.toString() + initialVector.toString() + encrypted.toString();\n // Generate authentication tag and append that to the cipher-text using the key derived from PBKDF2.\n // (Optional TODO: Include a module to generate authentication key. Possibly HKDF-SHA256.)\n var hashedCipherText = (0, crypto_js_1.HmacSHA256)(cipherText, key).toString();\n return cipherText + hashedCipherText;\n };\n SimpleCrypto.prototype.decrypt = function (cipher, secondArg, thirdArg) {\n var _this = this;\n var setDecryptionOption = function (arg) {\n if (typeof arg !== \"boolean\")\n _this.setEncoder(arg);\n };\n try {\n if (cipher !== void 0) {\n this.update(cipher);\n }\n if (secondArg !== void 0) {\n setDecryptionOption(secondArg);\n }\n if (thirdArg !== void 0) {\n setDecryptionOption(thirdArg);\n }\n return this._decrypt();\n }\n catch (error) {\n throw error;\n }\n };\n SimpleCrypto.prototype.encrypt = function (data) {\n try {\n if (data !== void 0) {\n this.update(data);\n }\n return this._encrypt();\n }\n catch (error) {\n throw error;\n }\n };\n /**\n * Decrypt Object\n *\n * Decrypt a encrypted string and try to convert it back to object.\n *\n * @since\t\t2017.10.16\n * @access\t\tpublic\n * @deprecated\tSince version 2.0.0, use decrypt(cipher: CipherText) instead.\n *\n * @memberOf SimpleCrypto\n *\n * @see\t\tdecrypt\n *\n * @param {string}\tcipher\t\tThe encrypted string of the data.\n *\n * @return {string}\tThe decrypted data of the encrypted string in the form\n * of object.\n */\n SimpleCrypto.prototype.decryptObject = function (cipher) {\n return this.update(cipher).decrypt();\n };\n /**\n * Encrypt Object\n *\n * Encrypt an object.\n *\n * @since\t\t2017.10.16\n * @access\t\tpublic\n * @deprecated\tSince version 2.0.0, use encrypt(data: PlainData) instead.\n *\n * @memberOf SimpleCrypto\n *\n * @see\t\tencrypt\n *\n * @param {object}\tobject\t\tThe object to be encrypted.\n *\n * @return {string}\tThe encrypted string of the object.\n */\n SimpleCrypto.prototype.encryptObject = function (object) {\n return this.update(object).encrypt();\n };\n /**\n * Append\n *\n * Append the data to be encrypted or decrypted.\n *\n * @since\t\t2020.05.09\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @param {object | string | number | boolean}\tdata\tData to be encrypted or decrypted.\n *\n * @return {SimpleCrypto}\t\tCurrent SimpleCrypto instance.\n */\n SimpleCrypto.prototype.append = function (data) {\n try {\n this._dataBuffer = this._dataBuffer + SimpleCrypto.sanitiseData(data);\n return this;\n }\n catch (error) {\n throw error;\n }\n };\n /**\n * Update\n *\n * Change data to be encrypted or decrypted.\n *\n * @since\t\t2020.05.09\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @param {object | string | number | boolean}\tdata\tData to be encrypted or decrypted.\n *\n * @return {SimpleCrypto}\t\tCurrent SimpleCrypto instance.\n */\n SimpleCrypto.prototype.update = function (data) {\n try {\n this._dataBuffer = SimpleCrypto.sanitiseData(data);\n return this;\n }\n catch (error) {\n throw error;\n }\n };\n /**\n * Set Encoder\n *\n * Change the default encoding type for the decryption process.\n *\n * @since\t\t2020.05.09\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @param {Encoder}\tencoder\t\tThe new Encoder object.\n *\n * @return {SimpleCrypto}\t\tCurrent SimpleCrypto instance.\n */\n SimpleCrypto.prototype.setEncoder = function (encoder) {\n /*\n * TODO: Encoding support is dropped at the moment, both for encryption\n * and decryption. We should figure out how we have to implement encoding\n * support in the simplest way possible.\n * */\n this._encoder = encoder;\n return this;\n };\n /**\n * Set Secret\n *\n * Change the secret key by setting a new one. By changing the secret key,\n * any encrypted string that encrypted by previous secret key will not be\n * able to decrypted, unless the secret key is set to the one used to\n * encrypt the data.\n *\n * @since\t\t2017.10.16\n * @access\t\tpublic\n *\n * @memberOf SimpleCrypto\n *\n * @param {string}\tsecret\t\tThe new secret key as string.\n *\n * @return {SimpleCrypto}\t\tCurrent SimpleCrypto instance.\n */\n SimpleCrypto.prototype.setSecret = function (secret) {\n this._secret = (0, crypto_js_1.SHA3)(typeof secret === \"string\" ? secret : secret.toString());\n return this;\n };\n return SimpleCrypto;\n}());\nexports.SimpleCrypto = SimpleCrypto;\nexports.default = SimpleCrypto;\n//# sourceMappingURL=SimpleCrypto.js.map","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\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\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","// 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}","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","\"use strict\";\n/**\n * This is a very simple strongly typed event emitter class, see README.md\n * for more details.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexports.__esModule = true;\nexports.createEventEmitter = exports.Event = exports.createEmitter = exports.SealedEvent = exports.BaseEvent = void 0;\n/**\n * A ts-typed-events event to register callbacks on to be invoked when they are\n * emitted.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * Marked as protected to discourage creation outside of\n * createEventEmitter().\n */\n function BaseEvent() {\n /** All the current listeners for this event. */\n this.listeners = [];\n // pass\n }\n /**\n * Attaches a callback to trigger on all emits for this event.\n *\n * @param callback - The callback to invoke on all emits.\n */\n BaseEvent.prototype.on = function (callback) {\n this.listeners.push({\n once: false,\n callback: callback\n });\n };\n /**\n * Attaches a callback to trigger on only the first emit for this event.\n *\n * This version either takes a callback or returns a promise.\n *\n * @param callback - Optional callback, if specified invokes the callback\n * only once when the event is triggered, then removes it.\n * Otherwise returns a promise that resolves with the value the next time\n * this event is triggered.\n * @returns Nothing if a callback is passed, otherwise a Promise that\n * should resolve once this Event emits.\n */\n BaseEvent.prototype.once = function (callback) {\n var _this = this;\n if (!callback) {\n // then they want us to return the promise\n var promise = new Promise(function (resolve) {\n // this will invoke the version that has a callback,\n // so resolve can be used as the callback\n _this.once(resolve);\n });\n // attach the promise we just made to the listener (it was pushed\n // on the end via this.once() above)\n this.listeners[this.listeners.length - 1].promise = promise;\n return promise;\n }\n // else we were sent a normal callback, so attach it\n this.listeners.push({\n once: true,\n callback: callback\n });\n };\n /**\n * Removes a callback from this event (regardless of once vs on).\n *\n * Returns true if a callback was removed, false otherwise.\n *\n * @param listener - The callback to remove.\n * @returns True if a callback was removed, false otherwise.\n */\n BaseEvent.prototype.off = function (listener) {\n var originalLength = this.listeners.length;\n // remove all listeners that have the same callback as this one\n this.listeners = this.listeners.filter(function (l) {\n return listener !== l.callback && (!l.promise || listener !== l.promise);\n });\n return this.listeners.length !== originalLength;\n };\n /**\n * Removes ALL callbacks from this event, regardless of once vs on.\n *\n * Returns the number of listeners removed.\n *\n * @returns The number of listeners removed.\n */\n BaseEvent.prototype.offAll = function () {\n var originalLength = this.listeners.length;\n this.listeners.length = 0; // empty our listener array\n return originalLength;\n };\n return BaseEvent;\n}());\nexports.BaseEvent = BaseEvent;\n/**\n * A ts-typed-events event to register callbacks on to be invoked when they are\n * emitted.\n *\n * This Event class signifies the event is \"sealed\" from the outside and cannot\n * be emitted through itself. The emitter function is separated.\n */\nvar SealedEvent = /** @class */ (function (_super) {\n __extends(SealedEvent, _super);\n function SealedEvent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return SealedEvent;\n}(BaseEvent));\nexports.SealedEvent = SealedEvent;\n/** @internal */\nfunction createEmitterWithBaseEvent(event) {\n // Hack-y, we are reaching into to grab the listeners\n // realistically, this would be a friend style function\n var publicListenersEvent = event;\n /**\n * The emitter function for the event.\n *\n * @param emitting - Whatever is being emitted.\n * @returns True if any listeners were emitted to, false otherwise.\n */\n function emit(emitting) {\n var listeners = publicListenersEvent.listeners;\n var hadListeners = listeners.length > 0;\n for (var _i = 0, listeners_1 = listeners; _i < listeners_1.length; _i++) {\n var listener = listeners_1[_i];\n listener.callback(emitting);\n }\n // remove all listeners that only wanted to listen once\n publicListenersEvent.listeners = listeners.filter(function (_a) {\n var once = _a.once;\n return !once;\n });\n return hadListeners;\n }\n // Hack: Need to find a better way to convince TS this function will have\n // the correct keys on these circular functions.\n /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n var func = emit;\n func.event = event;\n func.emit = emit;\n var emitter = func;\n /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n return emitter;\n}\n/**\n * Creates and returns an emitter for a SealedEvent, with the event keyed off\n * the emitter via `.event`.\n *\n * @returns An emitter function that will emit to the `.event` SealedEvent.\n */\nfunction createEmitter() {\n // This is a hack-y way to create a new class instance that doesn't want you\n // to.\n var EventClass = SealedEvent;\n return createEmitterWithBaseEvent(new EventClass());\n}\nexports.createEmitter = createEmitter;\n/**\n * A specialized Event that holds a reference to its own emit function.\n * This allows any code with access to the Event to also trigger emits.\n */\nvar Event = /** @class */ (function (_super) {\n __extends(Event, _super);\n /**\n * Creates a new Event, with its emit accessible as a member function.\n */\n function Event() {\n var _this = _super.call(this) || this;\n /**\n * Emits a value to all the listeners, triggering their callbacks.\n * Returns true if the event had listeners emitted to,\n * false otherwise.\n * Because this exists on the event, any code with access to this event\n * can trigger the callback for all listeners.\n *\n * @param emitting - If the Event has a type, this is the data of that type\n * to emit to all listeners. If no type (undefined) this argument should\n * be omitted.\n * @returns True if the event had listeners emitted to, false otherwise.\n */\n _this.emit = createEmitterWithBaseEvent(_this);\n return _this;\n }\n return Event;\n}(BaseEvent));\nexports.Event = Event;\n/**\n * Creates and returns an emitter for an Event, with the event keyed off\n * the emitter via `.event`.\n * **Note**: The `event` here is will have a member function `.emit` that emits\n * to the same function as the emitter returned here.\n *\n * @returns An emitter function that will emit to the `.event` Event.\n */\nfunction createEventEmitter() {\n return createEmitterWithBaseEvent(new Event());\n}\nexports.createEventEmitter = createEventEmitter;\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\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\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Anchor = void 0;\nconst universal_authenticator_library_1 = require(\"universal-authenticator-library\");\nconst anchor_link_1 = __importDefault(require(\"anchor-link\"));\nconst eosjs_1 = require(\"eosjs\");\nconst eosio_1 = require(\"@greymass/eosio\");\nconst interfaces_1 = require(\"./interfaces\");\nconst AnchorUser_1 = require(\"./AnchorUser\");\nconst AnchorLogo_1 = require(\"./AnchorLogo\");\nconst UALAnchorError_1 = require(\"./UALAnchorError\");\nconst anchor_link_browser_transport_1 = __importDefault(require(\"anchor-link-browser-transport\"));\nclass Anchor extends universal_authenticator_library_1.Authenticator {\n /**\n * Anchor Constructor.\n *\n * @param chains\n * @param options { appName } appName is a required option to use Scatter\n */\n constructor(chains, options) {\n super(chains);\n // Storage for AnchorUser instances\n this.users = [];\n // the callback service url, defaults to https://cb.anchor.link\n this.service = \"https://cb.anchor.link\";\n // disable Greymass Fuel cosigning, defaults to false\n this.disableGreymassFuel = false;\n // display the request status returned by anchor-link, defaults to false (ual has it's own)\n this.requestStatus = false;\n // The referral account used in Fuel transactions\n this.fuelReferrer = \"teamgreymass\";\n // Whether anchor-link should be configured to verify identity proofs in the browser for the app\n this.verifyProofs = false;\n // Establish initial values\n this.chainId = chains[0].chainId;\n this.users = [];\n // Determine the default rpc endpoint for this chain\n const [chain] = chains;\n const [rpc] = chain.rpcEndpoints;\n // Ensure the appName is set properly\n if (options && options.appName) {\n this.appName = options.appName;\n }\n else {\n throw new UALAnchorError_1.UALAnchorError(\"ual-anchor requires the appName property to be set on the `options` argument during initialization.\", universal_authenticator_library_1.UALErrorType.Initialization, null);\n }\n // Allow overriding the JsonRpc client via options\n if (options && options.rpc) {\n this.rpc = options.rpc;\n }\n else {\n // otherwise just return a generic rpc instance for this endpoint\n this.rpc = new eosjs_1.JsonRpc(`${rpc.protocol}://${rpc.host}:${rpc.port}`);\n }\n // Allow overriding the APIClient via options\n if (options && options.client) {\n this.client = options.client;\n }\n else {\n const provider = new eosio_1.FetchProvider(`${rpc.protocol}://${rpc.host}:${rpc.port}`);\n this.client = new eosio_1.APIClient({ provider });\n }\n // Allow passing a custom service URL to process callbacks\n if (options.service) {\n this.service = options.service;\n }\n // Allow passing of disable flag for Greymass Fuel\n if (options && options.disableGreymassFuel) {\n this.disableGreymassFuel = options.disableGreymassFuel;\n }\n // Allow passing of disable flag for resulting request status\n if (options && options.requestStatus) {\n this.requestStatus = options.requestStatus;\n }\n // Allow specifying a Fuel referral account\n if (options && options.fuelReferrer) {\n this.fuelReferrer = options.fuelReferrer;\n }\n // Allow overriding the proof verification option\n if (options && options.verifyProofs) {\n this.verifyProofs = options.verifyProofs;\n }\n }\n /**\n * Called after `shouldRender` and should be used to handle any async actions required to initialize the authenticator\n */\n init() {\n return __awaiter(this, void 0, void 0, function* () {\n // establish anchor-link\n this.link = new anchor_link_1.default({\n chains: [\n {\n chainId: this.chainId,\n nodeUrl: this.client,\n },\n ],\n service: this.service,\n transport: new anchor_link_browser_transport_1.default({\n requestStatus: this.requestStatus,\n disableGreymassFuel: this.disableGreymassFuel,\n fuelReferrer: this.fuelReferrer,\n }),\n verifyProofs: this.verifyProofs,\n });\n // attempt to restore any existing session for this app\n const session = yield this.link.restoreSession(this.appName);\n if (session) {\n this.users = [new AnchorUser_1.AnchorUser(this.rpc, this.client, { session })];\n }\n });\n }\n /**\n * Resets the authenticator to its initial, default state then calls `init` method\n */\n reset() {\n this.users = [];\n }\n /**\n * Returns true if the authenticator has errored while initializing.\n */\n isErrored() {\n return false;\n }\n /**\n * Returns a URL where the user can download and install the underlying authenticator\n * if it is not found by the UAL Authenticator.\n */\n getOnboardingLink() {\n return \"https://github.com/greymass/anchor/\";\n }\n /**\n * Returns error (if available) if the authenticator has errored while initializing.\n */\n getError() {\n return null;\n }\n /**\n * Returns true if the authenticator is loading while initializing its internal state.\n */\n isLoading() {\n return false;\n }\n getName() {\n return \"anchor\";\n }\n /**\n * Returns the style of the Button that will be rendered.\n */\n getStyle() {\n return {\n icon: AnchorLogo_1.AnchorLogo,\n text: interfaces_1.Name,\n textColor: \"white\",\n background: \"#3650A2\",\n };\n }\n /**\n * Returns whether or not the button should render based on the operating environment and other factors.\n * ie. If your Authenticator App does not support mobile, it returns false when running in a mobile browser.\n */\n shouldRender() {\n return !this.isLoading();\n }\n /**\n * Returns whether or not the dapp should attempt to auto login with the Authenticator app.\n * Auto login will only occur when there is only one Authenticator that returns shouldRender() true and\n * shouldAutoLogin() true.\n */\n shouldAutoLogin() {\n return this.users.length > 0;\n }\n /**\n * Returns whether or not the button should show an account name input field.\n * This is for Authenticators that do not have a concept of account names.\n */\n shouldRequestAccountName() {\n return __awaiter(this, void 0, void 0, function* () {\n return false;\n });\n }\n /**\n * Login using the Authenticator App. This can return one or more users depending on multiple chain support.\n *\n * @param accountName The account name of the user for Authenticators that do not store accounts (optional)\n */\n login() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.chains.length > 1) {\n throw new UALAnchorError_1.UALAnchorError(\"UAL-Anchor does not yet support providing multiple chains to UAL. Please initialize the UAL provider with a single chain.\", universal_authenticator_library_1.UALErrorType.Unsupported, null);\n }\n try {\n // only call the login method if no users exist, to prevent UI from prompting for login during auto login\n // some changes to UAL are going to be required to support multiple users\n if (this.users.length === 0) {\n const identity = yield this.link.login(this.appName);\n this.users = [new AnchorUser_1.AnchorUser(this.rpc, this.client, identity)];\n }\n }\n catch (e) {\n throw new UALAnchorError_1.UALAnchorError(e.message, universal_authenticator_library_1.UALErrorType.Login, e);\n }\n return this.users;\n });\n }\n /**\n * Logs the user out of the dapp. This will be strongly dependent on each Authenticator app's patterns.\n */\n logout() {\n return __awaiter(this, void 0, void 0, function* () {\n // Ensure a user exists to logout\n if (this.users.length) {\n // retrieve the current user\n const [user] = this.users;\n // retrieve the auth from the current user\n const { session: { auth }, } = user;\n // remove the session from anchor-link\n yield this.link.removeSession(this.appName, auth, this.chainId);\n }\n // reset the authenticator\n this.reset();\n });\n }\n /**\n * Returns true if user confirmation is required for `getKeys`\n */\n requiresGetKeyConfirmation() {\n return false;\n }\n}\nexports.Anchor = Anchor;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchorLogo = void 0;\nexports.AnchorLogo = `data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS40NCwgMCwgMCwgMS40NCwgLTguNTAxOTI1LCAtNTcuMDc0NTcpIiBzdHlsZT0iIj4KICAgIDx0aXRsZT5XaGl0ZTwvdGl0bGU+CiAgICA8Y2lyY2xlIGN4PSI5NC43OTMiIGN5PSIxMjguNTI0IiByPSI4MCIgZmlsbD0iI0ZCRkRGRiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0gOTQuNzk5IDc4LjUyNCBDIDk3LjA5OCA3OC41MjQgOTkuMTk1IDc5LjgzNyAxMDAuMTk4IDgxLjkwNiBMIDEyNC4yMDQgMTMxLjQwNiBMIDEyNC43NDYgMTMyLjUyNCBMIDExMS40MDkgMTMyLjUyNCBMIDEwNy41MyAxMjQuNTI0IEwgODIuMDY5IDEyNC41MjQgTCA3OC4xODkgMTMyLjUyNCBMIDY0Ljg1MyAxMzIuNTI0IEwgNjUuMzk1IDEzMS40MDYgTCA4OS40MDEgODEuOTA2IEMgOTAuNDA0IDc5LjgzNyA5Mi41MDEgNzguNTI0IDk0Ljc5OSA3OC41MjQgWiBNIDg2LjkxOSAxMTQuNTI0IEwgMTAyLjY4IDExNC41MjQgTCA5NC43OTkgOTguMjc0IEwgODYuOTE5IDExNC41MjQgWiBNIDExMi43OTMgMTQ5LjUyNCBMIDEyNC43OTggMTQ5LjUyNCBDIDEyNC40MzcgMTY1LjY3NiAxMTEuMDY3IDE3OC41MjQgOTQuNzk5IDE3OC41MjQgQyA3OC41MzIgMTc4LjUyNCA2NS4xNjIgMTY1LjY3NiA2NC44MDEgMTQ5LjUyNCBMIDc2LjgwNiAxNDkuNTI0IEMgNzcuMDg3IDE1Ni44NzggODEuOTc0IDE2My4xNTUgODguNzkzIDE2NS41MiBMIDg4Ljc5MyAxNDEuNTI0IEMgODguNzkzIDEzOC4yMSA5MS40OCAxMzUuNTI0IDk0Ljc5MyAxMzUuNTI0IEMgOTguMTA3IDEzNS41MjQgMTAwLjc5MyAxMzguMjEgMTAwLjc5MyAxNDEuNTI0IEwgMTAwLjc5MyAxNjUuNTI0IEMgMTA3LjYyIDE2My4xNjIgMTEyLjUxMSAxNTYuODgzIDExMi43OTMgMTQ5LjUyNCBaIiBmaWxsPSIjMzY1MEEyIi8+CiAgPC9nPgo8L3N2Zz4=`;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnchorUser = void 0;\nconst universal_authenticator_library_1 = require(\"universal-authenticator-library\");\nconst eosio_1 = require(\"@greymass/eosio\");\nconst UALAnchorError_1 = require(\"./UALAnchorError\");\nclass AnchorUser extends universal_authenticator_library_1.User {\n constructor(rpc, client, identity) {\n super();\n this.accountName = \"\";\n this.requestPermission = \"\";\n const { session } = identity;\n this.accountName = String(session.auth.actor);\n this.chainId = String(session.chainId);\n if (identity.signatures) {\n [this.signerProof] = identity.signatures;\n }\n if (identity.signerKey) {\n this.signerKey = identity.signerKey;\n }\n if (identity.resolvedTransaction) {\n this.signerRequest = identity.transaction;\n }\n this.requestPermission = String(session.auth.permission);\n this.session = session;\n this.client = client;\n this.rpc = rpc;\n }\n objectify(data) {\n return JSON.parse(JSON.stringify(data));\n }\n signTransaction(transaction, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n let completedTransaction;\n // If this is not a transaction and expireSeconds is passed, form a transaction\n // Note: this needs to be done because the session transact doesn't understand eosjs transact options\n if (options.expireSeconds && !transaction.expiration) {\n const info = yield this.client.v1.chain.get_info();\n const tx = Object.assign(Object.assign({}, transaction), info.getTransactionHeader(options.expireSeconds));\n completedTransaction = yield this.session.transact(tx, options);\n }\n else {\n completedTransaction = yield this.session.transact(transaction, options);\n }\n const wasBroadcast = options.broadcast !== false;\n const serializedTransaction = eosio_1.PackedTransaction.fromSigned(eosio_1.SignedTransaction.from(completedTransaction.transaction));\n return this.returnEosjsTransaction(wasBroadcast, Object.assign(Object.assign({}, completedTransaction), { transaction_id: completedTransaction.payload.tx, serializedTransaction: serializedTransaction.packed_trx.array, signatures: this.objectify(completedTransaction.signatures) }));\n }\n catch (e) {\n const message = \"Unable to sign transaction\";\n const type = universal_authenticator_library_1.UALErrorType.Signing;\n const cause = e;\n throw new UALAnchorError_1.UALAnchorError(message, type, cause);\n }\n });\n }\n signArbitrary(publicKey, data, _) {\n return __awaiter(this, void 0, void 0, function* () {\n throw new UALAnchorError_1.UALAnchorError(`Anchor does not currently support signArbitrary(${publicKey}, ${data})`, universal_authenticator_library_1.UALErrorType.Unsupported, null);\n });\n }\n verifyKeyOwnership(challenge) {\n return __awaiter(this, void 0, void 0, function* () {\n throw new UALAnchorError_1.UALAnchorError(`Anchor does not currently support verifyKeyOwnership(${challenge})`, universal_authenticator_library_1.UALErrorType.Unsupported, null);\n });\n }\n getAccountName() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountName;\n });\n }\n getChainId() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.chainId;\n });\n }\n getKeys() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const keys = yield this.signatureProvider.getAvailableKeys(this.requestPermission);\n return keys;\n }\n catch (error) {\n const message = `Unable to getKeys for account ${this.accountName}.\n Please make sure your wallet is running.`;\n const type = universal_authenticator_library_1.UALErrorType.DataRequest;\n const cause = error;\n throw new UALAnchorError_1.UALAnchorError(message, type, cause);\n }\n });\n }\n isAccountValid() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const account = this.client &&\n (yield this.client.v1.chain.get_account(this.accountName));\n const actualKeys = this.extractAccountKeys(account);\n const authorizationKeys = yield this.getKeys();\n return (actualKeys.filter((key) => {\n return authorizationKeys.indexOf(key) !== -1;\n }).length > 0);\n }\n catch (e) {\n if (e.constructor.name === \"UALAnchorError\") {\n throw e;\n }\n const message = `Account validation failed for account ${this.accountName}.`;\n const type = universal_authenticator_library_1.UALErrorType.Validation;\n const cause = e;\n throw new UALAnchorError_1.UALAnchorError(message, type, cause);\n }\n });\n }\n extractAccountKeys(account) {\n const keySubsets = account.permissions.map((permission) => permission.required_auth.keys.map((key) => key.key));\n let keys = [];\n for (const keySubset of keySubsets) {\n keys = keys.concat(keySubset);\n }\n return keys;\n }\n}\nexports.AnchorUser = AnchorUser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UALAnchorError = void 0;\nconst universal_authenticator_library_1 = require(\"universal-authenticator-library\");\nconst eosio_1 = require(\"@greymass/eosio\");\nconst interfaces_1 = require(\"./interfaces\");\nclass UALAnchorError extends universal_authenticator_library_1.UALError {\n constructor(message, type, cause) {\n // Hackery to mimic an eosjs error using @greymass/eosio\n let m = message;\n let e = new Error(message);\n if (cause instanceof eosio_1.APIError) {\n if (cause.details && cause.details[0]) {\n m = cause.details[0].message;\n e = new Error(cause.details[0].message);\n }\n e.json = {\n code: 500,\n error: cause.error,\n message: \"Internal Service Error\",\n };\n }\n super(m, type, e, interfaces_1.Name);\n }\n}\nexports.UALAnchorError = UALAnchorError;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Anchor\"), exports);\n__exportStar(require(\"./AnchorUser\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Name = void 0;\nexports.Name = 'Anchor';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents Button that is rendered for, and interfaces with, a specific Authenticator app.\n */\nclass Authenticator {\n /**\n * @param chains This represents each of the chains that the dapp provides support for.\n *\n * @param options Optional argument that is intended for Authenticator specific options.\n */\n constructor(chains, options) {\n this.chains = chains;\n this.options = options;\n /**\n * Default value for shouldInvalidateAfter(), 1 week in seconds\n */\n this.defaultInvalidateAfter = 604800;\n }\n /**\n * Returns the amount of seconds after the authentication will be invalid for logging in on new\n * browser sessions. Setting this value to zero will cause users to re-attempt authentication on\n * every new browser session. Please note that the invalidate time will be saved client-side and\n * should not be relied on for security.\n */\n shouldInvalidateAfter() {\n return this.defaultInvalidateAfter;\n }\n}\nexports.Authenticator = Authenticator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * This class provides the business logic layer for the UAL.\n */\nclass UAL {\n /**\n * @param chains A list of chains the dapp supports.\n *\n * @param appName The name of the app using the authenticators\n *\n * @param authenticators A list of authenticator apps that the dapp supports.\n */\n constructor(chains, appName, authenticators) {\n this.chains = chains;\n this.appName = appName;\n this.authenticators = authenticators;\n }\n /**\n * Returns an object with a list of initialized Authenticators that returned true for shouldRender()\n * as well as an authenticator that supports autoLogin\n */\n getAuthenticators() {\n const availableAuthenticators = this.authenticators.filter((authenticator) => {\n return authenticator.shouldRender();\n });\n availableAuthenticators.forEach((authenticator) => authenticator.init());\n let autoLoginAuthenticator = null;\n if (availableAuthenticators.length === 1) {\n if (availableAuthenticators[0].shouldAutoLogin()) {\n autoLoginAuthenticator = availableAuthenticators[0];\n }\n }\n return {\n availableAuthenticators,\n autoLoginAuthenticator\n };\n }\n}\nexports.UAL = UAL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Types of errors that the UALError class can represent\n */\nvar UALErrorType;\n(function (UALErrorType) {\n UALErrorType[\"UAL\"] = \"UAL\";\n UALErrorType[\"Login\"] = \"Login\";\n UALErrorType[\"Logout\"] = \"Logout\";\n UALErrorType[\"Signing\"] = \"Signing\";\n UALErrorType[\"Validation\"] = \"Validation\";\n UALErrorType[\"Initialization\"] = \"Initialization\";\n UALErrorType[\"DataRequest\"] = \"DataRequest\";\n UALErrorType[\"Unsupported\"] = \"Unsupported\";\n})(UALErrorType = exports.UALErrorType || (exports.UALErrorType = {}));\n/**\n * Base error class for UAL errors.\n */\nclass UALError extends Error {\n /**\n * @param message Message describing the error\n *\n * @param source The name of the authenticator that is the source of the error\n *\n * @param cause The underlying Error (if any) that resulted in the current one being thrown\n */\n constructor(message, type, cause, source) {\n super(message);\n this.type = type;\n this.cause = cause;\n this.source = source;\n }\n}\nexports.UALError = UALError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Represents a logged in User and provides the ability to sign transactions as that user.\n */\nclass User {\n returnEosjsTransaction(wasBroadcast, completedTransaction) {\n if (wasBroadcast) {\n if (completedTransaction.hasOwnProperty('transaction_id')) {\n return {\n wasBroadcast: true,\n transactionId: completedTransaction.transaction_id,\n status: completedTransaction.processed.receipt.status,\n transaction: completedTransaction,\n };\n }\n else if (completedTransaction.hasOwnProperty('code')) {\n return {\n wasBroadcast: true,\n error: {\n code: completedTransaction.code,\n message: completedTransaction.message,\n name: completedTransaction.error.name,\n },\n transaction: completedTransaction,\n };\n }\n else {\n return {\n wasBroadcast: true,\n transaction: completedTransaction,\n };\n }\n }\n else {\n return {\n wasBroadcast: false,\n transaction: completedTransaction,\n };\n }\n }\n buildRpcEndpoint(endPoint) {\n let rpcEndpointString = `${endPoint.protocol}://${endPoint.host}:${endPoint.port}`;\n if (endPoint.path) {\n let separator = '/';\n if (endPoint.path.startsWith('/')) {\n separator = '';\n }\n rpcEndpointString = `${rpcEndpointString}${separator}${endPoint.path}`;\n }\n if (rpcEndpointString.endsWith('/')) {\n rpcEndpointString = rpcEndpointString.substring(0, rpcEndpointString.length - 1);\n }\n return rpcEndpointString;\n }\n}\nexports.User = User;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./Authenticator\"));\n__export(require(\"./UAL\"));\n__export(require(\"./interfaces\"));\n__export(require(\"./User\"));\n__export(require(\"./UALError\"));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UALLoggedInAuthType = 'UALLoggedInAuthType';\nexports.UALAccountName = 'UALAccountName';\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","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/**\n * vee-validate v3.4.15\n * (c) 2023 Abdelrahman Awad\n * @license MIT\n */\n/**\r\n * Some Alpha Regex helpers.\r\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\r\n */\r\n/* eslint-disable no-misleading-character-class */\r\nvar alpha$1 = {\r\n en: /^[A-Z]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[A-ZÆØÅ]*$/i,\r\n de: /^[A-ZÄÖÜß]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[А-ЯЁ]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[A-ZÅÄÖ]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n az: /^[A-ZÇƏĞİıÖŞÜ]*$/i,\r\n el: /^[Α-ώ]*$/i,\r\n ja: /^[A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF]*$/i,\r\n he: /^[A-Z\\u05D0-\\u05EA']*$/i\r\n};\r\nvar alphaSpaces = {\r\n en: /^[A-Z\\s]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\r\n da: /^[A-ZÆØÅ\\s]*$/i,\r\n de: /^[A-ZÄÖÜß\\s]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ\\s]*$/i,\r\n ru: /^[А-ЯЁ\\s]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\r\n sv: /^[A-ZÅÄÖ\\s]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\r\n az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i,\r\n el: /^[Α-ώ\\s]*$/i,\r\n ja: /^[A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF\\s]*$/i,\r\n he: /^[A-Z\\u05D0-\\u05EA'\\s]*$/i\r\n};\r\nvar alphanumeric = {\r\n en: /^[0-9A-Z]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[0-9A-ZÆØÅ]$/i,\r\n de: /^[0-9A-ZÄÖÜß]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[0-9А-ЯЁ]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\r\n az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i,\r\n el: /^[0-9Α-ώ]*$/i,\r\n ja: /^[0-9A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF]*$/i,\r\n he: /^[0-9A-Z\\u05D0-\\u05EA']*$/i\r\n};\r\nvar alphaDash = {\r\n en: /^[0-9A-Z_-]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\r\n da: /^[0-9A-ZÆØÅ_-]*$/i,\r\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\r\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ_-]*$/i,\r\n ru: /^[0-9А-ЯЁ_-]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\r\n az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i,\r\n el: /^[0-9Α-ώ_-]*$/i,\r\n ja: /^[0-9A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF_-]*$/i,\r\n he: /^[0-9A-Z\\u05D0-\\u05EA'_-]*$/i\r\n};\n\nvar validate$r = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$r(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alpha$1).some(function (loc) { return alpha$1[loc].test(value); });\r\n }\r\n return (alpha$1[locale] || alpha$1.en).test(value);\r\n};\r\nvar params$k = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha = {\r\n validate: validate$r,\r\n params: params$k\r\n};\n\nvar validate$q = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$q(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\r\n }\r\n return (alphaDash[locale] || alphaDash.en).test(value);\r\n};\r\nvar params$j = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_dash = {\r\n validate: validate$q,\r\n params: params$j\r\n};\n\nvar validate$p = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$p(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\r\n }\r\n return (alphanumeric[locale] || alphanumeric.en).test(value);\r\n};\r\nvar params$i = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_num = {\r\n validate: validate$p,\r\n params: params$i\r\n};\n\nvar validate$o = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$o(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\r\n }\r\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\r\n};\r\nvar params$h = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_spaces = {\r\n validate: validate$o,\r\n params: params$h\r\n};\n\nvar validate$n = function (value, _a) {\r\n var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return !!validate$n(val, { min: min, max: max }); });\r\n }\r\n return Number(min) <= value && Number(max) >= value;\r\n};\r\nvar params$g = [\r\n {\r\n name: 'min'\r\n },\r\n {\r\n name: 'max'\r\n }\r\n];\r\nvar between = {\r\n validate: validate$n,\r\n params: params$g\r\n};\n\nvar validate$m = function (value, _a) {\r\n var target = _a.target;\r\n return String(value) === String(target);\r\n};\r\nvar params$f = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n }\r\n];\r\nvar confirmed = {\r\n validate: validate$m,\r\n params: params$f\r\n};\n\nvar validate$l = function (value, _a) {\r\n var length = _a.length;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$l(val, { length: length }); });\r\n }\r\n var strVal = String(value);\r\n return /^[0-9]*$/.test(strVal) && strVal.length === length;\r\n};\r\nvar params$e = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar digits = {\r\n validate: validate$l,\r\n params: params$e\r\n};\n\nvar validateImage = function (file, width, height) {\r\n var URL = window.URL || window.webkitURL;\r\n return new Promise(function (resolve) {\r\n var image = new Image();\r\n image.onerror = function () { return resolve(false); };\r\n image.onload = function () { return resolve(image.width === width && image.height === height); };\r\n image.src = URL.createObjectURL(file);\r\n });\r\n};\r\nvar validate$k = function (files, _a) {\r\n var width = _a.width, height = _a.height;\r\n var list = [];\r\n files = Array.isArray(files) ? files : [files];\r\n for (var i = 0; i < files.length; i++) {\r\n // if file is not an image, reject.\r\n if (!/\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\r\n return Promise.resolve(false);\r\n }\r\n list.push(files[i]);\r\n }\r\n return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {\r\n return values.every(function (v) { return v; });\r\n });\r\n};\r\nvar params$d = [\r\n {\r\n name: 'width',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n },\r\n {\r\n name: 'height',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar dimensions = {\r\n validate: validate$k,\r\n params: params$d\r\n};\n\nvar validate$j = function (value, _a) {\r\n var multiple = (_a === void 0 ? {} : _a).multiple;\r\n // eslint-disable-next-line\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n if (multiple && !Array.isArray(value)) {\r\n value = String(value)\r\n .split(',')\r\n .map(function (emailStr) { return emailStr.trim(); });\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return re.test(String(val)); });\r\n }\r\n return re.test(String(value));\r\n};\r\nvar params$c = [\r\n {\r\n name: 'multiple',\r\n default: false\r\n }\r\n];\r\nvar email = {\r\n validate: validate$j,\r\n params: params$c\r\n};\n\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\n\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\n\nvar validate$i = function (value, options) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$i(val, options); });\r\n }\r\n return toArray(options).some(function (item) {\r\n // eslint-disable-next-line\r\n return item == value;\r\n });\r\n};\r\nvar oneOf = {\r\n validate: validate$i\r\n};\n\nvar validate$h = function (value, args) {\r\n return !validate$i(value, args);\r\n};\r\nvar excluded = {\r\n validate: validate$h\r\n};\n\nvar validate$g = function (files, extensions) {\r\n var regex = new RegExp(\".(\" + extensions.join('|') + \")$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar ext = {\r\n validate: validate$g\r\n};\n\nvar validate$f = function (files) {\r\n var regex = /\\.(jpg|svg|jpeg|png|bmp|gif|webp)$/i;\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar image = {\r\n validate: validate$f\r\n};\n\nvar validate$e = function (value) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\r\n }\r\n return /^-?[0-9]+$/.test(String(value));\r\n};\r\nvar integer = {\r\n validate: validate$e\r\n};\n\nvar validate$d = function (value, _a) {\r\n var other = _a.other;\r\n return value === other;\r\n};\r\nvar params$b = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is = {\r\n validate: validate$d,\r\n params: params$b\r\n};\n\nvar validate$c = function (value, _a) {\r\n var other = _a.other;\r\n return value !== other;\r\n};\r\nvar params$a = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is_not = {\r\n validate: validate$c,\r\n params: params$a\r\n};\n\nvar validate$b = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (typeof value === 'string') {\r\n value = toArray(value);\r\n }\r\n if (typeof value === 'number') {\r\n value = String(value);\r\n }\r\n if (!value.length) {\r\n value = toArray(value);\r\n }\r\n return value.length === length;\r\n};\r\nvar params$9 = [\r\n {\r\n name: 'length',\r\n cast: function (value) { return Number(value); }\r\n }\r\n];\r\nvar length = {\r\n validate: validate$b,\r\n params: params$9\r\n};\n\nvar validate$a = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return length >= 0;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$a(val, { length: length }); });\r\n }\r\n return String(value).length <= length;\r\n};\r\nvar params$8 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max = {\r\n validate: validate$a,\r\n params: params$8\r\n};\n\nvar validate$9 = function (value, _a) {\r\n var max = _a.max;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$9(val, { max: max }); });\r\n }\r\n return Number(value) <= max;\r\n};\r\nvar params$7 = [\r\n {\r\n name: 'max',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max_value = {\r\n validate: validate$9,\r\n params: params$7\r\n};\n\nvar validate$8 = function (files, mimes) {\r\n var regex = new RegExp(mimes.join('|').replace('*', '.+') + \"$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.type); });\r\n }\r\n return regex.test(files.type);\r\n};\r\nvar mimes = {\r\n validate: validate$8\r\n};\n\nvar validate$7 = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$7(val, { length: length }); });\r\n }\r\n return String(value).length >= length;\r\n};\r\nvar params$6 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min = {\r\n validate: validate$7,\r\n params: params$6\r\n};\n\nvar validate$6 = function (value, _a) {\r\n var min = _a.min;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$6(val, { min: min }); });\r\n }\r\n return Number(value) >= min;\r\n};\r\nvar params$5 = [\r\n {\r\n name: 'min',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min_value = {\r\n validate: validate$6,\r\n params: params$5\r\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\r\nvar en = /^[0-9]+$/;\r\nvar validate$5 = function (value) {\r\n var testValue = function (val) {\r\n var strValue = String(val);\r\n return en.test(strValue) || ar.test(strValue);\r\n };\r\n if (Array.isArray(value)) {\r\n return value.every(testValue);\r\n }\r\n return testValue(value);\r\n};\r\nvar numeric = {\r\n validate: validate$5\r\n};\n\nvar validate$4 = function (value, _a) {\r\n var regex = _a.regex;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$4(val, { regex: regex }); });\r\n }\r\n return regex.test(String(value));\r\n};\r\nvar params$4 = [\r\n {\r\n name: 'regex',\r\n cast: function (value) {\r\n if (typeof value === 'string') {\r\n return new RegExp(value);\r\n }\r\n return value;\r\n }\r\n }\r\n];\r\nvar regex = {\r\n validate: validate$4,\r\n params: params$4\r\n};\n\nvar validate$3 = function (value, _a) {\r\n var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;\r\n var result = {\r\n valid: false,\r\n required: true\r\n };\r\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\r\n return result;\r\n }\r\n // incase a field considers `false` as an empty value like checkboxes.\r\n if (value === false && !allowFalse) {\r\n return result;\r\n }\r\n result.valid = !!String(value).trim().length;\r\n return result;\r\n};\r\nvar computesRequired$1 = true;\r\nvar params$3 = [\r\n {\r\n name: 'allowFalse',\r\n default: true\r\n }\r\n];\r\nvar required = {\r\n validate: validate$3,\r\n params: params$3,\r\n computesRequired: computesRequired$1\r\n};\n\nvar testEmpty = function (value) {\r\n return isEmptyArray(value) || includes([false, null, undefined], value) || !String(value).trim().length;\r\n};\r\nvar validate$2 = function (value, _a) {\r\n var target = _a.target, values = _a.values;\r\n var required;\r\n if (values && values.length) {\r\n if (!Array.isArray(values) && typeof values === 'string') {\r\n values = [values];\r\n }\r\n // eslint-disable-next-line\r\n required = values.some(function (val) { return val == String(target).trim(); });\r\n }\r\n else {\r\n required = !testEmpty(target);\r\n }\r\n if (!required) {\r\n return {\r\n valid: true,\r\n required: required\r\n };\r\n }\r\n return {\r\n valid: !testEmpty(value),\r\n required: required\r\n };\r\n};\r\nvar params$2 = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n },\r\n {\r\n name: 'values'\r\n }\r\n];\r\nvar computesRequired = true;\r\nvar required_if = {\r\n validate: validate$2,\r\n params: params$2,\r\n computesRequired: computesRequired\r\n};\n\nvar validate$1 = function (files, _a) {\r\n var size = _a.size;\r\n if (isNaN(size)) {\r\n return false;\r\n }\r\n var nSize = size * 1024;\r\n if (!Array.isArray(files)) {\r\n return files.size <= nSize;\r\n }\r\n for (var i = 0; i < files.length; i++) {\r\n if (files[i].size > nSize) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\nvar params$1 = [\r\n {\r\n name: 'size',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar size = {\r\n validate: validate$1,\r\n params: params$1\r\n};\n\nvar validate = function (value, params) {\r\n var _a = params || {}, _b = _a.decimals, decimals = _b === void 0 ? 0 : _b, _c = _a.separator, separator = _c === void 0 ? 'dot' : _c;\r\n var delimiterRegexPart = separator === 'comma' ? ',?' : '\\\\.?';\r\n var decimalRegexPart = decimals === 0 ? '\\\\d*' : \"(\\\\d{\" + decimals + \"})?\";\r\n var regex = new RegExp(\"^-?\\\\d+\" + delimiterRegexPart + decimalRegexPart + \"$\");\r\n return Array.isArray(value) ? value.every(function (val) { return regex.test(String(val)); }) : regex.test(String(value));\r\n};\r\nvar params = [\r\n {\r\n name: 'decimals',\r\n default: 0\r\n },\r\n {\r\n name: 'separator',\r\n default: 'dot'\r\n }\r\n];\r\nvar double = {\r\n validate: validate,\r\n params: params\r\n};\n\nexport { alpha, alpha_dash, alpha_num, alpha_spaces, between, confirmed, digits, dimensions, double, email, excluded, ext, image, integer, is, is_not, length, max, max_value, mimes, min, min_value, numeric, oneOf, regex, required, required_if, size };\n","/**\n * vee-validate v3.4.15\n * (c) 2023 Abdelrahman Awad\n * @license MIT\n */\nimport Vue from 'vue';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nfunction isNaN(value) {\r\n // NaN is the one value that does not equal itself.\r\n // eslint-disable-next-line\r\n return value !== value;\r\n}\r\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\nvar isObject = function (obj) {\r\n return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);\r\n};\r\n/**\r\n * A reference comparison function with NaN support\r\n */\r\nfunction isRefEqual(lhs, rhs) {\r\n if (isNaN(lhs) && isNaN(rhs)) {\r\n return true;\r\n }\r\n return lhs === rhs;\r\n}\r\n// Checks if a given value is not an empty string or null or undefined.\r\nfunction isSpecified(val) {\r\n if (val === '') {\r\n return false;\r\n }\r\n return !isNullOrUndefined(val);\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\r\n}\n\nfunction findIndex(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n if (isCallable(array.findIndex)) {\r\n return array.findIndex(predicate);\r\n }\r\n /* istanbul ignore next */\r\n for (var i = 0; i < array.length; i++) {\r\n if (predicate(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n return -1;\r\n}\r\n/**\r\n * finds the first element that satisfies the predicate callback, polyfills array.find\r\n */\r\nfunction find(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n var idx = findIndex(array, predicate);\r\n return idx === -1 ? undefined : array[idx];\r\n}\r\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\r\nfunction values(obj) {\r\n if (isCallable(Object.values)) {\r\n return Object.values(obj);\r\n }\r\n // fallback to keys()\r\n /* istanbul ignore next */\r\n return Object.keys(obj).map(function (k) { return obj[k]; });\r\n}\r\nfunction merge(target, source) {\r\n Object.keys(source).forEach(function (key) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) {\r\n target[key] = {};\r\n }\r\n merge(target[key], source[key]);\r\n return;\r\n }\r\n target[key] = source[key];\r\n });\r\n return target;\r\n}\n\nfunction createFlags() {\r\n return {\r\n untouched: true,\r\n touched: false,\r\n dirty: false,\r\n pristine: true,\r\n valid: false,\r\n invalid: false,\r\n validated: false,\r\n pending: false,\r\n required: false,\r\n changed: false,\r\n passed: false,\r\n failed: false\r\n };\r\n}\n\nfunction identity(x) {\r\n return x;\r\n}\r\nfunction debounce(fn, wait, token) {\r\n if (wait === void 0) { wait = 0; }\r\n if (token === void 0) { token = { cancelled: false }; }\r\n if (wait === 0) {\r\n return fn;\r\n }\r\n var timeout;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var later = function () {\r\n timeout = undefined;\r\n // check if the fn call was cancelled.\r\n if (!token.cancelled)\r\n fn.apply(void 0, args);\r\n };\r\n // because we might want to use Node.js setTimout for SSR.\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n}\n\n/**\r\n * Emits a warning to the console\r\n */\r\nfunction warn(message) {\r\n console.warn(\"[vee-validate] \" + message);\r\n}\r\n/**\r\n * Replaces placeholder values in a string with their actual values\r\n */\r\nfunction interpolate(template, values) {\r\n return template.replace(/{([^}]+)}/g, function (_, p) {\r\n return p in values ? values[p] : \"{\" + p + \"}\";\r\n });\r\n}\n\nvar RULES = {};\r\nfunction normalizeSchema(schema) {\r\n var _a;\r\n if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {\r\n schema.params = schema.params.map(function (param) {\r\n if (typeof param === 'string') {\r\n return { name: param };\r\n }\r\n return param;\r\n });\r\n }\r\n return schema;\r\n}\r\nvar RuleContainer = /** @class */ (function () {\r\n function RuleContainer() {\r\n }\r\n RuleContainer.extend = function (name, schema) {\r\n // if rule already exists, overwrite it.\r\n var rule = normalizeSchema(schema);\r\n if (RULES[name]) {\r\n RULES[name] = merge(RULES[name], schema);\r\n return;\r\n }\r\n RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);\r\n };\r\n RuleContainer.isLazy = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);\r\n };\r\n RuleContainer.isRequireRule = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);\r\n };\r\n RuleContainer.getRuleDefinition = function (ruleName) {\r\n return RULES[ruleName];\r\n };\r\n return RuleContainer;\r\n}());\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction extend(name, schema) {\r\n // makes sure new rules are properly formatted.\r\n guardExtend(name, schema);\r\n // Full schema object.\r\n if (typeof schema === 'object') {\r\n RuleContainer.extend(name, schema);\r\n return;\r\n }\r\n RuleContainer.extend(name, {\r\n validate: schema\r\n });\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(name, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n if (isCallable(validator.validate)) {\r\n return;\r\n }\r\n if (RuleContainer.getRuleDefinition(name)) {\r\n return;\r\n }\r\n throw new Error(\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\");\r\n}\n\nvar DEFAULT_CONFIG = {\r\n defaultMessage: \"{_field_} is not valid.\",\r\n skipOptional: true,\r\n classes: {\r\n touched: 'touched',\r\n untouched: 'untouched',\r\n valid: 'valid',\r\n invalid: 'invalid',\r\n pristine: 'pristine',\r\n dirty: 'dirty' // control has been interacted with\r\n },\r\n bails: true,\r\n mode: 'aggressive',\r\n useConstraintAttrs: true\r\n};\r\nvar currentConfig = __assign({}, DEFAULT_CONFIG);\r\nvar getConfig = function () { return currentConfig; };\r\nvar setConfig = function (newConf) {\r\n currentConfig = __assign(__assign({}, currentConfig), newConf);\r\n};\r\nvar configure = function (cfg) {\r\n setConfig(cfg);\r\n};\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n // if falsy value return an empty object.\r\n var acc = {};\r\n Object.defineProperty(acc, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n if (!rules) {\r\n return acc;\r\n }\r\n // Object is already normalized, skip.\r\n if (isObject(rules) && rules._$$isNormalized) {\r\n return rules;\r\n }\r\n if (isObject(rules)) {\r\n return Object.keys(rules).reduce(function (prev, curr) {\r\n var params = [];\r\n if (rules[curr] === true) {\r\n params = [];\r\n }\r\n else if (Array.isArray(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else if (isObject(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else {\r\n params = [rules[curr]];\r\n }\r\n if (rules[curr] !== false) {\r\n prev[curr] = buildParams(curr, params);\r\n }\r\n return prev;\r\n }, acc);\r\n }\r\n /* istanbul ignore if */\r\n if (typeof rules !== 'string') {\r\n warn('rules must be either a string or an object.');\r\n return acc;\r\n }\r\n return rules.split('|').reduce(function (prev, rule) {\r\n var parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);\r\n return prev;\r\n }, acc);\r\n}\r\nfunction buildParams(ruleName, provided) {\r\n var ruleSchema = RuleContainer.getRuleDefinition(ruleName);\r\n if (!ruleSchema) {\r\n return provided;\r\n }\r\n var params = {};\r\n if (!ruleSchema.params && !Array.isArray(provided)) {\r\n throw new Error('You provided an object params to a rule that has no defined schema.');\r\n }\r\n // Rule probably uses an array for their args, keep it as is.\r\n if (Array.isArray(provided) && !ruleSchema.params) {\r\n return provided;\r\n }\r\n var definedParams;\r\n // collect the params schema.\r\n if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {\r\n var lastDefinedParam_1;\r\n // collect any additional parameters in the last item.\r\n definedParams = provided.map(function (_, idx) {\r\n var _a;\r\n var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];\r\n lastDefinedParam_1 = param || lastDefinedParam_1;\r\n if (!param) {\r\n param = lastDefinedParam_1;\r\n }\r\n return param;\r\n });\r\n }\r\n else {\r\n definedParams = ruleSchema.params;\r\n }\r\n // Match the provided array length with a temporary schema.\r\n for (var i = 0; i < definedParams.length; i++) {\r\n var options = definedParams[i];\r\n var value = options.default;\r\n // if the provided is an array, map element value.\r\n if (Array.isArray(provided)) {\r\n if (i in provided) {\r\n value = provided[i];\r\n }\r\n }\r\n else {\r\n // If the param exists in the provided object.\r\n if (options.name in provided) {\r\n value = provided[options.name];\r\n // if the provided is the first param value.\r\n }\r\n else if (definedParams.length === 1) {\r\n value = provided;\r\n }\r\n }\r\n // if the param is a target, resolve the target value.\r\n if (options.isTarget) {\r\n value = createLocator(value, options.cast);\r\n }\r\n // A target param using interpolation\r\n if (typeof value === 'string' && value[0] === '@') {\r\n value = createLocator(value.slice(1), options.cast);\r\n }\r\n // If there is a transformer defined.\r\n if (!isLocator(value) && options.cast) {\r\n value = options.cast(value);\r\n }\r\n // already been set, probably multiple values.\r\n if (params[options.name]) {\r\n params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];\r\n params[options.name].push(value);\r\n }\r\n else {\r\n // set the value.\r\n params[options.name] = value;\r\n }\r\n }\r\n return params;\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nvar parseRule = function (rule) {\r\n var params = [];\r\n var name = rule.split(':')[0];\r\n if (includes(rule, ':')) {\r\n params = rule\r\n .split(':')\r\n .slice(1)\r\n .join(':')\r\n .split(',');\r\n }\r\n return { name: name, params: params };\r\n};\r\nfunction createLocator(value, castFn) {\r\n var locator = function (crossTable) {\r\n var val = crossTable[value];\r\n return castFn ? castFn(val) : val;\r\n };\r\n locator.__locatorRef = value;\r\n return locator;\r\n}\r\nfunction extractLocators(params) {\r\n if (Array.isArray(params)) {\r\n return params.filter(function (param) {\r\n return isLocator(param) || (typeof param === 'string' && param[0] === '@');\r\n });\r\n }\r\n return Object.keys(params)\r\n .filter(function (key) { return isLocator(params[key]); })\r\n .map(function (key) { return params[key]; });\r\n}\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nfunction validate(value, rules, options) {\r\n if (options === void 0) { options = {}; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;\r\n field = {\r\n name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n rules: normalizeRules(rules),\r\n bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,\r\n forceRequired: false,\r\n crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n names: (options === null || options === void 0 ? void 0 : options.names) || {},\r\n customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}\r\n };\r\n return [4 /*yield*/, _validate(field, value, options)];\r\n case 1:\r\n result = _a.sent();\r\n errors = [];\r\n failedRules = {};\r\n regenerateMap = {};\r\n result.errors.forEach(function (e) {\r\n var msg = e.msg();\r\n errors.push(msg);\r\n failedRules[e.rule] = msg;\r\n regenerateMap[e.rule] = e.msg;\r\n });\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n errors: errors,\r\n failedRules: failedRules,\r\n regenerateMap: regenerateMap\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nfunction _validate(field, value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _c, shouldSkip, required, errors, rules, length, i, rule, result;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, _shouldSkip(field, value)];\r\n case 1:\r\n _c = _d.sent(), shouldSkip = _c.shouldSkip, required = _c.required, errors = _c.errors;\r\n if (shouldSkip) {\r\n return [2 /*return*/, {\r\n valid: !errors.length,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });\r\n length = rules.length;\r\n i = 0;\r\n _d.label = 2;\r\n case 2:\r\n if (!(i < length)) return [3 /*break*/, 5];\r\n if (isInitial && RuleContainer.isLazy(rules[i])) {\r\n return [3 /*break*/, 4];\r\n }\r\n rule = rules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 3:\r\n result = _d.sent();\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n valid: false,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _d.label = 4;\r\n case 4:\r\n i++;\r\n return [3 /*break*/, 2];\r\n case 5: return [2 /*return*/, {\r\n valid: !errors.length,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\nfunction _shouldSkip(field, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\r\n length = requireRules.length;\r\n errors = [];\r\n isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);\r\n isEmptyAndOptional = isEmpty && field.skipIfEmpty;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n rule = requireRules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 2:\r\n result = _a.sent();\r\n if (!isObject(result)) {\r\n throw new Error('Require rules has to return an object (see docs)');\r\n }\r\n if (result.required !== undefined) {\r\n isRequired = result.required;\r\n }\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n // Exit early as the field is required and failed validation.\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n shouldSkip: true,\r\n required: result.required,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _a.label = 3;\r\n case 3:\r\n i++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (isEmpty && !isRequired && !field.skipIfEmpty) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n // field is configured to run through the pipeline regardless\r\n if (!field.bails && !isEmptyAndOptional) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n // skip if the field is not required and has an empty value.\r\n return [2 /*return*/, {\r\n shouldSkip: !isRequired && isEmpty,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nfunction _test(field, value, rule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var ruleSchema, normalizedValue, params, result, values_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ruleSchema = RuleContainer.getRuleDefinition(rule.name);\r\n if (!ruleSchema || !ruleSchema.validate) {\r\n throw new Error(\"No such validator '\" + rule.name + \"' exists.\");\r\n }\r\n normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;\r\n params = fillTargetValues(rule.params, field.crossTable);\r\n return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];\r\n case 1:\r\n result = _a.sent();\r\n if (typeof result === 'string') {\r\n values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });\r\n return [2 /*return*/, {\r\n valid: false,\r\n error: { rule: rule.name, msg: function () { return interpolate(result, values_1); } }\r\n }];\r\n }\r\n if (!isObject(result)) {\r\n result = { valid: result };\r\n }\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(field, value, ruleSchema, ruleName, params) {\r\n var _a;\r\n var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;\r\n var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);\r\n var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;\r\n var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);\r\n return {\r\n msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },\r\n rule: ruleName\r\n };\r\n}\r\nfunction _getRuleTargets(field, ruleSchema, ruleName) {\r\n var params = ruleSchema.params;\r\n if (!params) {\r\n return {};\r\n }\r\n var numTargets = params.filter(function (param) { return param.isTarget; }).length;\r\n if (numTargets <= 0) {\r\n return {};\r\n }\r\n var names = {};\r\n var ruleConfig = field.rules[ruleName];\r\n if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {\r\n ruleConfig = params.map(function (param) {\r\n return ruleConfig[param.name];\r\n });\r\n }\r\n for (var index = 0; index < params.length; index++) {\r\n var param = params[index];\r\n var key = ruleConfig[index];\r\n if (!isLocator(key)) {\r\n continue;\r\n }\r\n key = key.__locatorRef;\r\n var name_1 = field.names[key] || key;\r\n names[param.name] = name_1;\r\n names[\"_\" + param.name + \"_\"] = field.crossTable[key];\r\n }\r\n return names;\r\n}\r\nfunction _getUserTargets(field, ruleSchema, ruleName, userMessage) {\r\n var userTargets = {};\r\n var rules = field.rules[ruleName];\r\n var params = ruleSchema.params || [];\r\n // early return if no rules\r\n if (!rules) {\r\n return {};\r\n }\r\n // check all rules to convert targets\r\n Object.keys(rules).forEach(function (key, index) {\r\n // get the rule\r\n var rule = rules[key];\r\n if (!isLocator(rule)) {\r\n return {};\r\n }\r\n // get associated parameter\r\n var param = params[index];\r\n if (!param) {\r\n return {};\r\n }\r\n // grab the name of the target\r\n var name = rule.__locatorRef;\r\n userTargets[param.name] = field.names[name] || name;\r\n userTargets[\"_\" + param.name + \"_\"] = field.crossTable[name];\r\n });\r\n return {\r\n userTargets: userTargets,\r\n userMessage: userMessage\r\n };\r\n}\r\nfunction _normalizeMessage(template, field, values) {\r\n if (typeof template === 'function') {\r\n return template(field, values);\r\n }\r\n return interpolate(template, __assign(__assign({}, values), { _field_: field }));\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n if (Array.isArray(params)) {\r\n return params.map(function (param) {\r\n var targetPart = typeof param === 'string' && param[0] === '@' ? param.slice(1) : param;\r\n if (targetPart in crossTable) {\r\n return crossTable[targetPart];\r\n }\r\n return param;\r\n });\r\n }\r\n var values = {};\r\n var normalize = function (value) {\r\n if (isLocator(value)) {\r\n return value(crossTable);\r\n }\r\n return value;\r\n };\r\n Object.keys(params).forEach(function (param) {\r\n values[param] = normalize(params[param]);\r\n });\r\n return values;\r\n}\n\nvar aggressive = function () { return ({\r\n on: ['input', 'blur']\r\n}); };\r\nvar lazy = function () { return ({\r\n on: ['change', 'blur']\r\n}); };\r\nvar eager = function (_a) {\r\n var errors = _a.errors;\r\n if (errors.length) {\r\n return {\r\n on: ['input', 'change']\r\n };\r\n }\r\n return {\r\n on: ['change', 'blur']\r\n };\r\n};\r\nvar passive = function () { return ({\r\n on: []\r\n}); };\r\nvar modes = {\r\n aggressive: aggressive,\r\n eager: eager,\r\n passive: passive,\r\n lazy: lazy\r\n};\r\nvar setInteractionMode = function (mode, implementation) {\r\n setConfig({ mode: mode });\r\n if (!implementation) {\r\n return;\r\n }\r\n if (!isCallable(implementation)) {\r\n throw new Error('A mode implementation must be a function');\r\n }\r\n modes[mode] = implementation;\r\n};\n\nvar EVENT_BUS = new Vue();\r\nfunction localeChanged() {\r\n EVENT_BUS.$emit('change:locale');\r\n}\n\nvar Dictionary = /** @class */ (function () {\r\n function Dictionary(locale, dictionary) {\r\n this.container = {};\r\n this.locale = locale;\r\n this.merge(dictionary);\r\n }\r\n Dictionary.prototype.resolve = function (field, rule, values) {\r\n return this.format(this.locale, field, rule, values);\r\n };\r\n Dictionary.prototype.format = function (locale, field, rule, values) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n var message;\r\n // find if specific message for that field was specified.\r\n var fieldContainer = (_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule];\r\n var messageContainer = (_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule];\r\n message = fieldContainer || messageContainer || '';\r\n if (!message) {\r\n message = '{_field_} is not valid';\r\n }\r\n field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;\r\n return isCallable(message) ? message(field, values) : interpolate(message, __assign(__assign({}, values), { _field_: field }));\r\n };\r\n Dictionary.prototype.merge = function (dictionary) {\r\n merge(this.container, dictionary);\r\n };\r\n Dictionary.prototype.hasRule = function (name) {\r\n var _a, _b;\r\n return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);\r\n };\r\n return Dictionary;\r\n}());\r\nvar DICTIONARY;\r\nfunction localize(locale, dictionary) {\r\n var _a;\r\n if (!DICTIONARY) {\r\n DICTIONARY = new Dictionary('en', {});\r\n setConfig({\r\n defaultMessage: function (field, values) {\r\n return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});\r\n }\r\n });\r\n }\r\n if (typeof locale === 'string') {\r\n DICTIONARY.locale = locale;\r\n if (dictionary) {\r\n DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));\r\n }\r\n localeChanged();\r\n return;\r\n }\r\n DICTIONARY.merge(locale);\r\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar isEvent = function (evt) {\r\n if (!evt) {\r\n return false;\r\n }\r\n if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n return true;\r\n }\r\n // this is for IE\r\n /* istanbul ignore next */\r\n if (evt && evt.srcElement) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nfunction normalizeEventValue(value) {\r\n var _a, _b;\r\n if (!isEvent(value)) {\r\n return value;\r\n }\r\n var input = value.target;\r\n if (input.type === 'file' && input.files) {\r\n return toArray(input.files);\r\n }\r\n // If the input has a `v-model.number` modifier applied.\r\n if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {\r\n // as per the spec the v-model.number uses parseFloat\r\n var valueAsNumber = parseFloat(input.value);\r\n if (isNaN(valueAsNumber)) {\r\n return input.value;\r\n }\r\n return valueAsNumber;\r\n }\r\n if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {\r\n var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;\r\n return trimmedValue;\r\n }\r\n return input.value;\r\n}\n\nvar isTextInput = function (vnode) {\r\n var _a;\r\n var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;\r\n // it will fallback to being a text input per browsers spec.\r\n if (vnode.tag === 'input' && (!attrs || !attrs.type)) {\r\n return true;\r\n }\r\n if (vnode.tag === 'textarea') {\r\n return true;\r\n }\r\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);\r\n};\r\n// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {\r\n// const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;\r\n// return includes(['radio', 'checkbox'], attrs && attrs.type);\r\n// };\r\n// Gets the model object on the vnode.\r\nfunction findModel(vnode) {\r\n if (!vnode.data) {\r\n return undefined;\r\n }\r\n // Component Model\r\n // THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS\r\n // eslint-disable-next-line\r\n var nonStandardVNodeData = vnode.data;\r\n if ('model' in nonStandardVNodeData) {\r\n return nonStandardVNodeData.model;\r\n }\r\n if (!vnode.data.directives) {\r\n return undefined;\r\n }\r\n return find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n}\r\nfunction findValue(vnode) {\r\n var _a, _b;\r\n var model = findModel(vnode);\r\n if (model) {\r\n return { value: model.value };\r\n }\r\n var config = findModelConfig(vnode);\r\n var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';\r\n if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {\r\n var propsDataWithValue = vnode.componentOptions.propsData;\r\n return { value: propsDataWithValue[prop] };\r\n }\r\n if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {\r\n return { value: vnode.data.domProps.value };\r\n }\r\n return undefined;\r\n}\r\nfunction extractChildren(vnode) {\r\n if (Array.isArray(vnode)) {\r\n return vnode;\r\n }\r\n if (Array.isArray(vnode.children)) {\r\n return vnode.children;\r\n }\r\n /* istanbul ignore next */\r\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\r\n return vnode.componentOptions.children;\r\n }\r\n return [];\r\n}\r\nfunction findInputNodes(vnode) {\r\n if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {\r\n return [vnode];\r\n }\r\n var children = extractChildren(vnode);\r\n return children.reduce(function (nodes, node) {\r\n var candidates = findInputNodes(node);\r\n if (candidates.length) {\r\n nodes.push.apply(nodes, candidates);\r\n }\r\n return nodes;\r\n }, []);\r\n}\r\n// Resolves v-model config if exists.\r\nfunction findModelConfig(vnode) {\r\n /* istanbul ignore next */\r\n if (!vnode.componentOptions)\r\n return null;\r\n // This is also not typed in the standard Vue TS.\r\n return vnode.componentOptions.Ctor.options.model;\r\n}\r\n// Adds a listener to vnode listener object.\r\nfunction mergeVNodeListeners(obj, eventName, handler) {\r\n // no listener at all.\r\n if (isNullOrUndefined(obj[eventName])) {\r\n obj[eventName] = [handler];\r\n return;\r\n }\r\n // Is an invoker.\r\n if (isCallable(obj[eventName]) && obj[eventName].fns) {\r\n var invoker = obj[eventName];\r\n invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];\r\n if (!includes(invoker.fns, handler)) {\r\n invoker.fns.push(handler);\r\n }\r\n return;\r\n }\r\n if (isCallable(obj[eventName])) {\r\n var prev = obj[eventName];\r\n obj[eventName] = [prev];\r\n }\r\n if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {\r\n obj[eventName].push(handler);\r\n }\r\n}\r\n// Adds a listener to a native HTML vnode.\r\nfunction addNativeNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.data) {\r\n node.data = {};\r\n }\r\n if (isNullOrUndefined(node.data.on)) {\r\n node.data.on = {};\r\n }\r\n mergeVNodeListeners(node.data.on, eventName, handler);\r\n}\r\n// Adds a listener to a Vue component vnode.\r\nfunction addComponentNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.componentOptions) {\r\n return;\r\n }\r\n /* istanbul ignore next */\r\n if (!node.componentOptions.listeners) {\r\n node.componentOptions.listeners = {};\r\n }\r\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\r\n}\r\nfunction addVNodeListener(vnode, eventName, handler) {\r\n if (vnode.componentOptions) {\r\n addComponentNodeListener(vnode, eventName, handler);\r\n return;\r\n }\r\n addNativeNodeListener(vnode, eventName, handler);\r\n}\r\n// Determines if `change` should be used over `input` for listeners.\r\nfunction getInputEventName(vnode, model) {\r\n var _a;\r\n // Is a component.\r\n if (vnode.componentOptions) {\r\n var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;\r\n return event_1 || 'input';\r\n }\r\n // Lazy Models typically use change event\r\n if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {\r\n return 'change';\r\n }\r\n // is a textual-type input.\r\n if (isTextInput(vnode)) {\r\n return 'input';\r\n }\r\n return 'change';\r\n}\r\nfunction isHTMLNode(node) {\r\n return includes(['input', 'select', 'textarea'], node.tag);\r\n}\r\n// TODO: Type this one properly.\r\nfunction normalizeSlots(slots, ctx) {\r\n var acc = [];\r\n return Object.keys(slots).reduce(function (arr, key) {\r\n slots[key].forEach(function (vnode) {\r\n if (!vnode.context) {\r\n slots[key].context = ctx;\r\n if (!vnode.data) {\r\n vnode.data = {};\r\n }\r\n vnode.data.slot = key;\r\n }\r\n });\r\n return arr.concat(slots[key]);\r\n }, acc);\r\n}\r\nfunction resolveTextualRules(vnode) {\r\n var _a;\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n var rules = {};\r\n if (!attrs)\r\n return rules;\r\n if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {\r\n rules.email = ['multiple' in attrs];\r\n }\r\n if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {\r\n rules.regex = attrs.pattern;\r\n }\r\n if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {\r\n rules.max = attrs.maxlength;\r\n }\r\n if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {\r\n rules.min = attrs.minlength;\r\n }\r\n if (attrs.type === 'number') {\r\n if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {\r\n rules.min_value = Number(attrs.min);\r\n }\r\n if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {\r\n rules.max_value = Number(attrs.max);\r\n }\r\n }\r\n return rules;\r\n}\r\nfunction resolveRules(vnode) {\r\n var _a;\r\n var htmlTags = ['input', 'select', 'textarea'];\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n if (!includes(htmlTags, vnode.tag) || !attrs) {\r\n return {};\r\n }\r\n var rules = {};\r\n if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {\r\n rules.required = attrs.type === 'checkbox' ? [true] : true;\r\n }\r\n if (isTextInput(vnode)) {\r\n return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));\r\n }\r\n return normalizeRules(rules);\r\n}\r\nfunction normalizeChildren(context, slotProps) {\r\n if (context.$scopedSlots.default) {\r\n return context.$scopedSlots.default(slotProps) || [];\r\n }\r\n return context.$slots.default || [];\r\n}\n\n/**\r\n * Determines if a provider needs to run validation.\r\n */\r\nfunction shouldValidate(ctx, value) {\r\n // when an immediate/initial validation is needed and wasn't done before.\r\n if (!ctx._ignoreImmediate && ctx.immediate) {\r\n return true;\r\n }\r\n // when the value changes for whatever reason.\r\n if (!isRefEqual(ctx.value, value) && ctx.normalizedEvents.length) {\r\n return true;\r\n }\r\n // when it needs validation due to props/cross-fields changes.\r\n if (ctx._needsValidation) {\r\n return true;\r\n }\r\n // when the initial value is undefined and the field wasn't rendered yet.\r\n if (!ctx.initialized && value === undefined) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction createValidationCtx(ctx) {\r\n return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return ctx.validate.apply(ctx, args);\r\n }, ariaInput: {\r\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\r\n 'aria-required': ctx.isRequired ? 'true' : 'false',\r\n 'aria-errormessage': \"vee_\" + ctx.id\r\n }, ariaMsg: {\r\n id: \"vee_\" + ctx.id,\r\n 'aria-live': ctx.errors.length ? 'assertive' : 'off'\r\n } });\r\n}\r\nfunction onRenderUpdate(vm, value) {\r\n if (!vm.initialized) {\r\n vm.initialValue = value;\r\n }\r\n var validateNow = shouldValidate(vm, value);\r\n vm._needsValidation = false;\r\n vm.value = value;\r\n vm._ignoreImmediate = true;\r\n if (!validateNow) {\r\n return;\r\n }\r\n var validate = function () {\r\n if (vm.immediate || vm.flags.validated) {\r\n return triggerThreadSafeValidation(vm);\r\n }\r\n vm.validateSilent();\r\n };\r\n if (vm.initialized) {\r\n validate();\r\n return;\r\n }\r\n vm.$once('hook:mounted', function () { return validate(); });\r\n}\r\nfunction computeModeSetting(ctx) {\r\n var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);\r\n return compute(ctx);\r\n}\r\nfunction triggerThreadSafeValidation(vm) {\r\n var pendingPromise = vm.validateSilent();\r\n // avoids race conditions between successive validations.\r\n vm._pendingValidation = pendingPromise;\r\n return pendingPromise.then(function (result) {\r\n if (pendingPromise === vm._pendingValidation) {\r\n vm.applyResult(result);\r\n vm._pendingValidation = undefined;\r\n }\r\n return result;\r\n });\r\n}\r\n// Creates the common handlers for a validatable context.\r\nfunction createCommonHandlers(vm) {\r\n if (!vm.$veeOnInput) {\r\n vm.$veeOnInput = function (e) {\r\n vm.syncValue(e); // track and keep the value updated.\r\n vm.setFlags({ dirty: true, pristine: false });\r\n };\r\n }\r\n var onInput = vm.$veeOnInput;\r\n if (!vm.$veeOnBlur) {\r\n vm.$veeOnBlur = function () {\r\n vm.setFlags({ touched: true, untouched: false });\r\n };\r\n }\r\n // Blur event listener.\r\n var onBlur = vm.$veeOnBlur;\r\n var onValidate = vm.$veeHandler;\r\n var mode = computeModeSetting(vm);\r\n // Handle debounce changes.\r\n if (!onValidate || vm.$veeDebounce !== vm.debounce) {\r\n onValidate = debounce(function () {\r\n vm.$nextTick(function () {\r\n if (!vm._pendingReset) {\r\n triggerThreadSafeValidation(vm);\r\n }\r\n vm._pendingReset = false;\r\n });\r\n }, mode.debounce || vm.debounce);\r\n // Cache the handler so we don't create it each time.\r\n vm.$veeHandler = onValidate;\r\n // cache the debounce value so we detect if it was changed.\r\n vm.$veeDebounce = vm.debounce;\r\n }\r\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\r\n}\r\n// Adds all plugin listeners to the vnode.\r\nfunction addListeners(vm, node) {\r\n var value = findValue(node);\r\n // cache the input eventName.\r\n vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));\r\n onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);\r\n var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;\r\n addVNodeListener(node, vm._inputEventName, onInput);\r\n addVNodeListener(node, 'blur', onBlur);\r\n // add the validation listeners.\r\n vm.normalizedEvents.forEach(function (evt) {\r\n addVNodeListener(node, evt, onValidate);\r\n });\r\n vm.initialized = true;\r\n}\n\nvar PROVIDER_COUNTER = 0;\r\nfunction data$1() {\r\n var errors = [];\r\n var fieldName = '';\r\n var defaultValues = {\r\n errors: errors,\r\n value: undefined,\r\n initialized: false,\r\n initialValue: undefined,\r\n flags: createFlags(),\r\n failedRules: {},\r\n isActive: true,\r\n fieldName: fieldName,\r\n id: ''\r\n };\r\n return defaultValues;\r\n}\r\nvar ValidationProvider = Vue.extend({\r\n name: 'ValidationProvider',\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n this.$vnode.context.$_veeObserver = createObserver();\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n vid: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: null\r\n },\r\n mode: {\r\n type: [String, Function],\r\n default: function () {\r\n return getConfig().mode;\r\n }\r\n },\r\n rules: {\r\n type: [Object, String],\r\n default: null\r\n },\r\n immediate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: function () { return getConfig().bails; }\r\n },\r\n skipIfEmpty: {\r\n type: Boolean,\r\n default: function () { return getConfig().skipOptional; }\r\n },\r\n debounce: {\r\n type: Number,\r\n default: 0\r\n },\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n customMessages: {\r\n type: Object,\r\n default: function () {\r\n return {};\r\n }\r\n },\r\n detectInput: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n watch: {\r\n rules: {\r\n deep: true,\r\n handler: function (val, oldVal) {\r\n this._needsValidation = !fastDeepEqual(val, oldVal);\r\n }\r\n }\r\n },\r\n data: data$1,\r\n computed: {\r\n fieldDeps: function () {\r\n var _this = this;\r\n return Object.keys(this.normalizedRules).reduce(function (acc, rule) {\r\n var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) {\r\n return isLocator(dep) ? dep.__locatorRef : dep.slice(1);\r\n });\r\n acc.push.apply(acc, deps);\r\n deps.forEach(function (depName) {\r\n watchCrossFieldDep(_this, depName);\r\n });\r\n return acc;\r\n }, []);\r\n },\r\n normalizedEvents: function () {\r\n var _this = this;\r\n var on = computeModeSetting(this).on;\r\n return (on || []).map(function (e) {\r\n if (e === 'input') {\r\n return _this._inputEventName;\r\n }\r\n return e;\r\n });\r\n },\r\n isRequired: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n this.flags.required = !!isRequired;\r\n return isRequired;\r\n },\r\n classes: function () {\r\n var names = getConfig().classes;\r\n return computeClassObj(names, this.flags);\r\n },\r\n normalizedRules: function () {\r\n return normalizeRules(this.rules);\r\n }\r\n },\r\n mounted: function () {\r\n var _this = this;\r\n var onLocaleChanged = function () {\r\n if (!_this.flags.validated) {\r\n return;\r\n }\r\n var regenerateMap = _this._regenerateMap;\r\n if (regenerateMap) {\r\n var errors_1 = [];\r\n var failedRules_1 = {};\r\n Object.keys(regenerateMap).forEach(function (rule) {\r\n var msg = regenerateMap[rule]();\r\n errors_1.push(msg);\r\n failedRules_1[rule] = msg;\r\n });\r\n _this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });\r\n return;\r\n }\r\n _this.validate();\r\n };\r\n EVENT_BUS.$on('change:locale', onLocaleChanged);\r\n this.$on('hook:beforeDestroy', function () {\r\n EVENT_BUS.$off('change:locale', onLocaleChanged);\r\n });\r\n },\r\n render: function (h) {\r\n var _this = this;\r\n this.registerField();\r\n var ctx = createValidationCtx(this);\r\n var children = normalizeChildren(this, ctx);\r\n // Automatic v-model detection\r\n if (this.detectInput) {\r\n var inputs = findInputNodes(children);\r\n if (inputs.length) {\r\n inputs.forEach(function (input, idx) {\r\n var _a, _b, _c, _d, _e, _f;\r\n // If the elements are not checkboxes and there are more input nodes\r\n if (!includes(['checkbox', 'radio'], (_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.type) && idx > 0) {\r\n return;\r\n }\r\n var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};\r\n if (!fastDeepEqual(_this._resolvedRules, resolved)) {\r\n _this._needsValidation = true;\r\n }\r\n if (isHTMLNode(input)) {\r\n _this.fieldName = ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.name) || ((_f = (_e = input.data) === null || _e === void 0 ? void 0 : _e.attrs) === null || _f === void 0 ? void 0 : _f.id);\r\n }\r\n _this._resolvedRules = resolved;\r\n addListeners(_this, input);\r\n });\r\n }\r\n }\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);\r\n },\r\n beforeDestroy: function () {\r\n // cleanup reference.\r\n this.$_veeObserver.unobserve(this.id);\r\n },\r\n activated: function () {\r\n this.isActive = true;\r\n },\r\n deactivated: function () {\r\n this.isActive = false;\r\n },\r\n methods: {\r\n setFlags: function (flags) {\r\n var _this = this;\r\n Object.keys(flags).forEach(function (flag) {\r\n _this.flags[flag] = flags[flag];\r\n });\r\n },\r\n syncValue: function (v) {\r\n var value = normalizeEventValue(v);\r\n this.value = value;\r\n this.flags.changed = !fastDeepEqual(this.initialValue, value);\r\n },\r\n reset: function () {\r\n var _this = this;\r\n this.errors = [];\r\n this.initialValue = this.value;\r\n var flags = createFlags();\r\n flags.required = this.isRequired;\r\n this.setFlags(flags);\r\n this.failedRules = {};\r\n this.validateSilent();\r\n this._pendingValidation = undefined;\r\n this._pendingReset = true;\r\n setTimeout(function () {\r\n _this._pendingReset = false;\r\n }, this.debounce);\r\n },\r\n validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (args.length > 0) {\r\n this.syncValue(args[0]);\r\n }\r\n return [2 /*return*/, triggerThreadSafeValidation(this)];\r\n });\r\n });\r\n },\r\n validateSilent: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var rules, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.setFlags({ pending: true });\r\n rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n Object.defineProperty(rules, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];\r\n case 1:\r\n result = _a.sent();\r\n this.setFlags({\r\n pending: false,\r\n valid: result.valid,\r\n invalid: !result.valid\r\n });\r\n if (result.required !== undefined) {\r\n this.setFlags({\r\n required: result.required\r\n });\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n },\r\n setErrors: function (errors) {\r\n this.applyResult({ errors: errors, failedRules: {} });\r\n },\r\n applyResult: function (_a) {\r\n var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;\r\n this.errors = errors;\r\n this._regenerateMap = regenerateMap;\r\n this.failedRules = __assign({}, (failedRules || {}));\r\n this.setFlags({\r\n valid: !errors.length,\r\n passed: !errors.length,\r\n invalid: !!errors.length,\r\n failed: !!errors.length,\r\n validated: true,\r\n changed: !fastDeepEqual(this.value, this.initialValue)\r\n });\r\n },\r\n registerField: function () {\r\n updateRenderingContextRefs(this);\r\n },\r\n checkComputesRequiredState: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n return isRequired;\r\n }\r\n }\r\n});\r\nfunction computeClassObj(names, flags) {\r\n var acc = {};\r\n var keys = Object.keys(flags);\r\n var length = keys.length;\r\n var _loop_1 = function (i) {\r\n var flag = keys[i];\r\n var className = (names && names[flag]) || flag;\r\n var value = flags[flag];\r\n if (isNullOrUndefined(value)) {\r\n return \"continue\";\r\n }\r\n if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {\r\n return \"continue\";\r\n }\r\n if (typeof className === 'string') {\r\n acc[className] = value;\r\n }\r\n else if (Array.isArray(className)) {\r\n className.forEach(function (cls) {\r\n acc[cls] = value;\r\n });\r\n }\r\n };\r\n for (var i = 0; i < length; i++) {\r\n _loop_1(i);\r\n }\r\n return acc;\r\n}\r\nfunction createLookup(vm) {\r\n var providers = vm.$_veeObserver.refs;\r\n var reduced = {\r\n names: {},\r\n values: {}\r\n };\r\n return vm.fieldDeps.reduce(function (acc, depName) {\r\n if (!providers[depName]) {\r\n return acc;\r\n }\r\n acc.values[depName] = providers[depName].value;\r\n acc.names[depName] = providers[depName].name;\r\n return acc;\r\n }, reduced);\r\n}\r\nfunction extractId(vm) {\r\n if (vm.vid) {\r\n return vm.vid;\r\n }\r\n if (vm.name) {\r\n return vm.name;\r\n }\r\n if (vm.id) {\r\n return vm.id;\r\n }\r\n if (vm.fieldName) {\r\n return vm.fieldName;\r\n }\r\n PROVIDER_COUNTER++;\r\n return \"_vee_\" + PROVIDER_COUNTER;\r\n}\r\nfunction updateRenderingContextRefs(vm) {\r\n var providedId = extractId(vm);\r\n var id = vm.id;\r\n // Nothing has changed.\r\n if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {\r\n return;\r\n }\r\n // vid was changed.\r\n if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {\r\n vm.$_veeObserver.unobserve(id);\r\n }\r\n vm.id = providedId;\r\n vm.$_veeObserver.observe(vm);\r\n}\r\nfunction createObserver() {\r\n return {\r\n refs: {},\r\n observe: function (vm) {\r\n this.refs[vm.id] = vm;\r\n },\r\n unobserve: function (id) {\r\n delete this.refs[id];\r\n }\r\n };\r\n}\r\nfunction watchCrossFieldDep(ctx, depName, withHooks) {\r\n if (withHooks === void 0) { withHooks = true; }\r\n var providers = ctx.$_veeObserver.refs;\r\n if (!ctx._veeWatchers) {\r\n ctx._veeWatchers = {};\r\n }\r\n if (!providers[depName] && withHooks) {\r\n return ctx.$once('hook:mounted', function () {\r\n watchCrossFieldDep(ctx, depName, false);\r\n });\r\n }\r\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\r\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\r\n var isComputesRequired = ctx.checkComputesRequiredState();\r\n if (ctx.flags.validated) {\r\n ctx._needsValidation = true;\r\n ctx.validate();\r\n }\r\n // Validate dependent field silently if it has rules with computesRequired\r\n if (isComputesRequired && !ctx.flags.validated) {\r\n ctx.validateSilent();\r\n }\r\n });\r\n }\r\n}\n\nvar FLAGS_STRATEGIES = [\r\n ['pristine', 'every'],\r\n ['dirty', 'some'],\r\n ['touched', 'some'],\r\n ['untouched', 'every'],\r\n ['valid', 'every'],\r\n ['invalid', 'some'],\r\n ['pending', 'some'],\r\n ['validated', 'every'],\r\n ['changed', 'some'],\r\n ['passed', 'every'],\r\n ['failed', 'some']\r\n];\r\nvar OBSERVER_COUNTER = 0;\r\nfunction data() {\r\n var refs = {};\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n // FIXME: Not sure of this one can be typed, circular type reference.\r\n var observers = [];\r\n return {\r\n id: '',\r\n refs: refs,\r\n observers: observers,\r\n errors: errors,\r\n flags: flags,\r\n fields: fields\r\n };\r\n}\r\nfunction provideSelf() {\r\n return {\r\n $_veeObserver: this\r\n };\r\n}\r\nvar ValidationObserver = Vue.extend({\r\n name: 'ValidationObserver',\r\n provide: provideSelf,\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n return null;\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n vid: {\r\n type: String,\r\n default: function () {\r\n return \"obs_\" + OBSERVER_COUNTER++;\r\n }\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data: data,\r\n created: function () {\r\n var _this = this;\r\n this.id = this.vid;\r\n register(this);\r\n var onChange = debounce(function (_a) {\r\n var errors = _a.errors, flags = _a.flags, fields = _a.fields;\r\n _this.errors = errors;\r\n _this.flags = flags;\r\n _this.fields = fields;\r\n }, 16);\r\n this.$watch(computeObserverState, onChange);\r\n },\r\n activated: function () {\r\n register(this);\r\n },\r\n deactivated: function () {\r\n unregister(this);\r\n },\r\n beforeDestroy: function () {\r\n unregister(this);\r\n },\r\n render: function (h) {\r\n var children = normalizeChildren(this, prepareSlotProps(this));\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);\r\n },\r\n methods: {\r\n observe: function (subscriber, kind) {\r\n var _a;\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'observer') {\r\n this.observers.push(subscriber);\r\n return;\r\n }\r\n this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));\r\n },\r\n unobserve: function (id, kind) {\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'provider') {\r\n var provider = this.refs[id];\r\n if (!provider) {\r\n return;\r\n }\r\n this.$delete(this.refs, id);\r\n return;\r\n }\r\n var idx = findIndex(this.observers, function (o) { return o.id === id; });\r\n if (idx !== -1) {\r\n this.observers.splice(idx, 1);\r\n }\r\n },\r\n validateWithInfo: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var results, isValid, _c, errors, flags, fields;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)\r\n .filter(function (r) { return !r.disabled; })\r\n .map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];\r\n case 1:\r\n results = _d.sent();\r\n isValid = results.every(function (r) { return r; });\r\n _c = computeObserverState.call(this), errors = _c.errors, flags = _c.flags, fields = _c.fields;\r\n this.errors = errors;\r\n this.flags = flags;\r\n this.fields = fields;\r\n return [2 /*return*/, {\r\n errors: errors,\r\n flags: flags,\r\n fields: fields,\r\n isValid: isValid\r\n }];\r\n }\r\n });\r\n });\r\n },\r\n validate: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0: return [4 /*yield*/, this.validateWithInfo({ silent: silent })];\r\n case 1:\r\n isValid = (_c.sent()).isValid;\r\n return [2 /*return*/, isValid];\r\n }\r\n });\r\n });\r\n },\r\n handleSubmit: function (cb) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validate()];\r\n case 1:\r\n isValid = _a.sent();\r\n if (!isValid || !cb) {\r\n return [2 /*return*/];\r\n }\r\n return [2 /*return*/, cb()];\r\n }\r\n });\r\n });\r\n },\r\n reset: function () {\r\n return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });\r\n },\r\n setErrors: function (errors) {\r\n var _this = this;\r\n Object.keys(errors).forEach(function (key) {\r\n var provider = _this.refs[key];\r\n if (!provider)\r\n return;\r\n var errorArr = errors[key] || [];\r\n errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;\r\n provider.setErrors(errorArr);\r\n });\r\n this.observers.forEach(function (observer) {\r\n observer.setErrors(errors);\r\n });\r\n }\r\n }\r\n});\r\nfunction unregister(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.unobserve(vm.id, 'observer');\r\n }\r\n}\r\nfunction register(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.observe(vm, 'observer');\r\n }\r\n}\r\nfunction prepareSlotProps(vm) {\r\n return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, validateWithInfo: vm.validateWithInfo, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });\r\n}\r\n// Creates a modified version of validation flags\r\nfunction createObserverFlags() {\r\n return __assign(__assign({}, createFlags()), { valid: true, invalid: false });\r\n}\r\nfunction computeObserverState() {\r\n var vms = __spreadArrays(values(this.refs), this.observers.filter(function (o) { return !o.disabled; }));\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n var length = vms.length;\r\n for (var i = 0; i < length; i++) {\r\n var vm = vms[i];\r\n // validation provider\r\n if (Array.isArray(vm.errors)) {\r\n errors[vm.id] = vm.errors;\r\n fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);\r\n continue;\r\n }\r\n // Nested observer, merge errors and fields\r\n errors = __assign(__assign({}, errors), vm.errors);\r\n fields = __assign(__assign({}, fields), vm.fields);\r\n }\r\n FLAGS_STRATEGIES.forEach(function (_a) {\r\n var flag = _a[0], method = _a[1];\r\n flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });\r\n });\r\n return { errors: errors, flags: flags, fields: fields };\r\n}\n\nfunction withValidation(component, mapProps) {\r\n var _a;\r\n if (mapProps === void 0) { mapProps = identity; }\r\n var options = 'options' in component ? component.options : component;\r\n var providerOpts = ValidationProvider.options;\r\n var hoc = {\r\n name: (options.name || 'AnonymousHoc') + \"WithValidation\",\r\n props: __assign({}, providerOpts.props),\r\n data: providerOpts.data,\r\n computed: __assign({}, providerOpts.computed),\r\n methods: __assign({}, providerOpts.methods),\r\n beforeDestroy: providerOpts.beforeDestroy,\r\n inject: providerOpts.inject\r\n };\r\n var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';\r\n hoc.render = function (h) {\r\n var _a;\r\n this.registerField();\r\n var vctx = createValidationCtx(this);\r\n var listeners = __assign({}, this.$listeners);\r\n var model = findModel(this.$vnode);\r\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\r\n var value = findValue(this.$vnode);\r\n onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);\r\n var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;\r\n mergeVNodeListeners(listeners, eventName, onInput);\r\n mergeVNodeListeners(listeners, 'blur', onBlur);\r\n this.normalizedEvents.forEach(function (evt) {\r\n mergeVNodeListeners(listeners, evt, onValidate);\r\n });\r\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\r\n // WARNING: Accidental prop overwrite will probably happen.\r\n var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;\r\n var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));\r\n return h(options, {\r\n attrs: this.$attrs,\r\n props: props,\r\n on: listeners,\r\n scopedSlots: this.$scopedSlots\r\n }, normalizeSlots(this.$slots, this.$vnode.context));\r\n };\r\n return hoc;\r\n}\n\nvar version = '3.4.15';\n\nexport { ValidationObserver, ValidationProvider, configure, extend, localeChanged, localize, normalizeRules, setInteractionMode, validate, version, withValidation };\n","'use strict';\r\n\r\nvar Vue = require('vue');\r\nVue = 'default' in Vue ? Vue['default'] : Vue;\r\n\r\nvar version = '2.2.2';\r\n\r\nvar compatible = (/^2\\./).test(Vue.version);\r\nif (!compatible) {\r\n Vue.util.warn('VueClickaway ' + version + ' only supports Vue 2.x, and does not support Vue ' + Vue.version);\r\n}\r\n\r\n\r\n\r\n// @SECTION: implementation\r\n\r\nvar HANDLER = '_vue_clickaway_handler';\r\n\r\nfunction bind(el, binding, vnode) {\r\n unbind(el);\r\n\r\n var vm = vnode.context;\r\n\r\n var callback = binding.value;\r\n if (typeof callback !== 'function') {\r\n if (process.env.NODE_ENV !== 'production') {\r\n Vue.util.warn(\r\n 'v-' + binding.name + '=\"' +\r\n binding.expression + '\" expects a function value, ' +\r\n 'got ' + callback\r\n );\r\n }\r\n return;\r\n }\r\n\r\n // @NOTE: Vue binds directives in microtasks, while UI events are dispatched\r\n // in macrotasks. This causes the listener to be set up before\r\n // the \"origin\" click event (the event that lead to the binding of\r\n // the directive) arrives at the document root. To work around that,\r\n // we ignore events until the end of the \"initial\" macrotask.\r\n // @REFERENCE: https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/\r\n // @REFERENCE: https://github.com/simplesmiler/vue-clickaway/issues/8\r\n var initialMacrotaskEnded = false;\r\n setTimeout(function() {\r\n initialMacrotaskEnded = true;\r\n }, 0);\r\n\r\n el[HANDLER] = function(ev) {\r\n // @NOTE: this test used to be just `el.containts`, but working with path is better,\r\n // because it tests whether the element was there at the time of\r\n // the click, not whether it is there now, that the event has arrived\r\n // to the top.\r\n // @NOTE: `.path` is non-standard, the standard way is `.composedPath()`\r\n var path = ev.path || (ev.composedPath ? ev.composedPath() : undefined);\r\n if (initialMacrotaskEnded && (path ? path.indexOf(el) < 0 : !el.contains(ev.target))) {\r\n return callback.call(vm, ev);\r\n }\r\n };\r\n\r\n document.documentElement.addEventListener('click', el[HANDLER], false);\r\n}\r\n\r\nfunction unbind(el) {\r\n document.documentElement.removeEventListener('click', el[HANDLER], false);\r\n delete el[HANDLER];\r\n}\r\n\r\nvar directive = {\r\n bind: bind,\r\n update: function(el, binding) {\r\n if (binding.value === binding.oldValue) return;\r\n bind(el, binding);\r\n },\r\n unbind: unbind,\r\n};\r\n\r\nvar mixin = {\r\n directives: { onClickaway: directive },\r\n};\r\n\r\nexports.version = version;\r\nexports.directive = directive;\r\nexports.mixin = mixin;","function createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar smoothscroll = createCommonjsModule(function (module, exports) {\n/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */\n(function () {\n\n // polyfill\n function polyfill() {\n // aliases\n var w = window;\n var d = document;\n\n // return if scroll behavior is supported and polyfill is not forced\n if (\n 'scrollBehavior' in d.documentElement.style &&\n w.__forceSmoothScrollPolyfill__ !== true\n ) {\n return;\n }\n\n // globals\n var Element = w.HTMLElement || w.Element;\n var SCROLL_TIME = 468;\n\n // object gathering original scroll methods\n var original = {\n scroll: w.scroll || w.scrollTo,\n scrollBy: w.scrollBy,\n elementScroll: Element.prototype.scroll || scrollElement,\n scrollIntoView: Element.prototype.scrollIntoView\n };\n\n // define timing method\n var now =\n w.performance && w.performance.now\n ? w.performance.now.bind(w.performance)\n : Date.now;\n\n /**\n * indicates if a the current browser is made by Microsoft\n * @method isMicrosoftBrowser\n * @param {String} userAgent\n * @returns {Boolean}\n */\n function isMicrosoftBrowser(userAgent) {\n var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\n\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\n }\n\n /*\n * IE has rounding bug rounding down clientHeight and clientWidth and\n * rounding up scrollHeight and scrollWidth causing false positives\n * on hasScrollableSpace\n */\n var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\n\n /**\n * changes scroll position inside an element\n * @method scrollElement\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function scrollElement(x, y) {\n this.scrollLeft = x;\n this.scrollTop = y;\n }\n\n /**\n * returns result of applying ease math function to a number\n * @method ease\n * @param {Number} k\n * @returns {Number}\n */\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n /**\n * indicates if a smooth behavior should be applied\n * @method shouldBailOut\n * @param {Number|Object} firstArg\n * @returns {Boolean}\n */\n function shouldBailOut(firstArg) {\n if (\n firstArg === null ||\n typeof firstArg !== 'object' ||\n firstArg.behavior === undefined ||\n firstArg.behavior === 'auto' ||\n firstArg.behavior === 'instant'\n ) {\n // first argument is not an object/null\n // or behavior is auto, instant or undefined\n return true;\n }\n\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\n // first argument is an object and behavior is smooth\n return false;\n }\n\n // throw error when behavior is not supported\n throw new TypeError(\n 'behavior member of ScrollOptions ' +\n firstArg.behavior +\n ' is not a valid value for enumeration ScrollBehavior.'\n );\n }\n\n /**\n * indicates if an element has scrollable space in the provided axis\n * @method hasScrollableSpace\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function hasScrollableSpace(el, axis) {\n if (axis === 'Y') {\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\n }\n\n if (axis === 'X') {\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\n }\n }\n\n /**\n * indicates if an element has a scrollable overflow property in the axis\n * @method canOverflow\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function canOverflow(el, axis) {\n var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\n\n return overflowValue === 'auto' || overflowValue === 'scroll';\n }\n\n /**\n * indicates if an element can be scrolled in either axis\n * @method isScrollable\n * @param {Node} el\n * @param {String} axis\n * @returns {Boolean}\n */\n function isScrollable(el) {\n var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\n var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\n\n return isScrollableY || isScrollableX;\n }\n\n /**\n * finds scrollable parent of an element\n * @method findScrollableParent\n * @param {Node} el\n * @returns {Node} el\n */\n function findScrollableParent(el) {\n while (el !== d.body && isScrollable(el) === false) {\n el = el.parentNode || el.host;\n }\n\n return el;\n }\n\n /**\n * self invoked function that, given a context, steps through scrolling\n * @method step\n * @param {Object} context\n * @returns {undefined}\n */\n function step(context) {\n var time = now();\n var value;\n var currentX;\n var currentY;\n var elapsed = (time - context.startTime) / SCROLL_TIME;\n\n // avoid elapsed times higher than one\n elapsed = elapsed > 1 ? 1 : elapsed;\n\n // apply easing to elapsed time\n value = ease(elapsed);\n\n currentX = context.startX + (context.x - context.startX) * value;\n currentY = context.startY + (context.y - context.startY) * value;\n\n context.method.call(context.scrollable, currentX, currentY);\n\n // scroll more if we have not reached our destination\n if (currentX !== context.x || currentY !== context.y) {\n w.requestAnimationFrame(step.bind(w, context));\n }\n }\n\n /**\n * scrolls window or element with a smooth behavior\n * @method smoothScroll\n * @param {Object|Node} el\n * @param {Number} x\n * @param {Number} y\n * @returns {undefined}\n */\n function smoothScroll(el, x, y) {\n var scrollable;\n var startX;\n var startY;\n var method;\n var startTime = now();\n\n // define scroll context\n if (el === d.body) {\n scrollable = w;\n startX = w.scrollX || w.pageXOffset;\n startY = w.scrollY || w.pageYOffset;\n method = original.scroll;\n } else {\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n method = scrollElement;\n }\n\n // scroll looping over a frame\n step({\n scrollable: scrollable,\n method: method,\n startTime: startTime,\n startX: startX,\n startY: startY,\n x: x,\n y: y\n });\n }\n\n // ORIGINAL METHODS OVERRIDES\n // w.scroll and w.scrollTo\n w.scroll = w.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scroll.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object'\n ? arguments[0]\n : w.scrollX || w.pageXOffset,\n // use top prop, second argument if present or fallback to scrollY\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined\n ? arguments[1]\n : w.scrollY || w.pageYOffset\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : w.scrollX || w.pageXOffset,\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : w.scrollY || w.pageYOffset\n );\n };\n\n // w.scrollBy\n w.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0])) {\n original.scrollBy.call(\n w,\n arguments[0].left !== undefined\n ? arguments[0].left\n : typeof arguments[0] !== 'object' ? arguments[0] : 0,\n arguments[0].top !== undefined\n ? arguments[0].top\n : arguments[1] !== undefined ? arguments[1] : 0\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n w,\n d.body,\n ~~arguments[0].left + (w.scrollX || w.pageXOffset),\n ~~arguments[0].top + (w.scrollY || w.pageYOffset)\n );\n };\n\n // Element.prototype.scroll and Element.prototype.scrollTo\n Element.prototype.scroll = Element.prototype.scrollTo = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n // if one number is passed, throw error to match Firefox implementation\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\n throw new SyntaxError('Value could not be converted');\n }\n\n original.elementScroll.call(\n this,\n // use left prop, first number argument or fallback to scrollLeft\n arguments[0].left !== undefined\n ? ~~arguments[0].left\n : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,\n // use top prop, second argument or fallback to scrollTop\n arguments[0].top !== undefined\n ? ~~arguments[0].top\n : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop\n );\n\n return;\n }\n\n var left = arguments[0].left;\n var top = arguments[0].top;\n\n // LET THE SMOOTHNESS BEGIN!\n smoothScroll.call(\n this,\n this,\n typeof left === 'undefined' ? this.scrollLeft : ~~left,\n typeof top === 'undefined' ? this.scrollTop : ~~top\n );\n };\n\n // Element.prototype.scrollBy\n Element.prototype.scrollBy = function() {\n // avoid action when no arguments are passed\n if (arguments[0] === undefined) {\n return;\n }\n\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.elementScroll.call(\n this,\n arguments[0].left !== undefined\n ? ~~arguments[0].left + this.scrollLeft\n : ~~arguments[0] + this.scrollLeft,\n arguments[0].top !== undefined\n ? ~~arguments[0].top + this.scrollTop\n : ~~arguments[1] + this.scrollTop\n );\n\n return;\n }\n\n this.scroll({\n left: ~~arguments[0].left + this.scrollLeft,\n top: ~~arguments[0].top + this.scrollTop,\n behavior: arguments[0].behavior\n });\n };\n\n // Element.prototype.scrollIntoView\n Element.prototype.scrollIntoView = function() {\n // avoid smooth behavior if not required\n if (shouldBailOut(arguments[0]) === true) {\n original.scrollIntoView.call(\n this,\n arguments[0] === undefined ? true : arguments[0]\n );\n\n return;\n }\n\n // LET THE SMOOTHNESS BEGIN!\n var scrollableParent = findScrollableParent(this);\n var parentRects = scrollableParent.getBoundingClientRect();\n var clientRects = this.getBoundingClientRect();\n\n if (scrollableParent !== d.body) {\n // reveal element inside parent\n smoothScroll.call(\n this,\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top\n );\n\n // reveal parent in viewport unless is fixed\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\n w.scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n behavior: 'smooth'\n });\n }\n } else {\n // reveal element in viewport\n w.scrollBy({\n left: clientRects.left,\n top: clientRects.top,\n behavior: 'smooth'\n });\n }\n };\n }\n\n {\n // commonjs\n module.exports = { polyfill: polyfill };\n }\n\n}());\n});\nvar smoothscroll_1 = smoothscroll.polyfill;\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar script = {\n name: \"VueHorizontalList\",\n props: {\n /**\n * items to display in horizontal-list\n */\n items: {\n type: Array,\n required: true\n },\n\n /**\n * item.class = css class for each individual item.\n * item.padding = padding between each item in the list.\n *\n * list.class = css class for the parent of item\n * list.windowed = maximum width of the list it can extend to, basically the container max-width\n * list.padding = padding of the list, if container < windowed what is the left-right padding of the list\n *\n * responsive breakpoints to calculate how many items to show in the list at each width interval\n * Examples:\n * [{size: 5}] show 5 items regardless\n * [{end: 992, size: 3}},{size: 4}] < 992 show 3 items, else show 4 items\n * [{end: 576, size: 1}, {start: 576, end: 992, size: 2}, {size: 3}] < 576 show 1, 576 - 992 show 2, else show 3\n *\n * These are the default responsive fallback, if you don't have a catch all, it will fallback to this.\n * [{end: 576, size: 1},\n * {start: 576, end: 768, size: 2},\n * {start: 768, end: 992, size: 3},\n * {start: 992, end: 1200, size: 4},\n * {start: 1200, size: 5}]\n */\n options: {\n type: Object,\n required: false\n }\n },\n\n data() {\n return {\n /**\n * Current item position of list\n */\n position: 0,\n\n /**\n * Width of item, list and window\n */\n width: {\n container: 0,\n window: 576\n },\n\n /**\n * Debounce timer of the scroll\n */\n scrollTimer: null,\n\n /**\n * Interval of the autoPlay\n */\n autoPlayInterval: null\n };\n },\n\n mounted() {\n this.$resize = () => {\n this.width.window = window.innerWidth;\n this.width.container = this.$refs.container.clientWidth;\n }; // TODO(fuxing): Need to re-do this\n // Added a simple SSR fix, need to look into it for optimization in the future\n\n\n smoothscroll.polyfill();\n\n this.$resize();\n window.addEventListener(\"resize\", this.$resize);\n\n if (this._options.position.start) {\n this.$nextTick(() => {\n this.go(this._options.position.start);\n });\n }\n\n if (this._options.autoplay.play) {\n this.runAutoPlay();\n }\n },\n\n beforeDestroy() {\n window.removeEventListener(\"resize\", this.$resize);\n\n if (this.autoPlayInterval) {\n clearInterval(this.autoPlayInterval);\n }\n },\n\n computed: {\n _items() {\n return [...(this.$slots[\"start\"] ? [{\n type: \"start\"\n }] : []), ...this.items.map(value => ({\n type: \"item\",\n item: value\n })), ...(this.$slots[\"end\"] ? [{\n type: \"end\"\n }] : [])];\n },\n\n _length() {\n return this._items.length;\n },\n\n _options() {\n var _options$navigation$s, _options$navigation, _options$navigation$c, _options$navigation2, _options$item$class, _options$item, _options$item$padding, _options$item2, _options$list$class, _options$list, _options$list$windowe, _options$list2, _options$list$padding, _options$list3, _options$responsive, _options$position$sta, _options$position, _options$autoplay$pla, _options$autoplay, _options$autoplay$spe, _options$autoplay2, _options$autoplay$rep, _options$autoplay3;\n\n const options = this.options;\n return {\n navigation: {\n start: (_options$navigation$s = options === null || options === void 0 ? void 0 : (_options$navigation = options.navigation) === null || _options$navigation === void 0 ? void 0 : _options$navigation.start) !== null && _options$navigation$s !== void 0 ? _options$navigation$s : 992,\n // TODO(fuxing): Deprecate this in favor of navigation slot\n color: (_options$navigation$c = options === null || options === void 0 ? void 0 : (_options$navigation2 = options.navigation) === null || _options$navigation2 === void 0 ? void 0 : _options$navigation2.color) !== null && _options$navigation$c !== void 0 ? _options$navigation$c : \"#000\"\n },\n item: {\n class: (_options$item$class = options === null || options === void 0 ? void 0 : (_options$item = options.item) === null || _options$item === void 0 ? void 0 : _options$item.class) !== null && _options$item$class !== void 0 ? _options$item$class : \"\",\n padding: (_options$item$padding = options === null || options === void 0 ? void 0 : (_options$item2 = options.item) === null || _options$item2 === void 0 ? void 0 : _options$item2.padding) !== null && _options$item$padding !== void 0 ? _options$item$padding : 16\n },\n list: {\n class: (_options$list$class = options === null || options === void 0 ? void 0 : (_options$list = options.list) === null || _options$list === void 0 ? void 0 : _options$list.class) !== null && _options$list$class !== void 0 ? _options$list$class : \"\",\n windowed: (_options$list$windowe = options === null || options === void 0 ? void 0 : (_options$list2 = options.list) === null || _options$list2 === void 0 ? void 0 : _options$list2.windowed) !== null && _options$list$windowe !== void 0 ? _options$list$windowe : 1200,\n padding: (_options$list$padding = options === null || options === void 0 ? void 0 : (_options$list3 = options.list) === null || _options$list3 === void 0 ? void 0 : _options$list3.padding) !== null && _options$list$padding !== void 0 ? _options$list$padding : 24\n },\n responsive: [...((_options$responsive = options === null || options === void 0 ? void 0 : options.responsive) !== null && _options$responsive !== void 0 ? _options$responsive : []), // Fallback default responsive\n {\n end: 576,\n size: 1\n }, {\n start: 576,\n end: 768,\n size: 2\n }, {\n start: 768,\n end: 992,\n size: 3\n }, {\n start: 992,\n end: 1200,\n size: 4\n }, {\n start: 1200,\n size: 5\n }],\n position: {\n start: (_options$position$sta = options === null || options === void 0 ? void 0 : (_options$position = options.position) === null || _options$position === void 0 ? void 0 : _options$position.start) !== null && _options$position$sta !== void 0 ? _options$position$sta : 0\n },\n autoplay: {\n play: (_options$autoplay$pla = options === null || options === void 0 ? void 0 : (_options$autoplay = options.autoplay) === null || _options$autoplay === void 0 ? void 0 : _options$autoplay.play) !== null && _options$autoplay$pla !== void 0 ? _options$autoplay$pla : false,\n speed: (_options$autoplay$spe = options === null || options === void 0 ? void 0 : (_options$autoplay2 = options.autoplay) === null || _options$autoplay2 === void 0 ? void 0 : _options$autoplay2.speed) !== null && _options$autoplay$spe !== void 0 ? _options$autoplay$spe : 2000,\n repeat: (_options$autoplay$rep = options === null || options === void 0 ? void 0 : (_options$autoplay3 = options.autoplay) === null || _options$autoplay3 === void 0 ? void 0 : _options$autoplay3.repeat) !== null && _options$autoplay$rep !== void 0 ? _options$autoplay$rep : false\n }\n };\n },\n\n _style() {\n const style = {\n container: {},\n list: {},\n item: {},\n tail: {}\n };\n const workingWidth = this._workingWidth;\n const size = this._size; // Full Screen Mode\n\n if (this.width.window < this._options.list.windowed) {\n style.container.marginLeft = `-${this._options.list.padding}px`;\n style.container.marginRight = `-${this._options.list.padding}px`;\n style.item.width = `${(workingWidth - (size - 1) * this._options.item.padding) / size}px`;\n style.item.paddingLeft = `${this._options.list.padding}px`;\n style.item.paddingRight = `${this._options.item.padding}px`;\n style.item.marginRight = `-${this._options.list.padding}px`;\n } // Windowed Mode\n else {\n style.item.paddingLeft = `${this._options.item.padding / 2}px`;\n style.item.paddingRight = `${this._options.item.padding / 2}px`;\n style.container.marginLeft = `-${this._options.item.padding / 2}px`;\n style.container.marginRight = `-${this._options.item.padding / 2}px`;\n style.item.width = `${(workingWidth - (size - 1) * this._options.item.padding) / size}px`;\n }\n\n return style;\n },\n\n _itemWidth() {\n return (this._workingWidth - (this._size - 1) * this._options.item.padding) / this._size;\n },\n\n /**\n * @return number actual width of the container\n */\n _workingWidth() {\n // Full Screen Mode\n if (this.width.window < this._options.list.windowed) {\n return this.width.window - this._options.list.padding * 2;\n } // Windowed Mode\n else {\n return this.width.container;\n }\n },\n\n /**\n * @return visible items in horizontal list at the current width/state\n */\n _size() {\n const width = this._workingWidth;\n return this._options.responsive.find(value => {\n return (!value.start || value.start <= width) && (!value.end || value.end >= width);\n }).size;\n },\n\n /**\n * @return boolean whether there is prev set of items for navigation\n * @private internal use\n */\n _hasNext() {\n return this._length > this.position + this._size;\n },\n\n /**\n * @return boolean whether there is next set of items for navigation\n * @private internal use\n */\n _hasPrev() {\n return this.position > 0;\n }\n\n },\n methods: {\n /**\n * @param position of item to scroll to\n */\n go(position) {\n const maxPosition = this._length - this._size;\n this.position = position > maxPosition ? maxPosition : position;\n const left = this._itemWidth * this.position + this.position * this._options.item.padding;\n this.$refs.list.scrollTo({\n top: 0,\n left: left,\n behavior: \"smooth\"\n });\n },\n\n /**\n * Run autoPlay slide show\n */\n runAutoPlay() {\n this.autoPlayInterval = setInterval(function () {\n if (this._options.autoplay.repeat && this.position === this._length - this._size) {\n this.position = 0;\n this.go(this.position);\n } else {\n this.position += 1;\n this.go(this.position);\n }\n }.bind(this), this._options.autoplay.speed);\n },\n\n /**\n * Stop autoPlay slide show\n */\n stopAutoPlay() {\n clearInterval(this.autoPlayInterval);\n },\n\n /**\n * Go to a set of previous items\n */\n prev() {\n this.go(this.position - this._size);\n },\n\n /**\n * Go to a set of next items\n */\n next() {\n this.go(this.position + this._size);\n },\n\n /**\n * On horizontal scroll re-evaluate the actual position\n */\n scrollHandler() {\n clearTimeout(this.scrollTimer); //Renew timer\n\n this.scrollTimer = setTimeout(function () {\n const parentLeftOffset = this.$refs[\"list\"].getBoundingClientRect().left;\n\n let items = this._items.map((item, index) => {\n const itemLeftOffset = this.$refs.item[index].getBoundingClientRect().left;\n return Math.abs(itemLeftOffset - parentLeftOffset);\n });\n\n this.position = items.indexOf(Math.min(...items));\n }.bind(this), 50);\n }\n\n },\n watch: {\n \"options.autoplay.play\": function (newVal, oldVal) {\n if (!newVal) {\n this.stopAutoPlay();\n } else {\n this.runAutoPlay();\n }\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\nconst isOldIE = typeof navigator !== 'undefined' &&\r\n /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return (id, style) => addStyle(id, style);\r\n}\r\nlet HEAD;\r\nconst styles = {};\r\nfunction addStyle(id, css) {\r\n const group = isOldIE ? css.media || 'default' : id;\r\n const style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n let code = css.source;\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n // http://stackoverflow.com/a/26603875\r\n code +=\r\n '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n ' */';\r\n }\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media)\r\n style.element.setAttribute('media', css.media);\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n HEAD.appendChild(style.element);\r\n }\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles\r\n .filter(Boolean)\r\n .join('\\n');\r\n }\r\n else {\r\n const index = style.ids.size - 1;\r\n const textNode = document.createTextNode(code);\r\n const nodes = style.element.childNodes;\r\n if (nodes[index])\r\n style.element.removeChild(nodes[index]);\r\n if (nodes.length)\r\n style.element.insertBefore(textNode, nodes[index]);\r\n else\r\n style.element.appendChild(textNode);\r\n }\r\n }\r\n}\n\n/* script */\nconst __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function () {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c('div', {\n ref: \"container\",\n staticClass: \"vue-horizontal-list\"\n }, [_vm.width.window > _vm._options.navigation.start ? _c('div', {\n staticClass: \"vhl-navigation\"\n }, [_vm._hasPrev ? _c('div', {\n staticClass: \"vhl-btn-left\",\n on: {\n \"click\": _vm.prev\n }\n }, [_vm._t(\"nav-prev\", [_c('svg', {\n attrs: {\n \"fill\": _vm._options.navigation.color,\n \"width\": \"32px\",\n \"height\": \"32px\",\n \"viewBox\": \"0 0 24 24\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M10.757 12l4.95 4.95a1 1 0 1 1-1.414 1.414l-5.657-5.657a1 1 0 0 1 0-1.414l5.657-5.657a1 1 0 0 1 1.414 1.414L10.757 12z\"\n }\n })])])], 2) : _vm._e(), _vm._v(\" \"), _vm._hasNext ? _c('div', {\n staticClass: \"vhl-btn-right\",\n on: {\n \"click\": _vm.next\n }\n }, [_vm._t(\"nav-next\", [_c('svg', {\n attrs: {\n \"fill\": _vm._options.navigation.color,\n \"width\": \"32px\",\n \"height\": \"32px\",\n \"viewBox\": \"0 0 24 24\"\n }\n }, [_c('path', {\n attrs: {\n \"d\": \"M13.314 12.071l-4.95-4.95a1 1 0 0 1 1.414-1.414l5.657 5.657a1 1 0 0 1 0 1.414l-5.657 5.657a1 1 0 0 1-1.414-1.414l4.95-4.95z\"\n }\n })])])], 2) : _vm._e()]) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"vhl-container\",\n style: _vm._style.container\n }, [_c('div', {\n ref: \"list\",\n staticClass: \"vhl-list\",\n class: _vm._options.list.class,\n style: _vm._style.list,\n on: {\n \"scroll\": _vm.scrollHandler\n }\n }, [_vm._l(_vm._items, function (item) {\n return _c('div', {\n ref: \"item\",\n refInFor: true,\n staticClass: \"vhl-item\",\n class: _vm._options.item.class,\n style: _vm._style.item\n }, [item.type === 'start' ? _vm._t(\"start\") : item.type === 'end' ? _vm._t(\"end\") : item.type === 'item' ? _vm._t(\"default\", [_vm._v(_vm._s(item))], {\n \"item\": item.item\n }) : _vm._e()], 2);\n }), _vm._v(\" \"), _c('div', {\n style: _vm._style.tail\n })], 2)])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n/* style */\n\nconst __vue_inject_styles__ = function (inject) {\n if (!inject) return;\n inject(\"data-v-8b923bbc_0\", {\n source: \".vue-horizontal-list[data-v-8b923bbc]{position:relative}.vhl-navigation[data-v-8b923bbc]{display:flex;align-items:center;position:absolute;width:100%;height:100%;margin-top:-6px}.vhl-btn-left[data-v-8b923bbc],.vhl-btn-right[data-v-8b923bbc]{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:24px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);z-index:2}.vhl-btn-left[data-v-8b923bbc]:hover,.vhl-btn-right[data-v-8b923bbc]:hover{cursor:pointer}.vhl-btn-left[data-v-8b923bbc]{margin-left:-24px;margin-right:auto}.vhl-btn-right[data-v-8b923bbc]{margin-left:auto;margin-right:-24px}.vhl-container[data-v-8b923bbc]{overflow-y:hidden;height:100%;margin-bottom:-24px}.vhl-list[data-v-8b923bbc]{display:flex;padding-bottom:24px;margin-bottom:-24px;overflow-x:scroll;overflow-y:hidden;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}.vhl-item[data-v-8b923bbc]{box-sizing:content-box;padding-top:24px;padding-bottom:24px;z-index:1;min-height:1px}.vhl-list>*[data-v-8b923bbc]{scroll-snap-align:start;flex-shrink:0}\",\n map: undefined,\n media: undefined\n });\n};\n/* scoped */\n\n\nconst __vue_scope_id__ = \"data-v-8b923bbc\";\n/* module identifier */\n\nconst __vue_module_identifier__ = undefined;\n/* functional template */\n\nconst __vue_is_functional_template__ = false;\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nconst __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, createInjector, undefined, undefined);\n\n// Import vue component\n\nconst install = function installVueHorizontalList(Vue) {\n if (install.installed) return;\n install.installed = true;\n Vue.component(\"VueHorizontalList\", __vue_component__);\n}; // Create module definition for Vue.use()\n// to be registered via Vue.use() as well as Vue.component()\n\n\n__vue_component__.install = install; // Export component by default\n// also be used as directives, etc. - eg. import { RollupDemoDirective } from 'rollup-demo';\n// export const RollupDemoDirective = component;\n\nexport default __vue_component__;\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.vueMoment = {})));\n}(this, (function (exports) { 'use strict';\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\n\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar moment = createCommonjsModule(function (module, exports) {\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//! moment.js\n\n(function (global, factory) {\n (_typeof(exports)) === 'object' && 'object' !== 'undefined' ? module.exports = factory() : typeof undefined === 'function' && undefined.amd ? undefined(factory) : global.moment = factory();\n})(commonjsGlobal, function () {\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function some(fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (_typeof(arguments[i]) === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function keys(obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({ unit: u, priority: priorities[u] });\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function func() {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function func(input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if ((typeof units === 'undefined' ? 'undefined' : _typeof(units)) === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return (n % x + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function indexOf(o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && 'object' !== 'undefined' && module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = commonjsRequire;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/]];\n\n // iso time formats and regexes\n var isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged and will be removed in an upcoming major release. Please refer to ' + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n });\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig, bestMoment, scoreToBeat, i, currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || format === undefined && input === '') {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n });\n\n var prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n });\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function now() {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds + seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign)\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if ((typeof duration === 'undefined' ? 'undefined' : _typeof(duration)) === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;val = period;period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;break;\n case 'month':\n output = monthDiff(this, that);break;\n case 'quarter':\n output = monthDiff(this, that) / 3;break;\n case 'second':\n output = (this - that) / 1e3;break; // 1000\n case 'minute':\n output = (this - that) / 6e4;break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({ to: this, from: time }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({ from: this, to: time }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function ordinal(number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days] || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' + (Y ? ymSign + Y + 'Y' : '') + (M ? ymSign + M + 'M' : '') + (D ? daysSign + D + 'D' : '') + (h || m || s ? 'T' : '') + (h ? hmsSign + h + 'H' : '') + (m ? hmsSign + m + 'M' : '') + (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n});\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\nvar vueMoment = {\n install: function install(Vue, options) {\n var moment$$1 = options && options.moment ? options.moment : moment;\n\n Object.defineProperties(Vue.prototype, {\n $moment: {\n get: function get() {\n return moment$$1;\n }\n }\n });\n\n Vue.moment = moment$$1;\n\n Vue.filter('moment', function () {\n var arguments$1 = arguments;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n\n args = Array.prototype.slice.call(args);\n var input = args.shift();\n var date = void 0;\n\n if (Array.isArray(input) && typeof input[0] === 'string') {\n // If input is array, assume we're being passed a format pattern to parse against.\n // Format pattern will accept an array of potential formats to parse against.\n // Date string should be at [0], format pattern(s) should be at [1]\n date = moment$$1(input[0], input[1], true);\n } else if (typeof input === 'number') {\n if (input.toString().length < 12) {\n // If input is an integer with fewer than 12 digits, assume Unix seconds...\n date = moment$$1.unix(input);\n } else {\n // ..otherwise, assume milliseconds.\n date = moment$$1(input);\n }\n } else {\n // Otherwise, throw the input at moment and see what happens...\n date = moment$$1(input);\n }\n\n if (!input || !date.isValid()) {\n // Log a warning if moment couldn't reconcile the input. Better than throwing an error?\n console.warn('Could not build a valid `moment` object from input.');\n return input;\n }\n\n function parse() {\n var arguments$1 = arguments;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments$1[_key2];\n }\n\n args = Array.prototype.slice.call(args);\n var method = args.shift();\n\n switch (method) {\n case 'add':\n {\n /*\n * Mutates the original moment by adding time.\n * http://momentjs.com/docs/#/manipulating/add/\n */\n\n var addends = args.shift().split(',').map(Function.prototype.call, String.prototype.trim);\n var obj = {};\n\n for (var n = 0; n < addends.length; n++) {\n var addend = addends[n].split(' ');\n obj[addend[1]] = addend[0];\n }\n date.add(obj);\n break;\n }\n\n case 'subtract':\n {\n /*\n * Mutates the original moment by subtracting time.\n * http://momentjs.com/docs/#/manipulating/subtract/\n */\n\n var subtrahends = args.shift().split(',').map(Function.prototype.call, String.prototype.trim);\n var _obj = {};\n\n for (var _n = 0; _n < subtrahends.length; _n++) {\n var subtrahend = subtrahends[_n].split(' ');\n _obj[subtrahend[1]] = subtrahend[0];\n }\n date.subtract(_obj);\n break;\n }\n\n case 'from':\n {\n /*\n * Display a moment in relative time, either from now or from a specified date.\n * http://momentjs.com/docs/#/displaying/fromnow/\n */\n\n var from = 'now';\n var removeSuffix = false;\n\n if (args[0] === 'now') { args.shift(); }\n // If valid, assume it is a date we want the output computed against.\n if (moment$$1(args[0]).isValid()) { from = moment$$1(args.shift()); }\n\n if (args[0] === true) {\n args.shift();\n removeSuffix = true;\n }\n\n if (from !== 'now') {\n date = date.from(from, removeSuffix);\n } else {\n date = date.fromNow(removeSuffix);\n }\n break;\n }\n\n case 'diff':\n {\n /*\n * Mutates the original moment by doing a difference with another date.\n * http://momentjs.com/docs/#/displaying/difference/\n */\n\n var referenceTime = moment$$1();\n var units = '';\n var float = false;\n\n if (moment$$1(args[0]).isValid()) {\n // If valid, assume it is a date we want the output computed against.\n referenceTime = moment$$1(args.shift());\n } else if (args[0] === null || args[0] === 'now') {\n // If null or 'now', remove argument and proceed with default referenceTime.\n args.shift();\n }\n\n if (args[0]) { units = args.shift(); }\n\n if (args[0] === true) { float = args.shift(); }\n\n date = date.diff(referenceTime, units, float);\n break;\n }\n\n case 'calendar':\n {\n /*\n * Formats a date with different strings depending on how close\n * to a certain date (today by default) the date is.\n * http://momentjs.com/docs/#/displaying/calendar-time/\n */\n\n var _referenceTime = moment$$1();\n var formats = {};\n\n if (moment$$1(args[0]).isValid()) {\n // If valid, assume it is a date we want the output computed against.\n _referenceTime = moment$$1(args.shift());\n } else if (args[0] === null || args[0] === 'now') {\n // If null or 'now', remove argument and proceed with default referenceTime.\n args.shift();\n }\n\n if (_typeof(args[0]) === 'object') { formats = args.shift(); }\n\n date = date.calendar(_referenceTime, formats);\n break;\n }\n\n case 'utc':\n {\n /*\n * Mutates the original moment by converting to UTC\n * https://momentjs.com/docs/#/manipulating/utc/\n */\n date.utc();\n break;\n }\n\n case 'timezone':\n {\n /*\n * Mutates the original moment by converting to a new timezone.\n * https://momentjs.com/timezone/docs/#/using-timezones/converting-to-zone/\n */\n date.tz(args.shift());\n break;\n }\n\n default:\n {\n /*\n * Formats a date by taking a string of tokens and replacing\n * them with their corresponding values.\n * http://momentjs.com/docs/#/displaying/format/\n */\n\n var format = method;\n date = date.format(format);\n }\n }\n\n if (args.length) { parse.apply(parse, args); }\n }\n\n parse.apply(parse, args);\n\n return date;\n });\n\n Vue.filter('duration', function () {\n var arguments$1 = arguments;\n\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments$1[_key3];\n }\n\n /*\n * Basic pass-through filter for leveraging moment.js's ability\n * to manipulate and display durations.\n * https://momentjs.com/docs/#/durations/\n */\n args = Array.prototype.slice.call(args);\n var input = args.shift();\n var method = args.shift();\n\n function createDuration(time) {\n if (!Array.isArray(time)) { time = [time]; }\n var result = moment$$1.duration.apply(moment$$1, _toConsumableArray(time));\n if (!result.isValid()) { console.warn('Could not build a valid `duration` object from input.'); }\n return result;\n }\n var duration = createDuration(input);\n\n if (method === 'add' || method === 'subtract') {\n // Generates a duration object and either adds or subtracts it\n // from our original duration.\n var durationChange = createDuration(args);\n duration[method](durationChange);\n } else if (duration && duration[method]) {\n var _duration;\n\n // This gives a full proxy to moment.duration functions.\n duration = (_duration = duration)[method].apply(_duration, _toConsumableArray(args));\n }\n\n return duration;\n });\n }\n};\n\nvar vueMoment_1 = vueMoment.install;\n\nexports['default'] = vueMoment;\nexports.install = vueMoment_1;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","(function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.VueTheMask=t():e.VueTheMask=t()})(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\".\",t(t.s=10)}([function(e,t){e.exports={\"#\":{pattern:/\\d/},X:{pattern:/[0-9a-zA-Z]/},S:{pattern:/[a-zA-Z]/},A:{pattern:/[a-zA-Z]/,transform:function(e){return e.toLocaleUpperCase()}},a:{pattern:/[a-zA-Z]/,transform:function(e){return e.toLocaleLowerCase()}},\"!\":{escape:!0}}},function(e,t,n){\"use strict\";function r(e){var t=document.createEvent(\"Event\");return t.initEvent(e,!0,!0),t}var a=n(2),o=n(0),i=n.n(o);t.a=function(e,t){var o=t.value;if((Array.isArray(o)||\"string\"==typeof o)&&(o={mask:o,tokens:i.a}),\"INPUT\"!==e.tagName.toLocaleUpperCase()){var u=e.getElementsByTagName(\"input\");if(1!==u.length)throw new Error(\"v-mask directive requires 1 input, found \"+u.length);e=u[0]}e.oninput=function(t){if(t.isTrusted){var i=e.selectionEnd,u=e.value[i-1];for(e.value=n.i(a.a)(e.value,o.mask,!0,o.tokens);i2&&void 0!==arguments[2])||arguments[2],i=arguments[3];return Array.isArray(t)?n.i(a.a)(r.a,t,i)(e,t,o,i):n.i(r.a)(e,t,o,i)}},function(e,t,n){\"use strict\";function r(e){e.component(s.a.name,s.a),e.directive(\"mask\",i.a)}Object.defineProperty(t,\"__esModule\",{value:!0});var a=n(0),o=n.n(a),i=n(1),u=n(7),s=n.n(u);n.d(t,\"TheMask\",function(){return s.a}),n.d(t,\"mask\",function(){return i.a}),n.d(t,\"tokens\",function(){return o.a}),n.d(t,\"version\",function(){return c});var c=\"0.11.1\";t.default=r,\"undefined\"!=typeof window&&window.Vue&&window.Vue.use(r)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(1),a=n(0),o=n.n(a),i=n(2);t.default={name:\"TheMask\",props:{value:[String,Number],mask:{type:[String,Array],required:!0},masked:{type:Boolean,default:!1},tokens:{type:Object,default:function(){return o.a}}},directives:{mask:r.a},data:function(){return{lastValue:null,display:this.value}},watch:{value:function(e){e!==this.lastValue&&(this.display=e)},masked:function(){this.refresh(this.display)}},computed:{config:function(){return{mask:this.mask,tokens:this.tokens,masked:this.masked}}},methods:{onInput:function(e){e.isTrusted||this.refresh(e.target.value)},refresh:function(e){this.display=e;var e=n.i(i.a)(e,this.mask,this.masked,this.tokens);e!==this.lastValue&&(this.lastValue=e,this.$emit(\"input\",e))}}}},function(e,t,n){\"use strict\";function r(e,t,n){return t=t.sort(function(e,t){return e.length-t.length}),function(r,a){for(var o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=0;iu.length))return e(r,u,o,n)}return\"\"}}t.a=r},function(e,t,n){\"use strict\";function r(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=arguments[3];e=e||\"\",t=t||\"\";for(var a=0,o=0,i=\"\";a= 0 && Math.floor(n) === n && isFinite(val);\n}\nfunction isPromise(val) {\n return (isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function');\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString(val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n}\nfunction replacer(_key, val) {\n // avoid circular deps from v3\n if (val && val.__v_isRef) {\n return val.value;\n }\n return val;\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber(val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap(str, expectsLowerCase) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\n}\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\nfunction remove$2(arr, item) {\n var len = arr.length;\n if (len) {\n // fast path for the only / last item\n if (item === arr[len - 1]) {\n arr.length = len - 1;\n return;\n }\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1);\n }\n }\n}\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\n});\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n/* istanbul ignore next */\nfunction polyfillBind(fn, ctx) {\n function boundFn(a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx);\n }\n boundFn._length = fn.length;\n return boundFn;\n}\nfunction nativeBind(fn, ctx) {\n return fn.bind(ctx);\n}\n// @ts-expect-error bind cannot be `undefined`\nvar bind = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray(list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret;\n}\n/**\n * Mix properties into target object.\n */\nfunction extend(to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject(arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res;\n}\n/* eslint-disable no-unused-vars */\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop(a, b, c) { }\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n/* eslint-enable no-unused-vars */\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return (a.length === b.length &&\n a.every(function (e, i) {\n return looseEqual(e, b[i]);\n }));\n }\n else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return (keysA.length === keysB.length &&\n keysA.every(function (key) {\n return looseEqual(a[key], b[key]);\n }));\n }\n else {\n /* istanbul ignore next */\n return false;\n }\n }\n catch (e) {\n /* istanbul ignore next */\n return false;\n }\n }\n else if (!isObjectA && !isObjectB) {\n return String(a) === String(b);\n }\n else {\n return false;\n }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf(arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val))\n return i;\n }\n return -1;\n}\n/**\n * Ensure a function is called only once.\n */\nfunction once(fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\nfunction hasChanged(x, y) {\n if (x === y) {\n return x === 0 && 1 / x !== 1 / y;\n }\n else {\n return x === x || y === y;\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch',\n 'renderTracked',\n 'renderTriggered'\n];\n\nvar config = {\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n /**\n * Whether to record perf\n */\n performance: false,\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n};\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved(str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5f;\n}\n/**\n * Define a property.\n */\nfunction def(obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\nfunction parsePath(path) {\n if (bailRE.test(path)) {\n return;\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj)\n return;\n obj = obj[segments[i]];\n }\n return obj;\n };\n}\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nUA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\nUA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n// Firefox has a \"watch\" function on Object.prototype...\n// @ts-expect-error firebox support\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n }); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n }\n catch (e) { }\n}\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer =\n global['process'] && global['process'].env.VUE_ENV === 'server';\n }\n else {\n _isServer = false;\n }\n }\n return _isServer;\n};\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\nfunction isNative(Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\nvar hasSymbol = typeof Symbol !== 'undefined' &&\n isNative(Symbol) &&\n typeof Reflect !== 'undefined' &&\n isNative(Reflect.ownKeys);\nvar _Set; // $flow-disable-line\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n}\nelse {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /** @class */ (function () {\n function Set() {\n this.set = Object.create(null);\n }\n Set.prototype.has = function (key) {\n return this.set[key] === true;\n };\n Set.prototype.add = function (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function () {\n this.set = Object.create(null);\n };\n return Set;\n }());\n}\n\nvar currentInstance = null;\n/**\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\n * relies on it). Do not use this internally, just use `currentInstance`.\n *\n * @internal this function needs manual type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction getCurrentInstance() {\n return currentInstance && { proxy: currentInstance };\n}\n/**\n * @internal\n */\nfunction setCurrentInstance(vm) {\n if (vm === void 0) { vm = null; }\n if (!vm)\n currentInstance && currentInstance._scope.off();\n currentInstance = vm;\n vm && vm._scope.on();\n}\n\n/**\n * @internal\n */\nvar VNode = /** @class */ (function () {\n function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n }\n Object.defineProperty(VNode.prototype, \"child\", {\n // DEPRECATED: alias for componentInstance for backwards compat.\n /* istanbul ignore next */\n get: function () {\n return this.componentInstance;\n },\n enumerable: false,\n configurable: true\n });\n return VNode;\n}());\nvar createEmptyVNode = function (text) {\n if (text === void 0) { text = ''; }\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node;\n};\nfunction createTextVNode(val) {\n return new VNode(undefined, undefined, undefined, String(val));\n}\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode(vnode) {\n var cloned = new VNode(vnode.tag, vnode.data, \n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned;\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar uid$2 = 0;\nvar pendingCleanupDeps = [];\nvar cleanupDeps = function () {\n for (var i = 0; i < pendingCleanupDeps.length; i++) {\n var dep = pendingCleanupDeps[i];\n dep.subs = dep.subs.filter(function (s) { return s; });\n dep._pending = false;\n }\n pendingCleanupDeps.length = 0;\n};\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n * @internal\n */\nvar Dep = /** @class */ (function () {\n function Dep() {\n // pending subs cleanup\n this._pending = false;\n this.id = uid$2++;\n this.subs = [];\n }\n Dep.prototype.addSub = function (sub) {\n this.subs.push(sub);\n };\n Dep.prototype.removeSub = function (sub) {\n // #12696 deps with massive amount of subscribers are extremely slow to\n // clean up in Chromium\n // to workaround this, we unset the sub for now, and clear them on\n // next scheduler flush.\n this.subs[this.subs.indexOf(sub)] = null;\n if (!this._pending) {\n this._pending = true;\n pendingCleanupDeps.push(this);\n }\n };\n Dep.prototype.depend = function (info) {\n if (Dep.target) {\n Dep.target.addDep(this);\n if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\n Dep.target.onTrack(__assign({ effect: Dep.target }, info));\n }\n }\n };\n Dep.prototype.notify = function (info) {\n // stabilize the subscriber list first\n var subs = this.subs.filter(function (s) { return s; });\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n var sub = subs[i];\n if (process.env.NODE_ENV !== 'production' && info) {\n sub.onTrigger &&\n sub.onTrigger(__assign({ effect: subs[i] }, info));\n }\n sub.update();\n }\n };\n return Dep;\n}());\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\nfunction pushTarget(target) {\n targetStack.push(target);\n Dep.target = target;\n}\nfunction popTarget() {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted)\n ob.observeArray(inserted);\n // notify change\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\n target: this,\n key: method\n });\n }\n else {\n ob.dep.notify();\n }\n return result;\n });\n});\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\nvar NO_INITIAL_VALUE = {};\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\nfunction toggleObserving(value) {\n shouldObserve = value;\n}\n// ssr mock dep\nvar mockDep = {\n notify: noop,\n depend: noop,\n addSub: noop,\n removeSub: noop\n};\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = /** @class */ (function () {\n function Observer(value, shallow, mock) {\n if (shallow === void 0) { shallow = false; }\n if (mock === void 0) { mock = false; }\n this.value = value;\n this.shallow = shallow;\n this.mock = mock;\n // this.value = value\n this.dep = mock ? mockDep : new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (isArray(value)) {\n if (!mock) {\n if (hasProto) {\n value.__proto__ = arrayMethods;\n /* eslint-enable no-proto */\n }\n else {\n for (var i = 0, l = arrayKeys.length; i < l; i++) {\n var key = arrayKeys[i];\n def(value, key, arrayMethods[key]);\n }\n }\n }\n if (!shallow) {\n this.observeArray(value);\n }\n }\n else {\n /**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\n var keys = Object.keys(value);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock);\n }\n }\n }\n /**\n * Observe a list of Array items.\n */\n Observer.prototype.observeArray = function (value) {\n for (var i = 0, l = value.length; i < l; i++) {\n observe(value[i], false, this.mock);\n }\n };\n return Observer;\n}());\n// helpers\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe(value, shallow, ssrMockReactivity) {\n if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n return value.__ob__;\n }\n if (shouldObserve &&\n (ssrMockReactivity || !isServerRendering()) &&\n (isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value.__v_skip /* ReactiveFlags.SKIP */ &&\n !isRef(value) &&\n !(value instanceof VNode)) {\n return new Observer(value, shallow, ssrMockReactivity);\n }\n}\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) {\n if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; }\n var dep = new Dep();\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) &&\n (val === NO_INITIAL_VALUE || arguments.length === 2)) {\n val = obj[key];\n }\n var childOb = shallow ? val && val.__ob__ : observe(val, false, mock);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: obj,\n type: \"get\" /* TrackOpTypes.GET */,\n key: key\n });\n }\n else {\n dep.depend();\n }\n if (childOb) {\n childOb.dep.depend();\n if (isArray(value)) {\n dependArray(value);\n }\n }\n }\n return isRef(value) && !shallow ? value.value : value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (!hasChanged(value, newVal)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n }\n else if (getter) {\n // #7981: for accessor properties without setter\n return;\n }\n else if (!shallow && isRef(value) && !isRef(newVal)) {\n value.value = newVal;\n return;\n }\n else {\n val = newVal;\n }\n childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock);\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: obj,\n key: key,\n newValue: newVal,\n oldValue: value\n });\n }\n else {\n dep.notify();\n }\n }\n });\n return dep;\n}\nfunction set(target, key, val) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' && warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n var ob = target.__ob__;\n if (isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n // when mocking for SSR, array methods are not hijacked\n if (ob && !ob.shallow && ob.mock) {\n observe(val, false, true);\n }\n return val;\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val;\n }\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.');\n return val;\n }\n if (!ob) {\n target[key] = val;\n return val;\n }\n defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"add\" /* TriggerOpTypes.ADD */,\n target: target,\n key: key,\n newValue: val,\n oldValue: undefined\n });\n }\n else {\n ob.dep.notify();\n }\n return val;\n}\nfunction del(target, key) {\n if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n warn(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\n }\n if (isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return;\n }\n var ob = target.__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' &&\n warn('Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.');\n return;\n }\n if (isReadonly(target)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n return;\n }\n if (!hasOwn(target, key)) {\n return;\n }\n delete target[key];\n if (!ob) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n ob.dep.notify({\n type: \"delete\" /* TriggerOpTypes.DELETE */,\n target: target,\n key: key\n });\n }\n else {\n ob.dep.notify();\n }\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray(value) {\n for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n if (e && e.__ob__) {\n e.__ob__.dep.depend();\n }\n if (isArray(e)) {\n dependArray(e);\n }\n }\n}\n\nfunction reactive(target) {\n makeReactive(target, false);\n return target;\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n makeReactive(target, true);\n def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n return target;\n}\nfunction makeReactive(target, shallow) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (!isReadonly(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\n }\n var existingOb = target && target.__ob__;\n if (existingOb && existingOb.shallow !== shallow) {\n warn(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\n }\n }\n var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\n if (process.env.NODE_ENV !== 'production' && !ob) {\n if (target == null || isPrimitive(target)) {\n warn(\"value cannot be made reactive: \".concat(String(target)));\n }\n if (isCollectionType(target)) {\n warn(\"Vue 2 does not support reactive collection types such as Map or Set.\");\n }\n }\n }\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value.__ob__);\n}\nfunction isShallow(value) {\n return !!(value && value.__v_isShallow);\n}\nfunction isReadonly(value) {\n return !!(value && value.__v_isReadonly);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n // non-extensible objects won't be observed anyway\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n }\n return value;\n}\n/**\n * @internal\n */\nfunction isCollectionType(value) {\n var type = toRawType(value);\n return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\n}\n\n/**\n * @internal\n */\nvar RefFlag = \"__v_isRef\";\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref$1(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n var ref = {};\n def(ref, RefFlag, true);\n def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, shallow);\n def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\n return ref;\n}\nfunction triggerRef(ref) {\n if (process.env.NODE_ENV !== 'production' && !ref.dep) {\n warn(\"received object is not a triggerable ref.\");\n }\n if (process.env.NODE_ENV !== 'production') {\n ref.dep &&\n ref.dep.notify({\n type: \"set\" /* TriggerOpTypes.SET */,\n target: ref,\n key: 'value'\n });\n }\n else {\n ref.dep && ref.dep.notify();\n }\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nfunction proxyRefs(objectWithRefs) {\n if (isReactive(objectWithRefs)) {\n return objectWithRefs;\n }\n var proxy = {};\n var keys = Object.keys(objectWithRefs);\n for (var i = 0; i < keys.length; i++) {\n proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\n }\n return proxy;\n}\nfunction proxyWithRefUnwrap(target, source, key) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = source[key];\n if (isRef(val)) {\n return val.value;\n }\n else {\n var ob = val && val.__ob__;\n if (ob)\n ob.dep.depend();\n return val;\n }\n },\n set: function (value) {\n var oldValue = source[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n }\n else {\n source[key] = value;\n }\n }\n });\n}\nfunction customRef(factory) {\n var dep = new Dep();\n var _a = factory(function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.depend({\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n dep.depend();\n }\n }, function () {\n if (process.env.NODE_ENV !== 'production') {\n dep.notify({\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value'\n });\n }\n else {\n dep.notify();\n }\n }), get = _a.get, set = _a.set;\n var ref = {\n get value() {\n return get();\n },\n set value(newVal) {\n set(newVal);\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\nfunction toRefs(object) {\n if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\n warn(\"toRefs() expects a reactive object but received a plain one.\");\n }\n var ret = isArray(object) ? new Array(object.length) : {};\n for (var key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nfunction toRef(object, key, defaultValue) {\n var val = object[key];\n if (isRef(val)) {\n return val;\n }\n var ref = {\n get value() {\n var val = object[key];\n return val === undefined ? defaultValue : val;\n },\n set value(newVal) {\n object[key] = newVal;\n }\n };\n def(ref, RefFlag, true);\n return ref;\n}\n\nvar rawToReadonlyFlag = \"__v_rawToReadonly\";\nvar rawToShallowReadonlyFlag = \"__v_rawToShallowReadonly\";\nfunction readonly(target) {\n return createReadonly(target, false);\n}\nfunction createReadonly(target, shallow) {\n if (!isPlainObject(target)) {\n if (process.env.NODE_ENV !== 'production') {\n if (isArray(target)) {\n warn(\"Vue 2 does not support readonly arrays.\");\n }\n else if (isCollectionType(target)) {\n warn(\"Vue 2 does not support readonly collection types such as Map or Set.\");\n }\n else {\n warn(\"value cannot be made readonly: \".concat(typeof target));\n }\n }\n return target;\n }\n if (process.env.NODE_ENV !== 'production' && !Object.isExtensible(target)) {\n warn(\"Vue 2 does not support creating readonly proxy for non-extensible object.\");\n }\n // already a readonly object\n if (isReadonly(target)) {\n return target;\n }\n // already has a readonly proxy\n var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;\n var existingProxy = target[existingFlag];\n if (existingProxy) {\n return existingProxy;\n }\n var proxy = Object.create(Object.getPrototypeOf(target));\n def(target, existingFlag, proxy);\n def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\n def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\n if (isRef(target)) {\n def(proxy, RefFlag, true);\n }\n if (shallow || isShallow(target)) {\n def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n }\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n defineReadonlyProperty(proxy, target, keys[i], shallow);\n }\n return proxy;\n}\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\n Object.defineProperty(proxy, key, {\n enumerable: true,\n configurable: true,\n get: function () {\n var val = target[key];\n return shallow || !isPlainObject(val) ? val : readonly(val);\n },\n set: function () {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n }\n });\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReadonly(target, true);\n}\n\nfunction computed(getterOrOptions, debugOptions) {\n var getter;\n var setter;\n var onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = process.env.NODE_ENV !== 'production'\n ? function () {\n warn('Write operation failed: computed value is readonly');\n }\n : noop;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n var watcher = isServerRendering()\n ? null\n : new Watcher(currentInstance, getter, noop, { lazy: true });\n if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\n watcher.onTrack = debugOptions.onTrack;\n watcher.onTrigger = debugOptions.onTrigger;\n }\n var ref = {\n // some libs rely on the presence effect for checking computed refs\n // from normal refs, but the implementation doesn't matter\n effect: watcher,\n get value() {\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n Dep.target.onTrack({\n effect: Dep.target,\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n watcher.depend();\n }\n return watcher.value;\n }\n else {\n return getter();\n }\n },\n set value(newVal) {\n setter(newVal);\n }\n };\n def(ref, RefFlag, true);\n def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\n return ref;\n}\n\nvar WATCHER = \"watcher\";\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nvar INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\n warn(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\n \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\n \"supports `watch(source, cb, options?) signature.\");\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, _a) {\n var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\n if (process.env.NODE_ENV !== 'production' && !cb) {\n if (immediate !== undefined) {\n warn(\"watch() \\\"immediate\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n if (deep !== undefined) {\n warn(\"watch() \\\"deep\\\" option is only respected when using the \" +\n \"watch(source, callback, options?) signature.\");\n }\n }\n var warnInvalidSource = function (s) {\n warn(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\n \"function, a ref, a reactive object, or an array of these types.\");\n };\n var instance = currentInstance;\n var call = function (fn, type, args) {\n if (args === void 0) { args = null; }\n var res = invokeWithErrorHandling(fn, null, args, instance, type);\n if (deep && res && res.__ob__)\n res.__ob__.dep.depend();\n return res;\n };\n var getter;\n var forceTrigger = false;\n var isMultiSource = false;\n if (isRef(source)) {\n getter = function () { return source.value; };\n forceTrigger = isShallow(source);\n }\n else if (isReactive(source)) {\n getter = function () {\n source.__ob__.dep.depend();\n return source;\n };\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\n getter = function () {\n return source.map(function (s) {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n s.__ob__.dep.depend();\n return traverse(s);\n }\n else if (isFunction(s)) {\n return call(s, WATCHER_GETTER);\n }\n else {\n process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\n }\n });\n };\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = function () { return call(source, WATCHER_GETTER); };\n }\n else {\n // no cb -> simple effect\n getter = function () {\n if (instance && instance._isDestroyed) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return call(source, WATCHER, [onCleanup]);\n };\n }\n }\n else {\n getter = noop;\n process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\n }\n if (cb && deep) {\n var baseGetter_1 = getter;\n getter = function () { return traverse(baseGetter_1()); };\n }\n var cleanup;\n var onCleanup = function (fn) {\n cleanup = watcher.onStop = function () {\n call(fn, WATCHER_CLEANUP);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager\n if (isServerRendering()) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = noop;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n call(cb, WATCHER_CB, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n return noop;\n }\n var watcher = new Watcher(currentInstance, getter, noop, {\n lazy: true\n });\n watcher.noRecurse = !cb;\n var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n // overwrite default run\n watcher.run = function () {\n if (!watcher.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n var newValue = watcher.get();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some(function (v, i) {\n return hasChanged(v, oldValue[i]);\n })\n : hasChanged(newValue, oldValue))) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n call(cb, WATCHER_CB, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n watcher.get();\n }\n };\n if (flush === 'sync') {\n watcher.update = watcher.run;\n }\n else if (flush === 'post') {\n watcher.post = true;\n watcher.update = function () { return queueWatcher(watcher); };\n }\n else {\n // pre\n watcher.update = function () {\n if (instance && instance === currentInstance && !instance._isMounted) {\n // pre-watcher triggered before\n var buffer = instance._preWatchers || (instance._preWatchers = []);\n if (buffer.indexOf(watcher) < 0)\n buffer.push(watcher);\n }\n else {\n queueWatcher(watcher);\n }\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n watcher.onTrack = onTrack;\n watcher.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n watcher.run();\n }\n else {\n oldValue = watcher.get();\n }\n }\n else if (flush === 'post' && instance) {\n instance.$once('hook:mounted', function () { return watcher.get(); });\n }\n else {\n watcher.get();\n }\n return function () {\n watcher.teardown();\n };\n}\n\nvar activeEffectScope;\nvar EffectScope = /** @class */ (function () {\n function EffectScope(detached) {\n if (detached === void 0) { detached = false; }\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n EffectScope.prototype.run = function (fn) {\n if (this.active) {\n var currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"cannot run an inactive effect scope.\");\n }\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.on = function () {\n activeEffectScope = this;\n };\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n EffectScope.prototype.off = function () {\n activeEffectScope = this.parent;\n };\n EffectScope.prototype.stop = function (fromParent) {\n if (this.active) {\n var i = void 0, l = void 0;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].teardown();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n var last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n };\n return EffectScope;\n}());\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\n/**\n * @internal\n */\nfunction recordEffectScope(effect, scope) {\n if (scope === void 0) { scope = activeEffectScope; }\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"onScopeDispose() is called when there is no active effect scope\" +\n \" to be associated with.\");\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"provide() can only be used inside setup().\");\n }\n }\n else {\n // TS doesn't allow symbol as index type\n resolveProvided(currentInstance)[key] = value;\n }\n}\nfunction resolveProvided(vm) {\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n var existing = vm._provided;\n var parentProvides = vm.$parent && vm.$parent._provided;\n if (parentProvides === existing) {\n return (vm._provided = Object.create(parentProvides));\n }\n else {\n return existing;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\n if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n var instance = currentInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n var provides = instance.$parent && instance.$parent._provided;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance)\n : defaultValue;\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\n }\n }\n else if (process.env.NODE_ENV !== 'production') {\n warn(\"inject() can only be used inside setup() or functional components.\");\n }\n}\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once,\n capture: capture,\n passive: passive\n };\n});\nfunction createFnInvoker(fns, vm) {\n function invoker() {\n var fns = invoker.fns;\n if (isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\n }\n }\n else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n }\n }\n invoker.fns = fns;\n return invoker;\n}\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\n var name, cur, old, event;\n for (name in on) {\n cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' &&\n warn(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\n }\n else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n }\n else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove(event.name, oldOn[name], event.capture);\n }\n }\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n function wrappedHook() {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove$2(invoker.fns, wrappedHook);\n }\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n }\n else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n }\n else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return;\n }\n var res = {};\n var attrs = data.attrs, props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\n \"\".concat(formatComponentName(\n // @ts-expect-error tag is string\n tag || Ctor), \", but the declared prop name is\") +\n \" \\\"\".concat(key, \"\\\". \") +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res;\n}\nfunction checkProp(res, hash, key, altKey, preserve) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true;\n }\n else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true;\n }\n }\n return false;\n}\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren(children) {\n for (var i = 0; i < children.length; i++) {\n if (isArray(children[i])) {\n return Array.prototype.concat.apply([], children);\n }\n }\n return children;\n}\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.