@inovitas/infra3dapi 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/235.infra3dapi.js +2 -0
- package/235.infra3dapi.js.map +1 -0
- package/287.infra3dapi.js +2 -0
- package/287.infra3dapi.js.map +1 -0
- package/732.infra3dapi.js +2 -0
- package/732.infra3dapi.js.map +1 -0
- package/{12.infra3dapi.js → 757.infra3dapi.js} +2 -1
- package/757.infra3dapi.js.map +1 -0
- package/README.md +357 -330
- package/infra3dapi.d.ts +7 -4
- package/infra3dapi.js +2 -2
- package/{2bc1d70c511b58108958.gif → infra3dapi.js.map} +0 -0
- package/licenses.txt +23 -353
- package/package.json +6 -2
- package/005403bc8e5f26788284.jpg +0 -0
- package/1f77029fdd773d10ddab.gif +0 -0
- package/274.infra3dapi.js +0 -1
- package/505.infra3dapi.js +0 -1
- package/6a3d99a3d2dc80491364.jpg +0 -0
- package/80.infra3dapi.js +0 -1
- package/81e9296c232fd0e0c86e.jpg +0 -0
- package/c8593183238821a27cbc.gif +0 -0
- package/e970b398393900ae343f.gif +0 -0
- package/ecc862ea04d3c481e631.gif +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"732.infra3dapi.js","mappings":"sJAEA,IAAIA,QAAmE,aAClD,IAAX,oBAAAC,IAA0B,oBAAAA,EAAOD,QAAUA,SAErDA,QAAQE,QAAU,QAGlBF,QAAQG,MAAQ,SAAgBC,EAAEC,GAC9B,IAAIC,EAAMC,EAAEC,EAIZ,SAHuB,IAAbH,IAA4BA,EAAW,IACjDE,EAAI,GACJD,EAAK,IAAIG,OACA,CAEL,IAAID,EADJD,GAAG,EACKC,EAAE,EAAEA,GAAG,EAAKJ,IAAKA,IAAKA,IAAKA,IACnC,KAAMI,EAAE,GAAKJ,IAAKI,IAElB,GADK,IAAIC,KACHH,EAAKD,EAAU,KACzB,CACA,IAAIG,EAAED,EAAEC,EAAE,EAAEA,GAAG,EAAKJ,IAAKA,IAAKA,IAAKA,IACnC,KAAMI,EAAE,GAAKJ,IAAKI,IAElB,OAAO,KAAM,EAAED,EAAE,IADZ,IAAIE,KACeH,EAC5B,EAEAN,QAAQU,WAAa,SAAqBC,GACtC,IAAoBC,EAAhBL,EAAIM,KAAKC,OACb,IAAIF,EAAE,EAAEA,EAAEL,IAAIK,EAAG,GAAGC,KAAKD,KAAKD,EAAG,OAAOC,EACxC,OAAQ,CACX,EACDZ,QAAQe,UAAaC,MAAMC,UAAiB,QAAED,MAAMC,UAAUC,QAAQlB,QAAQU,WAE9EV,QAAQmB,SAAWA,SACnBnB,QAAQoB,UAAY,EACpBpB,QAAQqB,WAAa,GAErBrB,QAAQsB,YAAc,SAAqBC,GACvC,SAASC,EAAOD,GACZ,GAAS,IAANA,EAAW,MAAO,IACrB,GAAGE,MAAMF,GAAM,MAAO,MACtB,GAAGA,EAAE,EAAK,MAAO,IAAIC,GAAQD,GAC7B,GAAGG,SAASH,GAAI,CACZ,IAAII,EAAQC,KAAKC,MAAMD,KAAKE,IAAIP,GAAKK,KAAKE,IAAI,KAC1CC,EAAaR,EAAIK,KAAKI,IAAI,GAAGL,GAC7BM,EAAQF,EAAWG,YAAYlC,QAAQoB,WAE3C,OADyB,KAAtBe,WAAWF,KAAiBN,IAAyBM,GAAhBF,EAAa,GAAsBG,YAAYlC,QAAQoB,YACxFe,WAAWF,GAAOG,WAAW,IAAIT,EAAMS,UAClD,CACA,MAAO,UACX,CACA,IAAIC,EAAM,GA6CV,OA5CA,SAASC,EAAIf,GACT,IAAIX,EACJ,QAAgB,IAANW,EAAqE,OAAhDc,EAAIE,KAAKvB,MAAMhB,QAAQoB,UAAU,GAAGoB,KAAK,OAAc,EACtF,GAAgB,iBAANjB,EAAuC,OAArBc,EAAIE,KAAK,IAAIhB,EAAE,MAAa,EACxD,GAAgB,kBAANA,EAA2C,OAAxBc,EAAIE,KAAKhB,EAAEa,aAAoB,EAC5D,GAAgB,iBAANb,EAAgB,CACtB,IAAIkB,EAAIjB,EAAOD,GACXmB,EAAInB,EAAEW,YAAYlC,QAAQoB,WAC1BuB,EAAIR,WAAWZ,EAAEa,YAAYA,WAC7BQ,EAAI,CAACH,EAAEC,EAAEC,EAAER,WAAWO,GAAGN,WAAWD,WAAWQ,GAAGP,YACtD,IAAIxB,EAAE,EAAEA,EAAEgC,EAAE9B,OAAOF,IAAUgC,EAAEhC,GAAGE,OAAS2B,EAAE3B,SAAQ2B,EAAIG,EAAEhC,IAE3D,OADAyB,EAAIE,KAAKvB,MAAMhB,QAAQoB,UAAU,EAAEqB,EAAE3B,QAAQ0B,KAAK,KAAKC,IAChD,CACX,CACA,GAAS,OAANlB,EAAgC,OAAlBc,EAAIE,KAAK,SAAgB,EAC1C,GAAgB,mBAANhB,EAAkB,CACxBc,EAAIE,KAAKhB,EAAEa,YACX,IAAIS,GAAO,EACX,IAAIjC,KAAKW,EAAQA,EAAEuB,eAAelC,KAC3BiC,EAAMR,EAAIE,KAAK,OACbF,EAAIE,KAAK,OACdM,GAAO,EACPR,EAAIE,KAAK3B,GACTyB,EAAIE,KAAK,QACTD,EAAIf,EAAEX,KAGV,OADGiC,GAAMR,EAAIE,KAAK,QACX,CACX,CACA,GAAGhB,aAAaP,MAAO,CACnB,GAAGO,EAAET,OAASd,QAAQqB,WAA6C,OAA/BgB,EAAIE,KAAK,sBAA6B,EAG1E,IAFIM,GAAO,EACXR,EAAIE,KAAK,KACL3B,EAAE,EAAEA,EAAEW,EAAET,OAAOF,IAAUA,EAAE,IAAKyB,EAAIE,KAAK,KAASM,GAAMR,EAAIE,KAAK,QAAUM,EAAOP,EAAIf,EAAEX,IAE5F,OADAyB,EAAIE,KAAK,MACF,CACX,CAGA,IAAI3B,KAFJyB,EAAIE,KAAK,KACLM,GAAO,EACFtB,EAAQA,EAAEuB,eAAelC,KAASiC,GAAMR,EAAIE,KAAK,OAAQM,GAAO,EAAMR,EAAIE,KAAK3B,GAAIyB,EAAIE,KAAK,QAASD,EAAIf,EAAEX,KAEpH,OADAyB,EAAIE,KAAK,MACF,CACX,CACAD,CAAIf,GACGc,EAAIG,KAAK,GACpB,EAEAxC,QAAQ+C,UAAY,SAAmBH,GAQnC,OAPA,SAASN,EAAIM,GACT,GAAgB,iBAANA,EAAkB,OAAOnC,KAAKuC,MAAMJ,EAAEK,QAAQ,KAAK,MAC7D,KAAKL,aAAa5B,OAAU,MAAM,IAAIkC,MAAM,kDAC5C,IAAatC,EAATyB,EAAM,GACV,IAAIzB,EAAE,EAAEA,EAAEgC,EAAE9B,OAAOF,IAAOyB,EAAIzB,GAAK0B,EAAIM,EAAEhC,IACzC,OAAOyB,CACX,CACOC,CAAIM,EACf,EAEA5C,QAAQmC,WAAa,SAAqBS,GAQtC,OAPA,SAASN,EAAIM,GACT,GAAgB,iBAANA,EAAkB,OAAOT,WAAWS,GAC9C,KAAKA,aAAa5B,OAAU,MAAM,IAAIkC,MAAM,mDAC5C,IAAatC,EAATyB,EAAM,GACV,IAAIzB,EAAE,EAAEA,EAAEgC,EAAE9B,OAAOF,IAAOyB,EAAIzB,GAAK0B,EAAIM,EAAEhC,IACzC,OAAOyB,CACX,CACOC,CAAIM,EACf,EAEA5C,QAAQmD,SAAW,SAAkBC,GACjC,IACIC,EAAEzC,EADF0B,EAAMc,EAAEE,MAAM,MAEdjB,EAAM,GACNkB,EAAM,oCACNC,EAAS,4FACTC,EAAW,SAASlD,GAAK,OAAOA,EAAEmD,OAAO,EAAEnD,EAAEO,OAAO,EAAI,EACxD6C,EAAQ,EACZ,IAAI/C,EAAE,EAAEA,EAAE0B,EAAIxB,OAAOF,IAAK,CACxB,IAAkCgD,EAA9BC,GAAOvB,EAAI1B,GAAG,KAAKkD,MAAMP,GAC7B,GAAGM,EAAI/C,OAAO,EAAG,CAEb,IADAuB,EAAIsB,GAAS,GACTN,EAAE,EAAEA,EAAEQ,EAAI/C,OAAOuC,IACjBO,EAAMH,EAASI,EAAIR,IAChBG,EAAOO,KAAKH,GAAQvB,EAAIsB,GAAON,GAAKlB,WAAWyB,GAC7CvB,EAAIsB,GAAON,GAAKO,EAEzBD,GACJ,CACF,CACA,OAAOtB,CACX,EAEArC,QAAQgE,MAAQ,SAAeC,GAC3B,IACIzD,EAAE6C,EAAEa,EAAIC,EAAI9B,EADZ+B,EAAIpE,QAAQqE,IAAIJ,GAKpB,IAHAC,EAAIE,EAAE,GACFA,EAAE,GACN/B,EAAM,GACF7B,EAAE,EAAEA,EAAE0D,EAAE1D,IAAK,CAEb,IADA2D,EAAM,GACFd,EAAE,EAAEA,EAAEa,EAAEb,IAAOc,EAAId,GAAKY,EAAEzD,GAAG6C,GAAGjB,WACpCC,EAAI7B,GAAK2D,EAAI3B,KAAK,KACtB,CACA,OAAOH,EAAIG,KAAK,MAAM,IAC1B,EAEAxC,QAAQsE,OAAS,SAAgBC,GAC7B,IAAIC,EAAS,IAAIC,eAGjB,OAFAD,EAAOE,KAAK,MAAMH,GAAI,GACtBC,EAAOG,OACAH,CACX,EAEAxE,QAAQ4E,SAAW,SAAkBC,GAmBjC,SAASC,EAAYrC,EAAEsC,EAAKC,QACL,IAATD,IAAwBA,EAAO,QACxB,IAAPC,IAAsBA,EAAKvC,EAAE3B,QACvC,IAiCkCN,EAjC9ByE,EAAQ,CAAC,EAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WACpF,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WACpF,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,SAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WACpF,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,SACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WACpF,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UACpF,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAE7FC,GAAO,EAEX,IAFyBzC,EAAE3B,OAEtBN,EAAIuE,EAAMvE,EAAIwE,EAAIxE,IAEnB0E,EAAOA,IAAQ,EAAKD,EADD,KAAdC,EAAMzC,EAAEjC,KAIjB,OAAe,EAAR0E,CACX,CAEA,IAA6CC,EAAIC,EAASxE,EAAEE,EAAO2B,EAAEC,EAAElC,EAAE6C,EAAEgC,EAAQC,EAA/EC,EAAIV,EAAI,GAAG/D,OAAQH,EAAIkE,EAAI,GAAG,GAAG/D,OACjC0E,EAAS,CACC,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC7B,EAAE,EAAE,EAAE,GACN,GAAI,GAAI,GAAI,GACX7E,GAAK,GAAM,IAAMA,GAAK,GAAM,IAAMA,GAAK,EAAK,IAAO,IAAFA,EACjD4E,GAAK,GAAM,IAAMA,GAAK,GAAM,IAAMA,GAAK,EAAK,IAAO,IAAFA,EAClD,EACA,EACA,EACA,EACA,GACC,GAAG,GAAG,GAAG,GACT,GAAG,GAAG,GAAG,EACV,GAAI,GAAI,GAAI,GAEZ,EACA,IASd,IAPAD,EAAQR,EAAWU,EAAO,GAAG,IAC7BA,EAAO,IAAOF,GAAO,GAAI,IACzBE,EAAO,IAAOF,GAAO,GAAI,IACzBE,EAAO,IAAOF,GAAO,EAAG,IACxBE,EAAO,IAAc,IAAR,EACbL,EAAK,EACLC,EAAK,EACD5E,EAAE,EAAEA,EAAE+E,EAAE/E,IAAK,CAOb,IANGA,EAAE+E,EAAE,EAAKC,EAAOjD,KAAK,GACjBiD,EAAOjD,KAAK,GACnBE,EAAK,EAAE9B,EAAE,GAAO,IAAJH,GAAQ,IAAKkC,EAAM,EAAE/B,EAAE,GAAO,IAAJH,IAAS,EAAG,IAClDgF,EAAOjD,KAAKE,GAAI+C,EAAOjD,KAAKG,GAC5B8C,EAAOjD,KAAU,KAAHE,GAAS+C,EAAOjD,KAAU,KAAHG,GAC9B,IAAJlC,GAAOgF,EAAOjD,KAAK,GAClBc,EAAE,EAAEA,EAAE1C,EAAE0C,IACR,IAAIzC,EAAE,EAAEA,EAAE,EAAEA,IAMRwE,GAAMA,GADND,GAAMA,GAHI1C,GADVA,EAAIoC,EAAIjE,GAAGJ,GAAG6C,IACT,IAAS,IACNZ,EAAE,EAAK,EACNb,KAAK6D,MAAMhD,KACL,QACA,MACf+C,EAAOjD,KAAKE,GAGpB+C,EAAOjD,KAAK,EAChB,CA6BA,OA5BA8C,GAAWD,GAAI,IAAID,EACnBK,EAAOjD,KAAM8C,GAAS,GAAI,KAC1BG,EAAOjD,KAAM8C,GAAS,GAAI,KAC1BG,EAAOjD,KAAM8C,GAAS,EAAG,KACzBG,EAAOjD,KAAe,IAAV,GACZzB,EAAS0E,EAAO1E,OAAS,GACzB0E,EAAO,IAAO1E,GAAQ,GAAI,IAC1B0E,EAAO,IAAO1E,GAAQ,GAAI,IAC1B0E,EAAO,IAAO1E,GAAQ,EAAG,IACzB0E,EAAO,IAAe,IAAT,EACbF,EAAQR,EAAWU,EAAO,IAC1BA,EAAOjD,KAAM+C,GAAO,GAAI,KACxBE,EAAOjD,KAAM+C,GAAO,GAAI,KACxBE,EAAOjD,KAAM+C,GAAO,EAAG,KACvBE,EAAOjD,KAAa,IAAR,GACZiD,EAAOjD,KAAK,GACZiD,EAAOjD,KAAK,GACZiD,EAAOjD,KAAK,GACZiD,EAAOjD,KAAK,GAEZiD,EAAOjD,KAAK,IACZiD,EAAOjD,KAAK,IACZiD,EAAOjD,KAAK,IACZiD,EAAOjD,KAAK,IACZiD,EAAOjD,KAAK,KACZiD,EAAOjD,KAAK,IACZiD,EAAOjD,KAAK,IACZiD,EAAOjD,KAAK,KACL,yBA1IP,SAAgB0B,GACZ,IAAkBzD,EAAEe,EAAEmE,EAAEC,EAAIC,EAAEC,EAAEzB,EAA5B7D,EAAI0D,EAAEnD,OACNgF,EAAM,oEACNzD,EAAM,GACV,IAAI7B,EAAE,EAAEA,EAAED,EAAEC,GAAG,EAKXoF,IAAU,GAJVrE,EAAI0C,EAAEzD,MAIU,KAHhBkF,EAAIzB,EAAEzD,EAAE,KAGmB,GAC3BqF,IAAU,GAAJH,IAAW,KAHjBC,EAAI1B,EAAEzD,EAAE,KAGoB,GAC5B4D,EAAQ,GAAJuB,EACDnF,EAAE,GAAGD,EAAKsF,EAAIzB,EAAI,GACb5D,EAAE,GAAGD,IAAK6D,EAAI,IACtB/B,GAAOyD,EAAIC,OANPxE,GAAK,GAMcuE,EAAIC,OAAOH,GAAKE,EAAIC,OAAOF,GAAKC,EAAIC,OAAO3B,GAEtE,OAAO/B,CACX,CAyHgC2D,CAAOR,EAC3C,EAGAxF,QAAQiG,KAAO,SAAc1E,GAEzB,IADA,IAAIc,EAAM,GACS,iBAANd,GAAkBc,EAAIE,KAAKhB,EAAET,QAASS,EAAIA,EAAE,GACzD,OAAOc,CACX,EAEArC,QAAQqE,IAAM,SAAa9C,GACvB,IAAImE,EACJ,MAAgB,iBAANnE,EAEU,iBADhBmE,EAAInE,EAAE,IAGc,iBADZmE,EAAE,GAEK1F,QAAQiG,KAAK1E,GAEjB,CAACA,EAAET,OAAO4E,EAAE5E,QAEhB,CAACS,EAAET,QAEP,EACX,EAEAd,QAAQkG,UAAY,SAAmBC,EAAKC,GACxC,OAAOjF,SAAS,IAAI,QAAQ,KAAK,KACzB,4CAA4CiF,EAA5C,8CAC2CD,EAD3C,kUAcOA,EAdP,4BAgBOA,EAhBP,4CAoBOA,EApBP,qBAwBZ,EACAnG,QAAQqG,WAAa,SAAoBF,EAAKG,GAC1C,OAAOnF,SAAS,IACR,iCACcmF,EADd,oDAIOH,EAJP,sBAQZ,EAGAnG,QAAQuG,KAAO,SAASA,EAAKhF,EAAEmE,GAC3B,IAAIlF,EAAED,EACN,KAAKgB,aAAaP,OAAY0E,aAAa1E,OAAU,OAAO,EAE5D,IADAT,EAAIgB,EAAET,UACG4E,EAAE5E,OAAU,OAAO,EAC5B,IAAIN,EAAE,EAAEA,EAAED,EAAEC,IACR,GAAGe,EAAEf,KAAOkF,EAAElF,GAAd,CACA,GAAmB,iBAATe,EAAEf,GACL,OAAO,EADiB,IAAI+F,EAAKhF,EAAEf,GAAGkF,EAAElF,IAAK,OAAO,CAD7B,CAIlC,OAAO,CACX,EAEAR,QAAQwG,IAAM,SAAapC,EAAEqC,EAAE7F,QACX,IAANA,IAAqBA,EAAE,GACjC,IAA8BJ,EAA1BD,EAAI6D,EAAExD,GAAIyB,EAAMrB,MAAMT,GAC1B,GAAGK,IAAMwD,EAAEtD,OAAO,EAAG,CACjB,IAAIN,EAAED,EAAE,EAAEC,GAAG,EAAEA,GAAG,EAAK6B,EAAI7B,EAAE,GAAKiG,EAAGpE,EAAI7B,GAAKiG,EAE9C,OADQ,IAALjG,IAAU6B,EAAI,GAAKoE,GACfpE,CACX,CACA,IAAI7B,EAAED,EAAE,EAAEC,GAAG,EAAEA,IAAO6B,EAAI7B,GAAKR,QAAQwG,IAAIpC,EAAEqC,EAAE7F,EAAE,GACjD,OAAOyB,CACX,EAGArC,QAAQ0G,WAAa,SAAoBnF,EAAEmE,GACvC,IAAIlF,EAAE6C,EAAEzC,EAAE+F,EAAEf,EAAEC,EAAExD,EAAIC,EAAIuB,EAAI+C,EAAIC,EAGhC,IAFAF,EAAIpF,EAAET,OAAQ8E,EAAIF,EAAE5E,OAAQ+E,EAAIH,EAAE,GAAG5E,OACrCuB,EAAMrB,MAAM2F,GACRnG,EAAEmG,EAAE,EAAEnG,GAAG,EAAEA,IAAK,CAGhB,IAFA8B,EAAMtB,MAAM6E,GACZhC,EAAMtC,EAAEf,GACJI,EAAEiF,EAAE,EAAEjF,GAAG,EAAEA,IAAK,CAEhB,IADAgG,EAAM/C,EAAI+B,EAAE,GAAGF,EAAEE,EAAE,GAAGhF,GAClByC,EAAEuC,EAAE,EAAEvC,GAAG,EAAEA,GAAG,EACdwD,EAAKxD,EAAE,EACPuD,GAAO/C,EAAIR,GAAGqC,EAAErC,GAAGzC,GAAKiD,EAAIgD,GAAInB,EAAEmB,GAAIjG,GAEnC,IAAJyC,IAASuD,GAAO/C,EAAI,GAAG6B,EAAE,GAAG9E,IAC/B0B,EAAI1B,GAAKgG,CACb,CACAvE,EAAI7B,GAAK8B,CACb,CACA,OAAOD,CACX,EACArC,QAAQ8G,QAAU,SAAiB7C,EAAEZ,EAAE9B,GACnC,IAAkBf,EAClB,IAAIA,EADIyD,EAAEnD,OACF,EAAEN,EAAE,IAAIA,EACZe,EAAEf,GAAKyD,EAAEzD,GAAG6C,GAEZ9B,IADEf,GACKyD,EAAEzD,GAAG6C,GAET,IAAJ7C,IAAOe,EAAE,GAAK0C,EAAE,GAAGZ,GAC1B,EACArD,QAAQ+G,SAAW,SAAkBxF,EAAEmE,GACnC,IACqDsB,EAEjDxG,EAAE6C,EAHF4D,EAAKjH,QAAQ8G,QAASH,EAAIjB,EAAE5E,OAAQ2F,EAAIzF,MAAM2F,GAC9CzC,EAAI3C,EAAET,OAAQP,EAAImF,EAAE,GAAG5E,OAAQmD,EAAI,IAAIjD,MAAMkD,GAC7CgD,EAAKlH,QAAQmH,MAIjB,MAFER,EAEEnG,IADF0D,GACW,IAAL1D,IAASA,EAAGyD,EAAEzD,GAAKQ,MAAMT,GAEjC,IAAIC,IADFD,GACW,IAALC,IAASA,EAEb,IADAyG,EAAGvB,EAAElF,EAAEiG,GACHpD,EAAEa,GAAO,IAALb,IAASA,EAEb2D,EAAKzF,EAAE8B,GACPY,EAAEZ,GAAG7C,GAAK0G,EAAGF,EAAGP,GAGxB,OAAOxC,CACX,EAEAjE,QAAQoH,MAAQ,SAAe7F,EAAEmE,GAC7B,IAA+BlF,EAA3BmG,EAAIpF,EAAET,OACNuB,GADkBqD,EAAE5E,OACdE,MAAM2F,IAAIQ,EAAQnH,QAAQmH,MACpC,IAAI3G,EAAEmG,EAAE,EAAEnG,GAAG,EAAEA,IAAO6B,EAAI7B,GAAK2G,EAAM5F,EAAEf,GAAGkF,GAC1C,OAAOrD,CACX,EAEArC,QAAQqH,MAAQ,SAAe9F,EAAEmE,GAC7B,IAAMrC,EAAEzC,EAAE+F,EAAEf,EAAIvD,EAAYuE,EAAIC,EAGhC,IAFAF,EAAIpF,EAAET,OAAQ8E,EAAIF,EAAE,GAAG5E,OACvBuB,EAAMrB,MAAM4E,GACRhF,EAAEgF,EAAE,EAAEhF,GAAG,EAAEA,IAAK,CAEhB,IADAgG,EAAMrF,EAAEoF,EAAE,GAAGjB,EAAEiB,EAAE,GAAG/F,GAChByC,EAAEsD,EAAE,EAAEtD,GAAG,EAAEA,GAAG,EACdwD,EAAKxD,EAAE,EACPuD,GAAOrF,EAAE8B,GAAGqC,EAAErC,GAAGzC,GAAKW,EAAEsF,GAAInB,EAAEmB,GAAIjG,GAE/B,IAAJyC,IAASuD,GAAOrF,EAAE,GAAGmE,EAAE,GAAG9E,IAC7ByB,EAAIzB,GAAKgG,CACb,CACA,OAAOvE,CACX,EAEArC,QAAQmH,MAAQ,SAAe5F,EAAEmE,GAC7B,IAAIlF,EAAa8G,EAAX/G,EAAEgB,EAAET,OAAUuB,EAAMd,EAAEhB,EAAE,GAAGmF,EAAEnF,EAAE,GACrC,IAAIC,EAAED,EAAE,EAAEC,GAAG,EAAEA,GAAG,EACd8G,EAAK9G,EAAE,EACP6B,GAAOd,EAAEf,GAAGkF,EAAElF,GAAKe,EAAE+F,GAAI5B,EAAE4B,GAG/B,OADO,IAAJ9G,IAAS6B,GAAOd,EAAE,GAAGmE,EAAE,IACnBrD,CACX,EAEArC,QAAQuH,IAAM,SAAahG,EAAEmE,GACzB,IAAI9C,EAAI5C,QAAQqE,IAChB,OAAmB,IAAZzB,EAAErB,GAAGT,OAAY8B,EAAE8C,GAAG5E,QAC7B,KAAK,KACD,OAAG4E,EAAE5E,OAAS,GAAWd,QAAQ0G,WAAWnF,EAAEmE,GAClC1F,QAAQ+G,SAASxF,EAAEmE,GACnC,KAAK,KAAM,OAAO1F,QAAQoH,MAAM7F,EAAEmE,GAClC,KAAK,KAAM,OAAO1F,QAAQqH,MAAM9F,EAAEmE,GAClC,KAAK,KAAM,OAAO1F,QAAQmH,MAAM5F,EAAEmE,GAClC,KAAK,IAAM,OAAO1F,QAAQwH,MAAMjG,EAAEmE,GAClC,KAAK,EAAG,OAAO1F,QAAQyH,MAAMlG,EAAEmE,GAC/B,KAAK,EAAG,OAAOnE,EAAEmE,EACjB,QAAS,MAAM,IAAIxC,MAAM,kDAE7B,EAEAlD,QAAQ0H,KAAO,SAAc9E,GACzB,IAAIpC,EAAE8G,EAAGjE,EAA8BsE,EAA5BpH,EAAIqC,EAAE9B,OAAQmD,EAAIjD,MAAMT,GACnC,IAAIC,EAAED,EAAE,EAAEC,GAAG,EAAEA,IAAK,CAGhB,IAFAmH,EAAK3G,MAAMT,GACX+G,EAAK9G,EAAE,EACH6C,EAAE9C,EAAE,EAAE8C,GAAGiE,EAAGjE,GAAG,EACfsE,EAAGtE,GAAK,EACRsE,EAAGtE,EAAE,GAAK,EAId,IAFGA,EAAE7C,IAAKmH,EAAGtE,GAAK,GAClBsE,EAAGnH,GAAKoC,EAAEpC,GACN6C,EAAE7C,EAAE,EAAE6C,GAAG,EAAEA,GAAG,EACdsE,EAAGtE,GAAK,EACRsE,EAAGtE,EAAE,GAAK,EAEP,IAAJA,IAASsE,EAAG,GAAK,GACpB1D,EAAEzD,GAAKmH,CACX,CACA,OAAO1D,CACX,EACAjE,QAAQ4H,QAAU,SAAS3D,GACvB,IAAuCzD,EAAnCD,EAAIqB,KAAKiG,IAAI5D,EAAEnD,OAAOmD,EAAE,GAAGnD,QAAUuB,EAAMrB,MAAMT,GACrD,IAAIC,EAAED,EAAE,EAAEC,GAAG,IAAIA,EACb6B,EAAI7B,GAAKyD,EAAEzD,GAAGA,GAEd6B,IADE7B,GACOyD,EAAEzD,GAAGA,GAKlB,OAHO,IAAJA,IACC6B,EAAI,GAAK4B,EAAE,GAAG,IAEX5B,CACX,EAEArC,QAAQ8H,SAAW,SAAkBvH,GAAK,OAAOP,QAAQ0H,KAAK1H,QAAQwG,IAAI,CAACjG,GAAG,GAAK,EACnFP,QAAQ+H,UAAY,SAAmBC,EAAO7B,EAAKG,QAC3B,IAAVA,IAAyBA,EAAQ,IAC3C,IACI1F,EACgB+F,EAFhBsB,EAAM,GAENC,EAAO,SAAWC,EAAS,GAC3BC,GAAU,EACd,IAAIxH,EAAE,EAAEA,EAAEoH,EAAOlH,OAAOF,IACjBsH,EAAKnE,KAAKiE,EAAOpH,IAEhBuH,EADAxB,EAAIqB,EAAOpH,GAAGyH,UAAU,EAAEL,EAAOpH,GAAGE,OAAO,GAEtC6F,EAAIqB,EAAOpH,GACb,QAAJ+F,IAAWyB,GAAU,GACxBH,EAAI1F,KAAKoE,GAmBb,OAjBAsB,EAAID,EAAOlH,QAAU,KACrBmH,EAAID,EAAOlH,OAAO,GAAK,KACvBmH,EAAID,EAAOlH,OAAO,GACV,kDAAkDqH,EAAlD,sEAGSC,EAAQ,GAAG,qBAHpB,iFAKsDJ,EAAOxF,KAAK,KALlE,mCAQA8D,EARA,mCAUOH,EAXQ,mBAehBhF,SAASmH,MAAM,KAAKL,EAC/B,EACAjI,QAAQuI,WAAa,SAAoBP,EAAO7B,EAAKG,QAC7B,IAAVA,IAAyBA,EAAQ,IAC3C,IACI1F,EACgB+F,EAFhBsB,EAAM,GAENC,EAAO,SAAWC,EAAS,GAC3BC,GAAU,EACd,IAAIxH,EAAE,EAAEA,EAAEoH,EAAOlH,OAAOF,IACjBsH,EAAKnE,KAAKiE,EAAOpH,IAEhBuH,EADAxB,EAAIqB,EAAOpH,GAAGyH,UAAU,EAAEL,EAAOpH,GAAGE,OAAO,GAEtC6F,EAAIqB,EAAOpH,GACb,QAAJ+F,IAAWyB,GAAU,GACxBH,EAAI1F,KAAKoE,GAWb,OATAsB,EAAID,EAAOlH,QACH,YAAYqH,EAAZ,mBACSC,EAAQ,GAAG,qBAAqB,MACzC9B,EAFA,+BAIAH,EALa,mBASdhF,SAASmH,MAAM,KAAKL,EAC/B,EACAjI,QAAQwI,WAAa,SAAUA,EAAWjH,EAAEmE,EAAEtB,EAAExD,EAAER,GAE9C,IAAII,EADJ,GAAGI,IAAMwD,EAAEtD,OAAO,EAElB,IAAIN,EADI4D,EAAExD,GACF,EAAEJ,GAAG,EAAEA,IAAOgI,EAAsB,iBAAJjH,EAAaA,EAAEf,GAAGe,EAAa,iBAAJmE,EAAaA,EAAElF,GAAGkF,EAAEtB,EAAExD,EAAE,EAAER,QAFtEA,EAAEmB,EAAEmE,EAG9B,EACD1F,QAAQyI,YAAc,SAAUA,EAAYlH,EAAEmE,EAAEtB,EAAExD,EAAER,GAChD,GAAGQ,IAAMwD,EAAEtD,OAAO,EAAK,OAAOV,EAAEmB,EAAEmE,GAClC,IAAIlF,EAAED,EAAE6D,EAAExD,GAAGyB,EAAMrB,MAAMT,GACzB,IAAIC,EAAED,EAAE,EAAEC,GAAG,IAAIA,EAAK6B,EAAI7B,GAAKiI,EAAuB,iBAAJlH,EAAaA,EAAEf,GAAGe,EAAa,iBAAJmE,EAAaA,EAAElF,GAAGkF,EAAEtB,EAAExD,EAAE,EAAER,GACvG,OAAOiC,CACV,EACDrC,QAAQ0I,SAAW,SAAUA,EAASnH,EAAE6C,EAAExD,EAAER,GAExC,IAAII,EADJ,GAAGI,IAAMwD,EAAEtD,OAAO,EAElB,IAAIN,EADI4D,EAAExD,GACF,EAAEJ,GAAG,EAAEA,IAAOkI,EAASnH,EAAEf,GAAG4D,EAAExD,EAAE,EAAER,QAFnBA,EAAEmB,EAG5B,EACDvB,QAAQ2I,UAAY,SAAUA,EAAUpH,EAAE6C,EAAExD,EAAER,GAC1C,GAAGQ,IAAMwD,EAAEtD,OAAO,EAAK,OAAOV,EAAEmB,GAChC,IAAIf,EAAED,EAAE6D,EAAExD,GAAIyB,EAAMrB,MAAMT,GAC1B,IAAIC,EAAED,EAAE,EAAEC,GAAG,EAAEA,IAAO6B,EAAI7B,GAAKmI,EAAUpH,EAAEf,GAAG4D,EAAExD,EAAE,EAAER,GACpD,OAAOiC,CACV,EAODrC,QAAQ4I,KAAO,CACPC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,GAAK,KACLC,GAAK,MACLC,IAAK,MACLC,GAAK,IACLC,GAAK,IACLC,IAAK,KACLC,IAAK,KACLC,KAAM,IACNC,IAAK,IACLC,KAAM,IACNC,OAAQ,KACRC,OAAQ,KACRC,QAAS,OAEjB/J,QAAQgK,MAAQ,CACRC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,SAAU,MACVC,SAAU,MACVC,UAAW,OACXC,OAAQ,KACRC,MAAO,KACPC,OAAQ,MAEhB3K,QAAQ4K,SAAW,CAAC,MAAM,OAAO,OAAO,OAAO,OAAO,MAClC,MAAM,QAAQ,MAAM,QAAQ,MAAM,OAAO,MACzC,QAAQ,YAC5B5K,QAAQ6K,UAAY,CAAC,QAAQ,MAAM,MAAM,OACzC7K,QAAQ8K,KAAO,CACPC,IAAK,IACLC,IAAK,IACLC,KAAM,IACNC,MAAO,IAEflL,QAAQmL,YAAc,CACdC,IAAK,CAAC,sBAAsB,sBAC5BC,IAAK,CAAC,wBAAwB,qBAC9BC,IAAK,CAAC,eAAe,kBACrBC,KAAM,CAAC,eAAe,kBACtBC,aAAc,CAAC,kBAAkB,kBACjCC,QAAS,CAAC,8BAA8B,kDACxCC,MAAO,CAAC,mBAAmB,kCAC3BC,IAAK,CAAC,yBAAyB,0CAC/BC,IAAK,CAAC,yBAAyB,0CAGtC,WACG,IAAIpL,EAAEqL,EACN,IAAIrL,EAAE,EAAEA,EAAER,QAAQ6K,UAAU/J,SAASN,EACjCqL,EAAI7L,QAAQ6K,UAAUrK,GACtBR,QAAQ4I,KAAKiD,GAAKA,EAEtB,IAAIrL,KAAKR,QAAQ4I,KACb,GAAG5I,QAAQ4I,KAAK9F,eAAetC,GAAI,CAC/BqL,EAAI7L,QAAQ4I,KAAKpI,GACjB,IAAIsL,EAAMC,EAAQzF,EAAQ,IACwB,IAA/CtG,QAAQe,UAAUiL,KAAKhM,QAAQ6K,UAAUrK,IACxC8F,EAAQ,OAAOuF,EAAE,WAAWA,EAAE,MAC9BC,EAAO,SAASjG,EAAEtE,EAAEmE,GAAK,OAAOG,EAAE,MAAMgG,EAAE,IAAItK,EAAE,IAAImE,EAAE,GAAK,EAC3DqG,EAAS,SAASxK,EAAEmE,GAAK,OAAOnE,EAAE,MAAMsK,EAAE,IAAItK,EAAE,IAAImE,EAAE,GAAK,IAE3DoG,EAAO,SAASjG,EAAEtE,EAAEmE,GAAK,OAAOG,EAAE,MAAMtE,EAAE,IAAIsK,EAAE,IAAInG,CAAG,EAEnDqG,EADD/L,QAAQgK,MAAMlH,eAAetC,EAAE,MACrB,SAASe,EAAEmE,GAAK,OAAOnE,EAAE,IAAIsK,EAAE,KAAKnG,CAAG,EAEvC,SAASnE,EAAEmE,GAAK,OAAOnE,EAAE,MAAMA,EAAE,IAAIsK,EAAE,IAAInG,CAAG,GAG/D1F,QAAQQ,EAAE,MAAQR,QAAQuI,WAAW,CAAC,OAAO,QAAQuD,EAAK,SAAS,OAAO,QAAQxF,GAClFtG,QAAQQ,EAAE,MAAQR,QAAQuI,WAAW,CAAC,IAAI,QAAQuD,EAAK,SAAS,IAAI,QAAQxF,GAC5EtG,QAAQQ,EAAE,MAAQR,QAAQuI,WAAW,CAAC,OAAO,KAAKuD,EAAK,SAAS,OAAO,KAAKxF,GAC5EtG,QAAQQ,GAAKW,SACL,uEACoBX,EAAE,oBAAoBA,EAAE,oBAAoBA,EADhE,iUASUuL,EAAO,IAAI,KATrB,oBAWR/L,QAAQ6L,GAAK7L,QAAQQ,GACrBR,QAAQQ,EAAE,OAASR,QAAQuI,WAAW,CAAC,SAAS,QAASwD,EAAO,SAAS,QAAQzF,GACjFtG,QAAQQ,EAAE,OAASR,QAAQuI,WAAW,CAAC,SAAS,KAAMwD,EAAO,SAAS,KAAKzF,GAC3EtG,QAAQQ,EAAE,MAAQW,SACV,sEACmBX,EAAE,oBAAoBA,EADzC,8LAQZ,CAEJ,IAAIA,EAAE,EAAEA,EAAER,QAAQ6K,UAAU/J,SAASN,EACjCqL,EAAI7L,QAAQ6K,UAAUrK,UACfR,QAAQ4I,KAAKiD,GAExB,IAAIrL,EAAE,EAAEA,EAAER,QAAQ4K,SAAS9J,SAASN,EAChCqL,EAAI7L,QAAQ4K,SAASpK,GACrBR,QAAQ8K,KAAKe,GAAKA,EAEtB,IAAIrL,KAAKR,QAAQ8K,KACV9K,QAAQ8K,KAAKhI,eAAetC,KAC3B8F,EAAQ,GACRuF,EAAI7L,QAAQ8K,KAAKtK,IACgC,IAA9CR,QAAQe,UAAUiL,KAAKhM,QAAQ4K,SAASpK,IACpCoB,KAAKkB,eAAe+I,KAAIvF,EAAQ,OAAOuF,EAAE,WAAWA,EAAE,OAE7D7L,QAAQQ,EAAE,OAASR,QAAQuI,WAAW,CAAC,UAAU,YAAYsD,EAAE,YAAYvF,GAC3EtG,QAAQQ,EAAE,MAAQW,SAAS,IACnB,oCAAoC0K,EAApC,8BAEmBrL,EAFnB,0EAMRR,QAAQQ,EAAE,KAAOR,QAAQuI,WAAW,CAAC,QAAQ,YAAYsD,EAAE,UAAUvF,GACrEtG,QAAQQ,GAAKW,SAAS,IACd,oCAAoC0K,EAApC,gCAEmBrL,EAFnB,sEAOhB,IAAIA,EAAE,EAAEA,EAAER,QAAQ4K,SAAS9J,SAASN,EAChCqL,EAAI7L,QAAQ4K,SAASpK,UACdR,QAAQ8K,KAAKe,GAExB,IAAIrL,KAAKR,QAAQmL,YACVnL,QAAQmL,YAAYrI,eAAetC,KAClCqL,EAAI7L,QAAQmL,YAAY3K,GACxBR,QAAQQ,EAAE,KAAOR,QAAQqG,WAAWwF,EAAE,GAAGA,EAAE,IAC3C7L,QAAQQ,GAAKW,SAAS,IAAI,IAAI,IACtB0K,EAAE,GAAFA,2CAGAA,EAAE,GAHFA,qJAQuCrL,EARvCqL,mGAaAA,EAAE,GAbFA,yBAkBpB,CA9GA,GAgHA7L,QAAQiM,QAAUjM,QAAQ+H,UAAU,CAAC,OAAO,QAAQ,kCAAkC,2BACtF/H,QAAQkM,QAAUlM,QAAQ+H,UAAU,CAAC,OAAO,KAAK,4BAA4B,2BAC7E/H,QAAQmM,QAAUnM,QAAQ+H,UAAU,CAAC,IAAI,QAAQ,+BAA+B,2BAChF/H,QAAQoM,MAAQ,SAAe7K,EAAEmE,GAC7B,MAAgB,iBAANnE,EACU,iBAANmE,EAAuB1F,QAAQiM,QAAQ1K,EAAEmE,GAC5C1F,QAAQkM,QAAQ3K,EAAEmE,GAEZ,iBAANA,EAAuB1F,QAAQmM,QAAQ5K,EAAEmE,GAC7C9D,KAAK6D,MAAMlE,EAAEmE,GAAGA,CAC3B,EAEA1F,QAAQqM,IAAM,SAAa9K,GACvB,IAC0BoG,EAAI2E,EACDC,EAAIC,EAC7BhM,EAAE6C,EAAEzC,EAHJwD,EAAIpE,QAAQqE,IAAI9C,GAAIkL,EAAM7K,KAAK6K,IAAKvI,EAAIE,EAAE,GAAI7D,EAAI6D,EAAE,GACpDH,EAAIjE,QAAQkL,MAAM3J,GAClBmL,EAAI1M,QAAQ8H,SAAS5D,GAEzB,IAAIb,EAAE,EAAEA,EAAE9C,IAAI8C,EAAG,CACb,IAAIwD,GAAM,EACN8F,GAAM,EACV,IAAInM,EAAE6C,EAAE7C,IAAI0D,IAAI1D,GAAKI,EAAI6L,EAAIxI,EAAEzD,GAAG6C,KAAUsJ,IAAM9F,EAAKrG,EAAGmM,EAAK/L,GAI/D,IAHA0L,EAAKrI,EAAE4C,GAAK5C,EAAE4C,GAAM5C,EAAEZ,GAAIY,EAAEZ,GAAKiJ,EACjCE,EAAKE,EAAE7F,GAAK6F,EAAE7F,GAAM6F,EAAErJ,GAAIqJ,EAAErJ,GAAKmJ,EACjCjL,EAAI+K,EAAGjJ,GACHzC,EAAEyC,EAAEzC,IAAIL,IAAIK,EAAM0L,EAAG1L,IAAMW,EAC/B,IAAIX,EAAEL,EAAE,GAAO,IAALK,IAASA,EAAG4L,EAAG5L,IAAMW,EAC/B,IAAIf,EAAE0D,EAAE,GAAO,IAAL1D,IAASA,EACf,GAAGA,IAAI6C,EAAG,CAIN,IAHAsE,EAAK1D,EAAEzD,GACP+L,EAAKG,EAAElM,GACPe,EAAIoG,EAAGtE,GACHzC,EAAEyC,EAAE,EAAEzC,IAAIL,IAAIK,EAAI+G,EAAG/G,IAAM0L,EAAG1L,GAAGW,EACrC,IAAIX,EAAEL,EAAE,EAAEK,EAAE,IAAIA,EAAK2L,EAAG3L,IAAM4L,EAAG5L,GAAGW,EAAQgL,IAAH3L,IAAY4L,EAAG5L,GAAGW,EACpD,IAAJX,IAAO2L,EAAG,IAAMC,EAAG,GAAGjL,EAC7B,CAER,CACA,OAAOmL,CACX,EAEA1M,QAAQ4M,IAAM,SAAarL,GACvB,IAAI6C,EAAIpE,QAAQqE,IAAI9C,GACpB,GAAgB,IAAb6C,EAAEtD,QAAgBsD,EAAE,KAAOA,EAAE,GAAM,MAAM,IAAIlB,MAAM,gDACtD,IAAsB1C,EAAE6C,EAAEzC,EAAuB0L,EAAG3E,EAAGkF,EAAMC,EAAKC,EAA9DxM,EAAI6D,EAAE,GAAI/B,EAAM,EAAQ4B,EAAIjE,QAAQkL,MAAM3J,GAC9C,IAAI8B,EAAE,EAAEA,EAAE9C,EAAE,EAAE8C,IAAK,CAEf,IADAzC,EAAEyC,EACE7C,EAAE6C,EAAE,EAAE7C,EAAED,EAAEC,IAAUoB,KAAK6K,IAAIxI,EAAEzD,GAAG6C,IAAMzB,KAAK6K,IAAIxI,EAAErD,GAAGyC,MAAOzC,EAAIJ,GAMrE,IALGI,IAAMyC,IACLyJ,EAAO7I,EAAErD,GAAIqD,EAAErD,GAAKqD,EAAEZ,GAAIY,EAAEZ,GAAKyJ,EACjCzK,IAAQ,GAEZiK,EAAKrI,EAAEZ,GACH7C,EAAE6C,EAAE,EAAE7C,EAAED,EAAEC,IAAK,CAGf,IADAqM,GADAlF,EAAK1D,EAAEzD,IACI6C,GAAGiJ,EAAGjJ,GACbzC,EAAEyC,EAAE,EAAEzC,EAAEL,EAAE,EAAEK,GAAG,EACfmM,EAAKnM,EAAE,EACP+G,EAAG/G,IAAM0L,EAAG1L,GAAGiM,EACflF,EAAGoF,IAAOT,EAAGS,GAAIF,EAElBjM,IAAIL,IAAKoH,EAAG/G,IAAM0L,EAAG1L,GAAGiM,EAC/B,CACA,GAAa,IAAVP,EAAGjJ,GAAY,OAAO,EACzBhB,GAAOiK,EAAGjJ,EACd,CACA,OAAOhB,EAAI4B,EAAEZ,GAAGA,EACpB,EAEArD,QAAQgN,UAAY,SAAmBzL,GACnC,IAAIf,EAAE6C,EAA6C4J,EAAGC,EAAGC,EAAjDjJ,EAAI3C,EAAET,OAAOP,EAAIgB,EAAE,GAAGT,OAAQuB,EAAIrB,MAAMT,GAChD,IAAI8C,EAAE,EAAEA,EAAE9C,EAAE8C,IAAKhB,EAAIgB,GAAKrC,MAAMkD,GAChC,IAAI1D,EAAE0D,EAAE,EAAE1D,GAAG,EAAEA,GAAG,EAAG,CAGjB,IAFA0M,EAAK3L,EAAEf,GACPyM,EAAK1L,EAAEf,EAAE,GACL6C,EAAE9C,EAAE,EAAE8C,GAAG,IAAIA,GACb8J,EAAK9K,EAAIgB,IAAO7C,GAAK0M,EAAG7J,GAAI8J,EAAG3M,EAAE,GAAKyM,EAAG5J,IAEzC8J,EAAK9K,IADHgB,IACc7C,GAAK0M,EAAG7J,GAAI8J,EAAG3M,EAAE,GAAKyM,EAAG5J,GAEtC,IAAJA,KACC8J,EAAK9K,EAAI,IAAO7B,GAAK0M,EAAG,GAAIC,EAAG3M,EAAE,GAAKyM,EAAG,GAEjD,CACA,GAAO,IAAJzM,EAAO,CAEN,IADAyM,EAAK1L,EAAE,GACH8B,EAAE9C,EAAE,EAAE8C,GAAG,IAAIA,EACbhB,EAAIgB,GAAG,GAAK4J,EAAG5J,GAEfhB,IADEgB,GACK,GAAK4J,EAAG5J,GAEZ,IAAJA,IAAShB,EAAI,GAAG,GAAK4K,EAAG,GAC/B,CACA,OAAO5K,CACX,EACArC,QAAQoN,aAAe,SAAsB7L,GACzC,IAAIf,EAAE6C,EAA6C4J,EAAGC,EAAGC,EAAjDjJ,EAAI3C,EAAET,OAAOP,EAAIgB,EAAE,GAAGT,OAAQuB,EAAIrB,MAAMT,GAChD,IAAI8C,EAAE,EAAEA,EAAE9C,EAAE8C,IAAKhB,EAAIgB,GAAKrC,MAAMkD,GAChC,IAAI1D,EAAE0D,EAAE,EAAE1D,GAAG,EAAEA,GAAG,EAAG,CAGjB,IAFA0M,EAAK3L,EAAEf,GACPyM,EAAK1L,EAAEf,EAAE,GACL6C,EAAE9C,EAAE,EAAE8C,GAAG,IAAIA,GACb8J,EAAK9K,EAAIgB,IAAO7C,IAAM0M,EAAG7J,GAAI8J,EAAG3M,EAAE,IAAMyM,EAAG5J,IAE3C8J,EAAK9K,IADHgB,IACc7C,IAAM0M,EAAG7J,GAAI8J,EAAG3M,EAAE,IAAMyM,EAAG5J,GAExC,IAAJA,KACC8J,EAAK9K,EAAI,IAAO7B,IAAM0M,EAAG,GAAIC,EAAG3M,EAAE,IAAMyM,EAAG,GAEnD,CACA,GAAO,IAAJzM,EAAO,CAEN,IADAyM,EAAK1L,EAAE,GACH8B,EAAE9C,EAAE,EAAE8C,GAAG,IAAIA,EACbhB,EAAIgB,GAAG,IAAM4J,EAAG5J,GAEhBhB,IADEgB,GACK,IAAM4J,EAAG5J,GAEb,IAAJA,IAAShB,EAAI,GAAG,IAAM4K,EAAG,GAChC,CACA,OAAO5K,CACX,EAEArC,QAAQqN,QAAU,SAASA,EAAQjJ,EAAExD,GACjC,IAAIJ,EAAuB8M,EAArB/M,EAAE6D,EAAExD,GAAGyB,EAAIrB,MAAMT,GACvB,GAAGK,IAAMwD,EAAEtD,OAAO,EAAG,CAEjB,IADAwM,EAAM1L,KAAK2L,OACP/M,EAAED,EAAE,EAAEC,GAAG,EAAEA,GAAG,EACd6B,EAAI7B,GAAK8M,IACTjL,EAAI7B,EAAE,GAAK8M,IAGf,OADO,IAAJ9M,IAAS6B,EAAI,GAAKiL,KACdjL,CACX,CACA,IAAI7B,EAAED,EAAE,EAAEC,GAAG,EAAEA,IAAK6B,EAAI7B,GAAK6M,EAAQjJ,EAAExD,EAAE,GACzC,OAAOyB,CACX,EACArC,QAAQuN,OAAS,SAAgBnJ,GAAK,OAAOpE,QAAQqN,QAAQjJ,EAAE,EAAI,EAEnEpE,QAAQwN,MAAQ,SAAejM,GAAK,OAAOK,KAAK6L,KAAKzN,QAAQwL,aAAajK,GAAK,EAE/EvB,QAAQ0N,SAAW,SAAkBjL,EAAEC,EAAEnC,GAErC,QADgB,IAANA,IAAmBA,EAAIqB,KAAK+L,IAAI/L,KAAK6D,MAAM/C,EAAED,GAAG,EAAE,IACzDlC,EAAE,EAAK,OAAW,IAAJA,EAAM,CAACkC,GAAG,GAC3B,IAAIjC,EAAE6B,EAAMrB,MAAMT,GAElB,IAAIC,IADJD,EACQC,GAAG,EAAEA,IAAO6B,EAAI7B,IAAMA,EAAEkC,GAAGnC,EAAEC,GAAGiC,GAAGlC,EAC3C,OAAO8B,CACX,EAEArC,QAAQ4N,SAAW,SAAkBrM,EAAEwD,EAAKC,GACxC,IAAIZ,EAAIpE,QAAQqE,IAAI9C,GAUpB,OATA,SAASe,EAAIf,EAAEX,GACX,IAAIJ,EAAEiC,EAAIsC,EAAKnE,GAAIL,EAAIyE,EAAGpE,GAAG6B,EAAGJ,EAAMrB,MAAMT,GAC5C,GAAGK,IAAMwD,EAAEtD,OAAO,EAAG,CACjB,IAAIN,EAAED,EAAEC,GAAG,EAAEA,IAAO6B,EAAI7B,GAAKe,EAAEf,EAAEiC,GACjC,OAAOJ,CACX,CACA,IAAI7B,EAAED,EAAEC,GAAG,EAAEA,IAAO6B,EAAI7B,GAAK8B,EAAIf,EAAEf,EAAEiC,GAAG7B,EAAE,GAC1C,OAAOyB,CACX,CACOC,CAAIf,EAAE,EACjB,EAEAvB,QAAQ6N,SAAW,SAAkBtM,EAAEwD,EAAKC,EAAG8I,GAC3C,IAAI1J,EAAIpE,QAAQqE,IAAI9C,GAOpB,OANA,SAASe,EAAIf,EAAEmE,EAAE9E,GACb,IAAIJ,EAAEiC,EAAIsC,EAAKnE,GAAIL,EAAIyE,EAAGpE,GAAG6B,EAC7B,GAAG7B,IAAMwD,EAAEtD,OAAO,EAAK,IAAIN,EAAED,EAAEC,GAAG,EAAEA,IAAOe,EAAEf,EAAEiC,GAAKiD,EAAElF,GACtD,IAAIA,EAAED,EAAEC,GAAG,EAAEA,IAAO8B,EAAIf,EAAEf,EAAEiC,GAAGiD,EAAElF,GAAGI,EAAE,EAC1C,CACA0B,CAAIf,EAAEuM,EAAE,GACDvM,CACX,EAEAvB,QAAQ+N,SAAW,SAAkB9J,EAAEyI,EAAEsB,GACrC,IACIxN,EAAE6C,EACY4K,EAAIC,EAFlBhK,EAAIwI,EAAE5L,OAAQP,EAAIyN,EAAElN,OAEpBgN,EAAI9M,MAAMkD,GACd,IAAI1D,EAAE0D,EAAE,GAAO,IAAL1D,IAASA,EAIf,IAHAsN,EAAEtN,GAAKQ,MAAMT,GACb0N,EAAKH,EAAEtN,GACP0N,EAAKjK,EAAEyI,EAAElM,IACL6C,EAAE9C,EAAE,GAAO,IAAL8C,IAASA,EAAG4K,EAAG5K,GAAK6K,EAAGF,EAAE3K,IAEvC,OAAOyK,CACX,EAEA9N,QAAQmO,YAAc,SAAqBC,GACvC,IAAIhK,EAAIpE,QAAQqE,IAAI+J,GACpB,GAAGhK,EAAEtD,OAAO,EAAG,OAAOd,QAAQmO,YAAY,CAACC,IAC3C,IAAkBC,EAAEC,EAAE9N,EAAE6C,EAAEkL,EAAtBrK,EAAEE,EAAE,GAAG7D,EAAE6D,EAAE,GAEf,IADAiK,EAAI,EAAGC,EAAI,EACP9N,EAAE,EAAEA,EAAE0D,IAAI1D,EAAG6N,GAAGD,EAAE5N,GAAG,GAAGM,OAC5B,IAAIuC,EAAE,EAAEA,EAAE9C,IAAI8C,EAAGiL,GAAGF,EAAE,GAAG/K,GAAG,GAAGvC,OAC/B,IAAI0N,EAAIxN,MAAMqN,GACd,IAAI7N,EAAE,EAAEA,EAAE6N,IAAI7N,EAAGgO,EAAEhO,GAAKQ,MAAMsN,GAC9B,IAAQN,EAAES,EAAG7N,EAAE8N,EAAEC,EAAbjC,EAAE,EACN,IAAIlM,EAAE,EAAEA,EAAE0D,IAAI1D,EAAG,CAEb,IADAwN,EAAEM,EACEjL,EAAE9C,EAAE,GAAO,IAAL8C,IAASA,EAGf,IADA2K,IADAO,EAAMH,EAAE5N,GAAG6C,IACF,GAAGvC,OACRF,EAAE2N,EAAIzN,OAAO,GAAO,IAALF,IAASA,EAGxB,IAFA+N,EAAOJ,EAAI3N,GACX6N,EAAKD,EAAE9B,EAAE9L,GACL8N,EAAIC,EAAK7N,OAAO,GAAO,IAAL4N,IAASA,EAAGD,EAAGT,EAAEU,GAAKC,EAAKD,GAGzDhC,GAAK0B,EAAE5N,GAAG,GAAGM,MACjB,CACA,OAAO0N,CACX,EAEAxO,QAAQ4O,OAAS,SAAgBrN,EAAEmE,GAC/B,GAAgB,iBAANnE,GAA+B,iBAANmE,EAAgB,OAAO1F,QAAQ+I,IAAIxH,EAAEmE,GACxE,IAAIP,EAAKnF,QAAQqE,IAAI9C,GAAI6D,EAAKpF,QAAQqE,IAAIqB,GAC1C,GAAiB,IAAdP,EAAGrE,QAA8B,IAAdsE,EAAGtE,OACrB,MAAM,IAAIoC,MAAM,uDAEpB,IAAwCyE,EAAInH,EAAE6C,EAAEwL,EAA5C3K,EAAIiB,EAAG,GAAI5E,EAAI6E,EAAG,GAAInB,EAAIjD,MAAMkD,GACpC,IAAI1D,EAAE0D,EAAE,EAAE1D,GAAG,EAAEA,IAAK,CAGhB,IAFAmH,EAAK3G,MAAMT,GACXsO,EAAKtN,EAAEf,GACH6C,EAAE9C,EAAE,EAAE8C,GAAG,IAAIA,EACbsE,EAAGtE,GAAKwL,EAAKnJ,EAAErC,GAEfsE,IADEtE,GACMwL,EAAKnJ,EAAErC,GAEfsE,IADEtE,GACMwL,EAAKnJ,EAAErC,GAEfsE,IADEtE,GACMwL,EAAKnJ,EAAErC,GAEnB,KAAMA,GAAG,GAAKsE,EAAGtE,GAAKwL,EAAKnJ,EAAErC,KAAMA,EACnCY,EAAEzD,GAAKmH,CACX,CACA,OAAO1D,CACX,EAGAjE,QAAQ8O,EAAI,SAAWvN,EAAEmE,GAAK7E,KAAKU,EAAIA,EAAGV,KAAK6E,EAAIA,CAAG,EACtD1F,QAAQoD,EAAI,SAAW7B,EAAEmE,GAAK,OAAO,IAAI1F,QAAQ8O,EAAEvN,EAAEmE,EAAI,EAEzD1F,QAAQ+O,OAAS,SAAgBC,EAAGC,EAAGC,EAAGC,EAAG7I,GACzC,IAEQ1F,EADR,GADSZ,QAAQkB,QACG,iBAAVoF,EAGN,IAAI1F,KADJ0F,EAAQ,GACCtG,QACFA,QAAQ8C,eAAelC,KAAOoO,EAAG9N,QAAQN,IAAI,GAAKqO,EAAG/N,QAAQN,IAAI,GAAKsO,EAAGhO,QAAQN,IAAI,GAAKuO,EAAGjO,QAAQN,IAAI,IAAMA,EAAEE,OAAO,IACvHwF,GAAS,OAAO1F,EAAE,cAAcA,EAAE,OAI9C,OAAOO,SAAS,CAAC,KACT,2EAEAmF,EAFA,kDAK4B6I,EAL5B,mCAO0BD,EAP1B,4CAU0BD,EAV1B,+BAYwBD,EAAG,OAEvC,EAEAhP,QAAQ8O,EAAE7N,UAAU4H,IAAM7I,QAAQ+O,OAC1B,eACA,mBACA,mBACA,6BACR/O,QAAQ8O,EAAE7N,UAAU6H,IAAM9I,QAAQ+O,OAC1B,eACA,wBACA,mBACA,6BACR/O,QAAQ8O,EAAE7N,UAAU8H,IAAM/I,QAAQ+O,OAC1B,eACA,4BACA,4BACA,iEAER/O,QAAQ8O,EAAE7N,UAAUmO,WAAa,WAC7B,IAAIrG,EAAM/I,QAAQ+I,IAAKC,EAAMhJ,QAAQgJ,IACrC,GAAGnI,KAAK6E,EAAG,CACP,IAAI9C,EAAI5C,QAAQ6I,IAAIE,EAAIlI,KAAKU,EAAEV,KAAKU,GAAGwH,EAAIlI,KAAK6E,EAAE7E,KAAK6E,IACvD,OAAO,IAAI1F,QAAQ8O,EAAE9F,EAAInI,KAAKU,EAAEqB,GAAGoG,EAAIhJ,QAAQ+K,IAAIlK,KAAK6E,GAAG9C,GAC/D,CACA,OAAO,IAAIkM,EAAE9F,EAAI,EAAEnI,KAAKU,GAC5B,EACAvB,QAAQ8O,EAAE7N,UAAU+H,IAAM,SAAatD,GAEnC,GADKA,aAAa1F,QAAQ8O,IAAIpJ,EAAI,IAAI1F,QAAQ8O,EAAEpJ,IAC7CA,EAAEA,EAAK,OAAO7E,KAAKkI,IAAIrD,EAAE0J,cAC5B,IAAIpG,EAAMhJ,QAAQgJ,IAClB,OAAGnI,KAAK6E,EAAY,IAAI1F,QAAQ8O,EAAE9F,EAAInI,KAAKU,EAAEmE,EAAEnE,GAAGyH,EAAInI,KAAK6E,EAAEA,EAAEnE,IACxD,IAAIvB,QAAQ8O,EAAE9F,EAAInI,KAAKU,EAAEmE,EAAEnE,GACtC,EACAvB,QAAQ8O,EAAE7N,UAAUsG,IAAMvH,QAAQ+O,OAC1B,eACA,4BACA,4BACA,iEAER/O,QAAQ8O,EAAE7N,UAAU+L,UAAY,WAC5B,IAAI5J,EAAIpD,QAAQgN,UAAWzL,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EAChD,OAAGA,EAAY,IAAI1F,QAAQ8O,EAAE1L,EAAE7B,GAAG6B,EAAEsC,IAC7B,IAAI1F,QAAQ8O,EAAE1L,EAAE7B,GAC3B,EACAvB,QAAQ8O,EAAE7N,UAAUoO,YAAc,WAC9B,IAAIjM,EAAIpD,QAAQgN,UAAWzL,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EAChD,OAAGA,EAAY,IAAI1F,QAAQ8O,EAAE1L,EAAE7B,GAAGvB,QAAQoN,aAAa1H,IAChD,IAAI1F,QAAQ8O,EAAE1L,EAAE7B,GAC3B,EACAvB,QAAQsP,MAAQ,SAAezJ,EAAElD,EAAEyB,GAE/B,MADgB,iBAANA,IAAkBA,EAAI,IACzBjD,SACC,kBACAiD,EADA,gBAGKzB,EAHL,SAKAkD,EAAE,MAEd,EAEA7F,QAAQ8O,EAAE7N,UAAUsO,IAAMvP,QAAQsP,MAC1B,2BACA,0DACA,uFACRtP,QAAQ8O,EAAE7N,UAAUuO,KAAOxP,QAAQsP,MAC3B,6BACA,+CACRtP,QAAQ8O,EAAE7N,UAAU8J,IAAM/K,QAAQsP,MAC1B,kCACA,2CACA,0BACRtP,QAAQ8O,EAAE7N,UAAUwO,IAAMzP,QAAQsP,MAC1B,yCACA,8DACRtP,QAAQ8O,EAAE7N,UAAUyO,IAAM1P,QAAQsP,MAC1B,yCACA,6CACRtP,QAAQ8O,EAAE7N,UAAUwL,IAAMzM,QAAQsP,MAC1B,0CACA,8EACA,0BACRtP,QAAQ8O,EAAE7N,UAAUa,IAAM9B,QAAQsP,MAC1B,0CACA,oHAERtP,QAAQ8O,EAAE7N,UAAUuM,MAAQxN,QAAQsP,MAC5B,6BACA,mEAERtP,QAAQ8O,EAAE7N,UAAUoL,IAAM,WACtB,IAAIpI,EAAIpD,KACR,QAAkB,IAARoD,EAAEyB,EAAqB,OAAO,IAAI1F,QAAQ8O,EAAE9O,QAAQqM,IAAIpI,EAAE1C,IACpE,IAGIoO,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EACnC1P,EAAE6C,EAAEzC,EAAEgC,EAAEuN,EAAGC,EAAGC,EAAGC,EAAGC,EAAGzD,EAJvBvM,EAAI0D,EAAE1C,EAAET,OACR0P,EAAKxQ,QAAQ8H,SAASvH,GAAGkQ,EAAKzQ,QAAQwG,IAAI,CAACjG,EAAEA,GAAG,GAChDmQ,EAAK1Q,QAAQkL,MAAMjH,EAAE1C,GAAIoP,EAAK3Q,QAAQkL,MAAMjH,EAAEyB,GAGlD,IAAIlF,EAAE,EAAEA,EAAED,EAAEC,IAAK,CAIb,IAFAoC,GADAwN,EAAKM,EAAGlQ,GAAGA,IACJ4P,GADQC,EAAKM,EAAGnQ,GAAGA,IACb6P,EACbzP,EAAIJ,EACA6C,EAAE7C,EAAE,EAAE6C,EAAE9C,EAAE8C,KAEV8M,GADAC,EAAKM,EAAGrN,GAAG7C,IACH4P,GADOC,EAAKM,EAAGtN,GAAG7C,IACZ6P,GACNzN,IAAKhC,EAAEyC,EAAGT,EAAIuN,GAW1B,IATGvP,IAAIJ,IACHsM,EAAO4D,EAAGlQ,GAAIkQ,EAAGlQ,GAAKkQ,EAAG9P,GAAI8P,EAAG9P,GAAKkM,EACrCA,EAAO6D,EAAGnQ,GAAImQ,EAAGnQ,GAAKmQ,EAAG/P,GAAI+P,EAAG/P,GAAKkM,EACrCA,EAAO0D,EAAGhQ,GAAIgQ,EAAGhQ,GAAKgQ,EAAG5P,GAAI4P,EAAG5P,GAAKkM,EACrCA,EAAO2D,EAAGjQ,GAAIiQ,EAAGjQ,GAAKiQ,EAAG7P,GAAI6P,EAAG7P,GAAKkM,GAEzC6C,EAAMe,EAAGlQ,GAAIoP,EAAMe,EAAGnQ,GACtBuP,EAAMS,EAAGhQ,GAAIwP,EAAMS,EAAGjQ,GACtB4P,EAAKT,EAAInP,GAAI6P,EAAKT,EAAIpP,GAClB6C,EAAE7C,EAAE,EAAE6C,EAAE9C,EAAE8C,IACViN,EAAKX,EAAItM,GAAIkN,EAAKX,EAAIvM,GACtBsM,EAAItM,IAAMiN,EAAGF,EAAGG,EAAGF,GAAIzN,EACvBgN,EAAIvM,IAAMkN,EAAGH,EAAGE,EAAGD,GAAIzN,EAE3B,IAAIS,EAAE,EAAEA,EAAE9C,EAAE8C,IACRiN,EAAKP,EAAI1M,GAAIkN,EAAKP,EAAI3M,GACtB0M,EAAI1M,IAAMiN,EAAGF,EAAGG,EAAGF,GAAIzN,EACvBoN,EAAI3M,IAAMkN,EAAGH,EAAGE,EAAGD,GAAIzN,EAE3B,IAAIS,EAAE7C,EAAE,EAAE6C,EAAE9C,EAAE8C,IAAK,CAIf,IAHAwM,EAAMa,EAAGrN,GAAIyM,EAAMa,EAAGtN,GACtB4M,EAAMO,EAAGnN,GAAI6M,EAAMO,EAAGpN,GACtB+M,EAAKP,EAAIrP,GAAI6P,EAAKP,EAAItP,GAClBI,EAAEJ,EAAE,EAAEI,EAAEL,EAAEK,IACV0P,EAAKX,EAAI/O,GAAI2P,EAAKX,EAAIhP,GACtBiP,EAAIjP,IAAM0P,EAAGF,EAAGG,EAAGF,EACnBP,EAAIlP,IAAM2P,EAAGH,EAAGE,EAAGD,EAEvB,IAAIzP,EAAE,EAAEA,EAAEL,EAAEK,IACR0P,EAAKP,EAAInP,GAAI2P,EAAKP,EAAIpP,GACtBqP,EAAIrP,IAAM0P,EAAGF,EAAGG,EAAGF,EACnBH,EAAItP,IAAM2P,EAAGH,EAAGE,EAAGD,CAE3B,CACJ,CACA,IAAI7P,EAAED,EAAE,EAAEC,EAAE,EAAEA,IAEV,IADAuP,EAAMS,EAAGhQ,GAAIwP,EAAMS,EAAGjQ,GAClB6C,EAAE7C,EAAE,EAAE6C,GAAG,EAAEA,IAGX,IAFA4M,EAAMO,EAAGnN,GAAI6M,EAAMO,EAAGpN,GACtB+M,EAAKM,EAAGrN,GAAG7C,GAAI6P,EAAKM,EAAGtN,GAAG7C,GACtBI,EAAEL,EAAE,EAAEK,GAAG,EAAEA,IACX0P,EAAKP,EAAInP,GAAI2P,EAAKP,EAAIpP,GACtBqP,EAAIrP,IAAMwP,EAAGE,EAAKD,EAAGE,EACrBL,EAAItP,IAAMwP,EAAGG,EAAKF,EAAGC,EAIjC,OAAO,IAAItQ,QAAQ8O,EAAE0B,EAAGC,EAC5B,EACAzQ,QAAQ8O,EAAE7N,UAAU2P,IAAM,SAAapQ,GACnC,IAAmCqQ,EAA/BtP,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EAAG9E,EAAI,EAAOL,EAAIC,EAAEM,OAC7C,GAAG4E,EAAG,CACF,KAAM9E,EAAEL,GAEJgB,EAAIA,EADJsP,EAAKrQ,EAAEI,IAEP8E,EAAIA,EAAEmL,GACNjQ,IAEJ,OAAO,IAAIZ,QAAQ8O,EAAEvN,EAAEmE,EAC3B,CACA,KAAM9E,EAAEL,GAEJgB,EAAIA,EADJsP,EAAKrQ,EAAEI,IAEPA,IAEJ,OAAO,IAAIZ,QAAQ8O,EAAEvN,EACzB,EACAvB,QAAQ8O,EAAE7N,UAAU6P,IAAM,SAAatQ,EAAEiG,GACrC,IAAmCoK,EAA/BtP,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EAAG9E,EAAI,EAAOL,EAAIC,EAAEM,OAAQiQ,EAAKtK,EAAElF,EAAGyP,EAAKvK,EAAEf,EACtE,GAAO,IAAJnF,EAIC,OAHGyQ,EAAMnQ,KAAK6E,EAAIsL,EACVtL,IAAK7E,KAAK6E,OAAIuL,GACtBpQ,KAAKU,EAAIA,EACFV,KAEX,GAAGmQ,EAAI,CAMH,IALGtL,IAECA,EAAI1F,QAAQwG,IAAIxG,QAAQqE,IAAI9C,GAAG,GAC/BV,KAAK6E,EAAIA,GAEP9E,EAAEL,EAAE,GAENgB,EAAIA,EADJsP,EAAKrQ,EAAEI,IAEP8E,EAAIA,EAAEmL,GACNjQ,IAKJ,OAFAW,EADAsP,EAAKrQ,EAAEI,IACCmQ,EACRrL,EAAEmL,GAAMG,EACDnQ,IACX,CACA,GAAG6E,EAAG,CACF,KAAM9E,EAAEL,EAAE,GAENgB,EAAIA,EADJsP,EAAKrQ,EAAEI,IAEP8E,EAAIA,EAAEmL,GACNjQ,IAMJ,OAHAW,EADAsP,EAAKrQ,EAAEI,IACCmQ,EACgBrL,EAAEmL,GAAvBE,aAAc/P,MAAehB,QAAQwG,IAAIxG,QAAQqE,IAAI0M,GAAI,GAC/C,EACNlQ,IACX,CACA,KAAMD,EAAEL,EAAE,GAENgB,EAAIA,EADJsP,EAAKrQ,EAAEI,IAEPA,IAIJ,OADAW,EADAsP,EAAKrQ,EAAEI,IACCmQ,EACDlQ,IACX,EACAb,QAAQ8O,EAAE7N,UAAUiQ,QAAU,SAAiBrK,EAAGS,GAC9C,IAAiBjE,EACE8N,EADf5Q,EAAI+G,EAAGT,EAAG,EACVuK,EAAKpQ,MAAMT,GAAQgB,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EAC5C,IAAIrC,EAAEwD,EAAGxD,GAAGiE,EAAGjE,IAAO+N,EAAG/N,EAAEwD,GAAMtF,EAAE8B,GACnC,GAAGqC,EAAG,CAEF,IADAyL,EAAKnQ,MAAMT,GACP8C,EAAEwD,EAAGxD,GAAGiE,EAAGjE,IAAO8N,EAAG9N,EAAEwD,GAAMnB,EAAErC,GACnC,OAAO,IAAIrD,QAAQ8O,EAAEsC,EAAGD,EAC5B,CACA,OAAO,IAAInR,QAAQ8O,EAAEsC,EACzB,EACApR,QAAQ8O,EAAE7N,UAAUoQ,QAAU,SAAiBxK,EAAGS,EAAGrD,GACjD,IAAIZ,EACA+N,EAAKvQ,KAAKU,EAAG4P,EAAKtQ,KAAK6E,EAAGnE,EAAI0C,EAAE1C,EAAGmE,EAAIzB,EAAEyB,EAC7C,IAAIrC,EAAEwD,EAAGxD,GAAGiE,EAAGjE,IAAO+N,EAAG/N,GAAK9B,EAAE8B,EAAEwD,GAClC,GAAGnB,EAEC,IADIyL,IAAMA,EAAKnR,QAAQwG,IAAIxG,QAAQqE,IAAI+M,GAAI,GAAIvQ,KAAK6E,EAAIyL,GACpD9N,EAAEwD,EAAGxD,GAAGiE,EAAGjE,IAAO8N,EAAG9N,GAAKqC,EAAErC,EAAEwD,QAC/B,GAAGsK,EACN,IAAI9N,EAAEwD,EAAGxD,GAAGiE,EAAGjE,IAAO8N,EAAG9N,GAAKrD,QAAQwG,IAAI,CAACjF,EAAE8B,EAAEwD,GAAI/F,QAAQ,GAE/D,OAAOD,IACX,EACAb,QAAQ8O,EAAE7N,UAAUqQ,OAAS,SAAgB1Q,GACzC,IAAIW,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EACzB,OAAGA,EAAY,IAAI1F,QAAQ8O,EAAEvN,EAAEX,GAAG8E,EAAE9E,IAC7B,IAAIZ,QAAQ8O,EAAEvN,EAAEX,GAC3B,EACAZ,QAAQ8O,EAAE7N,UAAUsQ,OAAS,SAAgB/Q,EAAEiG,GAC3C,IAAI2K,EAAKvQ,KAAKU,EAAG4P,EAAKtQ,KAAK6E,EAAGnE,EAAIkF,EAAElF,EAAGmE,EAAIe,EAAEf,EAQ7C,OAPA0L,EAAG5Q,GAAKe,EACLmE,GACKyL,IAAMA,EAAKnR,QAAQwG,IAAIxG,QAAQqE,IAAI+M,GAAI,GAAIvQ,KAAK6E,EAAIyL,GACxDA,EAAG3Q,GAAKkF,GACFyL,IACNA,EAAKnR,QAAQwG,IAAI,CAACjF,EAAET,QAAQ,IAEzBD,IACX,EAEAb,QAAQ8O,EAAE7N,UAAU2M,SAAW,SAAkB7I,EAAKC,GAClD,IAAIzD,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EAAGhD,EAAI1C,QAAQ4N,SACxC,OAAGlI,EAAY,IAAI1F,QAAQ8O,EAAEpM,EAAEnB,EAAEwD,EAAKC,GAAItC,EAAEgD,EAAEX,EAAKC,IAC5C,IAAIhF,QAAQ8O,EAAEpM,EAAEnB,EAAEwD,EAAKC,GAClC,EACAhF,QAAQ8O,EAAE7N,UAAU4M,SAAW,SAAkB9I,EAAKC,EAAGf,GAChDA,aAAajE,QAAQ8O,IAAI7K,EAAI,IAAIjE,QAAQ8O,EAAE7K,IAChD,IAAI1C,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EAAGhD,EAAI1C,QAAQ6N,SAAU6C,EAAKzM,EAAE1C,EAAGoP,EAAK1M,EAAEyB,EACnE,GAAGiL,EAIC,OAHIjL,IAAK7E,KAAK6E,EAAI1F,QAAQwG,IAAIxG,QAAQqE,IAAIxD,MAAM,GAAI6E,EAAI7E,KAAK6E,GAC7DhD,EAAEnB,EAAEwD,EAAKC,EAAG0L,GACZhO,EAAEgD,EAAEX,EAAKC,EAAG2L,GACL9P,KAEX6B,EAAEnB,EAAEwD,EAAKC,EAAG0L,GACThL,GAAGhD,EAAEgD,EAAEX,EAAKC,EAAGhF,QAAQwG,IAAIxG,QAAQqE,IAAIqM,GAAI,GAClD,EACA1Q,QAAQ8O,EAAEtI,IAAM,SAAapC,EAAEqC,GAC3B,IAAIqI,EAAI9O,QAAQ8O,EACXrI,aAAaqI,IAAIrI,EAAI,IAAIqI,EAAErI,IAChC,IAAIlF,EAAIkF,EAAElF,EAAGmE,EAAIe,EAAEf,EAAGG,EAAI7F,QAAQwG,IAClC,OAAGd,EAAU,IAAIoJ,EAAEjJ,EAAEzB,EAAE7C,GAAGsE,EAAEzB,EAAEsB,IACvB,IAAIoJ,EAAEjJ,EAAEzB,EAAE7C,GACrB,EACAvB,QAAQ8O,EAAEpH,KAAO,SAAc9E,GACtBA,aAAa5C,QAAQ8O,IAAIlM,EAAI,IAAI5C,QAAQ8O,EAAElM,IAChD,IAAIrB,EAAIqB,EAAErB,EAAGmE,EAAI9C,EAAE8C,EAAGgC,EAAO1H,QAAQ0H,KACrC,OAAGhC,EAAU,IAAI1F,QAAQ8O,EAAEpH,EAAKnG,GAAGmG,EAAKhC,IACjC,IAAI1F,QAAQ8O,EAAEpH,EAAKnG,GAC9B,EACAvB,QAAQ8O,EAAE0C,IAAM,WACZ,GAAG3Q,KAAK6E,EAAK,MAAM,IAAIxC,MAAM,8CAC7B,OAAOlD,QAAQwR,IAAI3Q,KAAKU,EAC5B,EACAvB,QAAQ8O,EAAEhH,SAAW,SAAkBvH,GAAK,OAAO,IAAIP,QAAQ8O,EAAE9O,QAAQ8H,SAASvH,GAAK,EACvFP,QAAQ8O,EAAE7N,UAAU2G,QAAU,WAC1B,IAAIrH,EAAIP,QACJuB,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EACzB,OAAGA,EAAY,IAAInF,EAAEuO,EAAEvO,EAAEqH,QAAQrG,GAAGhB,EAAEqH,QAAQlC,IACvC,IAAInF,EAAEuO,EAAEvO,EAAEqH,QAAQrG,GAC7B,EAIAvB,QAAQyR,MAAQ,SAAelQ,GAC3B,IAAIkF,EAAIzG,QAAQkL,MAAM3J,GAElBsL,GADItL,EAAE,IAAM,EAAI,GAAK,GACXvB,QAAQwN,MAAMjM,GAC5BkF,EAAE,IAAMoG,EACR,IAAIvK,EAAMtC,QAAQwN,MAAM/G,GACxB,GAAW,IAARnE,EAA0C,MAAM,IAAIY,MAAM,uBAC7D,OAAOlD,QAAQgJ,IAAIvC,EAAEnE,EACzB,EAEAtC,QAAQ0R,kBAAoB,SAA2BC,GACnD,IAAIvN,EAAIpE,QAAQqE,IAAIsN,GACpB,GAAgB,IAAbvN,EAAEtD,QAAgBsD,EAAE,KAAOA,EAAE,GAAM,MAAM,IAAIlB,MAAM,8DACtD,IAAc1C,EAAE6C,EAAEzC,EAAEW,EAAEkF,EAAwBqH,EAAE8D,EAAEjK,EAAGkK,EAA2BC,EAA5E5N,EAAIE,EAAE,GAAcH,EAAIjE,QAAQkL,MAAMyG,GAAcI,EAAI/R,QAAQ8H,SAAS5D,GAC7E,IAAIb,EAAE,EAAEA,EAAEa,EAAE,EAAEb,IAAK,CAEf,IADA9B,EAAIP,MAAMkD,EAAEb,EAAE,GACV7C,EAAE6C,EAAE,EAAE7C,EAAE0D,EAAE1D,IAAOe,EAAEf,EAAE6C,EAAE,GAAKY,EAAEzD,GAAG6C,GACrC,GAAGrD,QAAQwN,MAAMjM,GAAG,EAAG,CAInB,IAHAkF,EAAIzG,QAAQyR,MAAMlQ,GAClBuM,EAAI9N,QAAQ4N,SAAS3J,EAAE,CAACZ,EAAE,EAAEA,GAAG,CAACa,EAAE,EAAEA,EAAE,IACtC0N,EAAI5R,QAAQ4O,OAAOnI,EAAEzG,QAAQuH,IAAId,EAAEqH,IAC/BtN,EAAE6C,EAAE,EAAE7C,EAAE0D,EAAE1D,IAAiC,IAA1BmH,EAAK1D,EAAEzD,GAAIqR,EAAKD,EAAEpR,EAAE6C,EAAE,GAAQzC,EAAEyC,EAAEzC,EAAEsD,EAAEtD,IAAK+G,EAAG/G,IAAM,EAAEiR,EAAGjR,EAAEyC,GAGhF,IAFAyK,EAAI9N,QAAQ4N,SAAS3J,EAAE,CAAC,EAAEZ,EAAE,GAAG,CAACa,EAAE,EAAEA,EAAE,IACtC0N,EAAI5R,QAAQ4O,OAAO5O,QAAQuH,IAAIuG,EAAErH,GAAGA,GAChCjG,EAAE,EAAEA,EAAE0D,EAAE1D,IAA6B,IAAtBmH,EAAK1D,EAAEzD,GAAIqR,EAAKD,EAAEpR,GAAQI,EAAEyC,EAAE,EAAEzC,EAAEsD,EAAEtD,IAAK+G,EAAG/G,IAAM,EAAEiR,EAAGjR,EAAEyC,EAAE,GAE9E,IADAyK,EAAI9M,MAAMkD,EAAEb,EAAE,GACV7C,EAAE6C,EAAE,EAAE7C,EAAE0D,EAAE1D,IAAKsN,EAAEtN,EAAE6C,EAAE,GAAK0O,EAAEvR,GAEhC,IADAoR,EAAI5R,QAAQ4O,OAAOnI,EAAEzG,QAAQuH,IAAId,EAAEqH,IAC/BtN,EAAE6C,EAAE,EAAE7C,EAAE0D,EAAE1D,IAAiC,IAA1BsR,EAAKC,EAAEvR,GAAIqR,EAAKD,EAAEpR,EAAE6C,EAAE,GAAQzC,EAAE,EAAEA,EAAEsD,EAAEtD,IAAKkR,EAAGlR,IAAM,EAAEiR,EAAGjR,EAClF,CACJ,CACA,MAAO,CAACoR,EAAE/N,EAAG8N,EAAEA,EACnB,EAEA/R,QAAQiS,QAAU,qBAElBjS,QAAQkS,UAAY,SAASF,EAAEG,QACL,IAAZA,IAA2BA,EAAU,KAC/CH,EAAIhS,QAAQkL,MAAM8G,GACThS,QAAQkL,MAAM8G,GAAvB,IAC8BzQ,EAAEkF,EAAEhE,EAAEC,EAAEC,EAAEC,EAAEgK,EAAIwF,EAAIC,EAA+BP,EAAIQ,EAAIxE,EAAG8D,EAAGC,EAAGrR,EAAE6C,EAAEzC,EAAE2R,EAAjFrO,EAAflE,QAAQqE,IAAI2N,GAAO,GAA6BD,EAAI/R,QAAQ8H,SAAS5D,GAC7E,GAAGA,EAAE,EAAK,MAAO,CAAC6N,EAAEA,EAAGjE,EAAE,CAAE,CAAC,EAAE5J,EAAE,KAChC,IAAI+N,EAAUjS,QAAQiS,QACtB,IAAIM,EAAK,EAAEA,EAAKJ,EAAQI,IAAQ,CAC5B,IAAIlP,EAAE,EAAEA,EAAEa,EAAE,EAAEb,IACV,GAAGzB,KAAK6K,IAAIuF,EAAE3O,EAAE,GAAGA,IAAM4O,GAASrQ,KAAK6K,IAAIuF,EAAE3O,GAAGA,IAAIzB,KAAK6K,IAAIuF,EAAE3O,EAAE,GAAGA,EAAE,KAAM,CACxE,IAAImP,EAAMxS,QAAQkS,UAAUlS,QAAQ4N,SAASoE,EAAE,CAAC,EAAE,GAAG,CAAC3O,EAAEA,IAAI8O,GACxDM,EAAMzS,QAAQkS,UAAUlS,QAAQ4N,SAASoE,EAAE,CAAC3O,EAAE,EAAEA,EAAE,GAAG,CAACa,EAAE,EAAEA,EAAE,IAAIiO,GAEpE,IADArE,EAAI9M,MAAMqC,EAAE,GACR7C,EAAE,EAAEA,GAAG6C,EAAE7C,IAAOsN,EAAEtN,GAAKuR,EAAEvR,GAE7B,IADAoR,EAAI5R,QAAQuH,IAAIiL,EAAIT,EAAEjE,GAClBtN,EAAE,EAAEA,GAAG6C,EAAE7C,IAAOuR,EAAEvR,GAAKoR,EAAEpR,GAE7B,IADAsN,EAAI9M,MAAMkD,EAAEb,EAAE,GACV7C,EAAE6C,EAAE,EAAE7C,EAAE0D,EAAE1D,IAAOsN,EAAEtN,EAAE6C,EAAE,GAAK0O,EAAEvR,GAElC,IADAoR,EAAI5R,QAAQuH,IAAIkL,EAAIV,EAAEjE,GAClBtN,EAAE6C,EAAE,EAAE7C,EAAE0D,EAAE1D,IAAOuR,EAAEvR,GAAKoR,EAAEpR,EAAE6C,EAAE,GAClC,MAAO,CAAC0O,EAAEA,EAAEjE,EAAE0E,EAAI1E,EAAE4E,OAAO1S,QAAQ6I,IAAI4J,EAAI3E,EAAEzK,EAAE,IACnD,CAQA,IAAI8B,EAAGC,EAsBP4I,EAPJ,IArBAvL,EAAIuP,EAAE9N,EAAE,GAAGA,EAAE,GAAIxB,EAAIsP,EAAE9N,EAAE,GAAGA,EAAE,GAC9BvB,EAAIqP,EAAE9N,EAAE,GAAGA,EAAE,GACbkO,EAAK3P,GADYG,EAAIoP,EAAE9N,EAAE,GAAGA,EAAE,IAE9B0I,EAAOnK,EAAEG,EAAEF,EAAEC,EACb0P,EAAOrS,QAAQ4N,SAASoE,EAAG,CAAC,EAAE,GAAI,CAAC,EAAE,IAClCI,EAAGA,GAAI,EAAExF,GAERzH,EAAK,IAAKiN,EAAGxQ,KAAK6L,KAAK2E,EAAGA,EAAG,EAAExF,IAC/BxH,EAAK,IAAKgN,EAAGxQ,KAAK6L,KAAK2E,EAAGA,EAAG,EAAExF,IAC/ByF,EAAOrS,QAAQ6I,IAAI7I,QAAQ8I,IAAI9I,QAAQuH,IAAI8K,EAAKA,GACjBrS,QAAQ+I,IAAIsJ,EAAKlN,EAAGC,IAChCpF,QAAQ0H,KAAK1H,QAAQwG,IAAI,CAAC,GAAGrB,EAAGC,MAEnDiN,EAAOrS,QAAQ6I,IAAI7I,QAAQ8I,IAAI9I,QAAQuH,IAAI8K,EAAKA,GACjBrS,QAAQ+I,IAAIsJ,EAAKD,IAC7BpS,QAAQ0H,KAAK1H,QAAQwG,IAAI,CAAC,GAAGoG,KAEpDrL,EAAI,CAAC8Q,EAAK,GAAG,GAAGA,EAAK,GAAG,GAAGA,EAAK,GAAG,IACnC5L,EAAIzG,QAAQyR,MAAMlQ,GAClBuM,EAAI,CAACkE,EAAE,GAAGA,EAAE,GAAGA,EAAE,IACjBJ,EAAI5R,QAAQ4O,OAAOnI,EAAEzG,QAAQuH,IAAId,EAAEqH,IAC/BtN,EAAE,EAAEA,EAAE,EAAEA,IAA6B,IAAtB8R,EAAKN,EAAExR,GAAIqR,EAAKD,EAAEpR,GAAQI,EAAE,EAAEA,EAAEsD,EAAEtD,IAAK0R,EAAG1R,IAAM,EAAEiR,EAAGjR,GAGxE,IAFAkN,EAAI9N,QAAQ4N,SAASoE,EAAG,CAAC,EAAE,GAAG,CAAC9N,EAAE,EAAE,IACnC0N,EAAI5R,QAAQ4O,OAAO5O,QAAQuH,IAAIuG,EAAErH,GAAGA,GAChCjG,EAAE,EAAEA,EAAE0D,EAAE1D,IAA6B,IAAtB8R,EAAKN,EAAExR,GAAIqR,EAAKD,EAAEpR,GAAQI,EAAE,EAAEA,EAAE,EAAEA,IAAK0R,EAAG1R,IAAM,EAAEiR,EAAGjR,GAGxE,IAFAkN,EAAI,CAACiE,EAAE,GAAGA,EAAE,GAAGA,EAAE,IACjBH,EAAI5R,QAAQ4O,OAAOnI,EAAEzG,QAAQuH,IAAId,EAAEqH,IAC/BtN,EAAE,EAAEA,EAAE,EAAEA,IAA6B,IAAtBsR,EAAKC,EAAEvR,GAAIqR,EAAKD,EAAEpR,GAAQI,EAAE,EAAEA,EAAEsD,EAAEtD,IAAKkR,EAAGlR,IAAM,EAAEiR,EAAGjR,GAExE,IAAIyC,EAAE,EAAEA,EAAEa,EAAE,EAAEb,IAAK,CACf,IAAIzC,EAAEyC,EAAEzC,GAAGyC,EAAE,EAAEzC,IACX,GAAGgB,KAAK6K,IAAIuF,EAAEpR,EAAE,GAAGA,IAAMqR,GAASrQ,KAAK6K,IAAIuF,EAAEpR,GAAGA,IAAIgB,KAAK6K,IAAIuF,EAAEpR,EAAE,GAAGA,EAAE,KAAM,CAIxE,IAHI4R,EAAMxS,QAAQkS,UAAUlS,QAAQ4N,SAASoE,EAAE,CAAC,EAAE,GAAG,CAACpR,EAAEA,IAAIuR,GACxDM,EAAMzS,QAAQkS,UAAUlS,QAAQ4N,SAASoE,EAAE,CAACpR,EAAE,EAAEA,EAAE,GAAG,CAACsD,EAAE,EAAEA,EAAE,IAAIiO,GACpErE,EAAI9M,MAAMJ,EAAE,GACRJ,EAAE,EAAEA,GAAGI,EAAEJ,IAAOsN,EAAEtN,GAAKuR,EAAEvR,GAE7B,IADAoR,EAAI5R,QAAQuH,IAAIiL,EAAIT,EAAEjE,GAClBtN,EAAE,EAAEA,GAAGI,EAAEJ,IAAOuR,EAAEvR,GAAKoR,EAAEpR,GAE7B,IADAsN,EAAI9M,MAAMkD,EAAEtD,EAAE,GACVJ,EAAEI,EAAE,EAAEJ,EAAE0D,EAAE1D,IAAOsN,EAAEtN,EAAEI,EAAE,GAAKmR,EAAEvR,GAElC,IADAoR,EAAI5R,QAAQuH,IAAIkL,EAAIV,EAAEjE,GAClBtN,EAAEI,EAAE,EAAEJ,EAAE0D,EAAE1D,IAAOuR,EAAEvR,GAAKoR,EAAEpR,EAAEI,EAAE,GAClC,MAAO,CAACmR,EAAEA,EAAEjE,EAAE0E,EAAI1E,EAAE4E,OAAO1S,QAAQ6I,IAAI4J,EAAI3E,EAAElN,EAAE,IACnD,CAIJ,IAFAoN,EAAIpM,KAAKiG,IAAI3D,EAAE,EAAEb,EAAE,GACnB9B,EAAIP,MAAMgN,EAAE3K,GACR7C,EAAE6C,EAAE,EAAE7C,GAAGwN,EAAExN,IAAOe,EAAEf,EAAE6C,EAAE,GAAK2O,EAAExR,GAAG6C,GAItC,IAHAoD,EAAIzG,QAAQyR,MAAMlQ,GAClBuM,EAAI9N,QAAQ4N,SAASoE,EAAG,CAAC3O,EAAE,EAAEA,GAAG,CAAC2K,EAAE9J,EAAE,IACrC0N,EAAI5R,QAAQ4O,OAAOnI,EAAEzG,QAAQuH,IAAId,EAAEqH,IAC/BtN,EAAE6C,EAAE,EAAE7C,GAAGwN,EAAExN,IAAiC,IAA1B8R,EAAKN,EAAExR,GAAIqR,EAAKD,EAAEpR,EAAE6C,EAAE,GAAQzC,EAAEyC,EAAEzC,EAAEsD,EAAEtD,IAAK0R,EAAG1R,IAAM,EAAEiR,EAAGjR,EAAEyC,GAGjF,IAFAyK,EAAI9N,QAAQ4N,SAASoE,EAAG,CAAC,EAAE3O,EAAE,GAAG,CAACa,EAAE,EAAE8J,IACrC4D,EAAI5R,QAAQ4O,OAAO5O,QAAQuH,IAAIuG,EAAErH,GAAGA,GAChCjG,EAAE,EAAEA,EAAE0D,EAAE1D,IAA6B,IAAtB8R,EAAKN,EAAExR,GAAIqR,EAAKD,EAAEpR,GAAQI,EAAEyC,EAAE,EAAEzC,GAAGoN,EAAEpN,IAAK0R,EAAG1R,IAAM,EAAEiR,EAAGjR,EAAEyC,EAAE,GAE/E,IADAyK,EAAI9M,MAAMgN,EAAE3K,GACR7C,EAAE6C,EAAE,EAAE7C,GAAGwN,EAAExN,IAAKsN,EAAEtN,EAAE6C,EAAE,GAAK0O,EAAEvR,GAEjC,IADAoR,EAAI5R,QAAQ4O,OAAOnI,EAAEzG,QAAQuH,IAAId,EAAEqH,IAC/BtN,EAAE6C,EAAE,EAAE7C,GAAGwN,EAAExN,IAAiC,IAA1BsR,EAAKC,EAAEvR,GAAIqR,EAAKD,EAAEpR,EAAE6C,EAAE,GAAQzC,EAAE,EAAEA,EAAEsD,EAAEtD,IAAKkR,EAAGlR,IAAM,EAAEiR,EAAGjR,EACnF,CACJ,CACA,MAAM,IAAIsC,MAAM,uEACpB,EAEAlD,QAAQwR,IAAM,SAAavN,EAAEkO,GACzB,IAGiB3R,EAAEI,EACmB+R,EACrBtP,EACbZ,EAAEC,EAAEC,EAAEC,EAAEgQ,EAAMC,EAAKtR,EAAEmE,EAAEiB,EAAEf,EAAEkN,EAAGC,EAN9BC,EAAKhT,QAAQ0R,kBAAkBzN,GAC/BgP,EAAKjT,QAAQkS,UAAUc,EAAGhB,EAAEG,GAC5BrD,EAAI9O,QAAQ8O,EACZvO,EAAI0D,EAAEnD,OAAwBgN,EAAImF,EAAGnF,EAAEkE,EAAIhS,QAAQuH,IAAI0L,EAAGlB,EAAE/R,QAAQuH,IAAIyL,EAAGhB,EAAEhS,QAAQgN,UAAUiG,EAAGlB,KAClGA,EAAI,IAAIjD,EAAE9O,QAAQuH,IAAI0L,EAAGlB,EAAEiB,EAAGjB,IAC9B7N,EAAI4J,EAAEhN,OAEN2M,EAAO7L,KAAK6L,KAChB,IAAI7M,EAAE,EAAEA,EAAEsD,EAAEtD,IAER,IADAJ,EAAIsN,EAAElN,GAAG,MACAkN,EAAElN,GAAG,QAEP,CAMH,GALAyC,EAAI7C,EAAE,EACNiC,EAAIuP,EAAExR,GAAGA,GACTkC,EAAIsP,EAAExR,GAAG6C,GACTV,EAAIqP,EAAE3O,GAAG7C,GACToC,EAAIoP,EAAE3O,GAAGA,GACA,IAANX,GAAiB,IAANC,EAAS,UAGvBkQ,GAFAD,GAAMnQ,EAAEG,GAEEgQ,EAAG,GADRnQ,EAAEG,EAAEF,EAAEC,KAEF,IAGLmQ,GAAMrQ,GAFGlB,EAANqR,EAAG,GAAQ,IAAKA,EAAGnF,EAAKoF,KACb,IAAKD,EAAGnF,EAAKoF,OACfpQ,EAAElB,GAAGmB,EAAEA,IACnBqQ,EAAKpQ,EAAEA,GAAGC,EAAErB,IAAIqB,EAAErB,KAGdoF,GAAKlE,EAAElB,IADPuR,EAAKrF,EAAKqF,IAEVlN,EAAIlD,EAAEoQ,IAGNnM,EAAIhE,GADJoQ,EAAKtF,EAAKsF,IAEVnN,GAAKhD,EAAErB,GAAGwR,GAEdJ,EAAK,IAAI7D,EAAE,CAAC,CAAClJ,GAAGe,GAAG,CAACA,EAAEf,KACtBmM,EAAEV,QAAQ7Q,EAAE6C,EAAEsP,EAAGpL,IAAIwK,EAAEb,QAAQ1Q,EAAE6C,OAEjC9B,GAAK,GAAIqR,EACTlN,EAAI,GAAI+H,GAAMoF,IACdC,GAAMrQ,EAAElB,IAAIkB,EAAElB,GAAGmB,EAAEA,IACnBqQ,EAAKpQ,EAAEA,GAAGC,EAAErB,IAAIqB,EAAErB,KAGdoF,GAAKlE,EAAElB,IADPuR,EAAKrF,EAAKqF,EAAGpN,EAAEA,IAEfE,EAAIlD,EAAEoQ,EACNvR,EAAI,EACJmE,GAAKoN,IAGLnM,EAAIhE,GADJoQ,EAAKtF,EAAKsF,EAAGrN,EAAEA,IAEfE,GAAKhD,EAAErB,GAAGwR,EACVxR,EAAImE,EAAEqN,EACNrN,EAAI,GAERiN,EAAK,IAAI7D,EAAE,CAAC,CAAClJ,GAAGe,GAAG,CAACA,EAAEf,IAAI,CAAC,CAACrE,EAAEmE,GAAG,CAACA,GAAGnE,KACrCwQ,EAAEV,QAAQ7Q,EAAE6C,EAAEsP,EAAGpL,IAAIwK,EAAEb,QAAQ1Q,EAAE6C,KAEzC,CAEJ,IAAI6P,EAAInB,EAAExK,IAAItD,GAAGsD,IAAIwK,EAAE1C,eAA8B8D,GAAd5S,EAAI0D,EAAEnD,OAAYd,QAAQ8O,EAAEhH,SAASvH,IAC5E,IAAI8C,EAAE,EAAEA,EAAE9C,EAAE8C,IACR,GAAGA,EAAE,EACD,IAAIzC,EAAEyC,EAAE,EAAEzC,GAAG,EAAEA,IAAK,CAChB,IAAIwS,EAAKF,EAAEtC,IAAI,CAAChQ,EAAEA,IAAKyS,EAAKH,EAAEtC,IAAI,CAACvN,EAAEA,IAClCrD,QAAQqJ,IAAI+J,EAAG7R,EAAE8R,EAAG9R,IAAMvB,QAAQqJ,IAAI+J,EAAG1N,EAAE2N,EAAG3N,IAC7CnE,EAAI2R,EAAE5B,OAAO1Q,GAAGgN,SAAS,CAAChN,GAAG,CAACyC,EAAE,IAChCqC,EAAIyN,EAAE7B,OAAOjO,GAAGuK,SAAS,CAAChN,GAAG,CAACyC,EAAE,IAChC8P,EAAErC,IAAI,CAACzN,EAAEzC,GAAIsS,EAAEtC,IAAI,CAAChQ,EAAEyC,IAAI0H,MAAMjC,IAAIvH,EAAEgG,IAAI7B,IAAKsD,IAAIoK,EAAGtK,IAAIuK,MAE1DF,EAAE5B,OAAOlO,EAAE8P,EAAE7B,OAAO1Q,GAG5B,CAGR,IAAIyC,EAAE,EAAEA,EAAE9C,EAAE8C,IACR9B,EAAI4R,EAAE7B,OAAOjO,GACb8P,EAAE5B,OAAOlO,EAAE9B,EAAEyH,IAAIzH,EAAEiM,UAIvB,OAFA2F,EAAIA,EAAEnG,YACNmG,EAAIpB,EAAE1C,cAAc9H,IAAI4L,GACjB,CAAEG,OAAOJ,EAAEtL,UAAWuL,EAAEA,EACnC,EAGAnT,QAAQuT,UAAY,SAAmBtP,GACnC,IAAmB3B,EAAK9B,EAAE6C,EAAtBa,EAAID,EAAEnD,OAAmB0S,EAAS,GACtC,IAAIhT,EAAE0D,EAAE,GAAO,IAAL1D,IAASA,EAEf,IAAI6C,KADJf,EAAM2B,EAAEzD,GACM,CAEV,IADA6C,EAAIoQ,SAASpQ,GACPA,GAAGmQ,EAAO1S,QAAQ0S,EAAOA,EAAO1S,QAAU,EACpC,IAATwB,EAAIe,IAAQmQ,EAAOnQ,IAC1B,CAEJ,IAAI9C,EAAIiT,EAAO1S,OACX6G,EAAK3G,MAAMT,EAAE,GAEjB,IADAoH,EAAG,GAAK,EACJnH,EAAE,EAAEA,EAAED,IAAIC,EAAGmH,EAAGnH,EAAE,GAAKmH,EAAGnH,GAAKgT,EAAOhT,GAC1C,IAAI8L,EAAKtL,MAAM2G,EAAGpH,IAAKmT,EAAK1S,MAAM2G,EAAGpH,IACrC,IAAIC,EAAE0D,EAAE,GAAO,IAAL1D,IAASA,EAEf,IAAI6C,KADJf,EAAM2B,EAAEzD,GAEQ,IAAT8B,EAAIe,KACHmQ,EAAOnQ,KACPiJ,EAAG3E,EAAGtE,GAAGmQ,EAAOnQ,IAAM7C,EACtBkT,EAAG/L,EAAGtE,GAAGmQ,EAAOnQ,IAAMf,EAAIe,IAItC,MAAO,CAACsE,EAAG2E,EAAGoH,EAClB,EACA1T,QAAQ2T,QAAU,SAAiB1P,GAC/B,IAAgFzD,EAAE6C,EAAEuQ,EAAGC,EAAnFlM,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAAIG,EAAIpE,QAAQ8T,OAAO7P,GAAIC,EAAIE,EAAE,GAAI7D,EAAI6D,EAAE,GACxE0J,EAAI9N,QAAQwG,IAAI,CAACtC,EAAE3D,GAAG,GAC1B,IAAIC,EAAE,EAAEA,EAAED,EAAEC,IAGR,IAFAoT,EAAKjM,EAAGnH,GACRqT,EAAKlM,EAAGnH,EAAE,GACN6C,EAAEuQ,EAAGvQ,EAAEwQ,IAAKxQ,EAAKyK,EAAExB,EAAGjJ,IAAI7C,GAAKkT,EAAGrQ,GAE1C,OAAOyK,CACX,EACA9N,QAAQ+T,UAAY,SAAmB9P,EAAEvB,EAAEnB,EAAEyS,EAAGhN,GAC5C,IAYIxG,EAAE6C,EAAEuQ,EAAGC,EAAGjT,EAAE8N,EAAQjM,EAZpBkF,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAAGC,EAAIyD,EAAG7G,OAAO,EAAG6M,EAAM/L,KAAK+L,IAAIpN,EAAE,EAItE,SAAS0T,EAAI5Q,GACT,IAAIzC,EACJ,GAAY,IAATW,EAAE8B,GAAL,CAEA,IADA9B,EAAE8B,GAAK,EACHzC,EAAE+G,EAAGtE,GAAGzC,EAAE+G,EAAGtE,EAAE,KAAKzC,EAAGqT,EAAI3H,EAAG1L,IAClCoG,EAAGzG,GAAK8C,IACN9C,CAJmB,CAKzB,CAEA,SAZiB,IAAPyT,IAAoBzS,EAAIvB,QAAQwG,IAAI,CAACtC,GAAG,SACjC,IAAP8P,IAAoBA,EAAKhU,QAAQ0N,SAAS,EAAEnM,EAAET,OAAO,SAC9C,IAAPkG,IAAoBA,EAAK,IAU/BxG,EAAEwT,EAAGlT,OAAO,GAAO,IAALN,IAASA,EAAKyT,EAAID,EAAGxT,IAEvC,IADAwG,EAAGlG,OAASP,EACRC,EAAEwG,EAAGlG,OAAO,GAAO,IAALN,IAASA,EAAKe,EAAEyF,EAAGxG,IAAM,EAC3C,IAAIA,EAAEwT,EAAGlT,OAAO,GAAO,IAALN,IAASA,EAAK6C,EAAI2Q,EAAGxT,GAAIe,EAAE8B,GAAKX,EAAEW,GACpD,IAAI7C,EAAEwG,EAAGlG,OAAO,GAAO,IAALN,IAASA,EAAG,CAI1B,IAHA6C,EAAI2D,EAAGxG,GACPoT,EAAKjM,EAAGtE,GACRwQ,EAAKlG,EAAIhG,EAAGtE,EAAE,GAAGuQ,GACbhT,EAAEgT,EAAGhT,IAAIiT,IAAKjT,EAAK,GAAG0L,EAAG1L,KAAOyC,EAAG,CAAE9B,EAAE8B,IAAMqQ,EAAG9S,GAAI,KAAO,CAE/D,IADA6B,EAAIlB,EAAE8B,GACFzC,EAAEgT,EAAGhT,IAAIiT,IAAKjT,GACd8N,EAAIpC,EAAG1L,MACEyC,IAAG9B,EAAEmN,IAAMjM,EAAEiR,EAAG9S,GAEjC,CACA,OAAOW,CACX,EACAvB,QAAQkU,OAAS,SAAgB3T,GAC7BM,KAAKD,EAAII,MAAMT,GACfM,KAAKkM,GAAK/L,MAAMT,GAChBM,KAAKwC,EAAIrC,MAAMT,EACnB,EACAP,QAAQkU,OAAOjT,UAAUgT,IAAM,SAAajG,EAAErG,EAAG2E,EAAG/K,EAAEyF,EAAGmN,GACrD,IAAU7R,EAC+B8R,EAAGC,EADxCnQ,EAAI,EAAM3D,EAAEyG,EAAGlG,OACfF,EAAIC,KAAKD,EAAGmM,EAAKlM,KAAKkM,GAAI1J,EAAIxC,KAAKwC,EACvC,GAAU,IAAP9B,EAAEyM,GAKL,IAJAzM,EAAEyM,GAAK,EACP3K,EAAE,GAAK2K,EACPpN,EAAE,GAAKwT,EAAKzM,EAAGqG,GACfjB,EAAG,GAAKsH,EAAM1M,EAAGqG,EAAE,KAEf,GAAGoG,GAAMC,EAAK,CAEV,GADArN,EAAGzG,GAAK8C,EAAEa,GACH,IAAJA,EAAO,SACR3D,EAEF6T,EAAKxT,IADHsD,GAEFmQ,EAAMtH,EAAG7I,EACb,MAEkB,IAAX3C,EADHe,EAAM6R,EAAK7H,EAAG8H,MAEV7S,EAAEe,GAAO,EACT1B,EAAEsD,GAAKkQ,EAEP/Q,IADEa,GACK5B,EACP8R,EAAKzM,EAAGrF,GACRyK,EAAG7I,GAAKmQ,EAAM1M,EAAGrF,EAAI,MAChB8R,CAGrB,EACApU,QAAQsU,WAAa,SAAoBrQ,EAAE6J,EAAEvM,EAAEyF,EAAG0F,EAAEyH,EAAKF,GACrD,IAGIzT,EAAEqG,EAAGS,EAAGjE,EAAIuQ,EAAGC,EAAGjT,EAAE8N,EAAQjM,EAH5BkF,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAC7BgK,GADoCtG,EAAG7G,OAClCgN,EAAE,IAAIX,EAAKW,EAAE,GAAIyG,EAAKzG,EAAE,GAMjC,IAHAjH,EAAKoH,EAAGvB,GACRpF,EAAK2G,EAAGvB,EAAE,GACV1F,EAAGlG,OAAS,EACRN,EAAEqG,EAAGrG,EAAE8G,IAAK9G,EAAKyT,EAAIA,IAAIE,EAAKhH,EAAG3M,IAAImH,EAAG2E,EAAG/K,EAAEyF,EAAGmN,GACpD,IAAI3T,EAAEwG,EAAGlG,OAAO,GAAO,IAALN,IAASA,EAAKe,EAAEyF,EAAGxG,IAAM,EAC3C,IAAIA,EAAEqG,EAAGrG,IAAI8G,IAAK9G,EAAsBe,EAAjB8B,EAAI8Q,EAAKhH,EAAG3M,KAAY+T,EAAG/T,GAClD,IAAIA,EAAEwG,EAAGlG,OAAO,GAAO,IAALN,IAASA,EAAG,CAI1B,IAFAoT,EAAKjM,EADLtE,EAAI2D,EAAGxG,IAEPqT,EAAKlM,EAAGtE,EAAE,GACNzC,EAAEgT,EAAGhT,EAAEiT,IAAKjT,EAAK,GAAGuT,EAAK7H,EAAG1L,MAAQyC,EAAG,CAAE9B,EAAE8B,IAAMqQ,EAAG9S,GAAI,KAAO,CAEnE,IADA6B,EAAIlB,EAAE8B,GACFzC,EAAEgT,EAAGhT,EAAEiT,IAAKjT,GACZ8N,EAAIyF,EAAK7H,EAAG1L,OACHyC,IAAG9B,EAAEmN,IAAMjM,EAAEiR,EAAG9S,GAEjC,CACA,OAAOW,CACX,EACAvB,QAAQwU,QAAU,SAAiBvQ,EAAEwQ,GACjC,IAIIjU,EAAE6C,EAAEzC,EAAQ6B,EAAEiS,EAAE/R,EAAEC,EAJlBsB,EAAID,EAAE,GAAGnD,OAAO,EAChB6T,EAAI,CAAC3U,QAAQwG,IAAI,CAACtC,EAAE,GAAG,GAAG,GAAG,IAAK0Q,EAAI,CAAC5U,QAAQwG,IAAI,CAACtC,EAAE,GAAI,GAAG,GAAG,IAChE2Q,EAAKF,EAAE,GAAIG,EAAKH,EAAE,GAAII,EAAKJ,EAAE,GAAIK,EAAKJ,EAAE,GAAIK,EAAKL,EAAE,GAAIM,EAAKN,EAAE,GAC9DrT,EAAIvB,QAAQwG,IAAI,CAACtC,GAAG,GAAI8C,EAAKhH,QAAQwG,IAAI,CAACtC,GAAG,GAE7CiR,EAAMnV,QAAQsU,WAA4B7H,GAAV7K,KAAK+L,IAAW/L,KAAK6K,KACrD2I,EAAIpV,QAAQ0N,SAAS,EAAExJ,EAAE,GAAGiQ,EAAOnU,QAAQ0N,SAAS,EAAExJ,EAAE,GACxD+P,EAAM,IAAIjU,QAAQkU,OAAOhQ,GAE7B,SADwB,IAAduQ,IAA6BA,EAAY,GAC/CjU,EAAE,EAAEA,EAAE0D,IAAI1D,EAAG,CAIb,IAHA2U,EAAIR,EAAE1Q,EAAE1C,EAAEyF,EAAGxG,EAAE2T,EAAKF,GACpBxR,GAAK,EACLiS,GAAK,EACDrR,EAAE2D,EAAGlG,OAAO,GAAO,IAALuC,IAASA,GACvBzC,EAAIoG,EAAG3D,KACC7C,IACRmC,EAAI8J,EAAIlL,EAAEX,KACH6B,IAAKiS,EAAI9T,EAAG6B,EAAIE,GAe3B,IAbG8J,EAAIlL,EAAEf,IAAIiU,EAAUhS,IACnBY,EAAI+R,EAAE5U,GACNiC,EAAI2S,EAAEV,GACNU,EAAE5U,GAAKiC,EAAG0R,EAAK1R,GAAKjC,EACpB4U,EAAEV,GAAKrR,EAAG8Q,EAAK9Q,GAAKqR,EACpBjS,EAAIlB,EAAEf,GAAIe,EAAEf,GAAKe,EAAEmT,GAAInT,EAAEmT,GAAKjS,GAElCA,EAAIoS,EAAGrU,GACPkU,EAAIM,EAAGxU,GACPoC,EAAIrB,EAAEf,GACNsU,EAAGrS,GAAK2S,EAAE5U,GACVuU,EAAGtS,GAAK,IACNA,EACEY,EAAE2D,EAAGlG,OAAO,GAAO,IAALuC,IAASA,EAEvBV,EAAIpB,EADJX,EAAIoG,EAAG3D,IAEP2D,EAAG3D,GAAK,EACR9B,EAAEX,GAAK,EACJA,GAAGJ,GAAKyU,EAAGP,GAAK9T,EAAGsU,EAAGR,GAAK/R,IAAO+R,IAC1BI,EAAGrS,GAAK2S,EAAExU,GAAImU,EAAGtS,GAAKE,EAAEC,IAAKH,GAE5CoS,EAAGrU,EAAE,GAAKiC,EACVuS,EAAGxU,EAAE,GAAKkU,CACd,CACA,IAAIrR,EAAEyR,EAAGhU,OAAO,GAAO,IAALuC,IAASA,EAAKyR,EAAGzR,GAAK8Q,EAAKW,EAAGzR,IAChD,MAAO,CAACsR,EAAEA,EAAGC,EAAEA,EAAGQ,EAAEA,EAAGjB,KAAKA,EAChC,EACAnU,QAAQqV,QAAU,SAAiB9U,GAC/BM,KAAKD,EAAII,MAAMT,GACfM,KAAKkM,GAAK/L,MAAMT,GAChBM,KAAKwC,EAAIrC,MAAMT,EACnB,EACAP,QAAQqV,QAAQpU,UAAUgT,IAAM,SAAajG,EAAErG,EAAG2E,EAAG/K,EAAEyF,EAAGmN,EAAKiB,GAC3D,IAAU9S,EAC+B8R,EAAGC,EADxCnQ,EAAI,EAAM3D,EAAEyG,EAAGlG,OACfF,EAAIC,KAAKD,EAAGmM,EAAKlM,KAAKkM,GAAI1J,EAAIxC,KAAKwC,EACvC,GAAU,IAAP9B,EAAEyM,GAKL,IAJAzM,EAAEyM,GAAK,EACP3K,EAAE,GAAK2K,EACPpN,EAAE,GAAKwT,EAAKzM,EAAGwM,EAAKnG,IACpBjB,EAAG,GAAKsH,EAAM1M,EAAGwM,EAAKnG,GAAG,KAChB,CACL,GAAGvM,MAAM2S,GAAK,MAAM,IAAIlR,MAAM,OAC9B,GAAGkR,GAAMC,EAAK,CAEV,GADArN,EAAGzG,GAAK4T,EAAK9Q,EAAEa,IACR,IAAJA,EAAO,SACR3D,EAEF6T,EAAKxT,IADHsD,GAEFmQ,EAAMtH,EAAG7I,EACb,MAEkB,IAAX3C,EADHe,EAAMgK,EAAG8H,KAEL7S,EAAEe,GAAO,EACT1B,EAAEsD,GAAKkQ,EAEP/Q,IADEa,GACK5B,EAEP8R,EAAKzM,EADLrF,EAAM6R,EAAK7R,IAEXyK,EAAG7I,GAAKmQ,EAAM1M,EAAGrF,EAAI,MAChB8R,CAEjB,CACJ,EACApU,QAAQsV,YAAc,SAAqBrR,EAAE6J,EAAEpI,EAAEsB,EAAG0F,EAAEyH,EAAKiB,EAAEnB,GACzD,IAGIzT,EAAEqG,EAAGS,EAAGjE,EAAIuQ,EAAGC,EAAGjT,EAAE8N,EAAQjM,EAH5BkF,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAC7BgK,GADoCtG,EAAG7G,OAClCgN,EAAE,IAAIX,EAAKW,EAAE,GAAIyG,EAAKzG,EAAE,GAMjC,IAHAjH,EAAKoH,EAAGvB,GACRpF,EAAK2G,EAAGvB,EAAE,GACV1F,EAAGlG,OAAS,EACRN,EAAEqG,EAAGrG,EAAE8G,IAAK9G,EAAKyT,EAAIA,IAAI9G,EAAG3M,GAAGmH,EAAG2E,EAAG5G,EAAEsB,EAAGmN,EAAKiB,GACnD,IAAI5U,EAAEwG,EAAGlG,OAAO,GAAO,IAALN,IAASA,EAAgBkF,EAAE0P,EAAb/R,EAAI2D,EAAGxG,KAAc,EACrD,IAAIA,EAAEqG,EAAGrG,IAAI8G,IAAK9G,EAAgBkF,EAAXrC,EAAI8J,EAAG3M,IAAW+T,EAAG/T,GAC5C,IAAIA,EAAEwG,EAAGlG,OAAO,GAAO,IAALN,IAASA,EAAG,CAK1B,IAHAkO,EAAI0G,EADJ/R,EAAI2D,EAAGxG,IAEPoT,EAAKjM,EAAGtE,GACRwQ,EAAKlM,EAAGtE,EAAE,GACNzC,EAAEgT,EAAGhT,EAAEiT,IAAKjT,EAAK,GAAG0L,EAAG1L,KAAO8N,EAAG,CAAEhJ,EAAEgJ,IAAMgF,EAAG9S,GAAI,KAAO,CAE7D,IADA6B,EAAIiD,EAAEgJ,GACF9N,EAAEgT,EAAGhT,EAAEiT,IAAKjT,EAAG8E,EAAE4G,EAAG1L,KAAO6B,EAAEiR,EAAG9S,GACpC8E,EAAEgJ,GAAKjM,CACX,CACJ,EACAzC,QAAQuV,QAAU,SAAiBtR,EAAEwQ,GACjC,IAIIjU,EAAE6C,EAAEzC,EAAQ6B,EAAEiS,EAAE/R,EAAEC,EAJlBsB,EAAID,EAAE,GAAGnD,OAAO,EAChB6T,EAAI,CAAC3U,QAAQwG,IAAI,CAACtC,EAAE,GAAG,GAAG,GAAG,IAAK0Q,EAAI,CAAC5U,QAAQwG,IAAI,CAACtC,EAAE,GAAI,GAAG,GAAG,IAChE2Q,EAAKF,EAAE,GAAIG,EAAKH,EAAE,GAAII,EAAKJ,EAAE,GAAIK,EAAKJ,EAAE,GAAIK,EAAKL,EAAE,GAAIM,EAAKN,EAAE,GAC9DlP,EAAI1F,QAAQwG,IAAI,CAACtC,GAAG,GAAI8C,EAAKhH,QAAQwG,IAAI,CAACtC,GAAG,GAE7CiR,EAAMnV,QAAQsV,YAA6B7I,GAAV7K,KAAK+L,IAAW/L,KAAK6K,KACtD2I,EAAIpV,QAAQ0N,SAAS,EAAExJ,EAAE,GAAGiQ,EAAOnU,QAAQ0N,SAAS,EAAExJ,EAAE,GACxD+P,EAAM,IAAIjU,QAAQqV,QAAQnR,GAE9B,SADwB,IAAduQ,IAA6BA,EAAY,GAC/CjU,EAAE,EAAEA,EAAE0D,IAAI1D,EAAG,CAIb,IAHA2U,EAAIR,EAAE1Q,EAAEyB,EAAEsB,EAAGxG,EAAE2T,EAAKiB,EAAEnB,GACtBxR,GAAK,EACLiS,GAAK,EACDrR,EAAE2D,EAAGlG,OAAO,GAAO,IAALuC,IAASA,GACvBzC,EAAIoG,EAAG3D,KACC7C,IACRmC,EAAI8J,EAAI/G,EAAE0P,EAAExU,MACL6B,IAAKiS,EAAI9T,EAAG6B,EAAIE,GAc3B,IAZG8J,EAAI/G,EAAE0P,EAAE5U,KAAKiU,EAAUhS,IACtBY,EAAI+R,EAAE5U,GACNiC,EAAI2S,EAAEV,GACNU,EAAE5U,GAAKiC,EAAG0R,EAAK1R,GAAKjC,EACpB4U,EAAEV,GAAKrR,EAAG8Q,EAAK9Q,GAAKqR,GAExBjS,EAAIoS,EAAGrU,GACPkU,EAAIM,EAAGxU,GACPoC,EAAI8C,EAAE0P,EAAE5U,IACRsU,EAAGrS,GAAK2S,EAAE5U,GACVuU,EAAGtS,GAAK,IACNA,EACEY,EAAE2D,EAAGlG,OAAO,GAAO,IAALuC,IAASA,EAEvBV,EAAI+C,EAAE0P,EADNxU,EAAIoG,EAAG3D,KAEP2D,EAAG3D,GAAK,EACRqC,EAAE0P,EAAExU,IAAM,EACPA,GAAGJ,GAAKyU,EAAGP,GAAK9T,EAAGsU,EAAGR,GAAK/R,IAAO+R,IAC1BI,EAAGrS,GAAK2S,EAAExU,GAAImU,EAAGtS,GAAKE,EAAEC,IAAKH,GAE5CoS,EAAGrU,EAAE,GAAKiC,EACVuS,EAAGxU,EAAE,GAAKkU,CACd,CACA,IAAIrR,EAAEyR,EAAGhU,OAAO,GAAO,IAALuC,IAASA,EAAKyR,EAAGzR,GAAK8Q,EAAKW,EAAGzR,IAChD,MAAO,CAACsR,EAAEA,EAAGC,EAAEA,EAAGQ,EAAEA,EAAGjB,KAAKA,EAChC,EACAnU,QAAQwV,OAASxV,QAAQuV,QAEzBvV,QAAQ8T,OAAS,SAAgB7P,GAAK,MAAO,CAACjE,QAAQ2L,IAAI1H,EAAE,IAAI,EAAEA,EAAE,GAAGnD,OAAO,EAAI,EAClFd,QAAQyV,YAAc,SAAqBxR,EAAEzD,EAAE6C,GAC3C,IAAIe,EAAIpE,QAAQ8T,OAAO7P,GAAGC,EAAEE,EAAE,GAAG7D,EAAE6D,EAAE,QACrB,IAAN5D,EAAqBA,EAAIR,QAAQ0N,SAAS,EAAExJ,EAAE,GACnC,iBAAN1D,IAAkBA,EAAI,CAACA,SACtB,IAAN6C,EAAqBA,EAAIrD,QAAQ0N,SAAS,EAAEnN,EAAE,GACnC,iBAAN8C,IAAkBA,EAAI,CAACA,IACtC,IAAIsD,EAAqBf,EAAeC,EAAE6P,EAA9BN,EAAI5U,EAAEM,OAASiR,EAAI1O,EAAEvC,OAC7BmN,EAAKjO,QAAQwG,IAAI,CAACjG,GAAG,GAAI4M,EAAG,GAAIoH,EAAG,GAAIzG,EAAI,CAACG,EAAGd,EAAGoH,GAClD5M,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAC7B1C,EAAIvB,QAAQwG,IAAI,CAACtC,GAAG,GAAGP,EAAM,EAAEgS,EAAQ3V,QAAQwG,IAAI,CAACtC,GAAG,GAC3D,IAAI0B,EAAE,EAAEA,EAAEmM,IAAInM,EAAG,CAEb,IAAIgQ,EAAKjO,EADT+N,EAAKrS,EAAEuC,IAEHiQ,EAAKlO,EAAG+N,EAAG,GACf,IAAI/O,EAAEiP,EAAGjP,EAAEkP,IAAKlP,EAEZgP,EADA9P,EAAIyG,EAAG3F,IACI,EACXpF,EAAEsE,GAAK6N,EAAG/M,GAEd,IAAIA,EAAE,EAAEA,EAAEyO,IAAIzO,EAEPgP,EADEnV,EAAEmG,MAEHwG,EAAGxJ,GAASgD,EACZ4N,EAAG5Q,GAASpC,EAAEf,EAAEmG,MACdhD,GAGV,IAAIgD,EAAEiP,EAAGjP,EAAEkP,IAAKlP,EAEZgP,EADA9P,EAAIyG,EAAG3F,IACI,EAEfsH,EAAGrI,EAAE,GAAKjC,CACd,CACA,OAAOmK,CACX,EAEA9N,QAAQ8V,OAAS,SAAgB7R,EAAE6J,GAC/B,IAMItN,EAAE6C,EAAEzC,EAAEgT,EAAGC,EAAGhN,EAAGS,EAAGoH,EAAE/H,EAAElE,EAAEC,EANxBiF,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAC7BgK,EAAKH,EAAE,GAAIX,EAAKW,EAAE,GAAIyG,EAAKzG,EAAE,GAC7BiI,EAAK/V,QAAQ8T,OAAO7P,GAAI+R,EAAKhW,QAAQ8T,OAAOhG,GAC5C5J,EAAI6R,EAAG,GAAelK,GAAPkK,EAAG,GAAQC,EAAG,IAC7BzU,EAAIvB,QAAQwG,IAAI,CAACtC,GAAG,GAAIyR,EAAQ3V,QAAQwG,IAAI,CAACtC,GAAG,GAAI8C,EAAKhG,MAAMkD,GAC/D2N,EAAK7R,QAAQwG,IAAI,CAACqF,GAAG,GAAIoK,EAAK,GAAIC,EAAK,GAAItE,EAAI,CAACC,EAAGoE,EAAGC,GAE1D,IAAItV,EAAE,EAAEA,IAAIiL,IAAIjL,EAAG,CAIf,IAHAgT,EAAK3F,EAAGrN,GACRiT,EAAK5F,EAAGrN,EAAE,GACV+F,EAAI,EACAtD,EAAEuQ,EAAGvQ,EAAEwQ,IAAKxQ,EAKZ,IAJAZ,EAAI0K,EAAG9J,GACPX,EAAI6R,EAAGlR,GACPwD,EAAKc,EAAGlF,GACR6E,EAAKK,EAAGlF,EAAE,GACNjC,EAAEqG,EAAGrG,EAAE8G,IAAK9G,EAEE,IAAXmV,EADHjH,EAAIpC,EAAG9L,MAEHwG,EAAGL,GAAK+H,EACRiH,EAAMjH,GAAK,EACX/H,GAAM,GAEVpF,EAAEmN,GAAKnN,EAAEmN,GAAKgF,EAAGlT,GAAGkC,EAM5B,IAFAmR,GADAD,EAAK/B,EAAGjR,IACA+F,EACRkL,EAAGjR,EAAE,GAAKiT,EACNxQ,EAAEsD,EAAE,GAAO,IAALtD,IAASA,EACfX,EAAIkR,EAAGvQ,EACP7C,EAAIwG,EAAG3D,GACP4S,EAAGvT,GAAKlC,EACR0V,EAAGxT,GAAKnB,EAAEf,GACVmV,EAAMnV,GAAK,EACXe,EAAEf,GAAK,EAEXqR,EAAGjR,EAAE,GAAKiR,EAAGjR,GAAG+F,CACpB,CACA,OAAOiL,CACX,EAEA5R,QAAQmW,YAAc,SAAqBC,EAAItI,GAC3C,IAAI6G,EAAIyB,EAAIzB,EAAGC,EAAIwB,EAAIxB,EACnB3G,GAD0BmI,EAAIhB,EACzBtH,EAAE,IACPjL,GAAO,EACM,iBAAPoL,IAAwEA,GAArDH,EAAI,CAAC,CAAC,EAAEA,EAAEhN,QAAQd,QAAQ0N,SAAS,EAAEI,EAAEhN,OAAO,GAAGgN,IAAW,GAAIjL,GAAO,GACpG,IAMIrC,EAAE6C,EAAEuQ,EAAGC,EAAGjT,EAAEoN,EANZb,EAAKW,EAAE,GAAIyG,EAAKzG,EAAE,GAClBvN,EAAIoU,EAAE,GAAG7T,OAAO,EAAGoD,EAAI+J,EAAGnN,OAAO,EACjCS,EAAIvB,QAAQwG,IAAI,CAACjG,GAAG,GAAIyG,EAAKhG,MAAMT,GACnCmC,EAAI1C,QAAQwG,IAAI,CAACjG,GAAG,GAAIyT,EAAKhT,MAAMT,GACnC8V,EAAKrW,QAAQwG,IAAI,CAACtC,EAAE,GAAG,GAAIoS,EAAK,GAAIC,EAAK,GACzCpB,EAAMnV,QAAQ+T,UACAzF,EAAE,EACpB,IAAI9N,EAAE,EAAEA,EAAE0D,IAAI1D,EAAG,CAIb,IAHAI,EAAI,EACJgT,EAAK3F,EAAGzN,GACRqT,EAAK5F,EAAGzN,EAAE,GACN6C,EAAEuQ,EAAGvQ,EAAEwQ,IAAKxQ,EACZ2K,EAAIoI,EAAIjC,KAAKhH,EAAG9J,IAChB2Q,EAAGpT,GAAKoN,EACRtL,EAAEsL,GAAKuG,EAAGlR,KACRzC,EAIN,IAFAoT,EAAGlT,OAASF,EACZuU,EAAIR,EAAEjS,EAAEnB,EAAEyS,EAAGhN,GACT3D,EAAE2Q,EAAGlT,OAAO,GAAO,IAALuC,IAASA,EAAGX,EAAEsR,EAAG3Q,IAAM,EAEzC,GADA8R,EAAIP,EAAErT,EAAEmB,EAAEsE,EAAGgN,GACVnR,EAAM,OAAOH,EAChB,IAAIW,EAAE2D,EAAGlG,OAAO,GAAO,IAALuC,IAASA,EAAG9B,EAAEyF,EAAG3D,IAAM,EACzC,IAAIA,EAAE2Q,EAAGlT,OAAO,GAAO,IAALuC,IAASA,EACvB2K,EAAIgG,EAAG3Q,GACPiT,EAAGhI,GAAKN,EACRuI,EAAGjI,GAAK5L,EAAEsL,GACVtL,EAAEsL,GAAK,IACLM,EAEN+H,EAAG7V,EAAE,GAAK8N,CACd,CACA,MAAO,CAAC+H,EAAGC,EAAGC,EAClB,EAEAvW,QAAQwW,SAAW,SAAkBrQ,EAAKG,GAEtC,YADoB,IAAVA,IAAuBA,EAAM,IAChCnF,SAAS,IAAI,IACZ,gSAOAmF,EAPA,oeAiCAH,EAjCA,sLA2CZ,EAEC,WACG,IAAIvF,EAAEqD,EAAE6J,EAAE8D,EACV,IAAIhR,KAAKZ,QAAQ4I,KAC+B3E,EAAzCvC,SAAS+U,KAAK,IAAIzW,QAAQ4I,KAAKhI,GAAG,MAAW,sBAAsBA,EAAE,YAC/D,MACmCkN,EAAzCpM,SAAS+U,KAAK,IAAIzW,QAAQ4I,KAAKhI,GAAG,MAAW,sBAAsBA,EAAE,YAC/D,MAC8EgR,EAApFlQ,SAAS+U,KAAK,IAAIzW,QAAQ4I,KAAKhI,GAAG,OAASc,SAAS+U,KAAK,IAAIzW,QAAQ4I,KAAKhI,GAAG,MAAW,cAAcA,EAAE,UAClG,MACTZ,QAAQ,MAAMY,EAAE,MAAQZ,QAAQwW,SAAS,WAAWxW,QAAQ4I,KAAKhI,GAAG,OACpEZ,QAAQ,MAAMY,GAAKO,SAAS,IAAI,IACxB,oCAAoC8C,EAApC,uCACoC6J,EADpC,aAEU8D,EAAE,MAG5B,CAhBA,GAkBA5R,QAAQ0W,WAAa,SAAoBzS,GACrC,IAGgCzD,EAH5BmH,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAC7B1D,EAAIP,QAAQ2L,IAAIW,GAAI,EAAEpI,EAAEyD,EAAG7G,OAC3B6V,EAAK3W,QAAQwG,IAAI,CAACjG,GAAG,GAAG8S,EAAGrS,MAAMkD,GAAI0S,EAAK5V,MAAMkD,GAChDsP,EAASxT,QAAQwG,IAAI,CAACjG,GAAG,GAC7B,IAAIC,EAAE,EAAEA,EAAE0D,IAAI1D,EAAGgT,EAAOlH,EAAG9L,MAC3B,IAAIA,EAAE,EAAEA,EAAED,IAAIC,EAAGmW,EAAGnW,EAAE,GAAKmW,EAAGnW,GAAKgT,EAAOhT,GAC1C,IAAsBI,EAAEiW,EAApBC,EAAMH,EAAGI,MAAM,GACnB,IAAIvW,EAAE,EAAEA,EAAE0D,IAAI1D,EAGV6S,EADAzS,EAAIkW,EADJD,EAAMvK,EAAG9L,KAEDmH,EAAGnH,GACXoW,EAAGhW,GAAK8S,EAAGlT,GACXsW,EAAID,GAAKC,EAAID,GAAK,EAEtB,MAAO,CAACF,EAAGtD,EAAGuD,EAClB,EAEA5W,QAAQgX,UAAY,SAAmB/S,GACnC,IAGIzD,EAAE6C,EAAEuQ,EAAGC,EAAGlN,EAHVgB,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAC7B1D,EAAIoH,EAAG7G,OAAO,EAAEoD,EAAIoI,EAAGxL,OACvB6V,EAAK3V,MAAMkD,GAAImP,EAAKrS,MAAMkD,GAAI0S,EAAK5V,MAAMkD,GAG7C,IADAyC,EAAE,EACEnG,EAAE,EAAEA,EAAED,IAAIC,EAGV,IAFAoT,EAAKjM,EAAGnH,GACRqT,EAAKlM,EAAGnH,EAAE,GACN6C,EAAEuQ,EAAGvQ,IAAIwQ,IAAKxQ,EACdgQ,EAAG1M,GAAKnG,EACRmW,EAAGhQ,GAAK2F,EAAGjJ,GACXuT,EAAGjQ,GAAK+M,EAAGrQ,KACTsD,EAGV,MAAO,CAACgQ,EAAGtD,EAAGuD,EAClB,EAIA5W,QAAQiX,KAAO,SAAS5S,EAAIJ,EAAE5B,EAAIzB,GAE9B,QADkB,IAARyB,IAAuBA,EAAM,IACvB,iBAAN4B,EAAgB,OAAO5B,EAIjC,IAAI7B,EACJ,IAAIA,UAJY,IAANI,IAAqBA,EAAE,GAC5BA,KAAKyB,IAAQA,EAAIzB,GAAK,GACxBqD,EAAEnD,OAASuB,EAAIzB,KAAIyB,EAAIzB,GAAKqD,EAAEnD,QAExBmD,EACFA,EAAEnB,eAAetC,IAAI6D,EAAIJ,EAAEzD,GAAG6B,EAAIzB,EAAE,GAE3C,OAAOyB,CACX,EAEArC,QAAQkX,OAAS,SAAShM,EAAMjH,EAAErD,EAAEL,QAChB,IAANK,IAAqBA,EAAE,QACjB,IAANL,IAAqBA,EAAIP,QAAQiX,KAAKhT,GAAGnD,QACnD,IAAIN,EAAE6B,EAAMrB,MAAMiD,EAAEnD,QACpB,GAAGF,IAAML,EAAE,EAAG,CACV,IAAIC,KAAKyD,EAAQA,EAAEnB,eAAetC,KAAI6B,EAAI7B,GAAKyD,EAAEzD,IACjD,OAAO6B,CACX,CACA,IAAI7B,KAAKyD,EACFA,EAAEnB,eAAetC,KAAI6B,EAAI7B,GAAK0K,EAAMjH,EAAEzD,GAAGI,EAAE,EAAEL,IAEpD,OAAO8B,CACX,EAEArC,QAAQmX,MAAQ,SAAcvU,GAC1B,IAAiBpC,EAAiB8G,EAA9B/G,EAAIqC,EAAE9B,OAASuB,EAAMrB,MAAMT,GAC/B,IAAIC,EAAED,EAAE,EAAEC,GAAG,EAAEA,GAAG,EACd8G,EAAK9G,EAAE,EACP6B,EAAI7B,GAAK,GAAI6B,EAAI7B,GAAGA,GAAKoC,EAAEpC,GAC3B6B,EAAIiF,GAAM,GAAIjF,EAAIiF,GAAIA,GAAM1E,EAAE0E,GAGlC,OADO,IAAJ9G,IAAS6B,EAAI,GAAK,GAAIA,EAAI,GAAG,GAAKO,EAAEpC,IAChC6B,CACX,EAEArC,QAAQoX,UAAY,SAAkB7W,GAAK,OAAOP,QAAQmX,MAAMnX,QAAQwG,IAAI,CAACjG,GAAG,GAAK,EAErFP,QAAQqX,WAAa,SAAmBpT,GACpC,IAA4BzD,EAAE6C,EAAEsE,EAA5BtF,EAAM,GACV,IAAI7B,KADcyD,EAAEnD,OACXmD,EACL,GAAKA,EAAEnB,eAAetC,GAEtB,IAAI6C,KADJsE,EAAK1D,EAAEzD,GAEEmH,EAAG7E,eAAeO,KACF,iBAAXhB,EAAIgB,KAAmBhB,EAAIgB,GAAK,IAC1ChB,EAAIgB,GAAG7C,GAAKmH,EAAGtE,IAGvB,OAAOhB,CACX,EAEArC,QAAQsX,KAAO,SAAarT,EAAEsT,GAC1B,MAAM,IAAIrU,MAAM,sHACpB,EAEAlD,QAAQwX,OAAS,SAAevT,EAAE6J,GAC9B,IAA2EnG,EAAI8P,EAC3EjX,EAAE6C,EAAEzC,EAAE8W,EACSC,EAFfhR,EAAI1C,EAAEnD,OAAsB8W,GAAV9J,EAAEhN,OAAad,QAAQqX,WAAWvJ,IAAIjI,EAAI+R,EAAG9W,OAE/DuB,EAAMrB,MAAM2F,GAChB,IAAInG,EAAEmG,EAAE,EAAEnG,GAAG,EAAEA,IAAK,CAGhB,IAFAmX,EAAO,GACPhQ,EAAK1D,EAAEzD,GACHI,EAAEiF,EAAE,EAAEjF,GAAG,EAAEA,IAAK,CAGhB,IAAIyC,KAFJqU,EAAQ,EACRD,EAAMG,EAAGhX,GACA+G,EACAA,EAAG7E,eAAeO,IACpBA,KAAKoU,IAAOC,GAAS/P,EAAGtE,GAAGoU,EAAIpU,IAEnCqU,IAAOC,EAAK/W,GAAK8W,EACxB,CACArV,EAAI7B,GAAKmX,CACb,CACA,OAAOtV,CACX,EAEArC,QAAQ6X,OAAS,SAAe5T,EAAE1C,GAC9B,IAAkBoG,EAAInH,EAAE6C,EACJqU,EADhB/Q,EAAI1C,EAAEnD,OACNuB,EAAMrB,MAAM2F,GAChB,IAAInG,EAAEmG,EAAE,EAAEnG,GAAG,EAAEA,IAAK,CAGhB,IAAI6C,KADJqU,EAAQ,EADR/P,EAAK1D,EAAEzD,GAGEmH,EAAG7E,eAAeO,IACpB9B,EAAE8B,KAAIqU,GAAS/P,EAAGtE,GAAG9B,EAAE8B,IAE3BqU,IAAOrV,EAAI7B,GAAKkX,EACvB,CACA,OAAOrV,CACX,EAEArC,QAAQ8X,OAAS,SAAevW,EAAE0C,GAC9B,IAAIzD,EAAE6C,EAAEsE,EAAGkF,EACPxK,EAAM,GACV,IAAI7B,KAAKe,EACL,GAAIA,EAAEuB,eAAetC,GAGrB,IAAI6C,KAFJsE,EAAK1D,EAAEzD,GACPqM,EAAQtL,EAAEf,GACDmH,EACDA,EAAG7E,eAAeO,KAClBhB,EAAIgB,KAAMhB,EAAIgB,GAAK,GACvBhB,EAAIgB,IAAMwJ,EAAMlF,EAAGtE,IAG3B,OAAOhB,CACX,EAEArC,QAAQ+X,OAAS,SAAexW,EAAEmE,GAC9B,IAAIlF,EAAE6B,EAAI,EACV,IAAI7B,KAAKe,EAAQA,EAAEf,IAAMkF,EAAElF,KAAI6B,GAAMd,EAAEf,GAAGkF,EAAElF,IAC5C,OAAO6B,CACX,EAEArC,QAAQgY,KAAO,SAAa/T,EAAE6J,GAC1B,IAAI5J,EAAIlE,QAAQiX,KAAKhT,GAAGnD,OAAQP,EAAIP,QAAQiX,KAAKnJ,GAAGhN,OAEpD,OADU,IAAFoD,EAAO3D,GAEf,KAAK,EAAG,OAAO0D,EAAE6J,EACjB,KAAK,KAAM,OAAO9N,QAAQ+X,OAAO9T,EAAE6J,GACnC,KAAK,KAAM,OAAO9N,QAAQ6X,OAAO5T,EAAE6J,GACnC,KAAK,KAAM,OAAO9N,QAAQ8X,OAAO7T,EAAE6J,GACnC,KAAK,KAAM,OAAO9N,QAAQwX,OAAOvT,EAAE6J,GACnC,QAAS,MAAM,IAAI5K,MAAM,qDAAqDgB,EAAE,QAAQ3D,GAE5F,EAEAP,QAAQiY,SAAW,SAAiBC,GAChC,IAAqBC,EAAK3X,EAAG6C,EAAyBiJ,EAAlD/L,EAAI2X,EAAE,GAAGpX,OAAmBoD,EAAIgU,EAAEpX,OAAQmD,EAAI,GAClD,IAAIzD,EAAED,EAAE,EAAEC,GAAG,IAAIA,EACb,GAAI0X,EAAEhU,EAAE,GAAG1D,GAAX,CAEA,IADA8L,EAAKrI,EACDZ,EAAE,EAAEA,EAAEa,EAAE,EAAEb,IAENiJ,EADJ6L,EAAMD,EAAE7U,GAAG7C,MACE8L,EAAG6L,GAAO,IACvB7L,EAAKA,EAAG6L,GAEZ7L,EAAG4L,EAAE7U,GAAG7C,IAAM0X,EAAE7U,EAAE,GAAG7C,EAPE,CAS3B,OAAOyD,CACX,EAEAjE,QAAQoY,QAAU,SAASC,EAAOpU,EAAE5B,EAAIzB,GAGpC,IAAIL,EAAEC,EAAEmH,EAER,IAAInH,UAJc,IAAR6B,IAAqBA,EAAM,SACrB,IAANzB,IAAmBA,EAAI,IAEjCL,EAAIK,EAAEE,OACGmD,EACL,GAAGA,EAAEnB,eAAetC,GAGhB,GAFAI,EAAEL,GAAKkT,SAASjT,GAEC,iBADjBmH,EAAK1D,EAAEzD,KAEH,GAAGmH,EAAI,CACH,GAAkB,IAAftF,EAAIvB,OACH,IAAIN,EAAED,EAAE,EAAEC,GAAG,IAAIA,EAAG6B,EAAI7B,GAAK,GAEjC,IAAIA,EAAED,EAAEC,GAAG,IAAIA,EAAG6B,EAAI7B,GAAG+B,KAAK3B,EAAEJ,IAChC6B,EAAI9B,EAAE,GAAGgC,KAAKoF,EAClB,OACG0Q,EAAO1Q,EAAGtF,EAAIzB,GAI7B,OADGA,EAAEE,OAAOP,GAAGK,EAAE0X,MACVjW,CACX,EAGArC,QAAQuY,IAAM,SAAYtU,GACtB,IACuBzD,EAAE6C,EAAEzC,EAAE6B,EAAEC,EAAEC,EAD7B+J,EAAIzI,EAAE,GAAI+J,EAAI/J,EAAE,GAAIiU,EAAIjU,EAAE,GAC1B0C,EAAI+F,EAAE5L,OAAQoD,EAAE,EACpB,IAAI1D,EAAE,EAAEA,EAAEmG,EAAEnG,IAAQkM,EAAElM,GAAG0D,IAAGA,EAAEwI,EAAElM,IAChC0D,IACA,IACW2I,EADP8H,EAAI3T,MAAMkD,GAAI0Q,EAAI5T,MAAMkD,GAAIsU,EAAOxY,QAAQwG,IAAI,CAACtC,GAAGuU,KAAWC,EAAQ1Y,QAAQwG,IAAI,CAACtC,IAAG,KAE1F,IAAItD,EAAE,EAAEA,EAAE+F,EAAE/F,IACRJ,EAAIkM,EAAE9L,IACNyC,EAAI2K,EAAEpN,IACD4X,EAAKhY,KAAIgY,EAAKhY,GAAK6C,GACrBA,EAAEqV,EAAMlY,KAAIkY,EAAMlY,GAAK6C,GAE9B,IAAI7C,EAAE,EAAEA,EAAE0D,EAAE,EAAE1D,IAAUkY,EAAMlY,GAAKkY,EAAMlY,EAAE,KAAIkY,EAAMlY,EAAE,GAAKkY,EAAMlY,IAClE,IAAIA,EAAE0D,EAAE,EAAE1D,GAAG,EAAEA,IAAUgY,EAAKhY,GAAGgY,EAAKhY,EAAE,KAAIgY,EAAKhY,EAAE,GAAKgY,EAAKhY,IAE7D,IAAIA,EAAE,EAAEA,EAAE0D,EAAE1D,IACRoU,EAAEpU,GAAKR,QAAQwG,IAAI,CAACkS,EAAMlY,GAAGgY,EAAKhY,GAAG,GAAG,GACxCmU,EAAEnU,GAAKR,QAAQwG,IAAI,CAAChG,EAAEgY,EAAKhY,IAAI,GACnBgY,EAAKhY,GACPkY,EAAMlY,GAEpB,IAAII,EAAE,EAAEA,EAAE+F,EAAE/F,IAAiBgU,EAAVpU,EAAIkM,EAAE9L,IAASoN,EAAEpN,GAAG4X,EAAKhY,IAAM0X,EAAEtX,GACpD,IAAIJ,EAAE,EAAEA,EAAE0D,EAAE,EAAE1D,IAGV,IAFAiC,EAAIjC,EAAEgY,EAAKhY,GACXwU,EAAKJ,EAAEpU,GACH6C,EAAE7C,EAAE,EAAEgY,EAAKnV,IAAI7C,GAAK6C,EAAEa,EAAEb,IAKxB,GAJAX,EAAIlC,EAAEgY,EAAKnV,GACXV,EAAI+V,EAAMlY,GAAGA,EAEbqM,GADAoI,EAAKL,EAAEvR,IACIX,GAAGsS,EAAGvS,GACP,CACN,IAAI7B,EAAE,EAAEA,GAAG+B,EAAE/B,IAAOqU,EAAGrU,EAAE8B,IAAMmK,EAAMmI,EAAGpU,EAAE6B,GAC1CkS,EAAEtR,GAAG7C,EAAEgY,EAAKnV,IAAMwJ,CACtB,CAGR,IACMjH,EAAEtD,EADJ0S,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIL,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAGtD,IADApO,EAAE,EAAGf,EAAE,EACHpF,EAAE,EAAEA,EAAE0D,EAAE1D,IAAK,CAIb,IAHAiC,EAAI+V,EAAKhY,GACTkC,EAAIgW,EAAMlY,GACV8B,EAAMsS,EAAEpU,GACJ6C,EAAE7C,EAAE6C,GAAGX,EAAEW,IACNf,EAAIe,EAAEZ,KACLuS,EAAGrO,GAAKnG,EACRyU,EAAGtO,GAAKtD,EACR6R,EAAGvO,GAAKrE,EAAIe,EAAEZ,GACdkE,KAIR,IADArE,EAAMqS,EAAEnU,GACJ6C,EAAEZ,EAAEY,EAAE7C,EAAE6C,IACLf,EAAIe,EAAEZ,KACLoS,EAAGjP,GAAKpF,EACRsU,EAAGlP,GAAKvC,EACR0R,EAAGnP,GAAKtD,EAAIe,EAAEZ,GACdmD,KAGRiP,EAAGjP,GAAKpF,EACRsU,EAAGlP,GAAKpF,EACRuU,EAAGnP,GAAK,EACRA,GACJ,CACA,MAAO,CAACgP,EAAE,CAACI,EAAGC,EAAGC,GAAKP,EAAE,CAACE,EAAGC,EAAGC,GACnC,EAEA/U,QAAQ2Y,SAAW,SAAiBC,EAAGlW,GACnC,IAImBlC,EAAII,EAJnB+T,EAAIiE,EAAGjE,EAAGC,EAAIgE,EAAGhE,EAAGvS,EAAMrC,QAAQkL,MAAMxI,GACxCmS,EAAKF,EAAE,GAAIG,EAAKH,EAAE,GAAII,EAAKJ,EAAE,GAC7BK,EAAKJ,EAAE,GAAIK,EAAKL,EAAE,GAAIM,EAAKN,EAAE,GAC7BjO,EAAIqO,EAAGlU,OACPoD,GADmB2Q,EAAG/T,OAClBuB,EAAIvB,QAEZ,IADAF,EAAI,EACAJ,EAAE,EAAEA,EAAE0D,EAAE1D,IAAK,CACb,KAAMsU,EAAGlU,GAAKJ,GACV6B,EAAI7B,IAAMuU,EAAGnU,GAAGyB,EAAIyS,EAAGlU,IACvBA,IAEJA,GACJ,CAEA,IADAA,EAAI+F,EAAE,EACFnG,EAAE0D,EAAE,EAAE1D,GAAG,EAAEA,IAAK,CAChB,KAAMyU,EAAGrU,GAAKJ,GACV6B,EAAI7B,IAAM0U,EAAGtU,GAAGyB,EAAI4S,EAAGrU,IACvBA,IAEJyB,EAAI7B,IAAM0U,EAAGtU,GACbA,GACJ,CACA,OAAOyB,CACX,EAEArC,QAAQ6Y,MAAQ,SAActY,EAAEuY,GACZ,iBAANvY,IAAgBA,EAAI,CAACA,EAAEA,IACjC,IACIC,EAAE6C,EAAEM,EADJtB,EAAMrC,QAAQwG,IAAIjG,GAAG,GAazB,IAXoB,mBAAVuY,IAGFA,EADC,MADEA,EAEK,SAAStY,EAAE6C,GAAK,OAAQ7C,GAAGD,EAAE,GAAG,GAAK8C,EAAE9C,EAAE,GAAG,CAAI,EAGhD,SAASC,EAAE6C,GAAK,OAAO,CAAM,GAI7CM,EAAM,EACFnD,EAAE,EAAEA,EAAED,EAAE,GAAG,EAAEC,IAAK,IAAI6C,EAAE,EAAEA,EAAE9C,EAAE,GAAG,EAAE8C,IAChCyV,EAAMtY,EAAE6C,KACPhB,EAAI7B,GAAG6C,GAAKM,EACZA,KAER,OAAOtB,CACX,EAEArC,QAAQ+Y,OAAS,SAAe9Y,GAC5B,IAC4CO,EAAE6C,EAAEzC,EAAE+F,EAAEf,EADhDoT,EAAM,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,IAC9B5U,EAAIpE,QAAQqE,IAAIpE,GAAIiE,EAAIE,EAAE,GAAI7D,EAAI6D,EAAE,GACpCyQ,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAC3B,IAAIvU,EAAE,EAAEA,EAAE0D,EAAE,EAAE1D,IAAK,IAAI6C,EAAE,EAAEA,EAAE9C,EAAE,EAAE8C,IAC7B,KAAGpD,EAAEO,GAAG6C,GAAG,GAAX,CACA,IAAIzC,EAAE,EAAEA,EAAE,EAAEA,IACR+F,EAAInG,EAAEwY,EAAIpY,GAAG,GACbgF,EAAIvC,EAAE2V,EAAIpY,GAAG,GACVX,EAAE0G,GAAGf,GAAG,IACXiP,EAAGtS,KAAKtC,EAAEO,GAAG6C,IACbyR,EAAGvS,KAAKtC,EAAE0G,GAAGf,IACbmP,EAAGxS,MAAM,IAEbsS,EAAGtS,KAAKtC,EAAEO,GAAG6C,IACbyR,EAAGvS,KAAKtC,EAAEO,GAAG6C,IACb0R,EAAGxS,KAAK,EAXc,CAa1B,MAAO,CAACsS,EAAGC,EAAGC,EAClB,EAEA/U,QAAQiZ,OAAS,SAAehV,EAAE1C,GAC9B,IAAIc,EAAqCzB,EAAc0N,EAA9C3G,EAAK1D,EAAE,GAAIqI,EAAKrI,EAAE,GAAIyP,EAAKzP,EAAE,GAAK0C,EAAEgB,EAAG7G,OAEhD,IADAwN,EAAE,EACE1N,EAAE,EAAEA,EAAE+F,EAAE/F,IAAU+G,EAAG/G,GAAG0N,IAAGA,EAAI3G,EAAG/G,IAGtC,IAFA0N,IACAjM,EAAMrC,QAAQwG,IAAI,CAAC8H,GAAG,GAClB1N,EAAE,EAAEA,EAAE+F,EAAE/F,IAAOyB,EAAIsF,EAAG/G,KAAK8S,EAAG9S,GAAGW,EAAE+K,EAAG1L,IAC1C,OAAOyB,CACX,EAIArC,QAAQkZ,OAAS,SAAgB3X,EAAE4X,EAAGC,EAAGC,EAAGC,GAAMzY,KAAKU,EAAIA,EAAGV,KAAKsY,GAAKA,EAAItY,KAAKuY,GAAKA,EAAIvY,KAAKwY,GAAKA,EAAIxY,KAAKyY,GAAKA,CAAI,EACtHtZ,QAAQkZ,OAAOjY,UAAUsY,IAAM,SAAaC,EAAG7S,GAC3C,IAKOlE,EAAEC,EAAEU,EALP7B,EAAIV,KAAKU,EACT4X,EAAKtY,KAAKsY,GACVC,EAAKvY,KAAKuY,GACVC,EAAKxY,KAAKwY,GACVC,EAAKzY,KAAKyY,GAEVzQ,EAAM7I,QAAQ6I,IAAKC,EAAM9I,QAAQ8I,IAAKC,EAAM/I,QAAQ+I,IACxDtG,EAAIqG,EAAIC,EAAIsQ,EAAG1S,GAAGpF,EAAEoF,EAAE,GAAGpF,EAAEoF,IAAImC,EAAIsQ,EAAGzS,EAAE,GAAGwS,EAAGxS,KAC9CjE,EAAImG,EAAIE,EAAIuQ,EAAG3S,EAAE,GAAGpF,EAAEoF,GAAGpF,EAAEoF,EAAE,IAAImC,EAAIsQ,EAAGzS,EAAE,GAAGwS,EAAGxS,KAEhD,IAAIvC,GADJhB,GAAKoW,EAAGjY,EAAEoF,KAAKpF,EAAEoF,EAAE,GAAGpF,EAAEoF,MACb,EAAEvD,GACb,OAAOyF,EAAIA,EAAIA,EAAIE,EAAI,EAAE3F,EAAE+V,EAAGxS,IAAIoC,EAAI3F,EAAEgW,EAAGzS,EAAE,KAAKoC,EAAItG,EAAE2B,GAAG,EAAEhB,KAAK2F,EAAIrG,EAAE0B,EAAEhB,GAC9E,EACApD,QAAQkZ,OAAOjY,UAAUwY,GAAK,SAAYC,GACtC,GAAiB,iBAAPA,EAAiB,CACvB,IAEI/S,EAAEf,EAAE+T,EAFJpY,EAAIV,KAAKU,EACThB,EAAIgB,EAAET,OACEe,EAAQD,KAAKC,MAGzB,IAFA8E,EAAI,EACJf,EAAIrF,EAAE,EACAqF,EAAEe,EAAE,GAEHpF,EADHoY,EAAM9X,GAAO8E,EAAEf,GAAG,KACL8T,EAAI/S,EAAIgT,EAChB/T,EAAI+T,EAEb,OAAO9Y,KAAK0Y,IAAIG,EAAG/S,EACvB,CACIpG,EAAImZ,EAAG5Y,OAAX,IAAmBN,EAAG6B,EAAMrB,MAAMT,GAClC,IAAIC,EAAED,EAAE,GAAO,IAALC,IAASA,EAAG6B,EAAI7B,GAAKK,KAAK4Y,GAAGC,EAAGlZ,IAC1C,OAAO6B,CACX,EACArC,QAAQkZ,OAAOjY,UAAU2Y,KAAO,WAC5B,IAMIpZ,EAAEqZ,EAAGC,EANLvY,EAAIV,KAAKU,EACT4X,EAAKtY,KAAKsY,GACVC,EAAKvY,KAAKuY,GACVC,EAAKxY,KAAKwY,GACVC,EAAKzY,KAAKyY,GACV/Y,EAAI4Y,EAAGrY,OAEPiZ,EAAKV,EAAIW,EAAKV,EAAIW,EAAKjZ,MAAMT,GAAI2Z,EAAKlZ,MAAMT,GAC5CsI,EAAM7I,QAAQ6I,IAAKE,EAAM/I,QAAQ+I,IAAKC,EAAMhJ,QAAQgJ,IAAKF,EAAM9I,QAAQ8I,IAC3E,IAAItI,EAAED,EAAE,GAAO,IAALC,IAASA,EACfqZ,EAAKtY,EAAEf,EAAE,GAAGe,EAAEf,GACdsZ,EAAKhR,EAAIsQ,EAAG5Y,EAAE,GAAG2Y,EAAG3Y,IACpByZ,EAAGzZ,GAAKwI,EAAIH,EAAIE,EAAI+Q,EAAI,GAAG/Q,EAAIsQ,EAAG7Y,IAAI,EAAEqZ,GAAI9Q,EAAIuQ,EAAG9Y,EAAE,IAAI,EAAEqZ,IAAKA,EAAGA,GACnEK,EAAG1Z,EAAE,GAAKwI,EAAIH,EAAIE,EAAI+Q,GAAI,GAAG/Q,EAAIsQ,EAAG7Y,GAAI,EAAEqZ,GAAI9Q,EAAIuQ,EAAG9Y,EAAE,GAAI,EAAEqZ,IAAKA,EAAGA,GAEzE,OAAO,IAAI7Z,QAAQkZ,OAAO3X,EAAEwY,EAAGC,EAAGC,EAAGC,EACzC,EACAla,QAAQkZ,OAAOjY,UAAUkZ,MAAQ,WAC7B,SAASC,EAAI7Y,GAAK,OAAOA,EAAEA,CAAG,CAQ9B,IAAIc,EAAM,GACNd,EAAIV,KAAKU,EAAG4X,EAAKtY,KAAKsY,GAAIC,EAAKvY,KAAKuY,GAAIC,EAAKxY,KAAKwY,GAAIC,EAAKzY,KAAKyY,GAChD,iBAAVH,EAAG,KACTA,EAAK,CAACA,GACNC,EAAK,CAACA,GACNC,EAAK,CAACA,GACNC,EAAK,CAACA,IAEV,IAA+B9Y,EAAE6C,EAAEzC,EAC/ByZ,EAAGC,EAAGC,EAAGC,EAAmBC,EAAGC,EAAG3N,EAAG4N,EAAGC,EAAG3W,EAAE6J,EAAE+M,EAAEhB,EAAMiB,EAAMC,EAAGC,EAAGC,EAAGC,EAAG5a,EAAG6a,EAD5EjX,EAAIiV,EAAGrY,OAAOP,EAAEgB,EAAET,OAAO,EAEzB2M,GADapL,EAAMrB,MAAMkD,GAClBtC,KAAK6L,MAChB,IAAIjN,EAAE,EAAEA,IAAI0D,IAAI1D,EAAG,CAMf,IALA6Z,EAAKlB,EAAG3Y,GACR8Z,EAAKlB,EAAG5Y,GACR+Z,EAAKlB,EAAG7Y,GACRga,EAAKlB,EAAG9Y,GACRia,EAAK,GACDpX,EAAE,EAAEA,IAAI9C,EAAE8C,IAAK,CAyBf,IAxBGA,EAAE,GAAKiX,EAAGjX,GAAGgX,EAAGhX,GAAG,GAAGoX,EAAGlY,KAAKhB,EAAE8B,IACnCwW,EAAMtY,EAAE8B,EAAE,GAAG9B,EAAE8B,GACV9B,EAAE8B,GACPsX,EAAKN,EAAGhX,GACRuX,EAAKN,EAAGjX,EAAE,GACVqX,EAAKH,EAAGlX,GAAGwW,EAGX5V,GAFA8I,EAAKyN,EAAGnX,EAAE,GAAGwW,GAEN,EAAEc,EAAG,EAAED,EAAG,EAAEE,EACnB9M,EAAI,GAAGf,EAAG2N,EAAG,GAAGC,EAAGC,KAFnBC,EAAIT,EAAIM,EAAG3N,EAAG,GAAG4N,EAAGC,IAAO,GAAG7N,EAAG4N,IAG3B,EAEuBG,GADzBC,EAAK9W,EAAE6J,GACDvM,EAAE8B,IAAM0X,EAAGxZ,EAAE8B,EAAE,GAAY,CAAC9B,EAAE8B,GAAG0X,EAAGxZ,EAAE8B,EAAE,IACjC,CAAC9B,EAAE8B,GAAG9B,EAAE8B,EAAE,KAEvB0X,GAAM9W,EAAEwJ,EAAKoN,IAAI/M,EACjBkN,GAAM/W,EAAEwJ,EAAKoN,IAAI/M,EACjBgN,EAAQ,CAACvZ,EAAE8B,IACR0X,EAAGxZ,EAAE8B,IAAM0X,EAAGxZ,EAAE8B,EAAE,IAAIyX,EAAMvY,KAAKwY,GACjCC,EAAGzZ,EAAE8B,IAAM2X,EAAGzZ,EAAE8B,EAAE,IAAIyX,EAAMvY,KAAKyY,GACpCF,EAAMvY,KAAKhB,EAAE8B,EAAE,KAEnB6X,EAAKJ,EAAM,GACXC,EAAKla,KAAK0Y,IAAI2B,EAAG7X,GACbzC,EAAE,EAAEA,EAAEka,EAAMha,OAAO,EAAEF,IAGrB,GAFAN,EAAKwa,EAAMla,EAAE,GACboa,EAAKna,KAAK0Y,IAAIjZ,EAAG+C,GACP,IAAP0X,EAMH,GAAU,IAAPC,GAAYD,EAAGC,EAAG,EACjBE,EAAK5a,EACLya,EAAKC,MAFT,CAMA,IADA,IAAII,EAAO,KAEPD,GAAMJ,EAAGza,EAAG0a,EAAGE,IAAKH,EAAGC,KACdE,GAAMC,GAAM7a,IAErB,IADA2a,EAAKpa,KAAK0Y,IAAI4B,EAAG9X,IACX2X,EAAG,EACL1a,EAAK6a,EACLH,EAAKC,GACQ,IAAVG,IAAaL,GAAI,IACpBK,GAAQ,MACL,MAAGH,EAAGF,EAAG,GAKT,MAJHG,EAAKC,EACLJ,EAAKE,EACO,IAATG,IAAYJ,GAAI,IACnBI,EAAO,CACC,CAEhBX,EAAGlY,KAAK4Y,GACRD,EAAKJ,EAAMla,EAAE,GACbma,EAAKla,KAAK0Y,IAAI2B,EAAI7X,EApBlB,MATIoX,EAAGlY,KAAK2Y,GACRA,EAAK5a,EACLya,EAAKC,EA6BH,IAAPA,GAAUP,EAAGlY,KAAKjC,EACzB,CACA+B,EAAI7B,GAAKia,CACb,CACA,MAAyB,iBAAf5Z,KAAKsY,GAAG,GAAwB9W,EAAI,GACvCA,CACX,EACArC,QAAQqb,OAAS,SAAgB9Z,EAAEmE,EAAEqH,EAAGuO,GACpC,IACI9a,EADAD,EAAIgB,EAAET,OAAQ4B,EAAI,GAAImX,EAAK,GAAIC,EAAK,GAEpChR,EAAM9I,QAAQ8I,IAAIC,EAAM/I,QAAQ+I,IAAIF,EAAM7I,QAAQ6I,IACtD,IAAIrI,EAAED,EAAE,EAAEC,GAAG,EAAEA,IAAOqZ,EAAGrZ,GAAKe,EAAEf,EAAE,GAAGe,EAAEf,GAAIsZ,EAAGtZ,GAAKsI,EAAIpD,EAAElF,EAAE,GAAGkF,EAAElF,IAC/C,iBAAPuM,GAAiC,iBAAPuO,IAChCvO,EAAKuO,EAAK,YAGd,IAAIxM,EAAI,CAAC,GAAG,GAAG,IACf,cAAc/B,GACd,IAAK,YACDrK,EAAE,GAAKqG,EAAI,GAAG8Q,EAAG,GAAGA,EAAG,IAAIC,EAAG,IAC9BhL,EAAE,GAAGvM,KAAK,EAAE,GACZuM,EAAE,GAAGvM,KAAK,EAAE,GACZuM,EAAE,GAAGvM,KAAK,EAAEsX,EAAG,GAAG,EAAEA,EAAG,IACvB,MACJ,IAAK,SACDnX,EAAE,GAAKmG,EAAIE,EAAI,GAAG8Q,EAAGtZ,EAAE,GAAGsZ,EAAGtZ,EAAE,IAAIuZ,EAAGvZ,EAAE,IAAIwI,EAAI,GAAG8Q,EAAG,GAAGA,EAAG,IAAIC,EAAG,KACnEhL,EAAE,GAAGvM,KAAK,EAAE,EAAE,GACduM,EAAE,GAAGvM,KAAKhC,EAAE,EAAE,EAAE,GAChBuO,EAAE,GAAGvM,KAAK,EAAEsX,EAAGtZ,EAAE,GAAG,EAAEsZ,EAAGtZ,EAAE,GAAG,EAAEsZ,EAAG,GAAG,EAAEA,EAAG,IAC3C,MACJ,QACInX,EAAE,GAAKqK,EACP+B,EAAE,GAAGvM,KAAK,GACVuM,EAAE,GAAGvM,KAAK,GACVuM,EAAE,GAAGvM,KAAK,GAGd,IAAI/B,EAAE,EAAEA,EAAED,EAAE,EAAEC,IACVkC,EAAElC,GAAKqI,EAAIE,EAAI,GAAG8Q,EAAGrZ,EAAE,GAAGqZ,EAAGrZ,EAAE,IAAIsZ,EAAGtZ,EAAE,IAAIuI,EAAI,GAAG8Q,EAAGrZ,GAAGqZ,EAAGrZ,IAAIsZ,EAAGtZ,KACnEsO,EAAE,GAAGvM,KAAK/B,EAAEA,EAAEA,GACdsO,EAAE,GAAGvM,KAAK/B,EAAE,EAAEA,EAAEA,EAAE,GAClBsO,EAAE,GAAGvM,KAAK,EAAEsX,EAAGrZ,EAAE,GAAG,EAAEqZ,EAAGrZ,EAAE,GAAG,EAAEqZ,EAAGrZ,GAAG,EAAEqZ,EAAGrZ,IAE/C,cAAc8a,GACd,IAAK,YACD5Y,EAAEnC,EAAE,GAAKwI,EAAI,GAAG8Q,EAAGtZ,EAAE,GAAGsZ,EAAGtZ,EAAE,IAAIuZ,EAAGvZ,EAAE,IACtCuO,EAAE,GAAGvM,KAAKhC,EAAE,EAAEA,EAAE,GAChBuO,EAAE,GAAGvM,KAAKhC,EAAE,EAAEA,EAAE,GAChBuO,EAAE,GAAGvM,KAAK,EAAEsX,EAAGtZ,EAAE,GAAG,EAAEsZ,EAAGtZ,EAAE,IAC3B,MACJ,IAAK,SACDuO,EAAE,GAAGA,EAAE,GAAGhO,OAAO,GAAK,EACtB,MACJ,QACI4B,EAAEnC,EAAE,GAAK+a,EACTxM,EAAE,GAAGvM,KAAKhC,EAAE,GACZuO,EAAE,GAAGvM,KAAKhC,EAAE,GACZuO,EAAE,GAAGvM,KAAK,GAGeG,EAAV,iBAATA,EAAE,GAAqB1C,QAAQgN,UAAUtK,GAC1C,CAACA,GACV,IAAI9B,EAAII,MAAM0B,EAAE5B,QAChB,GAAiB,iBAAPiM,EACN,IAAIvM,EAAEI,EAAEE,OAAO,GAAO,IAALN,IAASA,EACtBI,EAAEJ,GAAKR,QAAQmW,YAAYnW,QAAQwV,OAAOxV,QAAQ0W,WAAW5H,IAAIpM,EAAElC,IACnEI,EAAEJ,GAAGD,EAAE,GAAKK,EAAEJ,GAAG,QAGrB,IAAIA,EAAEI,EAAEE,OAAO,GAAO,IAALN,IAASA,EACtBI,EAAEJ,GAAKR,QAAQ2Y,SAAS3Y,QAAQuY,IAAIzJ,GAAGpM,EAAElC,IAKjD,OAF6BI,EAAV,iBAAT8E,EAAE,GAAqB9E,EAAE,GAC1BZ,QAAQgN,UAAUpM,GACpB,IAAIZ,QAAQkZ,OAAO3X,EAAEmE,EAAEA,EAAE9E,EAAEA,EACtC,EAGAZ,QAAQub,QAAU,SAASA,EAAQha,EAAEmE,GACjC,IAAInF,EAAIgB,EAAET,OACV,GAAS,IAANP,EAAH,CACA,IAAoCC,EAAE6C,EAAlCqM,EAAM9N,KAAK8N,IAAKD,EAAM7N,KAAK6N,IAC3B+L,EAAKxa,MAAMT,EAAE,GAAIkb,EAAKza,MAAMT,EAAE,GAAImb,EAAK1a,MAAMT,EAAE,GAAIob,EAAK3a,MAAMT,EAAE,GAEpE,IADA8C,EAAI9C,EAAE,EACFC,EAAED,EAAE,GAAO,IAALC,IAASA,EAEfkb,IADErY,GACM9B,EAAEf,GACVmb,EAAGtY,GAAKqC,EAAElF,KACRA,EACFgb,EAAGnY,GAAK9B,EAAEf,GACVib,EAAGpY,GAAKqC,EAAElF,GAEd+a,EAAQC,EAAGC,GACXF,EAAQG,EAAGC,GACXtY,EAAI9C,EAAE,EACN,IAAI6C,EAAqEmX,EAAGqB,EAAtEhb,GAAM,kBAA0DL,EACtE,IAAIC,EAAED,EAAE,GAAO,IAALC,IAASA,GAEL,MADR6C,IACWA,EAAI9C,EAAE,EAAE,GAErBga,EAAK7K,EADLtM,EAAIxC,EAAEJ,GAENob,EAAKnM,EAAIrM,GACT7B,EAAEf,GAAKgb,EAAGnY,GAAKkX,EAAGmB,EAAGrY,GAAKuY,EAAGD,EAAGtY,GAChCqC,EAAElF,GAAKib,EAAGpY,GAAKkX,EAAGoB,EAAGtY,GAAKuY,EAAGF,EAAGrY,EAvBlB,CAyBtB,EACArD,QAAQ6b,UAAY,SAASA,EAAUta,EAAEmE,GACrC,IAAInF,EAAIgB,EAAET,OACV,GAAS,IAANP,EAAH,CACA,IAAoCC,EAAE6C,EAAlCqM,EAAM9N,KAAK8N,IAAKD,EAAM7N,KAAK6N,IAC3B+L,EAAKxa,MAAMT,EAAE,GAAIkb,EAAKza,MAAMT,EAAE,GAAImb,EAAK1a,MAAMT,EAAE,GAAIob,EAAK3a,MAAMT,EAAE,GAEpE,IADA8C,EAAI9C,EAAE,EACFC,EAAED,EAAE,GAAO,IAALC,IAASA,EAEfkb,IADErY,GACM9B,EAAEf,GACVmb,EAAGtY,GAAKqC,EAAElF,KACRA,EACFgb,EAAGnY,GAAK9B,EAAEf,GACVib,EAAGpY,GAAKqC,EAAElF,GAEdqb,EAAUL,EAAGC,GACbI,EAAUH,EAAGC,GACbtY,EAAI9C,EAAE,EACN,IAAI6C,EAAoEmX,EAAGqB,EAArEhb,EAAK,kBAA0DL,EACrE,IAAIC,EAAED,EAAE,GAAO,IAALC,IAASA,GAEL,MADR6C,IACWA,EAAI9C,EAAE,EAAE,GAErBga,EAAK7K,EADLtM,EAAIxC,EAAEJ,GAENob,EAAKnM,EAAIrM,GACT7B,EAAEf,GAAKgb,EAAGnY,GAAKkX,EAAGmB,EAAGrY,GAAKuY,EAAGD,EAAGtY,GAChCqC,EAAElF,GAAKib,EAAGpY,GAAKkX,EAAGoB,EAAGtY,GAAKuY,EAAGF,EAAGrY,EAvBlB,CAyBtB,EACArD,QAAQ8b,SAAW,SAAkBva,EAAEmE,GACnC1F,QAAQ6b,UAAUta,EAAEmE,GACpB1F,QAAQoK,MAAM7I,EAAEA,EAAET,QAClBd,QAAQoK,MAAM1E,EAAEA,EAAE5E,OACtB,EACAd,QAAQ+b,SAAW,SAAkB3L,EAAGC,EAAGC,EAAGC,GAG1C,IAAI/P,EAAgBwb,EAAIC,EAAIC,EAAIC,EAChC,IAHAnc,QAAQub,QAAQnL,EAAGC,GACnBrQ,QAAQub,QAAQjL,EAAGC,GAEf/P,EADM4P,EAAGtP,OACL,GAAO,IAALN,IAASA,EACfwb,EAAM5L,EAAG5P,GAAI0b,EAAM7L,EAAG7P,GAAIyb,EAAM3L,EAAG9P,GAAI2b,EAAM5L,EAAG/P,GAChD4P,EAAG5P,GAAKwb,EAAIC,EAAIC,EAAIC,EACpB9L,EAAG7P,GAAKwb,EAAIG,EAAID,EAAID,EAExBjc,QAAQ8b,SAAS1L,EAAGC,EACxB,EACArQ,QAAQ8O,EAAE7N,UAAUmb,IAAM,WACtB,IAIIxb,EAAqEwC,EAJrE7B,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EACrBnF,EAAIgB,EAAET,OAAQgB,EAAMF,KAAKE,IAAKua,EAAOva,EAAI,GACzC6E,EAAI/E,KAAK0a,KAAKxa,EAAI,EAAEvB,EAAE,GAAG8b,GAAOnY,EAAItC,KAAKI,IAAI,EAAE2E,GAC/C4V,EAAKvc,QAAQwG,IAAI,CAACtC,GAAG,GAAIsY,EAAKxc,QAAQwG,IAAI,CAACtC,GAAG,GAAIwL,EAAM9N,KAAK8N,IAAKD,EAAM7N,KAAK6N,IAC1E9M,GAAM,kBAAyDpC,EAClEkC,EAAIzC,QAAQwG,IAAI,CAACtC,GAAG,GAAIxB,EAAI1C,QAAQwG,IAAI,CAACtC,GAAG,GAChD,IAD2DtC,KAAKC,MAAMtB,EAAE,GACpEK,EAAE,EAAEA,EAAEL,EAAEK,IAAK6B,EAAE7B,GAAKW,EAAEX,GAC1B,QAAgB,IAAN8E,EAAmB,IAAI9E,EAAE,EAAEA,EAAEL,EAAEK,IAAK8B,EAAE9B,GAAK8E,EAAE9E,GAEvD,IADA2b,EAAG,GAAK,EACJ3b,EAAE,EAAEA,GAAGsD,EAAE,EAAEtD,IACXwC,EAAIT,EAAE/B,EAAEA,EACR2b,EAAG3b,GAAK8O,EAAItM,GACZoZ,EAAG5b,GAAK6O,EAAIrM,GACZmZ,EAAGrY,EAAEtD,GAAK8O,EAAItM,GACdoZ,EAAGtY,EAAEtD,GAAK6O,EAAIrM,GAElB,IAAIgL,EAAI,IAAIpO,QAAQ8O,EAAErM,EAAEC,GAAI+Z,EAAI,IAAIzc,QAAQ8O,EAAEyN,EAAGC,GAMjD,OALApO,EAAIA,EAAErF,IAAI0T,GACVzc,QAAQ+b,SAAS3N,EAAE7M,EAAE6M,EAAE1I,EAAE1F,QAAQkL,MAAMuR,EAAElb,GAAGvB,QAAQ+K,IAAI0R,EAAE/W,KAC1D0I,EAAIA,EAAErF,IAAI0T,IACRlb,EAAET,OAASP,EACb6N,EAAE1I,EAAE5E,OAASP,EACN6N,CACX,EACApO,QAAQ8O,EAAE7N,UAAUyb,KAAO,WACvB,IAII9b,EAAoEwC,EAJpE7B,EAAIV,KAAKU,EAAGmE,EAAI7E,KAAK6E,EACrBnF,EAAIgB,EAAET,OAAQgB,EAAMF,KAAKE,IAAKua,EAAOva,EAAI,GACzC6E,EAAI/E,KAAK0a,KAAKxa,EAAI,EAAEvB,EAAE,GAAG8b,GAAOnY,EAAItC,KAAKI,IAAI,EAAE2E,GAC/C4V,EAAKvc,QAAQwG,IAAI,CAACtC,GAAG,GAAIsY,EAAKxc,QAAQwG,IAAI,CAACtC,GAAG,GAAIwL,EAAM9N,KAAK8N,IAAKD,EAAM7N,KAAK6N,IAC1E9M,EAAK,kBAAyDpC,EACjEkC,EAAIzC,QAAQwG,IAAI,CAACtC,GAAG,GAAIxB,EAAI1C,QAAQwG,IAAI,CAACtC,GAAG,GAChD,IAD2DtC,KAAKC,MAAMtB,EAAE,GACpEK,EAAE,EAAEA,EAAEL,EAAEK,IAAK6B,EAAE7B,GAAKW,EAAEX,GAC1B,QAAgB,IAAN8E,EAAmB,IAAI9E,EAAE,EAAEA,EAAEL,EAAEK,IAAK8B,EAAE9B,GAAK8E,EAAE9E,GAEvD,IADA2b,EAAG,GAAK,EACJ3b,EAAE,EAAEA,GAAGsD,EAAE,EAAEtD,IACXwC,EAAIT,EAAE/B,EAAEA,EACR2b,EAAG3b,GAAK8O,EAAItM,GACZoZ,EAAG5b,GAAK6O,EAAIrM,GACZmZ,EAAGrY,EAAEtD,GAAK8O,EAAItM,GACdoZ,EAAGtY,EAAEtD,GAAK6O,EAAIrM,GAElB,IAAIgL,EAAI,IAAIpO,QAAQ8O,EAAErM,EAAEC,GAAI+Z,EAAI,IAAIzc,QAAQ8O,EAAEyN,EAAGC,GAMjD,OALApO,EAAIA,EAAErF,IAAI0T,GACVzc,QAAQ+b,SAAS3N,EAAE7M,EAAE6M,EAAE1I,EAAE1F,QAAQkL,MAAMuR,EAAElb,GAAGvB,QAAQ+K,IAAI0R,EAAE/W,KAC1D0I,EAAIA,EAAErF,IAAI0T,IACRlb,EAAET,OAASP,EACb6N,EAAE1I,EAAE5E,OAASP,EACN6N,EAAEpF,IAAIzI,EACjB,EAGAP,QAAQ2c,SAAW,SAAkBvc,EAAEmB,GACnC,IAAIhB,EAAIgB,EAAET,OACN8b,EAAKxc,EAAEmB,GACX,GAAGE,MAAMmb,GAAK,MAAM,IAAI1Z,MAAM,4BAC9B,IACI1C,EAAwBqc,EAAGC,EAE3B5B,EAAG5a,EAAGyc,EAAQ5M,EAAG6M,EAAG1O,EAHpBX,EAAM/L,KAAK+L,IACT+L,EAAK1Z,QAAQkL,MAAM3J,GAAUyM,EAAIhN,MAAMT,GACsCkM,GAAzEzM,QAAQgJ,IAAWhJ,QAAQ8I,IAAoB6E,EAAM/L,KAAK+L,IAAqB/L,KAAK6K,KAAK5E,EAAMjG,KAAKiG,IACjGoV,EAAG,EAChB,IAAIzc,EAAE,EAAEA,EAAED,EAAEC,IAER,IADA,IAAI+E,EAAIoI,EAAI,KAAKiP,EAAG,QACX,CAEL,KADEK,EACI,GAAM,MAAM,IAAI/Z,MAAM,4BAM5B,GALAwW,EAAGlZ,GAAKe,EAAEf,GAAG+E,EACbsX,EAAKzc,EAAEsZ,GACPA,EAAGlZ,GAAKe,EAAEf,GAAG+E,EACbuX,EAAK1c,EAAEsZ,GACPA,EAAGlZ,GAAKe,EAAEf,GACPiB,MAAMob,IAAOpb,MAAMqb,GAAOvX,GAAG,OAAhC,CASA,GARAyI,EAAExN,IAAMqc,EAAGC,IAAK,EAAEvX,GAClB2V,EAAK3Z,EAAEf,GAAG+E,EACVjF,EAAKiB,EAAEf,GACPuc,EAAKxb,EAAEf,GAAG+E,EACV4K,GAAM0M,EAAGD,GAAIrX,EACbyX,GAAMJ,EAAGE,GAAIvX,EACb+I,EAAIX,EAAIlB,EAAIuB,EAAExN,IAAIiM,EAAImQ,GAAInQ,EAAIoQ,GAAIpQ,EAAIqQ,GAAIrQ,EAAIyO,GAAIzO,EAAInM,GAAImM,EAAIsQ,GAAI,QACzDlV,EAAI8F,EAAIlB,EAAI0D,EAAGnC,EAAExN,IAAIiM,EAAIuQ,EAAGhP,EAAExN,IAAIiM,EAAI0D,EAAG6M,IAAK1O,EAAE/I,EAAE+I,GApBW,MAsBjE,MADY/I,GAAG,EAT0B,CAW9C,CAER,OAAOyI,CACX,EAEAhO,QAAQkd,OAAS,SAAgB9c,EAAEsZ,EAAGnC,EAAIoF,EAASQ,EAAMC,EAASC,GAC9D,IAAIC,EAAOtd,QAAQ2c,cACG,IAAZU,IAA2BA,EAAU,CAAC,QAC9B,IAAR9F,IAAuBA,EAAM,WAChB,IAAboF,IAA4BA,EAAW,SAASpb,GAAK,OAAO+b,EAAKld,EAAEmB,EAAI,QAC7D,IAAV4b,IAAuBA,EAAQ,KAEzC,IACeN,EAAGU,EADdhd,GADJmZ,EAAK1Z,QAAQkL,MAAMwO,IACR5Y,OACP8b,EAAKxc,EAAEsZ,GACX,GAAGjY,MAAMmb,GAAK,MAAM,IAAI1Z,MAAM,2BAC9B,IAAIyK,EAAM/L,KAAK+L,IAAKH,EAAQxN,QAAQwN,MACpC+J,EAAM5J,EAAI4J,EAAIvX,QAAQiS,SACtB,IAAIuL,EAAKC,EAAGC,EAGDtZ,EAAEoV,EAAG9T,EAAEiY,EAAMC,EAAMxa,EAAEya,EAHjBC,EAAKT,EAAQU,MAAQ/d,QAAQ8H,SAASvH,GACjDgH,EAAMvH,QAAQuH,IAAwBuB,GAAb9I,QAAQqM,IAAWrM,QAAQ8I,KAAKD,EAAM7I,QAAQ6I,IAAKmV,EAAMhe,QAAQ4O,OAAQ5F,EAAMhJ,QAAQgJ,IAAKD,EAAM/I,QAAQ+I,IACnIsC,EAAMrL,QAAQqL,IAAK4S,EAAWje,QAAQ0B,SAAUqJ,EAAM/K,QAAQ+K,IAC9DkS,EAAG,EACHiB,EAAM,GAEV,IADAT,EAAKd,EAASjD,GACRuD,EAAGE,GAAO,CACZ,GAAuB,mBAAbC,GAA8BA,EAASH,EAAGvD,EAAGkD,EAAGa,EAAGK,GAAK,CAAEI,EAAM,yBAA0B,KAAO,CAC3G,IAAI7S,EAAI4S,EAASR,IAAM,CAAES,EAAM,+BAAgC,KAAO,CAEtE,IAAI7S,EAAI4S,EADRT,EAAOzS,EAAIxD,EAAIuW,EAAGL,MACO,CAAES,EAAM,uCAAwC,KAAO,CAEhF,IADAL,EAAQrQ,EAAMgQ,IACHjG,EAAK,CAAE2G,EAAI,+BAAgC,KAAO,CAK7D,IAJA9a,EAAI,EACJma,EAAMhW,EAAIkW,EAAGD,GAEbhE,EAAKE,EACCuD,EAAKE,KACJ/Z,EAAEya,EAAQtG,KAEbiC,EAAK3Q,EAAI6Q,EADTtV,EAAI2E,EAAIyU,EAAKpa,KAEbyZ,EAAKzc,EAAEoZ,IACDoD,GAAM,GAAIxZ,EAAEma,GAAO9b,MAAMob,KAC3BzZ,GAAK,KACH6Z,EAKV,GAAG7Z,EAAEya,EAAQtG,EAAK,CAAE2G,EAAM,yCAA0C,KAAO,CAC3E,GAAGjB,IAAOE,EAAO,CAAEe,EAAM,mCAAoC,KAAO,CAGpEN,EAAKrW,EADL7B,EAAIoD,EADJ4U,EAAKf,EAASnD,GACHiE,GACArZ,GACXuZ,EAAKpW,EAAIuW,EAAGpY,GACZoY,EAAKhV,EAAID,EAAIiV,EACL/U,GACS6U,EAAGrW,EAAI7B,EAAEiY,KAAMC,EAAGA,GACnBI,EAAI5Z,EAAEA,KACd4E,EAAIH,EAAImV,EAAIL,EAAGvZ,GAAG4Z,EAAI5Z,EAAEuZ,IAAKC,IACrClE,EAAKF,EACLoD,EAAKC,EACLY,EAAKC,IACHT,CACN,CACA,MAAO,CAACkB,SAAUzE,EAAItZ,EAAGwc,EAAID,SAAUc,EAAIW,WAAYN,EAAIO,WAAWpB,EAAIqB,QAASJ,EACvF,EAGAle,QAAQue,MAAQ,SAAehd,EAAEmE,EAAEtF,EAAEoe,EAAKH,EAAWH,EAAIO,GACrD5d,KAAKU,EAAIA,EACTV,KAAK6E,EAAIA,EACT7E,KAAKT,EAAIA,EACTS,KAAK2d,KAAOA,EACZ3d,KAAKwd,WAAaA,EAClBxd,KAAK4d,OAASA,EACd5d,KAAKyd,QAAUJ,CACnB,EACAle,QAAQue,MAAMtd,UAAUsY,IAAM,SAAa1K,EAAGxL,GAC1C,SAAS+W,EAAI7Y,GAAK,OAAOA,EAAEA,CAAG,CAC9B,IAMImY,EAAGF,EAAGkF,EAAG/D,EAAGC,EAAG+D,EAGyChY,EAAEf,EAAEjF,EAT5DwU,EAAMtU,KACN+d,EAAKzJ,EAAI5T,EACTqc,EAAKzI,EAAIzP,EACTqH,EAAKoI,EAAI/U,EACToe,EAAOrJ,EAAIqJ,KAKX3V,GAJI+V,EAAG9d,OAECc,KAAKC,MAEP7B,QAAQ6I,KAAKE,EAAM/I,QAAQ+I,IAAID,EAAM9I,QAAQ8I,IAevD,OAdA4Q,EAAKkF,EAAGvb,GACRmW,EAAKoF,EAAGvb,EAAE,GACVsX,EAAKiD,EAAGva,GACRuX,EAAKgD,EAAGva,EAAE,GAEVqb,EAAKhF,EAPG,IAMHF,EAAGE,GAERiF,EAAKH,EAAKnb,GACVsD,EAAImC,EAAIiE,EAAG1J,GAAK0F,EAAI4R,EAAG,GAAGjB,EAAGgF,GAAI,GAAGhF,EAAGF,KACvC5T,EAAIkD,EAAIiE,EAAG1J,EAAE,GAAG0F,EAAI6R,EAAG,GAAGpB,EAAGkF,GAAI,GAAGlF,EAAGE,KAMhC7Q,EAAIA,EAAIA,EAAIA,EAAIE,EAAI4R,GAL3Bha,EAAI,CAACyZ,EAAIvL,EAAK2K,IAAO3K,EAAK6P,GAAMtE,EAAIV,EAAKF,IAAOE,EAAKgF,GAChDtE,EAAIvL,EAAK6K,GAAMU,EAAIvL,EAAK2K,GAAMY,EAAIV,EAAKgF,GAAMtE,EAAIZ,EAAKkF,GACtDtE,EAAIvL,EAAK6K,IAAO7K,EAAK6P,GAAMtE,EAAIZ,EAAKE,IAAOF,EAAKkF,IAC/C7P,EAAK6K,GAAMU,EAAIvL,EAAK2K,IAAO3K,EAAK6P,GAAMtE,EAAIV,EAAGF,IAAOE,EAAKgF,IACzD7P,EAAK2K,GAAMY,EAAIvL,EAAK6K,IAAO7K,EAAK6P,GAAMtE,EAAIV,EAAGF,IAAOA,EAAKkF,KAC/B,IACT3V,EAAI4V,EAAGhe,EAAE,KACToI,EAAI6R,EAAGja,EAAE,KACToI,EAAKpC,EAAEhG,EAAE,KACToI,EAAKnD,EAAEjF,EAAE,IACpC,EACAX,QAAQue,MAAMtd,UAAUwY,GAAK,SAAYlY,GACrC,IAAIf,EAAE6C,EAAEzC,EAAEiB,EAAQD,KAAKC,MACvB,GAAgB,iBAANN,EAAgB,CACtB,IAAIhB,EAAIgB,EAAET,OAAQuB,EAAMrB,MAAMT,GAC9B,IAAIC,EAAED,EAAE,GAAO,IAALC,IAASA,EACf6B,EAAI7B,GAAKK,KAAK4Y,GAAGlY,EAAEf,IAEvB,OAAO6B,CACX,CACA,IAAIqX,EAAK7Y,KAAKU,EAEd,IADAf,EAAI,EAAG6C,EAAIqW,EAAG5Y,OAAO,EACfuC,EAAE7C,EAAE,GAEHkZ,EADH9Y,EAAIiB,EAAM,IAAKrB,EAAE6C,MACL9B,EAAGf,EAAII,EACdyC,EAAIzC,EAEb,OAAOC,KAAK0Y,IAAIhY,EAAEf,EACtB,EAEAR,QAAQ6e,MAAQ,SAAenF,EAAGF,EAAGmB,EAAGva,EAAEmX,EAAI4F,EAAM2B,QAC9B,IAARvH,IAAuBA,EAAM,WACnB,IAAV4F,IAAyBA,EAAQ,KAC3C,IAA2C4B,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAgBhDC,EAAGhc,EAG6BuX,EAAG0E,EAGzCC,EAAIC,EAAIC,EAtBRb,EAAK,CAAClF,GAAKkE,EAAK,CAACjD,GAAK5N,EAAK,CAAC3M,EAAEsZ,EAAGiB,IAAyB6D,EAAO,GAEjEkB,EAAK,CAAC,EAAE,GAAG,EAAE,IACbC,EAAK,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GACtBC,EAAK,CAAC,MAAM,MAAM,MAAM,KAAK,MAAM,MAAM,IAAI,KAC7CC,EAAK,CAAC,KAAK,MAAM,IAAI,GAAG,MAAM,KAAK,GAAG,KAAK,KAAK,OAChDnd,EAAI,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,IAC7Cod,EAAK,CAAC,mBACA,EACA,mBACA,mBACA,oBACA,mBACA,UAAa,WACnBnd,EAAI,CAAC,GAAI,GAAK,GAAI,EAAE,EAAE,EAAE,GACxB+R,EAAI,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,KAAK,MAAM,QAAQ,GAAG,IAAI,EAAE,IAC1DlU,EAAI,EACJ+E,GAAKiU,EAAGE,GAAI,GACZuD,EAAK,EACLpU,EAAM7I,QAAQ6I,IAAKE,EAAM/I,QAAQ+I,IACjBlB,GAAVjG,KAAK+L,IAAW/L,KAAKiG,KAAK4E,EAAM7K,KAAK6K,IAAKhB,EAAUzL,QAAQyL,QAAQzJ,EAAMJ,KAAKI,IACrFoJ,EAAMpL,QAAQoL,IAAK9B,EAAKtJ,QAAQsJ,GAAIJ,EAAMlJ,QAAQkJ,IAElD7G,GAF6DrC,QAAQ8I,IAE/D,IAAI9I,QAAQue,MAAMK,EAAGhB,EAAG7Q,EAAGyR,GAAM,EAAE,KAE7C,IADoB,mBAAVM,IAAsBS,EAAKT,EAAMpF,EAAGiB,IACxCjB,EAAGF,GAAMyD,EAAGE,GAad,KAZEF,EACCvD,EAAGnU,EAAEiU,IAAIjU,EAAIiU,EAAGE,GACnBqF,EAAK3e,EAAEsZ,EAAG/W,EAAE,GAAG4C,EAAkBsD,EAAI8R,EAAG5R,EA3BnC,GA2B6CxD,EAAEwH,EAAGvM,MACvDwe,EAAK5e,EAAEsZ,EAAG/W,EAAE,GAAG4C,EAAcsD,EAAIA,EAAI8R,EAAG5R,EAAI2W,EAAG,GAAGna,EAAEwH,EAAGvM,KAAKuI,EAAI2W,EAAG,GAAGna,EAAEwZ,KACxEE,EAAK7e,EAAEsZ,EAAG/W,EAAE,GAAG4C,EAAUsD,EAAIA,EAAIA,EAAI8R,EAAG5R,EAAI4W,EAAG,GAAGpa,EAAEwH,EAAGvM,KAAKuI,EAAI4W,EAAG,GAAGpa,EAAEwZ,IAAKhW,EAAI4W,EAAG,GAAGpa,EAAEyZ,KACzFE,EAAK9e,EAAEsZ,EAAG/W,EAAE,GAAG4C,EAAMsD,EAAIA,EAAIA,EAAIA,EAAI8R,EAAG5R,EAAI6W,EAAG,GAAGra,EAAEwH,EAAGvM,KAAKuI,EAAI6W,EAAG,GAAGra,EAAEwZ,IAAKhW,EAAI6W,EAAG,GAAGra,EAAEyZ,IAAKjW,EAAI6W,EAAG,GAAGra,EAAE0Z,KAC1GE,EAAK/e,EAAEsZ,EAAG/W,EAAE,GAAG4C,EAAEsD,EAAIA,EAAIA,EAAIA,EAAIA,EAAI8R,EAAG5R,EAAI8W,EAAG,GAAGta,EAAEwH,EAAGvM,KAAKuI,EAAI8W,EAAG,GAAGta,EAAEwZ,IAAKhW,EAAI8W,EAAG,GAAGta,EAAEyZ,IAAKjW,EAAI8W,EAAG,GAAGta,EAAE0Z,IAAKlW,EAAI8W,EAAG,GAAGta,EAAE2Z,KAE3HE,EAAKhf,EAAEsZ,EAAGnU,EADVqV,EAAK/R,EAAIA,EAAIA,EAAIA,EAAIA,EAAI8R,EAAG5R,EAAIgE,EAAGvM,GAAG+E,EAAE7C,EAAE,KAAKqG,EAAIiW,EAAGzZ,EAAE7C,EAAE,KAAKqG,EAAIkW,EAAG1Z,EAAE7C,EAAE,KAAKqG,EAAImW,EAAG3Z,EAAE7C,EAAE,KAAKqG,EAAIoW,EAAG5Z,EAAE7C,EAAE,OAG/E4c,EAAV,iBADjBD,EAAKxW,EAAIA,EAAIA,EAAIA,EAAIA,EAAIE,EAAIgE,EAAGvM,GAAG+E,EAAEmP,EAAE,IAAI3L,EAAIiW,EAAGzZ,EAAEmP,EAAE,KAAK3L,EAAIkW,EAAG1Z,EAAEmP,EAAE,KAAK3L,EAAImW,EAAG3Z,EAAEmP,EAAE,KAAK3L,EAAIoW,EAAG5Z,EAAEmP,EAAE,KAAK3L,EAAIqW,EAAG7Z,EAAEmP,EAAE,MACnFjI,EAAI4S,GAC1B5T,EAAQ4T,IACV9H,GAEP,GAAGmC,GADHnU,EAAI,GAAIA,EAAEvD,EAAIuV,EAAI+H,EAAM,QACZ5F,EAAI,CACZrX,EAAI6b,IAAM,6BACV,KACJ,MALJ,CAmBA,GAXAM,EAAKhe,GAAKqI,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI8R,EAC1B5R,EAAIgE,EAAGvM,GAAG+E,EAAEua,EAAG,KACf/W,EAAIiW,EAAMzZ,EAAEua,EAAG,KACf/W,EAAIkW,EAAM1Z,EAAEua,EAAG,KACf/W,EAAImW,EAAM3Z,EAAEua,EAAG,KACf/W,EAAIoW,EAAM5Z,EAAEua,EAAG,KACf/W,EAAIqW,EAAM7Z,EAAEua,EAAG,KAEvBlB,IADEpe,GACMkZ,EAAGnU,EACXqY,EAAGpd,GAAKoa,EACR7N,EAAGvM,GAAK4e,EACY,mBAAVN,EAAsB,CAC5B,IAAIiB,EAAyBlR,EAAtBmR,EAAKtG,EAAGuG,EAAKvG,EAAG,GAAInU,EAI3B,GAHAia,EAAKV,EAAMmB,EAAGzB,EAAKhe,EAAE,IAEjB4K,EADJqU,EAAKvW,EAAII,EAAGiW,EAAG,GAAGjW,EAAG,EAAEkW,OACRQ,EAAKC,EAAeV,EAAKC,EAAIA,EAAKV,EAAzBmB,EAAKvG,EAAGnU,EAA0BqV,GAAK6E,EAAKvW,EAAII,EAAGiW,EAAG,GAAGjW,EAAG,EAAEkW,KACnFpU,EAAIqU,GAAK,CAGR,IAFA,IAAYS,EAAGC,EACX/E,EAAK,EAAGgF,EAAK,EAAKC,EAAK,IAClB,CACL,GAAiB,iBAAPd,EAAiB1Q,GAAMwR,EAAGb,EAAGQ,EAAGI,EAAGb,EAAGU,IAAKI,EAAGb,EAAGY,EAAGb,QAG1D,IADA1Q,EAAKoR,EACD5c,EAAEkc,EAAGze,OAAO,GAAO,IAALuC,IAASA,EACpBkc,EAAGlc,GAAG,GAAKmc,EAAGnc,GAAG,IAAGwL,EAAKhH,EAAIgH,GAAIwR,EAAGb,EAAGnc,GAAG2c,EAAGI,EAAGb,EAAGlc,GAAG4c,IAAKI,EAAGb,EAAGnc,GAAG+c,EAAGb,EAAGlc,MAGrF,GAAGwL,GAAMmR,GAAMnR,GAAMoR,EAAI,MAEzBE,EAAKrB,EAAMjQ,EADXkR,EAAK1d,EAAIkX,IAAI1K,EAAIrO,EAAE,IAGhB4K,EADH8U,EAAKhX,EAAII,EAAGiW,EAAG,GAAGjW,EAAG,EAAE6W,MAEnBF,EAAKpR,EACL2Q,EAAKW,EACLV,EAAKS,EACLG,EAAK,GACQ,IAAVjF,EAAagF,GAAM,GACjBA,EAAK,EACVhF,GAAQ,IAER4E,EAAKnR,EACL0Q,EAAKY,EACLC,EAAK,EACO,IAAThF,EAAYiF,GAAM,GAChBA,EAAK,EACVjF,EAAO,EAEf,CAQA,OAPAR,EAAKvY,EAAIkX,IAAI,IAAKG,EAAG7K,GAAIrO,EAAE,GAC3B6B,EAAIjC,EAAEI,GAAKJ,EAAEyO,EAAGkR,GAChB1d,EAAId,EAAEf,GAAKqO,EACXxM,EAAIqD,EAAElF,GAAKuf,EACX1d,EAAImc,KAAKhe,EAAE,GAAKoa,EAChBvY,EAAIoc,OAASgB,EACbpd,EAAIgc,WAAapB,EACV5a,CACX,CACJ,CACAqX,GAAMnU,EACNoV,EAAKC,EACL2E,EAAKC,EACLja,EAAIsC,EAAI,GAAItC,EAAEvD,EAAIuV,EAAI+H,EAAM,KAAM,EAAE/Z,EA9DpC,CAiEJ,OADAlD,EAAIgc,WAAapB,EACV5a,CACX,EAGArC,QAAQsgB,GAAK,SAASrc,EAAGsc,GACvBA,EAAOA,IAAQ,EAEf,IACI/f,EAAG6C,EAAGzC,EAAG4f,EAAQC,EAAKC,EAAIC,EAAIhZ,EAC9BgG,EAFAlB,EAAM7K,KAAK6K,IAGXlM,EAAI0D,EAAEnD,OAAQgS,EAAKvS,EAAE,EACrB6U,EAAI,IAAIpU,MAAMT,GAGlB,IAFIggB,IAAMtc,EAAIjE,QAAQkL,MAAMjH,IAEvBrD,EAAI,EAAGA,EAAIL,IAAKK,EAAG,CAItB,IAHA+f,EAAK/f,EAEL+M,EAAMlB,GADNiU,EAAKzc,EAAErD,IACMA,IACRyC,EAAIzC,EAAI,EAAGyC,EAAI9C,IAAK8C,EAEnBsK,GADJ6S,EAAS/T,EAAIxI,EAAEZ,GAAGzC,OAEhB+M,EAAM6S,EACNG,EAAKtd,GAaT,IAVA+R,EAAExU,GAAK+f,EAEHA,GAAM/f,IACRqD,EAAErD,GAAKqD,EAAE0c,GACT1c,EAAE0c,GAAMD,EACRA,EAAKzc,EAAErD,IAGT6f,EAAMC,EAAG9f,GAEJJ,EAAII,EAAI,EAAGJ,EAAID,IAAKC,EACvByD,EAAEzD,GAAGI,IAAM6f,EAGb,IAAKjgB,EAAII,EAAI,EAAGJ,EAAID,IAAKC,EAAG,CAE1B,IADAmH,EAAK1D,EAAEzD,GACF6C,EAAIzC,EAAI,EAAGyC,EAAIyP,IAAMzP,EACxBsE,EAAGtE,IAAMsE,EAAG/G,GAAK8f,EAAGrd,GAEpBsE,IADEtE,IACOsE,EAAG/G,GAAK8f,EAAGrd,GAEnBA,IAAIyP,IAAInL,EAAGtE,IAAMsE,EAAG/G,GAAK8f,EAAGrd,GACjC,CACF,CAEA,MAAO,CACLid,GAAIrc,EACJmR,EAAIA,EAER,EAEApV,QAAQ4gB,QAAU,SAAiBxK,EAAK1T,GACtC,IAAIlC,EAAG6C,EAKHwd,EAAIC,EAAWC,EAJfT,EAAKlK,EAAIkK,GACT/f,EAAM+f,EAAGxf,OACTS,EAAIvB,QAAQkL,MAAMxI,GAClB0S,EAAMgB,EAAIhB,EAGd,IAAK5U,EAAED,EAAE,GAAO,IAALC,IAASA,EAAGe,EAAEf,GAAKkC,EAAElC,GAChC,IAAKA,EAAI,EAAGA,EAAID,IAAKC,EASnB,IARAqgB,EAAKzL,EAAE5U,GACH4U,EAAE5U,KAAOA,IACXugB,EAAMxf,EAAEf,GACRe,EAAEf,GAAKe,EAAEsf,GACTtf,EAAEsf,GAAME,GAGVD,EAAMR,EAAG9f,GACJ6C,EAAI,EAAGA,EAAI7C,IAAK6C,EACnB9B,EAAEf,IAAMe,EAAE8B,GAAKyd,EAAIzd,GAIvB,IAAK7C,EAAID,EAAI,EAAGC,GAAK,IAAKA,EAAG,CAE3B,IADAsgB,EAAMR,EAAG9f,GACJ6C,EAAI7C,EAAI,EAAG6C,EAAI9C,IAAK8C,EACvB9B,EAAEf,IAAMe,EAAE8B,GAAKyd,EAAIzd,GAGrB9B,EAAEf,IAAMsgB,EAAItgB,EACd,CAEA,OAAOe,CACT,EAEAvB,QAAQghB,MAAQ,SAAe/c,EAAEvB,EAAE6d,GAAQ,OAAOvgB,QAAQ4gB,QAAQ5gB,QAAQsgB,GAAGrc,EAAEsc,GAAO7d,EAAI,EAG1F1C,QAAQihB,WAAa,SAAoBhd,GACrC,IAGIzD,EAAE6C,EAAEzC,EAAE8N,EAAE/G,EAAG4E,EAAGiC,EAAE/L,EAHhB2B,EAAIpE,QAAQqE,IAAIJ,GAAIC,EAAIE,EAAE,GAAI7D,EAAI6D,EAAE,GACpCsI,EAAI1M,QAAQ8H,SAAS5D,GACrBkR,EAAIpU,MAAMkD,GAEVuI,EAAM7K,KAAK6K,IACXrC,EAAQpK,QAAQoK,MAEpB,IADAnG,EAAIjE,QAAQkL,MAAMjH,GACdzD,EAAE,EAAEA,EAAE0D,IAAI1D,EAAG,CAIb,IAHAI,EAAI,EACJ+G,EAAK1D,EAAEzD,GACP+L,EAAKG,EAAElM,GACH6C,EAAE,EAAEA,EAAE9C,IAAI8C,EAAMoJ,EAAI9E,EAAG/G,IAAI6L,EAAI9E,EAAGtE,MAAKzC,EAAEyC,GAI7C,IAHA+R,EAAE5U,GAAKI,EACPwJ,EAAMmC,EAAG5E,EAAG/G,IACZwJ,EAAMzC,EAAGA,EAAG/G,IACRyC,EAAE,EAAEA,EAAEa,IAAIb,EAAG,GAAGA,IAAI7C,EAAG,CAEvB,IADUiC,GAAV+L,EAAIvK,EAAEZ,IAAUzC,GACZ8N,EAAEnO,EAAE,GAAO,IAALmO,IAASA,EAAGF,EAAEE,IAAM/G,EAAG+G,GAAGjM,EAEpC,IADA+L,EAAI9B,EAAErJ,GACFqL,EAAExK,EAAE,GAAO,IAALwK,IAASA,EAAGF,EAAEE,IAAMnC,EAAGmC,GAAGjM,CACxC,CACJ,CACA,MAAO,CAACiK,EAAEA,EAAGzI,EAAEA,EAAGmR,EAAEA,EACxB,EAEApV,QAAQkhB,UAAY,SAAmBve,EAAEsB,EAAEvB,EAAE6U,EAAI4F,EAAM5b,EAAEsB,GACrD,IAC+B6C,EAOuBsM,EACPrO,EAE3C1D,EAXAqL,EAAMtL,QAAQsL,IAAwBvC,GAAb/I,QAAQ8B,IAAW9B,QAAQ+I,KAAKD,EAAM9I,QAAQ8I,IAAKvB,EAAMvH,QAAQuH,IAAKyB,EAAMhJ,QAAQgJ,IAAKH,EAAM7I,QAAQ6I,IAChI3E,EAAIvB,EAAE7B,OAAQP,EAAImC,EAAE5B,OACpBqgB,GAAY,EACZtU,EAAQ,EAC4CG,GAAxChN,QAAQgN,UAAU/I,GAAUjE,QAAQohB,IAAgBphB,QAAQgN,WAA6BS,GAAbzN,QAAQwJ,IAAY5H,KAAK6L,MAAMhB,EAAM7K,KAAK6K,IAExF5E,GADlC7H,QAAQmK,MACTnK,QAAQyL,QAAezL,QAAQoL,IAAUxJ,KAAKiG,KACrDwD,EAAMrL,QAAQqL,IAAK9B,EAAKvJ,QAAQuJ,GAChC5C,EAAI3F,MAAMkD,GAAI+I,EAAKjM,MAAMT,GACzBygB,GAD8BhhB,QAAQwG,IAAI,CAACjG,GAAG,GACtCP,QAAQghB,OAAOrb,EAAImD,EAAIpG,EAAE6E,EAAItD,EAAE1C,IACvC8f,EAAQ9Z,EAAI5E,EAAEA,GAElB,IAAIgB,EAVyB,EAUhBA,EAAMwZ,IAAQxZ,EAAO,CAC9B,IAAInD,EAAIoC,EACR,IAAIpC,EAAED,EAAE,GAAO,IAALC,IAASA,EAAGyM,EAAGzM,GAAKwI,EAAI/E,EAAEzD,GAAGmF,EAAEnF,IACzC,IAAI0M,EAAKF,EAAUC,GACnB,IAAIzM,EAAE0D,EAAE,GAAO,IAAL1D,IAASA,EAAGmG,EAAEnG,GAAe8K,EAAI4B,EAAG1M,IAC9CqM,EAAQ,IAAKJ,EAAI4U,EAAM9Z,EAAI5E,EAAEgE,IAC7B,IAAI2a,EAAK,IAAI7T,EAAK4T,EAAM9Z,EAAIZ,EAAEA,IAI9B,MAHIjF,SAASmL,IAAUA,EAAMyU,KAAIzU,EAAQyU,GACzCrhB,EAAI4I,EAAIlG,EAAEoG,EAAI8D,EAAMlG,IACpBqL,EAAIzK,EAAI2F,EAAGD,GACPzM,EAAE0D,EAAE,GAAO,IAAL1D,IAASA,EAAGwR,EAAExR,GAAGA,IAAM,EACjCoC,EAAIoe,EAAMhP,EAAEhJ,EAAI/I,EAAE4M,IAAO,GACzB,IAAIqO,EAAKlS,EAAIrD,EAAE4B,EAAItD,EAAErB,IACjBQ,EAAI,EACR,IAAI5C,EAAED,EAAE,GAAO,IAALC,IAASA,EAAM0a,EAAG1a,GAAG,IAAG4C,EAAIyE,EAAIzE,GAAG,KAAM8X,EAAG1a,KAGtD,GAFAkF,EAAIoD,EAAIvH,EAAEwH,EAAInG,EAAEQ,KAEZiI,EAAI9B,EADR5D,EAAImD,EAAIpG,EAAE6E,EAAItD,EAAEyB,IACH,IAAK,MAAO,CAAEyY,SAAU5c,EAAG+c,QAAS,GAAID,WAAY1a,GAEjE,GADApC,EAAImE,EACDmH,EAAM0K,EAAK,MAAO,CAAE4G,SAAUzY,EAAG4Y,QAAS,GAAID,WAAY1a,GAC7D,GAAGd,EAAM,CACL,IAAIuB,EAAImD,EAAI5E,EAAE1C,GAAIshB,EAAKha,EAAItD,EAAEhE,GAE7B,IADAkhB,GAAY,EACR3gB,EAAED,EAAE,GAAO,IAALC,IAASA,EAAG,GAAG4D,EAAEmd,EAAG/gB,GAAG,EAAG,CAAE2gB,GAAY,EAAO,KAAO,CACpE,MACkBA,IAAX5f,EAAE2C,EAAE,IAAI,GAGf,GAAGid,EAAW,MAAO,CAAEhD,SAAUzY,EAAG4Y,QAAS,YAAaD,WAAY1a,EAC1E,CACA,MAAO,CAAEwa,SAAU5c,EAAG+c,QAAS,mCAAoCD,WAAW1a,EAClF,EAEA3D,QAAQwhB,SAAW,SAAkB7e,EAAEsB,EAAEvB,EAAE6U,EAAI4F,GAC3C,IAAIjZ,EAAIvB,EAAE7B,OAAQP,EAAImC,EAAE5B,OACqCgI,GAAnD9I,QAAQsL,IAAWtL,QAAQ8B,IAAW9B,QAAQ+I,IAAW/I,QAAQ8I,KAAKvB,EAAMvH,QAAQuH,IAC1Fka,GADqGzhB,QAAQgJ,IAAWhJ,QAAQ6I,IAC3H7I,QAAQwG,IAAI,CAACtC,GAAG,GAAGwO,OAAO,CAAC,KAChC1E,EAAIhO,QAAQwG,IAAI,CAACjG,EAAE,IAAI,GACvB0M,EAAKjN,QAAQmO,YAAY,CAAC,CAAClK,EAAwB+J,KACnD0T,EAAKhf,EACLgD,EAAI1F,QAAQwG,IAAI,CAACtC,GAAG,GAAGwO,OAAO9Q,KAAK+L,IAAI,EAAE3N,QAAQ2L,IAAI3L,QAAQ+K,IAAIrI,KAAK,GACtEgX,EAAK1Z,QAAQkhB,UAAUO,EAAGxU,EAAGyU,EAAGnK,EAAI4F,EAAMzX,GAAE,GAC5CnE,EAAIvB,QAAQkL,MAAMwO,EAAGyE,UAGzB,GAFA5c,EAAET,OAASoD,EACDlE,QAAQ4L,IAAI9C,EAAIpG,EAAE6E,EAAItD,EAAE1C,KAC3B,EAAK,MAAO,CAAE4c,SAAUwD,IAAKrD,QAAS,aAAcD,WAAY3E,EAAG2E,YAC1E,IAAIhc,EAAMrC,QAAQkhB,UAAUve,EAAGsB,EAAGvB,EAAG6U,EAAK4F,EAAMzD,EAAG2E,WAAY9c,GAAG,GAElE,OADAc,EAAIgc,YAAc3E,EAAG2E,WACdhc,CACX,EAEArC,QAAQ4hB,QAAU,SAAiBjf,EAAEsB,EAAEvB,EAAEmf,EAAIC,EAAIvK,EAAI4F,GAGjD,QAFoB,IAAVA,IAAuBA,EAAQ,UACvB,IAAR5F,IAAqBA,EAAMvX,QAAQiS,cAC3B,IAAR4P,EAAqB,OAAO7hB,QAAQwhB,SAAS7e,EAAEsB,EAAEvB,EAAE6U,EAAI4F,GACjE,IAKI3c,EALA0D,EAAI2d,EAAI/gB,OAAQP,EAAIshB,EAAI,GAAG/gB,OAAQ+K,EAAI5H,EAAEnD,OACzCgN,EAAI9N,QAAQihB,WAAWY,GACvBlM,EAAQ3V,QAAQwG,IAAI,CAACjG,GAAG,GACxB6U,EAAItH,EAAEsH,EACNrD,EAAI,GAER,IAAIvR,EAAE4U,EAAEtU,OAAO,GAAO,IAALN,IAASA,EAAGmV,EAAMP,EAAE5U,IAAM,EAC3C,IAAIA,EAAED,EAAE,GAAO,IAALC,IAASA,EAAiB,IAAXmV,EAAMnV,IAAQuR,EAAExP,KAAK/B,GAC9C,IAAIP,EAAID,QAAQ+N,SACZrB,EAAI1M,QAAQ0N,SAAS,EAAExJ,EAAE,GAAI8J,EAAIhO,QAAQ0N,SAAS,EAAE7B,EAAE,GACtDkW,EAAO9hB,EAAE4hB,EAAInV,EAAEqF,GAAI7E,EAAKjN,EAAEgE,EAAE+J,EAAEoH,GAAI4M,EAAK/hB,EAAEgE,EAAE+J,EAAE+D,GAAIxK,EAAMvH,QAAQuH,IAAKuB,EAAM9I,QAAQ8I,IAClF4W,EAAKnY,EAAI2F,EAAGY,EAAEpB,GACdiT,EAAK7W,EAAIkZ,EAAGza,EAAImY,EAAGqC,IAAQE,EAAKnZ,EAAIpG,EAAE6E,EAAImY,EAAGoC,IAC7CI,EAAKlhB,MAAMoU,EAAEtU,QAASqhB,EAAKnhB,MAAM+Q,EAAEjR,QACvC,IAAIN,EAAE4U,EAAEtU,OAAO,GAAO,IAALN,IAASA,EAAG0hB,EAAG1hB,GAAKmC,EAAEyS,EAAE5U,IACzC,IAAIA,EAAEuR,EAAEjR,OAAO,GAAO,IAALN,IAASA,EAAG2hB,EAAG3hB,GAAKmC,EAAEoP,EAAEvR,IACzC,IAAI4hB,EAAKtZ,EAAIqZ,EAAG5a,EAAI2a,EAAG3a,EAAIuG,EAAEpB,EAAEqV,KAC3BM,EAAIriB,QAAQwhB,SAASY,EAAGzC,EAAGsC,EAAG1K,EAAI4F,GAClCmF,EAAKD,EAAElE,SACX,GAAGmE,GAAKA,EAAI,OAAOD,EACnB,IAAI7I,EAAKjS,EAAIuG,EAAEpB,EAAE5D,EAAIgZ,EAAIva,EAAIwa,EAAKO,KAC9B/gB,EAAIP,MAAM2B,EAAE7B,QAChB,IAAIN,EAAE4U,EAAEtU,OAAO,GAAO,IAALN,IAASA,EAAGe,EAAE6T,EAAE5U,IAAMgZ,EAAGhZ,GAC1C,IAAIA,EAAEuR,EAAEjR,OAAO,GAAO,IAALN,IAASA,EAAGe,EAAEwQ,EAAEvR,IAAM8hB,EAAG9hB,GAC1C,MAAO,CAAE2d,SAAU5c,EAAG+c,QAAQ+D,EAAE/D,QAASD,WAAYgE,EAAEhE,WAC3D,EAEAre,QAAQuiB,QAAU,SAAiBC,GAC5BA,aAAeC,QAAUD,EAAIlf,MAAM,MACtC,IAGI9C,EAAE6C,EAAEsC,EACJ+c,EAJAC,EAAQ,EACRC,EAAS,CAAC,gBAAgB,OAAO,OAAO,UAAU,MAAM,SAAS,UACjEriB,EAAIiiB,EAAI1hB,OACFwN,EAAE,EAAEuU,EAAO,CAAC,EAAGC,EAAO,GAAIC,EAAK,EAAGC,EAAO,CAAC,EAAGC,EAAK,EAExDtgB,EAAI,GAAIsB,EAAI,GAAIvB,EAAI,GACxB,SAASwgB,EAAIxO,GAAK,MAAM,IAAIxR,MAAM,YAAYwR,EAAE,UAAUlU,EAAE,KAAKgiB,EAAIhiB,GAAG,oBAAoBoiB,EAAOD,GAAO,KAAO,CACjH,IAAIniB,EAAE,EAAEA,EAAED,IAAIC,EAAG,CAEb,IAAI2iB,GADJxd,EAAI6c,EAAIhiB,IACGsD,MAAM,QACbnD,EAAI,GACR,IAAI0C,EAAE,EAAEA,EAAE8f,EAAGriB,SAASuC,EAAc,KAAR8f,EAAG9f,IAAS1C,EAAE4B,KAAK4gB,EAAG9f,IAClD,GAAgB,IAAb1C,EAAEG,OAAL,CACA,IAAIuC,EAAE,EAAEA,EAAEuf,EAAO9hB,QAAe6E,EAAEjC,OAAO,EAAEkf,EAAOvf,GAAGvC,UAAY8hB,EAAOvf,KAA9CA,GAC1B,GAAGA,EAAEuf,EAAO9hB,QAGR,GAFA6hB,EAAQtf,EACD,IAAJA,IAASqf,EAAO/hB,EAAE,IACd,IAAJ0C,EAAO,MAAO,CAAEqf,KAAKA,EAAM/f,EAAEA,EAAGsB,EAAEjE,QAAQgN,UAAU/I,GAAIvB,EAAEA,EAAGmgB,KAAKA,EAAMG,KAAKA,QAGpF,OAAOL,GACP,KAAK,EAAG,KAAK,EAAGO,EAAI,mBACpB,KAAK,EACD,OAAOviB,EAAE,IACT,IAAK,IAAY,IAAJ2N,EAAOA,EAAI3N,EAAE,GAASuiB,EAAI,sBAAuB,MAC9D,IAAK,IAAKL,EAAKliB,EAAE,IAAMoiB,EAAID,EAAKC,GAAM,EAAGrgB,EAAEqgB,GAAM,IAAKA,EAAI,MAC1D,IAAK,IAAKF,EAAKliB,EAAE,IAAMoiB,EAAID,EAAKC,IAAO,EAAErgB,EAAEqgB,GAAM,IAAKA,EAAI,MAC1D,IAAK,IAAKF,EAAKliB,EAAE,IAAMoiB,EAAID,EAAKC,GAAM,EAAErgB,EAAEqgB,GAAM,IAAKA,EAAI,MACzD,QAASG,EAAI,eAAeljB,QAAQsB,YAAYX,IAEhD,MACJ,KAAK,EACGqiB,EAAKlgB,eAAenC,EAAE,MAAOqiB,EAAKriB,EAAE,IAAMsiB,EAAItgB,EAAEsgB,GAAM,EAAGhf,EAAEgf,GAAMjjB,QAAQwG,IAAI,CAACuc,GAAI,KAAME,GAC5F,IAAItc,EAAIqc,EAAKriB,EAAE,IACf,IAAI0C,EAAE,EAAEA,EAAE1C,EAAEG,OAAOuC,GAAG,EAClB,GAAG1C,EAAE0C,KAAOiL,EAAZ,CACA,IAAI1I,EAAIid,EAAKliB,EAAE0C,IACfY,EAAE0C,GAAGf,IAAMkd,EAAKld,GAAG,GAAG,EAAE,GAAGzD,WAAWxB,EAAE0C,EAAE,GAFY,MAArCV,EAAEgE,GAAKxE,WAAWxB,EAAE0C,EAAE,IAI3C,MACJ,KAAK,EACD,IAAIA,EAAE,EAAEA,EAAE1C,EAAEG,OAAOuC,GAAG,EAAGX,EAAEmgB,EAAKliB,EAAE0C,MAAQyf,EAAKD,EAAKliB,EAAE0C,KAAK,GAAG,EAAE,GAAGlB,WAAWxB,EAAE0C,EAAE,IAClF,MACJ,KAAK,EAAa,MAClB,KAAK,EAAG6f,EAAI,kBAhCe,CAkC/B,CACAA,EAAI,qCACR,EAyGAljB,QAAQojB,WAAa,CAAEphB,IAAIJ,KAAKI,IAAKuL,OAAO3L,KAAK2L,QAEhD,SAAU8V,EAAMC,EAAMC,EAAOC,EAAQC,EAAcC,EAAUC,GA4D9D,SAASC,EAAK9d,GACZ,IAAI1C,EAAGygB,EAAGlS,EAAK9Q,KAAMijB,EAAShe,EAAIhF,OAC9BN,EAAI,EAAG6C,EAAIsO,EAAGnR,EAAImR,EAAGtO,EAAIsO,EAAGzN,EAAI,EAQpC,IAPAyN,EAAG0Q,EAAI,GACP1Q,EAAGhP,EAAI,GAGFmhB,IAAUhe,EAAM,CAACge,MAGftjB,EAAI+iB,GAAS5R,EAAG0Q,EAAE7hB,GAAKA,IAC9B,IAAKA,EAAI,EAAGA,EAAI+iB,EAAO/iB,IAErB6C,EAAI0gB,EAAQ1gB,GADZD,EAAIuO,EAAG0Q,EAAE7hB,IACWsF,EAAItF,EAAIsjB,IAC5BD,EAAIlS,EAAG0Q,EAAEhf,GACTsO,EAAG0Q,EAAE7hB,GAAKqjB,EACVlS,EAAG0Q,EAAEhf,GAAKD,EAIZuO,EAAG1R,EAAI,SAAiB0D,GACtB,IAAIS,EAAIuN,EAAG0Q,EACP7hB,EAAIujB,EAAQpS,EAAGnR,EAAI,GAAQ4C,EAAIgB,EAAE5D,GACjC6C,EAAI0gB,EAAQpS,EAAGtO,EAAID,GAAQygB,EAAIzf,EAAEf,GACrCe,EAAE5D,GAAKqjB,EACPzf,EAAEf,GAAKD,EAEP,IADA,IAAIyC,EAAIzB,EAAE2f,EAAQ3gB,EAAIygB,MACblgB,GACPnD,EAAIujB,EAAQvjB,EAAI,GACIqjB,EAAIzf,EAAxBf,EAAI0gB,EAAQ1gB,GADQD,EAAIgB,EAAE5D,MAE1B4D,EAAE5D,GAAKqjB,EACPzf,EAAEf,GAAKD,EACPyC,EAAIA,EAAI0d,EAAQnf,EAAE2f,EAAQ3gB,EAAIygB,IAIhC,OAFAlS,EAAGnR,EAAIA,EACPmR,EAAGtO,EAAIA,EACAwC,CACT,EAGA8L,EAAG1R,EAAEsjB,EACP,CASA,SAASS,EAAQC,EAAKC,EAAOC,EAAQC,EAAMC,GAGzC,GAFAF,EAAS,GACTE,SAAY,EACRH,GAAgB,UAAPG,EACX,IAAKD,KAAQH,EACX,GAAIG,EAAKljB,QAAQ,KAAO,EACtB,IAAMijB,EAAO5hB,KAAKyhB,EAAQC,EAAIG,GAAOF,EAAQ,GAAK,CAAE,MAAOxP,GAAI,CAIrE,OAAQyP,EAAOrjB,OAASqjB,EAASF,GAAc,UAAPI,EAAkB,KAAO,GACnE,CASA,SAASC,EAAOC,EAAMze,EAAK0e,EAAOnhB,GAGhC,IAFAkhB,GAAQ,GACRC,EAAQ,EACHnhB,EAAI,EAAGA,EAAIkhB,EAAKzjB,OAAQuC,IAC3ByC,EAAIie,EAAQ1gB,IACV0gB,GAASS,GAA2B,GAAlB1e,EAAIie,EAAQ1gB,KAAYkhB,EAAKE,WAAWphB,IAG9D,IAAKA,KADLkhB,EAAO,GACGze,EAAOye,GAAQ9B,OAAOiC,aAAa5e,EAAIzC,IACjD,OAAOkhB,CACT,CAMA,SAASR,EAAQxjB,GAAK,OAAW,IAAJA,CAAiB,CA3I9C+iB,EAAiB,WAAI,SAAoBiB,EAAMI,GAC7C,IACIC,EADA9e,EAAM,GAsCV,OAlCAye,EAAOD,EAAON,EACZW,EAAc,CAACJ,EAAMlB,GACrBwB,UAAU/jB,OAASyjB,EACnB,EAAC,IAAI9jB,MAAOqkB,UAAWzB,EAAM0B,QAAS,GAAIjf,GAM5Cwe,GAHAM,EAAO,IAAIhB,EAAK9d,IAGJuc,EAAGgB,GAOfC,EAAa,OAAI,WAIf,IAHA,IAAI/iB,EAAIqkB,EAAK3kB,EA4If,GA3IM2C,EAAI+gB,EACJpiB,EAAI,EACDhB,EAAIkjB,GACTljB,GAAKA,EAAIgB,GAAKgiB,EACd3gB,GAAK2gB,EACLhiB,EAAIqjB,EAAK3kB,EAAE,GAEb,KAAOM,GAAKmjB,GACVnjB,GAAK,EACLqC,GAAK,EACLrB,KAAO,EAET,OAAQhB,EAAIgB,GAAKqB,CACnB,EAGO2hB,CACT,EAwGAZ,EAAaL,EAAKthB,IAAIuhB,EAkBpB,GAjBFE,EAAeH,EAAKthB,IAAI,EAAGyhB,GAC3BC,EAA0B,EAAfD,EASXa,EAAOhB,EAAK/V,SAAU8V,EAGtB,CArKA,CAsKE,GACArjB,QAAQojB,WACR,IACA,EACA,IAMD,SAAS4B,GAEV,SAASC,EAAShhB,GACd,GAAgB,iBAANA,EAAkB,OAAOA,EACnC,IAAczD,EAAV6B,EAAM,GAAM9B,EAAE0D,EAAEnD,OACpB,IAAIN,EAAE,EAAEA,EAAED,EAAEC,IAAK6B,EAAI7B,EAAE,GAAKykB,EAAShhB,EAAEzD,IACvC,OAAO6B,CACX,CACA,SAAS6iB,EAASjhB,GACd,GAAgB,iBAANA,EAAkB,OAAOA,EACnC,IAAczD,EAAV6B,EAAM,GAAM9B,EAAE0D,EAAEnD,OACpB,IAAIN,EAAE,EAAEA,EAAED,EAAEC,IAAK6B,EAAI7B,EAAE,GAAK0kB,EAASjhB,EAAEzD,IACvC,OAAO6B,CACX,CAwjBA2iB,EAAQG,QA1DR,SAAiBC,EAAMC,EAAMC,EAAMC,EAAMC,EAAKC,GAC1CL,EAAOH,EAASG,GAChBC,EAAOJ,EAASI,GAChBC,EAAOL,EAASK,GAChB,IAAI9kB,EAAGD,EAAGqF,EACAC,EAENyY,EADAoH,EAAQ,GAAIC,EAAO,GAAIxQ,EAAM,GAAIyQ,EAAO,GAAIrT,EAAO,GAWvD,GARAiT,EAAMA,GAAO,EACbC,EAAaA,EAAaR,EAASQ,GAAc,MAACxU,EAAW,GAC7DsU,EAAOA,EAAON,EAASM,GAAQ,GAG/BhlB,EAAI6kB,EAAKtkB,OAAS,EAClB8E,EAAI0f,EAAK,GAAGxkB,OAAS,GAEhBykB,EACD,IAAK/kB,EAAI,EAAGA,GAAKoF,EAAGpF,GAAQ,EACxB+kB,EAAK/kB,GAAK,EAGlB,IAAKA,EAAI,EAAGA,GAAKoF,EAAGpF,GAAQ,EACxBmlB,EAAKnlB,GAAK,EAId,IADAqF,EAAIjE,KAAKiG,IAAItH,EAAGqF,GACXpF,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxB2U,EAAI3U,GAAK,EAGb,IADAklB,EAAM,GAAK,EACNllB,EAAI,EAAGA,GAAM,EAAID,EAAKsF,GAAKA,EAAI,GAAM,EAAI,EAAID,EAAI,EAAIpF,GAAQ,EAC9DolB,EAAKplB,GAAK,EAEd,IAAKA,EAAI,EAAGA,GAAK,EAAGA,GAAQ,EACxB+R,EAAK/R,GAAK,EAcd,OAxdJ,SAAgBqlB,EAAMR,EAAMS,EAAQvlB,EAAG4U,EAAKuQ,EAAOK,EAC/CR,EAAMS,EAAQpgB,EAAG4f,EAAKG,EAAMM,EAAM1T,EAAMqT,EAAMM,GAE9C,IAAI1lB,EAAG6C,EAAGqL,EAAGyX,EAAIC,EAAMC,EAAKC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAK9gB,EAAG+gB,EAC9D9Z,EAAMxB,EAAKhL,EAAIumB,EAAI5f,EAAI6f,EAAIC,EAC3BC,EAAOC,EACPC,EAAQC,EAAMC,EACdC,EAEJxhB,EAAIjE,KAAKiG,IAAItH,EAAGqF,GAChB8I,EAAI,EAAInO,EAAKsF,GAAKA,EAAI,GAAM,EAAI,EAAID,EAAI,EAExCshB,EAAS,MACT,GAEIC,EAAO,EAAI,IADXD,GAAkBA,GAElBE,EAAO,EAAI,GAAMF,QACZC,GAAQ,GAAKC,GAAQ,GAE9B,IAAK5mB,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxBolB,EAAKplB,GAAK6kB,EAAK7kB,GAEnB,IAAKA,EAAID,EAAI,EAAGC,GAAKkO,EAAGlO,GAAQ,EAC5BolB,EAAKplB,GAAK,EAEd,IAAKA,EAAI,EAAGA,GAAKoF,EAAGpF,GAAQ,EACxBmlB,EAAKnlB,GAAK,EAKd,GAFA4lB,EAAO,GAES,IAAZF,EAAK,GAAU,CAEf,GAnER,SAAezjB,EAAG6kB,EAAK/mB,EAAG6lB,GACtB,IAAI5lB,EAAG6C,EAAGkkB,EAAK3mB,EAAGwC,EAAGgB,EAErB,IAAKf,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EAAG,CAI3B,GAHA+iB,EAAK,GAAK/iB,EACVe,EAAI,GACJmjB,EAAMlkB,EAAI,GACA,EAAG,CAET,IADAe,EAAI3B,EAAEY,GAAGA,GAAKe,IACL,EACL,MAEJ3B,EAAEY,GAAGA,GAAKzB,KAAK6L,KAAKrJ,EACxB,KAAO,CACH,IAAKxD,EAAI,EAAGA,GAAK2mB,EAAK3mB,GAAQ,EAAG,CAG7B,IADAwC,EAAIX,EAAE7B,GAAGyC,GACJ7C,EAAI,EAAGA,EAAII,EAAGJ,GAAQ,EACvB4C,GAASX,EAAEjC,GAAG6C,GAAKZ,EAAEjC,GAAGI,GAE5BwC,GAAQX,EAAE7B,GAAGA,GACb6B,EAAE7B,GAAGyC,GAAKD,EACVgB,GAAQhB,EAAIA,CAChB,CAEA,IADAgB,EAAI3B,EAAEY,GAAGA,GAAKe,IACL,EACL,MAEJ3B,EAAEY,GAAGA,GAAKzB,KAAK6L,KAAKrJ,EACxB,CACAgiB,EAAK,GAAK,CACd,CACJ,CAkCQoB,CAAM3B,EAAMC,EAAQvlB,EAAG6lB,GACP,IAAZA,EAAK,GAEL,YADAF,EAAK,GAAK,IA5FtB,SAAezjB,EAAG6kB,EAAK/mB,EAAGmC,GACtB,IAAIlC,EAAGI,EAAG6mB,EAAIrkB,EAEd,IAAKxC,EAAI,EAAGA,GAAKL,EAAGK,GAAQ,EAAG,CAG3B,IADAwC,EAAI,EACC5C,EAAI,EAAGA,EAAII,EAAGJ,GAAQ,EACvB4C,GAASX,EAAEjC,GAAGI,GAAK8B,EAAElC,GAGzBkC,EAAE9B,IAAM8B,EAAE9B,GAAKwC,GAAKX,EAAE7B,GAAGA,EAC7B,CAEA,IAAK6mB,EAAK,EAAGA,GAAMlnB,EAAGknB,GAAU,EAK5B,IAHA/kB,EADA9B,EAAIL,EAAI,EAAIknB,GACL/kB,EAAE9B,GAAK6B,EAAE7B,GAAGA,GACnBwC,GAAKV,EAAE9B,GAEFJ,EAAI,EAAGA,EAAII,EAAGJ,GAAQ,EACvBkC,EAAElC,GAAKkC,EAAElC,GAAM4C,EAAIX,EAAEjC,GAAGI,EAGpC,CAyEQ8mB,CAAM7B,EAAMC,EAAQvlB,EAAG8kB,GA1H/B,SAAe5iB,EAAG6kB,EAAK/mB,GACnB,IAAIC,EAAG6C,EAAGzC,EAAG+mB,EAAKvkB,EAElB,IAAKxC,EAAI,EAAGA,GAAKL,EAAGK,GAAQ,EAAG,CAI3B,IAHA6B,EAAE7B,GAAGA,GAAK,EAAI6B,EAAE7B,GAAGA,GACnBwC,GAAKX,EAAE7B,GAAGA,GAELJ,EAAI,EAAGA,EAAII,EAAGJ,GAAQ,EACvBiC,EAAEjC,GAAGI,GAAKwC,EAAIX,EAAEjC,GAAGI,GAIvB,GAAIL,GADJonB,EAAM/mB,EAAI,GAEN,MAEJ,IAAKyC,EAAIskB,EAAKtkB,GAAK9C,EAAG8C,GAAQ,EAI1B,IAHAD,EAAIX,EAAE7B,GAAGyC,GACTZ,EAAE7B,GAAGyC,GAAK,EAEL7C,EAAI,EAAGA,GAAKI,EAAGJ,GAAQ,EACxBiC,EAAEjC,GAAG6C,GAAKZ,EAAEjC,GAAG6C,GAAMD,EAAIX,EAAEjC,GAAGI,EAG1C,CAEJ,CAkGQgnB,CAAM/B,EAAMC,EAAQvlB,EACxB,KAAO,CACH,IAAK8C,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EAExB,IADA8R,EAAI9R,GAAK,EACJ7C,EAAI,EAAGA,GAAK6C,EAAG7C,GAAQ,EACxB2U,EAAI9R,GAAK8R,EAAI9R,GAAKwiB,EAAKrlB,GAAG6C,GAAKgiB,EAAK7kB,GAG5C,IAAK6C,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EAExB,IADAgiB,EAAKhiB,GAAK,EACL7C,EAAI6C,EAAG7C,GAAKD,EAAGC,GAAQ,EACxB6kB,EAAKhiB,GAAKgiB,EAAKhiB,GAAKwiB,EAAKxiB,GAAG7C,GAAK2U,EAAI3U,EAGjD,CAGA,IADAklB,EAAM,GAAK,EACNriB,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EAIxB,IAHA8R,EAAI9R,GAAKgiB,EAAKhiB,GACdqiB,EAAM,GAAKA,EAAM,GAAKE,EAAKviB,GAAK8R,EAAI9R,GACpCuiB,EAAKviB,GAAK,EACL7C,EAAI6C,EAAI,EAAG7C,GAAKD,EAAGC,GAAQ,EAC5BqlB,EAAKrlB,GAAG6C,GAAK,EAarB,IAVAqiB,EAAM,IAAMA,EAAM,GAAK,EACvBQ,EAAK,GAAK,EAOVU,GADAH,GADAD,GADAE,GADAH,GADAD,EAAO/lB,GACOA,GACAsF,GACAA,EAAI,GACHA,GAAKA,EAAI,GAAM,GACfD,EAEVpF,EAAI,EAAGA,GAAKoF,EAAGpF,GAAQ,EAAG,CAE3B,IADA8K,EAAM,EACDjI,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxBiI,GAAYya,EAAK1iB,GAAG7C,GAAKulB,EAAK1iB,GAAG7C,GAErColB,EAAKgB,EAAQpmB,GAAKoB,KAAK6L,KAAKnC,EAChC,CAKA,SAASuc,IAIL,IAHAtV,EAAK,GAAKA,EAAK,GAAK,EAEpB7D,EAAI+X,EACCjmB,EAAI,EAAGA,GAAKoF,EAAGpF,GAAQ,EAAG,CAG3B,IAFAkO,GAAQ,EACRpD,GAAOia,EAAK/kB,GACP6C,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxBiI,GAAYya,EAAK1iB,GAAG7C,GAAK2U,EAAI9R,GAKjC,GAHIzB,KAAK6K,IAAInB,GAAO4b,IAChB5b,EAAM,GAEN9K,EAAIglB,EACJI,EAAKlX,GAAKpD,OAGV,GADAsa,EAAKlX,IAAM9M,KAAK6K,IAAInB,GAChBA,EAAM,EAAG,CACT,IAAKjI,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxB0iB,EAAK1iB,GAAG7C,IAAMulB,EAAK1iB,GAAG7C,GAE1B+kB,EAAK/kB,IAAM+kB,EAAK/kB,EACpB,CAER,CAEA,IAAKA,EAAI,EAAGA,GAAKylB,EAAMzlB,GAAQ,EAC3BolB,EAAKa,EAAOd,EAAKnlB,IAAM,EAK3B,IAFAmmB,EAAM,EACN7Z,EAAO,EACFtM,EAAI,EAAGA,GAAKoF,EAAGpF,GAAQ,EACpBolB,EAAKa,EAAOjmB,GAAKsM,EAAO8Y,EAAKgB,EAAQpmB,KACrCmmB,EAAMnmB,EACNsM,EAAO8Y,EAAKa,EAAOjmB,GAAKolB,EAAKgB,EAAQpmB,IAG7C,OAAY,IAARmmB,EACO,IAGJ,CACX,CAEA,SAASmB,IACL,IAAKtnB,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EAAG,CAE3B,IADA8K,EAAM,EACDjI,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxBiI,GAAYua,EAAKxiB,GAAG7C,GAAKulB,EAAK1iB,GAAGsjB,GAErCf,EAAKplB,GAAK8K,CACd,CAGA,IADA6a,EAAKG,EACA9lB,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxBolB,EAAKO,EAAK3lB,GAAK,EAEnB,IAAK6C,EAAI4iB,EAAO,EAAG5iB,GAAK9C,EAAG8C,GAAQ,EAC/B,IAAK7C,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxBolB,EAAKO,EAAK3lB,GAAKolB,EAAKO,EAAK3lB,GAAKqlB,EAAKrlB,GAAG6C,GAAKuiB,EAAKviB,GAKxD,IADA2jB,GAAQ,EACHxmB,EAAIylB,EAAMzlB,GAAK,EAAGA,GAAQ,EAAG,CAI9B,IAHA8K,EAAMsa,EAAKplB,GAEX2lB,GADAzX,EAAI8X,EAAQhmB,GAAKA,EAAI,GAAM,GAClBA,EACJ6C,EAAI7C,EAAI,EAAG6C,GAAK4iB,EAAM5iB,GAAQ,EAC/BiI,GAAYsa,EAAKlX,GAAKkX,EAAKW,EAAOljB,GAClCqL,GAAQrL,EAIZ,GAFAiI,GAAYsa,EAAKO,GACjBP,EAAKW,EAAO/lB,GAAK8K,EACbqa,EAAKnlB,GAAKglB,EAEV,MAEJ,GAAIla,EAAM,EAEN,MAEJ0b,GAAQ,EACRX,EAAM7lB,CACV,CAEA,IAAKwmB,EAED,IADA1mB,EAAKslB,EAAKc,EAAOL,GAAOT,EAAKW,EAAOF,GAC/B7lB,EAAI,EAAGA,GAAKylB,KACTN,EAAKnlB,GAAKglB,MAIVI,EAAKW,EAAO/lB,GAAK,GALFA,GAAQ,GAS3BsM,EAAO8Y,EAAKc,EAAOlmB,GAAKolB,EAAKW,EAAO/lB,IACzBF,IACPA,EAAKwM,EACLuZ,EAAM7lB,GAMlB,IADA8K,EAAM,EACD9K,EAAI8lB,EAAO,EAAG9lB,GAAK8lB,EAAO/lB,EAAGC,GAAQ,EACtC8K,GAAYsa,EAAKplB,GAAKolB,EAAKplB,GAE/B,GAAIoB,KAAK6K,IAAInB,IAAQ4b,EAAQ,CACzB,GAAIF,EAGA,OAFAd,EAAK,GAAK,EAEH,IAEP,IAAK1lB,EAAI,EAAGA,GAAKylB,EAAMzlB,GAAQ,EAC3BolB,EAAKc,EAAOlmB,GAAKolB,EAAKc,EAAOlmB,GAAKF,EAAKslB,EAAKW,EAAO/lB,GAIvD,OAFAolB,EAAKc,EAAOT,EAAO,GAAKL,EAAKc,EAAOT,EAAO,GAAK3lB,EAEzC,GAEf,CAEI,IADAgL,EAAM,EACD9K,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxB8K,GAAYsa,EAAKU,EAAO9lB,GAAKulB,EAAKvlB,GAAGmmB,GAWzC,IATAE,GAAMjB,EAAKa,EAAOE,GAAOrb,EACzB2b,GAAQ,EACHD,GACG1mB,EAAKumB,IACLA,EAAKvmB,EACL2mB,GAAQ,GAIXzmB,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxB2U,EAAI3U,GAAK2U,EAAI3U,GAAKqmB,EAAKjB,EAAKU,EAAO9lB,GAC/BoB,KAAK6K,IAAI0I,EAAI3U,IAAM0mB,IACnB/R,EAAI3U,GAAK,GAKjB,IADAklB,EAAM,GAAKA,EAAM,GAAKmB,EAAKvb,GAAOub,EAAK,EAAIjB,EAAKc,EAAOT,EAAO,IACzDzlB,EAAI,EAAGA,GAAKylB,EAAMzlB,GAAQ,EAC3BolB,EAAKc,EAAOlmB,GAAKolB,EAAKc,EAAOlmB,GAAKqmB,EAAKjB,EAAKW,EAAO/lB,GAIvD,GAFAolB,EAAKc,EAAOT,EAAO,GAAKL,EAAKc,EAAOT,EAAO,GAAKY,GAE5CI,EAoDG,CAEH,IADA3b,GAAOia,EAAKoB,GACPtjB,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxBiI,GAAY6J,EAAI9R,GAAK0iB,EAAK1iB,GAAGsjB,GAEjC,GAAIA,EAAMnB,EACNI,EAAKa,EAAOE,GAAOrb,OAGnB,GADAsa,EAAKa,EAAOE,IAAQ/kB,KAAK6K,IAAInB,GACzBA,EAAM,EAAG,CACT,IAAKjI,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxB0iB,EAAK1iB,GAAGsjB,IAAQZ,EAAK1iB,GAAGsjB,GAE5BpB,EAAKoB,IAAQpB,EAAKoB,EACtB,CAGJ,OAAO,GACX,CAjEI,IAHAhB,EADAM,GAAc,GACDU,EAEbjY,EAAI8X,GAASP,EAAO,GAAKA,EAAQ,EAAI,EAChCzlB,EAAI,EAAGA,GAAKylB,EAAO,EAAGzlB,GAAQ,EAC/BolB,EAAKlX,GAAKkX,EAAKplB,GACfkO,GAAQ,EAGZ,GAAIuX,IAAS1lB,EACTqlB,EAAKlX,GAAKkX,EAAKrlB,OACZ,CACH,IAAKC,EAAID,EAAGC,GAAKylB,EAAO,GACJ,IAAZL,EAAKplB,KAITyG,EAAKrF,KAAK+L,IAAI/L,KAAK6K,IAAImZ,EAAKplB,EAAI,IAAKoB,KAAK6K,IAAImZ,EAAKplB,KACnDsmB,EAAKllB,KAAKiG,IAAIjG,KAAK6K,IAAImZ,EAAKplB,EAAI,IAAKoB,KAAK6K,IAAImZ,EAAKplB,KAE/CsM,EADA8Y,EAAKplB,EAAI,IAAM,EACRoB,KAAK6K,IAAIxF,EAAKrF,KAAK6L,KAAK,EAAIqZ,EAAKA,GAAM7f,EAAKA,MAE3CrF,KAAK6K,IAAIxF,EAAKrF,KAAK6L,KAAK,EAAIqZ,EAAKA,GAAM7f,EAAKA,KAExDA,EAAK2e,EAAKplB,EAAI,GAAKsM,EACnBga,EAAKlB,EAAKplB,GAAKsM,EAEJ,IAAP7F,GAfmBzG,GAAQ,EAmB/B,GAAW,IAAPyG,EAEA,IADA2e,EAAKplB,EAAI,GAAKsmB,EAAKha,EACdzJ,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxByJ,EAAO+Y,EAAKxiB,GAAG7C,EAAI,GACnBqlB,EAAKxiB,GAAG7C,EAAI,GAAKqlB,EAAKxiB,GAAG7C,GACzBqlB,EAAKxiB,GAAG7C,GAAKsM,OAKjB,IAFA8Y,EAAKplB,EAAI,GAAKsM,EACdia,EAAKD,GAAM,EAAI7f,GACV5D,EAAI,EAAGA,GAAK9C,EAAG8C,GAAQ,EACxByJ,EAAO7F,EAAK4e,EAAKxiB,GAAG7C,EAAI,GAAKsmB,EAAKjB,EAAKxiB,GAAG7C,GAC1CqlB,EAAKxiB,GAAG7C,GAAKumB,GAAMlB,EAAKxiB,GAAG7C,EAAI,GAAKsM,GAAQ+Y,EAAKxiB,GAAG7C,GACpDqlB,EAAKxiB,GAAG7C,EAAI,GAAKsM,EAK7B8Y,EAAKlX,GAAKkX,EAAKK,EACnB,CAsBR,OAAO,CACX,CAEA,SAAS8B,IAGL,GAAiB,IAAbnC,EADJO,GADAzX,EAAI8X,EAAQH,GAAOA,EAAM,GAAM,EAAI,GAC1BA,GAGL,OAAO,IAYX,GAVApf,EAAKrF,KAAK+L,IAAI/L,KAAK6K,IAAImZ,EAAKO,EAAK,IAAKvkB,KAAK6K,IAAImZ,EAAKO,KACpDW,EAAKllB,KAAKiG,IAAIjG,KAAK6K,IAAImZ,EAAKO,EAAK,IAAKvkB,KAAK6K,IAAImZ,EAAKO,KAEhDrZ,EADA8Y,EAAKO,EAAK,IAAM,EACTvkB,KAAK6K,IAAIxF,EAAKrF,KAAK6L,KAAK,EAAIqZ,EAAKA,GAAM7f,EAAKA,MAE3CrF,KAAK6K,IAAIxF,EAAKrF,KAAK6L,KAAK,EAAIqZ,EAAKA,GAAM7f,EAAKA,KAExDA,EAAK2e,EAAKO,EAAK,GAAKrZ,EACpBga,EAAKlB,EAAKO,GAAMrZ,EAEL,IAAP7F,EAEA,OAAO,IAEX,GAAW,IAAPA,EAAU,CACV,IAAKzG,EAAI6lB,EAAM,EAAG7lB,GAAKylB,EAAMzlB,GAAQ,EACjCsM,EAAO8Y,EAAKO,EAAK,GACjBP,EAAKO,EAAK,GAAKP,EAAKO,GACpBP,EAAKO,GAAMrZ,EACXqZ,GAAU3lB,EAEd,IAAKA,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxBsM,EAAO+Y,EAAKrlB,GAAG6lB,GACfR,EAAKrlB,GAAG6lB,GAAOR,EAAKrlB,GAAG6lB,EAAM,GAC7BR,EAAKrlB,GAAG6lB,EAAM,GAAKvZ,CAE3B,KAAO,CAEH,IADAia,EAAKD,GAAM,EAAI7f,GACVzG,EAAI6lB,EAAM,EAAG7lB,GAAKylB,EAAMzlB,GAAQ,EACjCsM,EAAO7F,EAAK2e,EAAKO,EAAK,GAAKW,EAAKlB,EAAKO,GACrCP,EAAKO,GAAMY,GAAMnB,EAAKO,EAAK,GAAKrZ,GAAQ8Y,EAAKO,GAC7CP,EAAKO,EAAK,GAAKrZ,EACfqZ,GAAU3lB,EAEd,IAAKA,EAAI,EAAGA,GAAKD,EAAGC,GAAQ,EACxBsM,EAAO7F,EAAK4e,EAAKrlB,GAAG6lB,GAAOS,EAAKjB,EAAKrlB,GAAG6lB,EAAM,GAC9CR,EAAKrlB,GAAG6lB,EAAM,GAAKU,GAAMlB,EAAKrlB,GAAG6lB,GAAOvZ,GAAQ+Y,EAAKrlB,GAAG6lB,EAAM,GAC9DR,EAAKrlB,GAAG6lB,GAAOvZ,CAEvB,CAEA,OAAO,CACX,CAEA,SAASkb,IAEL,IADA7B,EAAKzX,EAAI2X,EACJ7lB,EAAI,EAAGA,GAAK6lB,EAAK7lB,GAAQ,EAC1BolB,EAAKO,GAAMP,EAAKlX,GAChBA,GAAQ,EACRyX,GAAU,EAMd,OAHAP,EAAKc,EAAOL,GAAOT,EAAKc,EAAOL,EAAM,GACrCV,EAAKU,GAAOV,EAAKU,EAAM,IACvBA,GAAY,GACFJ,EAEC,IAGJ,CACX,CAEA,SAASgC,IAOL,OANArC,EAAKc,EAAOT,GAAQL,EAAKc,EAAOT,EAAO,GACvCL,EAAKc,EAAOT,EAAO,GAAK,EACxBN,EAAKM,GAAQ,EACbA,GAAc,EACd1T,EAAK,GAAKA,EAAK,GAAK,EAEb,CACX,CAGA,IAvTA0T,EAAO,EACP1T,EAAK,GAAK,EACVA,EAAK,GAAK,EAoTV8U,EAAK,IACQ,CAET,GAAW,OADXA,EAAKQ,KAED,OAEJ,KAEe,KADXR,EAAKS,MADI,CAKT,GAAW,MAAPT,EACA,OAEJ,GAAW,MAAPA,EACA,GAAIhB,IAAQJ,EACRgC,QACG,CACH,KACIF,IAEW,OADXV,EAAKW,OAKTC,GACJ,CAER,CACJ,CAEJ,CAwCIC,CAAO9C,EAAMC,EAAM9kB,EAAGA,EAAG4U,EAAKuQ,EAAOJ,EACjCC,EAAMhlB,EAAGqF,EAAG4f,EAAKG,EAdd,EAc0BpT,EAAMqT,EAAMH,GAE7CnH,EAAU,GACY,IAAlBmH,EAAW,KACXnH,EAAU,8CAEQ,IAAlBmH,EAAW,KACXnH,EAAU,4DAGP,CACHH,SAAU+G,EAAS/P,GACnBgT,MAAOjD,EAASQ,GAChB0C,uBAAwBlD,EAASG,GACjChH,WAAY6G,EAAS3S,GACrBoT,KAAMT,EAASS,GACfrH,QAASA,EAEjB,CAEA,CAtkBA,CAskBEte,SAOFA,QAAQohB,IAAK,SAAand,GACtB,IAAI6I,EAEHub,EAAMroB,QAAQiS,QACdqW,EAAW,MAAOD,EAElB1lB,EAAE,EACFnC,EAAE,EACF6C,EAAE,EACFzC,EAAE,EACF8N,EAAE,EAEFmV,EAAG7jB,QAAQkL,MAAMjH,GACjBC,EAAG2f,EAAE/iB,OAELP,EAAGsjB,EAAE,GAAG/iB,OAEZ,GAAIoD,EAAI3D,EAAG,KAAM,8BAEjB,IAAImU,EAAI,IAAI1T,MAAMT,GACdqF,EAAI,IAAI5E,MAAMT,GAClB,IAAKC,EAAE,EAAGA,EAAED,EAAGC,IAAKkU,EAAElU,GAAKoF,EAAEpF,GAAK,EAClC,IAAIiG,EAAIzG,QAAQwG,IAAI,CAACjG,EAAEA,GAAG,GAGzB,SAASgoB,EAAO9lB,EAAEC,GAIlB,OAFAD,EAAIb,KAAK6K,IAAIhK,KACbC,EAAId,KAAK6K,IAAI/J,IAELD,EAAEb,KAAK6L,KAAK,EAAK/K,EAAEA,EAAED,EAAEA,GACjB,GAALC,EACDD,EACDC,EAAEd,KAAK6L,KAAK,EAAKhL,EAAEA,EAAEC,EAAEA,EAC/B,CAIA,IAAItC,EAAG,EACHH,EAAG,EACHsF,EAAG,EACHhE,EAAG,EACHmE,EAAG,EACHC,EAAG,EACHvB,EAAG,EAEP,IAAK5D,EAAE,EAAGA,EAAID,EAAGC,IACjB,CAIC,IAHAkU,EAAElU,GAAIP,EACNmE,EAAG,EACHsK,EAAGlO,EAAE,EACA6C,EAAE7C,EAAG6C,EAAIa,EAAGb,IAChBe,GAAMyf,EAAExgB,GAAG7C,GAAGqjB,EAAExgB,GAAG7C,GACpB,GAAI4D,GAAKkkB,EACRroB,EAAG,OAQH,IALAG,EAAGyjB,EAAErjB,GAAGA,GACRP,EAAG2B,KAAK6L,KAAKrJ,GACThE,GAAK,IAAKH,GAAIA,GAClBsF,EAAGnF,EAAEH,EAAEmE,EACPyf,EAAErjB,GAAGA,GAAGJ,EAAEH,EACLoD,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IACjB,CAEC,IADAe,EAAG,EACExD,EAAEJ,EAAGI,EAAIsD,EAAGtD,IAChBwD,GAAKyf,EAAEjjB,GAAGJ,GAAGqjB,EAAEjjB,GAAGyC,GAEnB,IADAjD,EAAGgE,EAAEmB,EACA3E,EAAEJ,EAAGI,EAAIsD,EAAGtD,IAChBijB,EAAEjjB,GAAGyC,IAAIjD,EAAEyjB,EAAEjjB,GAAGJ,EAClB,CAID,IAFAoF,EAAEpF,GAAIP,EACNmE,EAAG,EACEf,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IAChBe,GAAOyf,EAAErjB,GAAG6C,GAAGwgB,EAAErjB,GAAG6C,GACrB,GAAIe,GAAKkkB,EACRroB,EAAG,MAEJ,CAMC,IALAG,EAAGyjB,EAAErjB,GAAGA,EAAE,GACVP,EAAG2B,KAAK6L,KAAKrJ,GACThE,GAAK,IAAKH,GAAIA,GAClBsF,EAAGnF,EAAEH,EAAImE,EACTyf,EAAErjB,GAAGA,EAAE,GAAKJ,EAAEH,EACToD,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IAAKqR,EAAErR,GAAIwgB,EAAErjB,GAAG6C,GAAGkC,EACpC,IAAKlC,EAAEqL,EAAGrL,EAAIa,EAAGb,IACjB,CAEC,IADAe,EAAE,EACGxD,EAAE8N,EAAG9N,EAAIL,EAAGK,IAChBwD,GAAMyf,EAAExgB,GAAGzC,GAAGijB,EAAErjB,GAAGI,GACpB,IAAKA,EAAE8N,EAAG9N,EAAIL,EAAGK,IAChBijB,EAAExgB,GAAGzC,IAAIwD,EAAEsQ,EAAE9T,EACf,CACD,EACA8E,EAAG9D,KAAK6K,IAAI7G,EAAEpF,IAAIoB,KAAK6K,IAAIiI,EAAElU,KACvBe,IACLA,EAAEmE,EACJ,CAGA,IAAKlF,EAAED,EAAE,GAAS,GAANC,EAASA,IAAK,EAC1B,CACC,GAAS,GAALP,EACJ,CAEC,IADCsF,EAAGtF,EAAE4jB,EAAErjB,GAAGA,EAAE,GACR6C,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IAChBoD,EAAEpD,GAAG7C,GAAGqjB,EAAErjB,GAAG6C,GAAGkC,EACjB,IAAKlC,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IACjB,CAEC,IADAe,EAAE,EACGxD,EAAE8N,EAAG9N,EAAIL,EAAGK,IAChBwD,GAAKyf,EAAErjB,GAAGI,GAAG6F,EAAE7F,GAAGyC,GACnB,IAAKzC,EAAE8N,EAAG9N,EAAIL,EAAGK,IAChB6F,EAAE7F,GAAGyC,IAAKe,EAAEqC,EAAE7F,GAAGJ,EACnB,CACD,CACA,IAAK6C,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IAEhBoD,EAAEjG,GAAG6C,GAAK,EACVoD,EAAEpD,GAAG7C,GAAK,EAEXiG,EAAEjG,GAAGA,GAAK,EACVP,EAAGyU,EAAElU,GACLkO,EAAGlO,CACJ,CAGA,IAAKA,EAAED,EAAE,GAAS,GAANC,EAASA,IAAK,EAC1B,CAGC,IAFAkO,EAAGlO,EAAE,EACLP,EAAG2F,EAAEpF,GACA6C,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IAChBwgB,EAAErjB,GAAG6C,GAAK,EACX,GAAS,GAALpD,EACJ,CAEC,IADAsF,EAAGse,EAAErjB,GAAGA,GAAGP,EACNoD,EAAEqL,EAAGrL,EAAI9C,EAAG8C,IACjB,CAEC,IADAe,EAAE,EACGxD,EAAE8N,EAAG9N,EAAIsD,EAAGtD,IAAKwD,GAAKyf,EAAEjjB,GAAGJ,GAAGqjB,EAAEjjB,GAAGyC,GAExC,IADAjD,EAAGgE,EAAEmB,EACA3E,EAAEJ,EAAGI,EAAIsD,EAAGtD,IAAKijB,EAAEjjB,GAAGyC,IAAIjD,EAAEyjB,EAAEjjB,GAAGJ,EACvC,CACA,IAAK6C,EAAE7C,EAAG6C,EAAIa,EAAGb,IAAKwgB,EAAExgB,GAAG7C,GAAKqjB,EAAExgB,GAAG7C,GAAGP,CACzC,MAEC,IAAKoD,EAAE7C,EAAG6C,EAAIa,EAAGb,IAAKwgB,EAAExgB,GAAG7C,GAAK,EACjCqjB,EAAErjB,GAAGA,IAAM,CACZ,CAIA,IADA6nB,GAAW9mB,EACNX,EAAEL,EAAE,GAAS,GAANK,EAASA,IAAK,EAEzB,IAAK,IAAI4nB,EAAU,EAAGA,EAtJZ,GAsJ+BA,IACzC,CACC,IAAIC,GAAmB,EACvB,IAAK/Z,EAAE9N,GAAS,GAAN8N,EAASA,IAAK,EACxB,CACC,GAAI9M,KAAK6K,IAAIiI,EAAEhG,KAAO2Z,EACtB,CAAEI,GAAkB,EACnB,KACD,CACA,GAAI7mB,KAAK6K,IAAI7G,EAAE8I,EAAE,KAAO2Z,EACvB,KACF,CACA,IAAKI,EACL,CACC9lB,EAAG,EACHyB,EAAG,EACH,IAAI+hB,EAAIzX,EAAE,EACV,IAAKlO,EAAGkO,EAAGlO,EAAEI,EAAE,IAEdR,EAAGgE,EAAEsQ,EAAElU,GACPkU,EAAElU,GAAImC,EAAE+R,EAAElU,KACNoB,KAAK6K,IAAIrM,IAAMioB,IAJF7nB,IAWjB,IAJA+E,EAAGgjB,EAAOnoB,EADVH,EAAG2F,EAAEpF,IAELoF,EAAEpF,GAAI+E,EACN5C,EAAG1C,EAAEsF,EACLnB,GAAIhE,EAAEmF,EACDlC,EAAE,EAAGA,EAAIa,EAAGb,IAEhBqC,EAAGme,EAAExgB,GAAG8iB,GACRxgB,EAAGke,EAAExgB,GAAG7C,GACRqjB,EAAExgB,GAAG8iB,GAAOzgB,EAAE/C,EAAGgD,EAAEvB,EACnByf,EAAExgB,GAAG7C,IAAMkF,EAAEtB,EAAGuB,EAAEhD,CAGrB,CAGA,GADAgD,EAAGC,EAAEhF,GACD8N,GAAI9N,EACR,CACC,GAAI+E,EAAE,EAGL,IADAC,EAAEhF,IAAK+E,EACFtC,EAAE,EAAGA,EAAI9C,EAAG8C,IAChBoD,EAAEpD,GAAGzC,IAAM6F,EAAEpD,GAAGzC,GAElB,KACD,CACA,GAAI4nB,GAAaE,GAChB,KAAM,yBAeP,IAbAnnB,EAAGqE,EAAE8I,GAKLzO,EAAGsoB,EADHnoB,KAHAsF,EAAGE,EAAEhF,EAAE,IAGA+E,IAAID,EAAEC,KAFb1F,EAAGyU,EAAE9T,EAAE,KACP2E,EAAGmP,EAAE9T,MACkBX,EAAEsF,KAAK,EAAIA,EAAEG,GACxB,GAEXtF,EADGA,EAAI,IACFmB,EAAEoE,IAAIpE,EAAEoE,GAAGJ,GAAGG,GAAGtF,EAAEH,GAAGsF,IAAIhE,IAE1BA,EAAEoE,IAAIpE,EAAEoE,GAAGJ,GAAGG,GAAGtF,EAAEH,GAAGsF,IAAIhE,EAEhCoB,EAAG,EACHyB,EAAG,EACE5D,EAAEkO,EAAE,EAAGlO,EAAGI,EAAE,EAAGJ,IACpB,CAaC,IAZAP,EAAGyU,EAAElU,GACLkF,EAAGE,EAAEpF,GACL+E,EAAGnB,EAAEnE,EACLA,GAAG0C,EACHgD,EAAG4iB,EAAOnoB,EAAEmF,GACZmP,EAAElU,EAAE,GAAImF,EAGRvF,EAAGmB,GAFHoB,EAAGvC,EAAEuF,GAEE1F,GADPmE,EAAGmB,EAAEI,GAEL1F,GAAIsB,EAAE6C,EAAEnE,EAAE0C,EACV4C,EAAGG,EAAEtB,EACLsB,GAAK/C,EACAU,EAAE,EAAGA,EAAI9C,EAAG8C,IAEhB9B,EAAGkF,EAAEpD,GAAG7C,EAAE,GACVmF,EAAGc,EAAEpD,GAAG7C,GACRiG,EAAEpD,GAAG7C,EAAE,GAAKe,EAAEoB,EAAEgD,EAAEvB,EAClBqC,EAAEpD,GAAG7C,IAAMe,EAAE6C,EAAEuB,EAAEhD,EAQlB,IANAgD,EAAG4iB,EAAOnoB,EAAEmF,GACZK,EAAEpF,EAAE,GAAImF,EAGRvF,GAFAuC,EAAGvC,EAAEuF,GAEA1F,GADLmE,EAAGmB,EAAEI,GACID,EACTnE,GAAI6C,EAAEnE,EAAE0C,EAAE+C,EACLrC,EAAE,EAAGA,EAAIa,EAAGb,IAEhBqC,EAAGme,EAAExgB,GAAG7C,EAAE,GACVmF,EAAGke,EAAExgB,GAAG7C,GACRqjB,EAAExgB,GAAG7C,EAAE,GAAKkF,EAAE/C,EAAEgD,EAAEvB,EAClByf,EAAExgB,GAAG7C,IAAMkF,EAAEtB,EAAEuB,EAAEhD,CAEnB,CACA+R,EAAEhG,GAAI,EACNgG,EAAE9T,GAAIR,EACNwF,EAAEhF,GAAIW,CACP,CAKD,IAAKf,EAAE,EAAEA,EAAEoF,EAAE9E,OAAQN,IACfoF,EAAEpF,GAAK6nB,IAAMziB,EAAEpF,GAAK,GAG1B,IAAKA,EAAE,EAAGA,EAAGD,EAAGC,IAGf,IAAK6C,EAAE7C,EAAE,EAAG6C,GAAK,EAAGA,IAEnB,GAAIuC,EAAEvC,GAAKuC,EAAEpF,GACb,CAKC,IAHAmC,EAAIiD,EAAEvC,GACNuC,EAAEvC,GAAKuC,EAAEpF,GACToF,EAAEpF,GAAKmC,EACH/B,EAAE,EAAEA,EAAEijB,EAAE/iB,OAAOF,IAAOkM,EAAO+W,EAAEjjB,GAAGJ,GAAIqjB,EAAEjjB,GAAGJ,GAAKqjB,EAAEjjB,GAAGyC,GAAIwgB,EAAEjjB,GAAGyC,GAAKyJ,EACvE,IAAIlM,EAAE,EAAEA,EAAE6F,EAAE3F,OAAOF,IAAOkM,EAAOrG,EAAE7F,GAAGJ,GAAIiG,EAAE7F,GAAGJ,GAAKiG,EAAE7F,GAAGyC,GAAIoD,EAAE7F,GAAGyC,GAAKyJ,EAGvEtM,EAAI6C,CACL,CAIF,MAAO,CAACuR,EAAEiP,EAAExB,EAAEzc,EAAEsS,EAAEzR,EACnB,C","sources":["webpack://infra3dapi/../../node_modules/.pnpm/numeric@1.2.6/node_modules/numeric/numeric-1.2.6.js"],"sourcesContent":["\"use strict\";\n\nvar numeric = (typeof exports === \"undefined\")?(function numeric() {}):(exports);\nif(typeof global !== \"undefined\") { global.numeric = numeric; }\n\nnumeric.version = \"1.2.6\";\n\n// 1. Utility functions\nnumeric.bench = function bench (f,interval) {\n var t1,t2,n,i;\n if(typeof interval === \"undefined\") { interval = 15; }\n n = 0.5;\n t1 = new Date();\n while(1) {\n n*=2;\n for(i=n;i>3;i-=4) { f(); f(); f(); f(); }\n while(i>0) { f(); i--; }\n t2 = new Date();\n if(t2-t1 > interval) break;\n }\n for(i=n;i>3;i-=4) { f(); f(); f(); f(); }\n while(i>0) { f(); i--; }\n t2 = new Date();\n return 1000*(3*n-1)/(t2-t1);\n}\n\nnumeric._myIndexOf = (function _myIndexOf(w) {\n var n = this.length,k;\n for(k=0;k<n;++k) if(this[k]===w) return k;\n return -1;\n});\nnumeric.myIndexOf = (Array.prototype.indexOf)?Array.prototype.indexOf:numeric._myIndexOf;\n\nnumeric.Function = Function;\nnumeric.precision = 4;\nnumeric.largeArray = 50;\n\nnumeric.prettyPrint = function prettyPrint(x) {\n function fmtnum(x) {\n if(x === 0) { return '0'; }\n if(isNaN(x)) { return 'NaN'; }\n if(x<0) { return '-'+fmtnum(-x); }\n if(isFinite(x)) {\n var scale = Math.floor(Math.log(x) / Math.log(10));\n var normalized = x / Math.pow(10,scale);\n var basic = normalized.toPrecision(numeric.precision);\n if(parseFloat(basic) === 10) { scale++; normalized = 1; basic = normalized.toPrecision(numeric.precision); }\n return parseFloat(basic).toString()+'e'+scale.toString();\n }\n return 'Infinity';\n }\n var ret = [];\n function foo(x) {\n var k;\n if(typeof x === \"undefined\") { ret.push(Array(numeric.precision+8).join(' ')); return false; }\n if(typeof x === \"string\") { ret.push('\"'+x+'\"'); return false; }\n if(typeof x === \"boolean\") { ret.push(x.toString()); return false; }\n if(typeof x === \"number\") {\n var a = fmtnum(x);\n var b = x.toPrecision(numeric.precision);\n var c = parseFloat(x.toString()).toString();\n var d = [a,b,c,parseFloat(b).toString(),parseFloat(c).toString()];\n for(k=1;k<d.length;k++) { if(d[k].length < a.length) a = d[k]; }\n ret.push(Array(numeric.precision+8-a.length).join(' ')+a);\n return false;\n }\n if(x === null) { ret.push(\"null\"); return false; }\n if(typeof x === \"function\") { \n ret.push(x.toString());\n var flag = false;\n for(k in x) { if(x.hasOwnProperty(k)) { \n if(flag) ret.push(',\\n');\n else ret.push('\\n{');\n flag = true; \n ret.push(k); \n ret.push(': \\n'); \n foo(x[k]); \n } }\n if(flag) ret.push('}\\n');\n return true;\n }\n if(x instanceof Array) {\n if(x.length > numeric.largeArray) { ret.push('...Large Array...'); return true; }\n var flag = false;\n ret.push('[');\n for(k=0;k<x.length;k++) { if(k>0) { ret.push(','); if(flag) ret.push('\\n '); } flag = foo(x[k]); }\n ret.push(']');\n return true;\n }\n ret.push('{');\n var flag = false;\n for(k in x) { if(x.hasOwnProperty(k)) { if(flag) ret.push(',\\n'); flag = true; ret.push(k); ret.push(': \\n'); foo(x[k]); } }\n ret.push('}');\n return true;\n }\n foo(x);\n return ret.join('');\n}\n\nnumeric.parseDate = function parseDate(d) {\n function foo(d) {\n if(typeof d === 'string') { return Date.parse(d.replace(/-/g,'/')); }\n if(!(d instanceof Array)) { throw new Error(\"parseDate: parameter must be arrays of strings\"); }\n var ret = [],k;\n for(k=0;k<d.length;k++) { ret[k] = foo(d[k]); }\n return ret;\n }\n return foo(d);\n}\n\nnumeric.parseFloat = function parseFloat_(d) {\n function foo(d) {\n if(typeof d === 'string') { return parseFloat(d); }\n if(!(d instanceof Array)) { throw new Error(\"parseFloat: parameter must be arrays of strings\"); }\n var ret = [],k;\n for(k=0;k<d.length;k++) { ret[k] = foo(d[k]); }\n return ret;\n }\n return foo(d);\n}\n\nnumeric.parseCSV = function parseCSV(t) {\n var foo = t.split('\\n');\n var j,k;\n var ret = [];\n var pat = /(([^'\",]*)|('[^']*')|(\"[^\"]*\")),/g;\n var patnum = /^\\s*(([+-]?[0-9]+(\\.[0-9]*)?(e[+-]?[0-9]+)?)|([+-]?[0-9]*(\\.[0-9]+)?(e[+-]?[0-9]+)?))\\s*$/;\n var stripper = function(n) { return n.substr(0,n.length-1); }\n var count = 0;\n for(k=0;k<foo.length;k++) {\n var bar = (foo[k]+\",\").match(pat),baz;\n if(bar.length>0) {\n ret[count] = [];\n for(j=0;j<bar.length;j++) {\n baz = stripper(bar[j]);\n if(patnum.test(baz)) { ret[count][j] = parseFloat(baz); }\n else ret[count][j] = baz;\n }\n count++;\n }\n }\n return ret;\n}\n\nnumeric.toCSV = function toCSV(A) {\n var s = numeric.dim(A);\n var i,j,m,n,row,ret;\n m = s[0];\n n = s[1];\n ret = [];\n for(i=0;i<m;i++) {\n row = [];\n for(j=0;j<m;j++) { row[j] = A[i][j].toString(); }\n ret[i] = row.join(', ');\n }\n return ret.join('\\n')+'\\n';\n}\n\nnumeric.getURL = function getURL(url) {\n var client = new XMLHttpRequest();\n client.open(\"GET\",url,false);\n client.send();\n return client;\n}\n\nnumeric.imageURL = function imageURL(img) {\n function base64(A) {\n var n = A.length, i,x,y,z,p,q,r,s;\n var key = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var ret = \"\";\n for(i=0;i<n;i+=3) {\n x = A[i];\n y = A[i+1];\n z = A[i+2];\n p = x >> 2;\n q = ((x & 3) << 4) + (y >> 4);\n r = ((y & 15) << 2) + (z >> 6);\n s = z & 63;\n if(i+1>=n) { r = s = 64; }\n else if(i+2>=n) { s = 64; }\n ret += key.charAt(p) + key.charAt(q) + key.charAt(r) + key.charAt(s);\n }\n return ret;\n }\n function crc32Array (a,from,to) {\n if(typeof from === \"undefined\") { from = 0; }\n if(typeof to === \"undefined\") { to = a.length; }\n var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, \n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, \n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, \n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, \n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, \n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, \n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, \n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, \n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, \n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, \n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, \n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, \n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, \n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, \n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, \n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, \n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, \n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, \n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, \n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, \n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, \n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, \n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, \n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, \n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, \n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, \n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D];\n \n var crc = -1, y = 0, n = a.length,i;\n\n for (i = from; i < to; i++) {\n y = (crc ^ a[i]) & 0xFF;\n crc = (crc >>> 8) ^ table[y];\n }\n \n return crc ^ (-1);\n }\n\n var h = img[0].length, w = img[0][0].length, s1, s2, next,k,length,a,b,i,j,adler32,crc32;\n var stream = [\n 137, 80, 78, 71, 13, 10, 26, 10, // 0: PNG signature\n 0,0,0,13, // 8: IHDR Chunk length\n 73, 72, 68, 82, // 12: \"IHDR\" \n (w >> 24) & 255, (w >> 16) & 255, (w >> 8) & 255, w&255, // 16: Width\n (h >> 24) & 255, (h >> 16) & 255, (h >> 8) & 255, h&255, // 20: Height\n 8, // 24: bit depth\n 2, // 25: RGB\n 0, // 26: deflate\n 0, // 27: no filter\n 0, // 28: no interlace\n -1,-2,-3,-4, // 29: CRC\n -5,-6,-7,-8, // 33: IDAT Chunk length\n 73, 68, 65, 84, // 37: \"IDAT\"\n // RFC 1950 header starts here\n 8, // 41: RFC1950 CMF\n 29 // 42: RFC1950 FLG\n ];\n crc32 = crc32Array(stream,12,29);\n stream[29] = (crc32>>24)&255;\n stream[30] = (crc32>>16)&255;\n stream[31] = (crc32>>8)&255;\n stream[32] = (crc32)&255;\n s1 = 1;\n s2 = 0;\n for(i=0;i<h;i++) {\n if(i<h-1) { stream.push(0); }\n else { stream.push(1); }\n a = (3*w+1+(i===0))&255; b = ((3*w+1+(i===0))>>8)&255;\n stream.push(a); stream.push(b);\n stream.push((~a)&255); stream.push((~b)&255);\n if(i===0) stream.push(0);\n for(j=0;j<w;j++) {\n for(k=0;k<3;k++) {\n a = img[k][i][j];\n if(a>255) a = 255;\n else if(a<0) a=0;\n else a = Math.round(a);\n s1 = (s1 + a )%65521;\n s2 = (s2 + s1)%65521;\n stream.push(a);\n }\n }\n stream.push(0);\n }\n adler32 = (s2<<16)+s1;\n stream.push((adler32>>24)&255);\n stream.push((adler32>>16)&255);\n stream.push((adler32>>8)&255);\n stream.push((adler32)&255);\n length = stream.length - 41;\n stream[33] = (length>>24)&255;\n stream[34] = (length>>16)&255;\n stream[35] = (length>>8)&255;\n stream[36] = (length)&255;\n crc32 = crc32Array(stream,37);\n stream.push((crc32>>24)&255);\n stream.push((crc32>>16)&255);\n stream.push((crc32>>8)&255);\n stream.push((crc32)&255);\n stream.push(0);\n stream.push(0);\n stream.push(0);\n stream.push(0);\n// a = stream.length;\n stream.push(73); // I\n stream.push(69); // E\n stream.push(78); // N\n stream.push(68); // D\n stream.push(174); // CRC1\n stream.push(66); // CRC2\n stream.push(96); // CRC3\n stream.push(130); // CRC4\n return 'data:image/png;base64,'+base64(stream);\n}\n\n// 2. Linear algebra with Arrays.\nnumeric._dim = function _dim(x) {\n var ret = [];\n while(typeof x === \"object\") { ret.push(x.length); x = x[0]; }\n return ret;\n}\n\nnumeric.dim = function dim(x) {\n var y,z;\n if(typeof x === \"object\") {\n y = x[0];\n if(typeof y === \"object\") {\n z = y[0];\n if(typeof z === \"object\") {\n return numeric._dim(x);\n }\n return [x.length,y.length];\n }\n return [x.length];\n }\n return [];\n}\n\nnumeric.mapreduce = function mapreduce(body,init) {\n return Function('x','accum','_s','_k',\n 'if(typeof accum === \"undefined\") accum = '+init+';\\n'+\n 'if(typeof x === \"number\") { var xi = x; '+body+'; return accum; }\\n'+\n 'if(typeof _s === \"undefined\") _s = numeric.dim(x);\\n'+\n 'if(typeof _k === \"undefined\") _k = 0;\\n'+\n 'var _n = _s[_k];\\n'+\n 'var i,xi;\\n'+\n 'if(_k < _s.length-1) {\\n'+\n ' for(i=_n-1;i>=0;i--) {\\n'+\n ' accum = arguments.callee(x[i],accum,_s,_k+1);\\n'+\n ' }'+\n ' return accum;\\n'+\n '}\\n'+\n 'for(i=_n-1;i>=1;i-=2) { \\n'+\n ' xi = x[i];\\n'+\n ' '+body+';\\n'+\n ' xi = x[i-1];\\n'+\n ' '+body+';\\n'+\n '}\\n'+\n 'if(i === 0) {\\n'+\n ' xi = x[i];\\n'+\n ' '+body+'\\n'+\n '}\\n'+\n 'return accum;'\n );\n}\nnumeric.mapreduce2 = function mapreduce2(body,setup) {\n return Function('x',\n 'var n = x.length;\\n'+\n 'var i,xi;\\n'+setup+';\\n'+\n 'for(i=n-1;i!==-1;--i) { \\n'+\n ' xi = x[i];\\n'+\n ' '+body+';\\n'+\n '}\\n'+\n 'return accum;'\n );\n}\n\n\nnumeric.same = function same(x,y) {\n var i,n;\n if(!(x instanceof Array) || !(y instanceof Array)) { return false; }\n n = x.length;\n if(n !== y.length) { return false; }\n for(i=0;i<n;i++) {\n if(x[i] === y[i]) { continue; }\n if(typeof x[i] === \"object\") { if(!same(x[i],y[i])) return false; }\n else { return false; }\n }\n return true;\n}\n\nnumeric.rep = function rep(s,v,k) {\n if(typeof k === \"undefined\") { k=0; }\n var n = s[k], ret = Array(n), i;\n if(k === s.length-1) {\n for(i=n-2;i>=0;i-=2) { ret[i+1] = v; ret[i] = v; }\n if(i===-1) { ret[0] = v; }\n return ret;\n }\n for(i=n-1;i>=0;i--) { ret[i] = numeric.rep(s,v,k+1); }\n return ret;\n}\n\n\nnumeric.dotMMsmall = function dotMMsmall(x,y) {\n var i,j,k,p,q,r,ret,foo,bar,woo,i0,k0,p0,r0;\n p = x.length; q = y.length; r = y[0].length;\n ret = Array(p);\n for(i=p-1;i>=0;i--) {\n foo = Array(r);\n bar = x[i];\n for(k=r-1;k>=0;k--) {\n woo = bar[q-1]*y[q-1][k];\n for(j=q-2;j>=1;j-=2) {\n i0 = j-1;\n woo += bar[j]*y[j][k] + bar[i0]*y[i0][k];\n }\n if(j===0) { woo += bar[0]*y[0][k]; }\n foo[k] = woo;\n }\n ret[i] = foo;\n }\n return ret;\n}\nnumeric._getCol = function _getCol(A,j,x) {\n var n = A.length, i;\n for(i=n-1;i>0;--i) {\n x[i] = A[i][j];\n --i;\n x[i] = A[i][j];\n }\n if(i===0) x[0] = A[0][j];\n}\nnumeric.dotMMbig = function dotMMbig(x,y){\n var gc = numeric._getCol, p = y.length, v = Array(p);\n var m = x.length, n = y[0].length, A = new Array(m), xj;\n var VV = numeric.dotVV;\n var i,j,k,z;\n --p;\n --m;\n for(i=m;i!==-1;--i) A[i] = Array(n);\n --n;\n for(i=n;i!==-1;--i) {\n gc(y,i,v);\n for(j=m;j!==-1;--j) {\n z=0;\n xj = x[j];\n A[j][i] = VV(xj,v);\n }\n }\n return A;\n}\n\nnumeric.dotMV = function dotMV(x,y) {\n var p = x.length, q = y.length,i;\n var ret = Array(p), dotVV = numeric.dotVV;\n for(i=p-1;i>=0;i--) { ret[i] = dotVV(x[i],y); }\n return ret;\n}\n\nnumeric.dotVM = function dotVM(x,y) {\n var i,j,k,p,q,r,ret,foo,bar,woo,i0,k0,p0,r0,s1,s2,s3,baz,accum;\n p = x.length; q = y[0].length;\n ret = Array(q);\n for(k=q-1;k>=0;k--) {\n woo = x[p-1]*y[p-1][k];\n for(j=p-2;j>=1;j-=2) {\n i0 = j-1;\n woo += x[j]*y[j][k] + x[i0]*y[i0][k];\n }\n if(j===0) { woo += x[0]*y[0][k]; }\n ret[k] = woo;\n }\n return ret;\n}\n\nnumeric.dotVV = function dotVV(x,y) {\n var i,n=x.length,i1,ret = x[n-1]*y[n-1];\n for(i=n-2;i>=1;i-=2) {\n i1 = i-1;\n ret += x[i]*y[i] + x[i1]*y[i1];\n }\n if(i===0) { ret += x[0]*y[0]; }\n return ret;\n}\n\nnumeric.dot = function dot(x,y) {\n var d = numeric.dim;\n switch(d(x).length*1000+d(y).length) {\n case 2002:\n if(y.length < 10) return numeric.dotMMsmall(x,y);\n else return numeric.dotMMbig(x,y);\n case 2001: return numeric.dotMV(x,y);\n case 1002: return numeric.dotVM(x,y);\n case 1001: return numeric.dotVV(x,y);\n case 1000: return numeric.mulVS(x,y);\n case 1: return numeric.mulSV(x,y);\n case 0: return x*y;\n default: throw new Error('numeric.dot only works on vectors and matrices');\n }\n}\n\nnumeric.diag = function diag(d) {\n var i,i1,j,n = d.length, A = Array(n), Ai;\n for(i=n-1;i>=0;i--) {\n Ai = Array(n);\n i1 = i+2;\n for(j=n-1;j>=i1;j-=2) {\n Ai[j] = 0;\n Ai[j-1] = 0;\n }\n if(j>i) { Ai[j] = 0; }\n Ai[i] = d[i];\n for(j=i-1;j>=1;j-=2) {\n Ai[j] = 0;\n Ai[j-1] = 0;\n }\n if(j===0) { Ai[0] = 0; }\n A[i] = Ai;\n }\n return A;\n}\nnumeric.getDiag = function(A) {\n var n = Math.min(A.length,A[0].length),i,ret = Array(n);\n for(i=n-1;i>=1;--i) {\n ret[i] = A[i][i];\n --i;\n ret[i] = A[i][i];\n }\n if(i===0) {\n ret[0] = A[0][0];\n }\n return ret;\n}\n\nnumeric.identity = function identity(n) { return numeric.diag(numeric.rep([n],1)); }\nnumeric.pointwise = function pointwise(params,body,setup) {\n if(typeof setup === \"undefined\") { setup = \"\"; }\n var fun = [];\n var k;\n var avec = /\\[i\\]$/,p,thevec = '';\n var haveret = false;\n for(k=0;k<params.length;k++) {\n if(avec.test(params[k])) {\n p = params[k].substring(0,params[k].length-3);\n thevec = p;\n } else { p = params[k]; }\n if(p==='ret') haveret = true;\n fun.push(p);\n }\n fun[params.length] = '_s';\n fun[params.length+1] = '_k';\n fun[params.length+2] = (\n 'if(typeof _s === \"undefined\") _s = numeric.dim('+thevec+');\\n'+\n 'if(typeof _k === \"undefined\") _k = 0;\\n'+\n 'var _n = _s[_k];\\n'+\n 'var i'+(haveret?'':', ret = Array(_n)')+';\\n'+\n 'if(_k < _s.length-1) {\\n'+\n ' for(i=_n-1;i>=0;i--) ret[i] = arguments.callee('+params.join(',')+',_s,_k+1);\\n'+\n ' return ret;\\n'+\n '}\\n'+\n setup+'\\n'+\n 'for(i=_n-1;i!==-1;--i) {\\n'+\n ' '+body+'\\n'+\n '}\\n'+\n 'return ret;'\n );\n return Function.apply(null,fun);\n}\nnumeric.pointwise2 = function pointwise2(params,body,setup) {\n if(typeof setup === \"undefined\") { setup = \"\"; }\n var fun = [];\n var k;\n var avec = /\\[i\\]$/,p,thevec = '';\n var haveret = false;\n for(k=0;k<params.length;k++) {\n if(avec.test(params[k])) {\n p = params[k].substring(0,params[k].length-3);\n thevec = p;\n } else { p = params[k]; }\n if(p==='ret') haveret = true;\n fun.push(p);\n }\n fun[params.length] = (\n 'var _n = '+thevec+'.length;\\n'+\n 'var i'+(haveret?'':', ret = Array(_n)')+';\\n'+\n setup+'\\n'+\n 'for(i=_n-1;i!==-1;--i) {\\n'+\n body+'\\n'+\n '}\\n'+\n 'return ret;'\n );\n return Function.apply(null,fun);\n}\nnumeric._biforeach = (function _biforeach(x,y,s,k,f) {\n if(k === s.length-1) { f(x,y); return; }\n var i,n=s[k];\n for(i=n-1;i>=0;i--) { _biforeach(typeof x===\"object\"?x[i]:x,typeof y===\"object\"?y[i]:y,s,k+1,f); }\n});\nnumeric._biforeach2 = (function _biforeach2(x,y,s,k,f) {\n if(k === s.length-1) { return f(x,y); }\n var i,n=s[k],ret = Array(n);\n for(i=n-1;i>=0;--i) { ret[i] = _biforeach2(typeof x===\"object\"?x[i]:x,typeof y===\"object\"?y[i]:y,s,k+1,f); }\n return ret;\n});\nnumeric._foreach = (function _foreach(x,s,k,f) {\n if(k === s.length-1) { f(x); return; }\n var i,n=s[k];\n for(i=n-1;i>=0;i--) { _foreach(x[i],s,k+1,f); }\n});\nnumeric._foreach2 = (function _foreach2(x,s,k,f) {\n if(k === s.length-1) { return f(x); }\n var i,n=s[k], ret = Array(n);\n for(i=n-1;i>=0;i--) { ret[i] = _foreach2(x[i],s,k+1,f); }\n return ret;\n});\n\n/*numeric.anyV = numeric.mapreduce('if(xi) return true;','false');\nnumeric.allV = numeric.mapreduce('if(!xi) return false;','true');\nnumeric.any = function(x) { if(typeof x.length === \"undefined\") return x; return numeric.anyV(x); }\nnumeric.all = function(x) { if(typeof x.length === \"undefined\") return x; return numeric.allV(x); }*/\n\nnumeric.ops2 = {\n add: '+',\n sub: '-',\n mul: '*',\n div: '/',\n mod: '%',\n and: '&&',\n or: '||',\n eq: '===',\n neq: '!==',\n lt: '<',\n gt: '>',\n leq: '<=',\n geq: '>=',\n band: '&',\n bor: '|',\n bxor: '^',\n lshift: '<<',\n rshift: '>>',\n rrshift: '>>>'\n};\nnumeric.opseq = {\n addeq: '+=',\n subeq: '-=',\n muleq: '*=',\n diveq: '/=',\n modeq: '%=',\n lshifteq: '<<=',\n rshifteq: '>>=',\n rrshifteq: '>>>=',\n bandeq: '&=',\n boreq: '|=',\n bxoreq: '^='\n};\nnumeric.mathfuns = ['abs','acos','asin','atan','ceil','cos',\n 'exp','floor','log','round','sin','sqrt','tan',\n 'isNaN','isFinite'];\nnumeric.mathfuns2 = ['atan2','pow','max','min'];\nnumeric.ops1 = {\n neg: '-',\n not: '!',\n bnot: '~',\n clone: ''\n};\nnumeric.mapreducers = {\n any: ['if(xi) return true;','var accum = false;'],\n all: ['if(!xi) return false;','var accum = true;'],\n sum: ['accum += xi;','var accum = 0;'],\n prod: ['accum *= xi;','var accum = 1;'],\n norm2Squared: ['accum += xi*xi;','var accum = 0;'],\n norminf: ['accum = max(accum,abs(xi));','var accum = 0, max = Math.max, abs = Math.abs;'],\n norm1: ['accum += abs(xi)','var accum = 0, abs = Math.abs;'],\n sup: ['accum = max(accum,xi);','var accum = -Infinity, max = Math.max;'],\n inf: ['accum = min(accum,xi);','var accum = Infinity, min = Math.min;']\n};\n\n(function () {\n var i,o;\n for(i=0;i<numeric.mathfuns2.length;++i) {\n o = numeric.mathfuns2[i];\n numeric.ops2[o] = o;\n }\n for(i in numeric.ops2) {\n if(numeric.ops2.hasOwnProperty(i)) {\n o = numeric.ops2[i];\n var code, codeeq, setup = '';\n if(numeric.myIndexOf.call(numeric.mathfuns2,i)!==-1) {\n setup = 'var '+o+' = Math.'+o+';\\n';\n code = function(r,x,y) { return r+' = '+o+'('+x+','+y+')'; };\n codeeq = function(x,y) { return x+' = '+o+'('+x+','+y+')'; };\n } else {\n code = function(r,x,y) { return r+' = '+x+' '+o+' '+y; };\n if(numeric.opseq.hasOwnProperty(i+'eq')) {\n codeeq = function(x,y) { return x+' '+o+'= '+y; };\n } else {\n codeeq = function(x,y) { return x+' = '+x+' '+o+' '+y; }; \n }\n }\n numeric[i+'VV'] = numeric.pointwise2(['x[i]','y[i]'],code('ret[i]','x[i]','y[i]'),setup);\n numeric[i+'SV'] = numeric.pointwise2(['x','y[i]'],code('ret[i]','x','y[i]'),setup);\n numeric[i+'VS'] = numeric.pointwise2(['x[i]','y'],code('ret[i]','x[i]','y'),setup);\n numeric[i] = Function(\n 'var n = arguments.length, i, x = arguments[0], y;\\n'+\n 'var VV = numeric.'+i+'VV, VS = numeric.'+i+'VS, SV = numeric.'+i+'SV;\\n'+\n 'var dim = numeric.dim;\\n'+\n 'for(i=1;i!==n;++i) { \\n'+\n ' y = arguments[i];\\n'+\n ' if(typeof x === \"object\") {\\n'+\n ' if(typeof y === \"object\") x = numeric._biforeach2(x,y,dim(x),0,VV);\\n'+\n ' else x = numeric._biforeach2(x,y,dim(x),0,VS);\\n'+\n ' } else if(typeof y === \"object\") x = numeric._biforeach2(x,y,dim(y),0,SV);\\n'+\n ' else '+codeeq('x','y')+'\\n'+\n '}\\nreturn x;\\n');\n numeric[o] = numeric[i];\n numeric[i+'eqV'] = numeric.pointwise2(['ret[i]','x[i]'], codeeq('ret[i]','x[i]'),setup);\n numeric[i+'eqS'] = numeric.pointwise2(['ret[i]','x'], codeeq('ret[i]','x'),setup);\n numeric[i+'eq'] = Function(\n 'var n = arguments.length, i, x = arguments[0], y;\\n'+\n 'var V = numeric.'+i+'eqV, S = numeric.'+i+'eqS\\n'+\n 'var s = numeric.dim(x);\\n'+\n 'for(i=1;i!==n;++i) { \\n'+\n ' y = arguments[i];\\n'+\n ' if(typeof y === \"object\") numeric._biforeach(x,y,s,0,V);\\n'+\n ' else numeric._biforeach(x,y,s,0,S);\\n'+\n '}\\nreturn x;\\n');\n }\n }\n for(i=0;i<numeric.mathfuns2.length;++i) {\n o = numeric.mathfuns2[i];\n delete numeric.ops2[o];\n }\n for(i=0;i<numeric.mathfuns.length;++i) {\n o = numeric.mathfuns[i];\n numeric.ops1[o] = o;\n }\n for(i in numeric.ops1) {\n if(numeric.ops1.hasOwnProperty(i)) {\n setup = '';\n o = numeric.ops1[i];\n if(numeric.myIndexOf.call(numeric.mathfuns,i)!==-1) {\n if(Math.hasOwnProperty(o)) setup = 'var '+o+' = Math.'+o+';\\n';\n }\n numeric[i+'eqV'] = numeric.pointwise2(['ret[i]'],'ret[i] = '+o+'(ret[i]);',setup);\n numeric[i+'eq'] = Function('x',\n 'if(typeof x !== \"object\") return '+o+'x\\n'+\n 'var i;\\n'+\n 'var V = numeric.'+i+'eqV;\\n'+\n 'var s = numeric.dim(x);\\n'+\n 'numeric._foreach(x,s,0,V);\\n'+\n 'return x;\\n');\n numeric[i+'V'] = numeric.pointwise2(['x[i]'],'ret[i] = '+o+'(x[i]);',setup);\n numeric[i] = Function('x',\n 'if(typeof x !== \"object\") return '+o+'(x)\\n'+\n 'var i;\\n'+\n 'var V = numeric.'+i+'V;\\n'+\n 'var s = numeric.dim(x);\\n'+\n 'return numeric._foreach2(x,s,0,V);\\n');\n }\n }\n for(i=0;i<numeric.mathfuns.length;++i) {\n o = numeric.mathfuns[i];\n delete numeric.ops1[o];\n }\n for(i in numeric.mapreducers) {\n if(numeric.mapreducers.hasOwnProperty(i)) {\n o = numeric.mapreducers[i];\n numeric[i+'V'] = numeric.mapreduce2(o[0],o[1]);\n numeric[i] = Function('x','s','k',\n o[1]+\n 'if(typeof x !== \"object\") {'+\n ' xi = x;\\n'+\n o[0]+';\\n'+\n ' return accum;\\n'+\n '}'+\n 'if(typeof s === \"undefined\") s = numeric.dim(x);\\n'+\n 'if(typeof k === \"undefined\") k = 0;\\n'+\n 'if(k === s.length-1) return numeric.'+i+'V(x);\\n'+\n 'var xi;\\n'+\n 'var n = x.length, i;\\n'+\n 'for(i=n-1;i!==-1;--i) {\\n'+\n ' xi = arguments.callee(x[i]);\\n'+\n o[0]+';\\n'+\n '}\\n'+\n 'return accum;\\n');\n }\n }\n}());\n\nnumeric.truncVV = numeric.pointwise(['x[i]','y[i]'],'ret[i] = round(x[i]/y[i])*y[i];','var round = Math.round;');\nnumeric.truncVS = numeric.pointwise(['x[i]','y'],'ret[i] = round(x[i]/y)*y;','var round = Math.round;');\nnumeric.truncSV = numeric.pointwise(['x','y[i]'],'ret[i] = round(x/y[i])*y[i];','var round = Math.round;');\nnumeric.trunc = function trunc(x,y) {\n if(typeof x === \"object\") {\n if(typeof y === \"object\") return numeric.truncVV(x,y);\n return numeric.truncVS(x,y);\n }\n if (typeof y === \"object\") return numeric.truncSV(x,y);\n return Math.round(x/y)*y;\n}\n\nnumeric.inv = function inv(x) {\n var s = numeric.dim(x), abs = Math.abs, m = s[0], n = s[1];\n var A = numeric.clone(x), Ai, Aj;\n var I = numeric.identity(m), Ii, Ij;\n var i,j,k,x;\n for(j=0;j<n;++j) {\n var i0 = -1;\n var v0 = -1;\n for(i=j;i!==m;++i) { k = abs(A[i][j]); if(k>v0) { i0 = i; v0 = k; } }\n Aj = A[i0]; A[i0] = A[j]; A[j] = Aj;\n Ij = I[i0]; I[i0] = I[j]; I[j] = Ij;\n x = Aj[j];\n for(k=j;k!==n;++k) Aj[k] /= x; \n for(k=n-1;k!==-1;--k) Ij[k] /= x;\n for(i=m-1;i!==-1;--i) {\n if(i!==j) {\n Ai = A[i];\n Ii = I[i];\n x = Ai[j];\n for(k=j+1;k!==n;++k) Ai[k] -= Aj[k]*x;\n for(k=n-1;k>0;--k) { Ii[k] -= Ij[k]*x; --k; Ii[k] -= Ij[k]*x; }\n if(k===0) Ii[0] -= Ij[0]*x;\n }\n }\n }\n return I;\n}\n\nnumeric.det = function det(x) {\n var s = numeric.dim(x);\n if(s.length !== 2 || s[0] !== s[1]) { throw new Error('numeric: det() only works on square matrices'); }\n var n = s[0], ret = 1,i,j,k,A = numeric.clone(x),Aj,Ai,alpha,temp,k1,k2,k3;\n for(j=0;j<n-1;j++) {\n k=j;\n for(i=j+1;i<n;i++) { if(Math.abs(A[i][j]) > Math.abs(A[k][j])) { k = i; } }\n if(k !== j) {\n temp = A[k]; A[k] = A[j]; A[j] = temp;\n ret *= -1;\n }\n Aj = A[j];\n for(i=j+1;i<n;i++) {\n Ai = A[i];\n alpha = Ai[j]/Aj[j];\n for(k=j+1;k<n-1;k+=2) {\n k1 = k+1;\n Ai[k] -= Aj[k]*alpha;\n Ai[k1] -= Aj[k1]*alpha;\n }\n if(k!==n) { Ai[k] -= Aj[k]*alpha; }\n }\n if(Aj[j] === 0) { return 0; }\n ret *= Aj[j];\n }\n return ret*A[j][j];\n}\n\nnumeric.transpose = function transpose(x) {\n var i,j,m = x.length,n = x[0].length, ret=Array(n),A0,A1,Bj;\n for(j=0;j<n;j++) ret[j] = Array(m);\n for(i=m-1;i>=1;i-=2) {\n A1 = x[i];\n A0 = x[i-1];\n for(j=n-1;j>=1;--j) {\n Bj = ret[j]; Bj[i] = A1[j]; Bj[i-1] = A0[j];\n --j;\n Bj = ret[j]; Bj[i] = A1[j]; Bj[i-1] = A0[j];\n }\n if(j===0) {\n Bj = ret[0]; Bj[i] = A1[0]; Bj[i-1] = A0[0];\n }\n }\n if(i===0) {\n A0 = x[0];\n for(j=n-1;j>=1;--j) {\n ret[j][0] = A0[j];\n --j;\n ret[j][0] = A0[j];\n }\n if(j===0) { ret[0][0] = A0[0]; }\n }\n return ret;\n}\nnumeric.negtranspose = function negtranspose(x) {\n var i,j,m = x.length,n = x[0].length, ret=Array(n),A0,A1,Bj;\n for(j=0;j<n;j++) ret[j] = Array(m);\n for(i=m-1;i>=1;i-=2) {\n A1 = x[i];\n A0 = x[i-1];\n for(j=n-1;j>=1;--j) {\n Bj = ret[j]; Bj[i] = -A1[j]; Bj[i-1] = -A0[j];\n --j;\n Bj = ret[j]; Bj[i] = -A1[j]; Bj[i-1] = -A0[j];\n }\n if(j===0) {\n Bj = ret[0]; Bj[i] = -A1[0]; Bj[i-1] = -A0[0];\n }\n }\n if(i===0) {\n A0 = x[0];\n for(j=n-1;j>=1;--j) {\n ret[j][0] = -A0[j];\n --j;\n ret[j][0] = -A0[j];\n }\n if(j===0) { ret[0][0] = -A0[0]; }\n }\n return ret;\n}\n\nnumeric._random = function _random(s,k) {\n var i,n=s[k],ret=Array(n), rnd;\n if(k === s.length-1) {\n rnd = Math.random;\n for(i=n-1;i>=1;i-=2) {\n ret[i] = rnd();\n ret[i-1] = rnd();\n }\n if(i===0) { ret[0] = rnd(); }\n return ret;\n }\n for(i=n-1;i>=0;i--) ret[i] = _random(s,k+1);\n return ret;\n}\nnumeric.random = function random(s) { return numeric._random(s,0); }\n\nnumeric.norm2 = function norm2(x) { return Math.sqrt(numeric.norm2Squared(x)); }\n\nnumeric.linspace = function linspace(a,b,n) {\n if(typeof n === \"undefined\") n = Math.max(Math.round(b-a)+1,1);\n if(n<2) { return n===1?[a]:[]; }\n var i,ret = Array(n);\n n--;\n for(i=n;i>=0;i--) { ret[i] = (i*b+(n-i)*a)/n; }\n return ret;\n}\n\nnumeric.getBlock = function getBlock(x,from,to) {\n var s = numeric.dim(x);\n function foo(x,k) {\n var i,a = from[k], n = to[k]-a, ret = Array(n);\n if(k === s.length-1) {\n for(i=n;i>=0;i--) { ret[i] = x[i+a]; }\n return ret;\n }\n for(i=n;i>=0;i--) { ret[i] = foo(x[i+a],k+1); }\n return ret;\n }\n return foo(x,0);\n}\n\nnumeric.setBlock = function setBlock(x,from,to,B) {\n var s = numeric.dim(x);\n function foo(x,y,k) {\n var i,a = from[k], n = to[k]-a;\n if(k === s.length-1) { for(i=n;i>=0;i--) { x[i+a] = y[i]; } }\n for(i=n;i>=0;i--) { foo(x[i+a],y[i],k+1); }\n }\n foo(x,B,0);\n return x;\n}\n\nnumeric.getRange = function getRange(A,I,J) {\n var m = I.length, n = J.length;\n var i,j;\n var B = Array(m), Bi, AI;\n for(i=m-1;i!==-1;--i) {\n B[i] = Array(n);\n Bi = B[i];\n AI = A[I[i]];\n for(j=n-1;j!==-1;--j) Bi[j] = AI[J[j]];\n }\n return B;\n}\n\nnumeric.blockMatrix = function blockMatrix(X) {\n var s = numeric.dim(X);\n if(s.length<4) return numeric.blockMatrix([X]);\n var m=s[0],n=s[1],M,N,i,j,Xij;\n M = 0; N = 0;\n for(i=0;i<m;++i) M+=X[i][0].length;\n for(j=0;j<n;++j) N+=X[0][j][0].length;\n var Z = Array(M);\n for(i=0;i<M;++i) Z[i] = Array(N);\n var I=0,J,ZI,k,l,Xijk;\n for(i=0;i<m;++i) {\n J=N;\n for(j=n-1;j!==-1;--j) {\n Xij = X[i][j];\n J -= Xij[0].length;\n for(k=Xij.length-1;k!==-1;--k) {\n Xijk = Xij[k];\n ZI = Z[I+k];\n for(l = Xijk.length-1;l!==-1;--l) ZI[J+l] = Xijk[l];\n }\n }\n I += X[i][0].length;\n }\n return Z;\n}\n\nnumeric.tensor = function tensor(x,y) {\n if(typeof x === \"number\" || typeof y === \"number\") return numeric.mul(x,y);\n var s1 = numeric.dim(x), s2 = numeric.dim(y);\n if(s1.length !== 1 || s2.length !== 1) {\n throw new Error('numeric: tensor product is only defined for vectors');\n }\n var m = s1[0], n = s2[0], A = Array(m), Ai, i,j,xi;\n for(i=m-1;i>=0;i--) {\n Ai = Array(n);\n xi = x[i];\n for(j=n-1;j>=3;--j) {\n Ai[j] = xi * y[j];\n --j;\n Ai[j] = xi * y[j];\n --j;\n Ai[j] = xi * y[j];\n --j;\n Ai[j] = xi * y[j];\n }\n while(j>=0) { Ai[j] = xi * y[j]; --j; }\n A[i] = Ai;\n }\n return A;\n}\n\n// 3. The Tensor type T\nnumeric.T = function T(x,y) { this.x = x; this.y = y; }\nnumeric.t = function t(x,y) { return new numeric.T(x,y); }\n\nnumeric.Tbinop = function Tbinop(rr,rc,cr,cc,setup) {\n var io = numeric.indexOf;\n if(typeof setup !== \"string\") {\n var k;\n setup = '';\n for(k in numeric) {\n if(numeric.hasOwnProperty(k) && (rr.indexOf(k)>=0 || rc.indexOf(k)>=0 || cr.indexOf(k)>=0 || cc.indexOf(k)>=0) && k.length>1) {\n setup += 'var '+k+' = numeric.'+k+';\\n';\n }\n }\n }\n return Function(['y'],\n 'var x = this;\\n'+\n 'if(!(y instanceof numeric.T)) { y = new numeric.T(y); }\\n'+\n setup+'\\n'+\n 'if(x.y) {'+\n ' if(y.y) {'+\n ' return new numeric.T('+cc+');\\n'+\n ' }\\n'+\n ' return new numeric.T('+cr+');\\n'+\n '}\\n'+\n 'if(y.y) {\\n'+\n ' return new numeric.T('+rc+');\\n'+\n '}\\n'+\n 'return new numeric.T('+rr+');\\n'\n );\n}\n\nnumeric.T.prototype.add = numeric.Tbinop(\n 'add(x.x,y.x)',\n 'add(x.x,y.x),y.y',\n 'add(x.x,y.x),x.y',\n 'add(x.x,y.x),add(x.y,y.y)');\nnumeric.T.prototype.sub = numeric.Tbinop(\n 'sub(x.x,y.x)',\n 'sub(x.x,y.x),neg(y.y)',\n 'sub(x.x,y.x),x.y',\n 'sub(x.x,y.x),sub(x.y,y.y)');\nnumeric.T.prototype.mul = numeric.Tbinop(\n 'mul(x.x,y.x)',\n 'mul(x.x,y.x),mul(x.x,y.y)',\n 'mul(x.x,y.x),mul(x.y,y.x)',\n 'sub(mul(x.x,y.x),mul(x.y,y.y)),add(mul(x.x,y.y),mul(x.y,y.x))');\n\nnumeric.T.prototype.reciprocal = function reciprocal() {\n var mul = numeric.mul, div = numeric.div;\n if(this.y) {\n var d = numeric.add(mul(this.x,this.x),mul(this.y,this.y));\n return new numeric.T(div(this.x,d),div(numeric.neg(this.y),d));\n }\n return new T(div(1,this.x));\n}\nnumeric.T.prototype.div = function div(y) {\n if(!(y instanceof numeric.T)) y = new numeric.T(y);\n if(y.y) { return this.mul(y.reciprocal()); }\n var div = numeric.div;\n if(this.y) { return new numeric.T(div(this.x,y.x),div(this.y,y.x)); }\n return new numeric.T(div(this.x,y.x));\n}\nnumeric.T.prototype.dot = numeric.Tbinop(\n 'dot(x.x,y.x)',\n 'dot(x.x,y.x),dot(x.x,y.y)',\n 'dot(x.x,y.x),dot(x.y,y.x)',\n 'sub(dot(x.x,y.x),dot(x.y,y.y)),add(dot(x.x,y.y),dot(x.y,y.x))'\n );\nnumeric.T.prototype.transpose = function transpose() {\n var t = numeric.transpose, x = this.x, y = this.y;\n if(y) { return new numeric.T(t(x),t(y)); }\n return new numeric.T(t(x));\n}\nnumeric.T.prototype.transjugate = function transjugate() {\n var t = numeric.transpose, x = this.x, y = this.y;\n if(y) { return new numeric.T(t(x),numeric.negtranspose(y)); }\n return new numeric.T(t(x));\n}\nnumeric.Tunop = function Tunop(r,c,s) {\n if(typeof s !== \"string\") { s = ''; }\n return Function(\n 'var x = this;\\n'+\n s+'\\n'+\n 'if(x.y) {'+\n ' '+c+';\\n'+\n '}\\n'+\n r+';\\n'\n );\n}\n\nnumeric.T.prototype.exp = numeric.Tunop(\n 'return new numeric.T(ex)',\n 'return new numeric.T(mul(cos(x.y),ex),mul(sin(x.y),ex))',\n 'var ex = numeric.exp(x.x), cos = numeric.cos, sin = numeric.sin, mul = numeric.mul;');\nnumeric.T.prototype.conj = numeric.Tunop(\n 'return new numeric.T(x.x);',\n 'return new numeric.T(x.x,numeric.neg(x.y));');\nnumeric.T.prototype.neg = numeric.Tunop(\n 'return new numeric.T(neg(x.x));',\n 'return new numeric.T(neg(x.x),neg(x.y));',\n 'var neg = numeric.neg;');\nnumeric.T.prototype.sin = numeric.Tunop(\n 'return new numeric.T(numeric.sin(x.x))',\n 'return x.exp().sub(x.neg().exp()).div(new numeric.T(0,2));');\nnumeric.T.prototype.cos = numeric.Tunop(\n 'return new numeric.T(numeric.cos(x.x))',\n 'return x.exp().add(x.neg().exp()).div(2);');\nnumeric.T.prototype.abs = numeric.Tunop(\n 'return new numeric.T(numeric.abs(x.x));',\n 'return new numeric.T(numeric.sqrt(numeric.add(mul(x.x,x.x),mul(x.y,x.y))));',\n 'var mul = numeric.mul;');\nnumeric.T.prototype.log = numeric.Tunop(\n 'return new numeric.T(numeric.log(x.x));',\n 'var theta = new numeric.T(numeric.atan2(x.y,x.x)), r = x.abs();\\n'+\n 'return new numeric.T(numeric.log(r.x),theta.x);');\nnumeric.T.prototype.norm2 = numeric.Tunop(\n 'return numeric.norm2(x.x);',\n 'var f = numeric.norm2Squared;\\n'+\n 'return Math.sqrt(f(x.x)+f(x.y));');\nnumeric.T.prototype.inv = function inv() {\n var A = this;\n if(typeof A.y === \"undefined\") { return new numeric.T(numeric.inv(A.x)); }\n var n = A.x.length, i, j, k;\n var Rx = numeric.identity(n),Ry = numeric.rep([n,n],0);\n var Ax = numeric.clone(A.x), Ay = numeric.clone(A.y);\n var Aix, Aiy, Ajx, Ajy, Rix, Riy, Rjx, Rjy;\n var i,j,k,d,d1,ax,ay,bx,by,temp;\n for(i=0;i<n;i++) {\n ax = Ax[i][i]; ay = Ay[i][i];\n d = ax*ax+ay*ay;\n k = i;\n for(j=i+1;j<n;j++) {\n ax = Ax[j][i]; ay = Ay[j][i];\n d1 = ax*ax+ay*ay;\n if(d1 > d) { k=j; d = d1; }\n }\n if(k!==i) {\n temp = Ax[i]; Ax[i] = Ax[k]; Ax[k] = temp;\n temp = Ay[i]; Ay[i] = Ay[k]; Ay[k] = temp;\n temp = Rx[i]; Rx[i] = Rx[k]; Rx[k] = temp;\n temp = Ry[i]; Ry[i] = Ry[k]; Ry[k] = temp;\n }\n Aix = Ax[i]; Aiy = Ay[i];\n Rix = Rx[i]; Riy = Ry[i];\n ax = Aix[i]; ay = Aiy[i];\n for(j=i+1;j<n;j++) {\n bx = Aix[j]; by = Aiy[j];\n Aix[j] = (bx*ax+by*ay)/d;\n Aiy[j] = (by*ax-bx*ay)/d;\n }\n for(j=0;j<n;j++) {\n bx = Rix[j]; by = Riy[j];\n Rix[j] = (bx*ax+by*ay)/d;\n Riy[j] = (by*ax-bx*ay)/d;\n }\n for(j=i+1;j<n;j++) {\n Ajx = Ax[j]; Ajy = Ay[j];\n Rjx = Rx[j]; Rjy = Ry[j];\n ax = Ajx[i]; ay = Ajy[i];\n for(k=i+1;k<n;k++) {\n bx = Aix[k]; by = Aiy[k];\n Ajx[k] -= bx*ax-by*ay;\n Ajy[k] -= by*ax+bx*ay;\n }\n for(k=0;k<n;k++) {\n bx = Rix[k]; by = Riy[k];\n Rjx[k] -= bx*ax-by*ay;\n Rjy[k] -= by*ax+bx*ay;\n }\n }\n }\n for(i=n-1;i>0;i--) {\n Rix = Rx[i]; Riy = Ry[i];\n for(j=i-1;j>=0;j--) {\n Rjx = Rx[j]; Rjy = Ry[j];\n ax = Ax[j][i]; ay = Ay[j][i];\n for(k=n-1;k>=0;k--) {\n bx = Rix[k]; by = Riy[k];\n Rjx[k] -= ax*bx - ay*by;\n Rjy[k] -= ax*by + ay*bx;\n }\n }\n }\n return new numeric.T(Rx,Ry);\n}\nnumeric.T.prototype.get = function get(i) {\n var x = this.x, y = this.y, k = 0, ik, n = i.length;\n if(y) {\n while(k<n) {\n ik = i[k];\n x = x[ik];\n y = y[ik];\n k++;\n }\n return new numeric.T(x,y);\n }\n while(k<n) {\n ik = i[k];\n x = x[ik];\n k++;\n }\n return new numeric.T(x);\n}\nnumeric.T.prototype.set = function set(i,v) {\n var x = this.x, y = this.y, k = 0, ik, n = i.length, vx = v.x, vy = v.y;\n if(n===0) {\n if(vy) { this.y = vy; }\n else if(y) { this.y = undefined; }\n this.x = x;\n return this;\n }\n if(vy) {\n if(y) { /* ok */ }\n else {\n y = numeric.rep(numeric.dim(x),0);\n this.y = y;\n }\n while(k<n-1) {\n ik = i[k];\n x = x[ik];\n y = y[ik];\n k++;\n }\n ik = i[k];\n x[ik] = vx;\n y[ik] = vy;\n return this;\n }\n if(y) {\n while(k<n-1) {\n ik = i[k];\n x = x[ik];\n y = y[ik];\n k++;\n }\n ik = i[k];\n x[ik] = vx;\n if(vx instanceof Array) y[ik] = numeric.rep(numeric.dim(vx),0);\n else y[ik] = 0;\n return this;\n }\n while(k<n-1) {\n ik = i[k];\n x = x[ik];\n k++;\n }\n ik = i[k];\n x[ik] = vx;\n return this;\n}\nnumeric.T.prototype.getRows = function getRows(i0,i1) {\n var n = i1-i0+1, j;\n var rx = Array(n), ry, x = this.x, y = this.y;\n for(j=i0;j<=i1;j++) { rx[j-i0] = x[j]; }\n if(y) {\n ry = Array(n);\n for(j=i0;j<=i1;j++) { ry[j-i0] = y[j]; }\n return new numeric.T(rx,ry);\n }\n return new numeric.T(rx);\n}\nnumeric.T.prototype.setRows = function setRows(i0,i1,A) {\n var j;\n var rx = this.x, ry = this.y, x = A.x, y = A.y;\n for(j=i0;j<=i1;j++) { rx[j] = x[j-i0]; }\n if(y) {\n if(!ry) { ry = numeric.rep(numeric.dim(rx),0); this.y = ry; }\n for(j=i0;j<=i1;j++) { ry[j] = y[j-i0]; }\n } else if(ry) {\n for(j=i0;j<=i1;j++) { ry[j] = numeric.rep([x[j-i0].length],0); }\n }\n return this;\n}\nnumeric.T.prototype.getRow = function getRow(k) {\n var x = this.x, y = this.y;\n if(y) { return new numeric.T(x[k],y[k]); }\n return new numeric.T(x[k]);\n}\nnumeric.T.prototype.setRow = function setRow(i,v) {\n var rx = this.x, ry = this.y, x = v.x, y = v.y;\n rx[i] = x;\n if(y) {\n if(!ry) { ry = numeric.rep(numeric.dim(rx),0); this.y = ry; }\n ry[i] = y;\n } else if(ry) {\n ry = numeric.rep([x.length],0);\n }\n return this;\n}\n\nnumeric.T.prototype.getBlock = function getBlock(from,to) {\n var x = this.x, y = this.y, b = numeric.getBlock;\n if(y) { return new numeric.T(b(x,from,to),b(y,from,to)); }\n return new numeric.T(b(x,from,to));\n}\nnumeric.T.prototype.setBlock = function setBlock(from,to,A) {\n if(!(A instanceof numeric.T)) A = new numeric.T(A);\n var x = this.x, y = this.y, b = numeric.setBlock, Ax = A.x, Ay = A.y;\n if(Ay) {\n if(!y) { this.y = numeric.rep(numeric.dim(this),0); y = this.y; }\n b(x,from,to,Ax);\n b(y,from,to,Ay);\n return this;\n }\n b(x,from,to,Ax);\n if(y) b(y,from,to,numeric.rep(numeric.dim(Ax),0));\n}\nnumeric.T.rep = function rep(s,v) {\n var T = numeric.T;\n if(!(v instanceof T)) v = new T(v);\n var x = v.x, y = v.y, r = numeric.rep;\n if(y) return new T(r(s,x),r(s,y));\n return new T(r(s,x));\n}\nnumeric.T.diag = function diag(d) {\n if(!(d instanceof numeric.T)) d = new numeric.T(d);\n var x = d.x, y = d.y, diag = numeric.diag;\n if(y) return new numeric.T(diag(x),diag(y));\n return new numeric.T(diag(x));\n}\nnumeric.T.eig = function eig() {\n if(this.y) { throw new Error('eig: not implemented for complex matrices.'); }\n return numeric.eig(this.x);\n}\nnumeric.T.identity = function identity(n) { return new numeric.T(numeric.identity(n)); }\nnumeric.T.prototype.getDiag = function getDiag() {\n var n = numeric;\n var x = this.x, y = this.y;\n if(y) { return new n.T(n.getDiag(x),n.getDiag(y)); }\n return new n.T(n.getDiag(x));\n}\n\n// 4. Eigenvalues of real matrices\n\nnumeric.house = function house(x) {\n var v = numeric.clone(x);\n var s = x[0] >= 0 ? 1 : -1;\n var alpha = s*numeric.norm2(x);\n v[0] += alpha;\n var foo = numeric.norm2(v);\n if(foo === 0) { /* this should not happen */ throw new Error('eig: internal error'); }\n return numeric.div(v,foo);\n}\n\nnumeric.toUpperHessenberg = function toUpperHessenberg(me) {\n var s = numeric.dim(me);\n if(s.length !== 2 || s[0] !== s[1]) { throw new Error('numeric: toUpperHessenberg() only works on square matrices'); }\n var m = s[0], i,j,k,x,v,A = numeric.clone(me),B,C,Ai,Ci,Q = numeric.identity(m),Qi;\n for(j=0;j<m-2;j++) {\n x = Array(m-j-1);\n for(i=j+1;i<m;i++) { x[i-j-1] = A[i][j]; }\n if(numeric.norm2(x)>0) {\n v = numeric.house(x);\n B = numeric.getBlock(A,[j+1,j],[m-1,m-1]);\n C = numeric.tensor(v,numeric.dot(v,B));\n for(i=j+1;i<m;i++) { Ai = A[i]; Ci = C[i-j-1]; for(k=j;k<m;k++) Ai[k] -= 2*Ci[k-j]; }\n B = numeric.getBlock(A,[0,j+1],[m-1,m-1]);\n C = numeric.tensor(numeric.dot(B,v),v);\n for(i=0;i<m;i++) { Ai = A[i]; Ci = C[i]; for(k=j+1;k<m;k++) Ai[k] -= 2*Ci[k-j-1]; }\n B = Array(m-j-1);\n for(i=j+1;i<m;i++) B[i-j-1] = Q[i];\n C = numeric.tensor(v,numeric.dot(v,B));\n for(i=j+1;i<m;i++) { Qi = Q[i]; Ci = C[i-j-1]; for(k=0;k<m;k++) Qi[k] -= 2*Ci[k]; }\n }\n }\n return {H:A, Q:Q};\n}\n\nnumeric.epsilon = 2.220446049250313e-16;\n\nnumeric.QRFrancis = function(H,maxiter) {\n if(typeof maxiter === \"undefined\") { maxiter = 10000; }\n H = numeric.clone(H);\n var H0 = numeric.clone(H);\n var s = numeric.dim(H),m=s[0],x,v,a,b,c,d,det,tr, Hloc, Q = numeric.identity(m), Qi, Hi, B, C, Ci,i,j,k,iter;\n if(m<3) { return {Q:Q, B:[ [0,m-1] ]}; }\n var epsilon = numeric.epsilon;\n for(iter=0;iter<maxiter;iter++) {\n for(j=0;j<m-1;j++) {\n if(Math.abs(H[j+1][j]) < epsilon*(Math.abs(H[j][j])+Math.abs(H[j+1][j+1]))) {\n var QH1 = numeric.QRFrancis(numeric.getBlock(H,[0,0],[j,j]),maxiter);\n var QH2 = numeric.QRFrancis(numeric.getBlock(H,[j+1,j+1],[m-1,m-1]),maxiter);\n B = Array(j+1);\n for(i=0;i<=j;i++) { B[i] = Q[i]; }\n C = numeric.dot(QH1.Q,B);\n for(i=0;i<=j;i++) { Q[i] = C[i]; }\n B = Array(m-j-1);\n for(i=j+1;i<m;i++) { B[i-j-1] = Q[i]; }\n C = numeric.dot(QH2.Q,B);\n for(i=j+1;i<m;i++) { Q[i] = C[i-j-1]; }\n return {Q:Q,B:QH1.B.concat(numeric.add(QH2.B,j+1))};\n }\n }\n a = H[m-2][m-2]; b = H[m-2][m-1];\n c = H[m-1][m-2]; d = H[m-1][m-1];\n tr = a+d;\n det = (a*d-b*c);\n Hloc = numeric.getBlock(H, [0,0], [2,2]);\n if(tr*tr>=4*det) {\n var s1,s2;\n s1 = 0.5*(tr+Math.sqrt(tr*tr-4*det));\n s2 = 0.5*(tr-Math.sqrt(tr*tr-4*det));\n Hloc = numeric.add(numeric.sub(numeric.dot(Hloc,Hloc),\n numeric.mul(Hloc,s1+s2)),\n numeric.diag(numeric.rep([3],s1*s2)));\n } else {\n Hloc = numeric.add(numeric.sub(numeric.dot(Hloc,Hloc),\n numeric.mul(Hloc,tr)),\n numeric.diag(numeric.rep([3],det)));\n }\n x = [Hloc[0][0],Hloc[1][0],Hloc[2][0]];\n v = numeric.house(x);\n B = [H[0],H[1],H[2]];\n C = numeric.tensor(v,numeric.dot(v,B));\n for(i=0;i<3;i++) { Hi = H[i]; Ci = C[i]; for(k=0;k<m;k++) Hi[k] -= 2*Ci[k]; }\n B = numeric.getBlock(H, [0,0],[m-1,2]);\n C = numeric.tensor(numeric.dot(B,v),v);\n for(i=0;i<m;i++) { Hi = H[i]; Ci = C[i]; for(k=0;k<3;k++) Hi[k] -= 2*Ci[k]; }\n B = [Q[0],Q[1],Q[2]];\n C = numeric.tensor(v,numeric.dot(v,B));\n for(i=0;i<3;i++) { Qi = Q[i]; Ci = C[i]; for(k=0;k<m;k++) Qi[k] -= 2*Ci[k]; }\n var J;\n for(j=0;j<m-2;j++) {\n for(k=j;k<=j+1;k++) {\n if(Math.abs(H[k+1][k]) < epsilon*(Math.abs(H[k][k])+Math.abs(H[k+1][k+1]))) {\n var QH1 = numeric.QRFrancis(numeric.getBlock(H,[0,0],[k,k]),maxiter);\n var QH2 = numeric.QRFrancis(numeric.getBlock(H,[k+1,k+1],[m-1,m-1]),maxiter);\n B = Array(k+1);\n for(i=0;i<=k;i++) { B[i] = Q[i]; }\n C = numeric.dot(QH1.Q,B);\n for(i=0;i<=k;i++) { Q[i] = C[i]; }\n B = Array(m-k-1);\n for(i=k+1;i<m;i++) { B[i-k-1] = Q[i]; }\n C = numeric.dot(QH2.Q,B);\n for(i=k+1;i<m;i++) { Q[i] = C[i-k-1]; }\n return {Q:Q,B:QH1.B.concat(numeric.add(QH2.B,k+1))};\n }\n }\n J = Math.min(m-1,j+3);\n x = Array(J-j);\n for(i=j+1;i<=J;i++) { x[i-j-1] = H[i][j]; }\n v = numeric.house(x);\n B = numeric.getBlock(H, [j+1,j],[J,m-1]);\n C = numeric.tensor(v,numeric.dot(v,B));\n for(i=j+1;i<=J;i++) { Hi = H[i]; Ci = C[i-j-1]; for(k=j;k<m;k++) Hi[k] -= 2*Ci[k-j]; }\n B = numeric.getBlock(H, [0,j+1],[m-1,J]);\n C = numeric.tensor(numeric.dot(B,v),v);\n for(i=0;i<m;i++) { Hi = H[i]; Ci = C[i]; for(k=j+1;k<=J;k++) Hi[k] -= 2*Ci[k-j-1]; }\n B = Array(J-j);\n for(i=j+1;i<=J;i++) B[i-j-1] = Q[i];\n C = numeric.tensor(v,numeric.dot(v,B));\n for(i=j+1;i<=J;i++) { Qi = Q[i]; Ci = C[i-j-1]; for(k=0;k<m;k++) Qi[k] -= 2*Ci[k]; }\n }\n }\n throw new Error('numeric: eigenvalue iteration does not converge -- increase maxiter?');\n}\n\nnumeric.eig = function eig(A,maxiter) {\n var QH = numeric.toUpperHessenberg(A);\n var QB = numeric.QRFrancis(QH.H,maxiter);\n var T = numeric.T;\n var n = A.length,i,k,flag = false,B = QB.B,H = numeric.dot(QB.Q,numeric.dot(QH.H,numeric.transpose(QB.Q)));\n var Q = new T(numeric.dot(QB.Q,QH.Q)),Q0;\n var m = B.length,j;\n var a,b,c,d,p1,p2,disc,x,y,p,q,n1,n2;\n var sqrt = Math.sqrt;\n for(k=0;k<m;k++) {\n i = B[k][0];\n if(i === B[k][1]) {\n // nothing\n } else {\n j = i+1;\n a = H[i][i];\n b = H[i][j];\n c = H[j][i];\n d = H[j][j];\n if(b === 0 && c === 0) continue;\n p1 = -a-d;\n p2 = a*d-b*c;\n disc = p1*p1-4*p2;\n if(disc>=0) {\n if(p1<0) x = -0.5*(p1-sqrt(disc));\n else x = -0.5*(p1+sqrt(disc));\n n1 = (a-x)*(a-x)+b*b;\n n2 = c*c+(d-x)*(d-x);\n if(n1>n2) {\n n1 = sqrt(n1);\n p = (a-x)/n1;\n q = b/n1;\n } else {\n n2 = sqrt(n2);\n p = c/n2;\n q = (d-x)/n2;\n }\n Q0 = new T([[q,-p],[p,q]]);\n Q.setRows(i,j,Q0.dot(Q.getRows(i,j)));\n } else {\n x = -0.5*p1;\n y = 0.5*sqrt(-disc);\n n1 = (a-x)*(a-x)+b*b;\n n2 = c*c+(d-x)*(d-x);\n if(n1>n2) {\n n1 = sqrt(n1+y*y);\n p = (a-x)/n1;\n q = b/n1;\n x = 0;\n y /= n1;\n } else {\n n2 = sqrt(n2+y*y);\n p = c/n2;\n q = (d-x)/n2;\n x = y/n2;\n y = 0;\n }\n Q0 = new T([[q,-p],[p,q]],[[x,y],[y,-x]]);\n Q.setRows(i,j,Q0.dot(Q.getRows(i,j)));\n }\n }\n }\n var R = Q.dot(A).dot(Q.transjugate()), n = A.length, E = numeric.T.identity(n);\n for(j=0;j<n;j++) {\n if(j>0) {\n for(k=j-1;k>=0;k--) {\n var Rk = R.get([k,k]), Rj = R.get([j,j]);\n if(numeric.neq(Rk.x,Rj.x) || numeric.neq(Rk.y,Rj.y)) {\n x = R.getRow(k).getBlock([k],[j-1]);\n y = E.getRow(j).getBlock([k],[j-1]);\n E.set([j,k],(R.get([k,j]).neg().sub(x.dot(y))).div(Rk.sub(Rj)));\n } else {\n E.setRow(j,E.getRow(k));\n continue;\n }\n }\n }\n }\n for(j=0;j<n;j++) {\n x = E.getRow(j);\n E.setRow(j,x.div(x.norm2()));\n }\n E = E.transpose();\n E = Q.transjugate().dot(E);\n return { lambda:R.getDiag(), E:E };\n};\n\n// 5. Compressed Column Storage matrices\nnumeric.ccsSparse = function ccsSparse(A) {\n var m = A.length,n,foo, i,j, counts = [];\n for(i=m-1;i!==-1;--i) {\n foo = A[i];\n for(j in foo) {\n j = parseInt(j);\n while(j>=counts.length) counts[counts.length] = 0;\n if(foo[j]!==0) counts[j]++;\n }\n }\n var n = counts.length;\n var Ai = Array(n+1);\n Ai[0] = 0;\n for(i=0;i<n;++i) Ai[i+1] = Ai[i] + counts[i];\n var Aj = Array(Ai[n]), Av = Array(Ai[n]);\n for(i=m-1;i!==-1;--i) {\n foo = A[i];\n for(j in foo) {\n if(foo[j]!==0) {\n counts[j]--;\n Aj[Ai[j]+counts[j]] = i;\n Av[Ai[j]+counts[j]] = foo[j];\n }\n }\n }\n return [Ai,Aj,Av];\n}\nnumeric.ccsFull = function ccsFull(A) {\n var Ai = A[0], Aj = A[1], Av = A[2], s = numeric.ccsDim(A), m = s[0], n = s[1], i,j,j0,j1,k;\n var B = numeric.rep([m,n],0);\n for(i=0;i<n;i++) {\n j0 = Ai[i];\n j1 = Ai[i+1];\n for(j=j0;j<j1;++j) { B[Aj[j]][i] = Av[j]; }\n }\n return B;\n}\nnumeric.ccsTSolve = function ccsTSolve(A,b,x,bj,xj) {\n var Ai = A[0], Aj = A[1], Av = A[2],m = Ai.length-1, max = Math.max,n=0;\n if(typeof bj === \"undefined\") x = numeric.rep([m],0);\n if(typeof bj === \"undefined\") bj = numeric.linspace(0,x.length-1);\n if(typeof xj === \"undefined\") xj = [];\n function dfs(j) {\n var k;\n if(x[j] !== 0) return;\n x[j] = 1;\n for(k=Ai[j];k<Ai[j+1];++k) dfs(Aj[k]);\n xj[n] = j;\n ++n;\n }\n var i,j,j0,j1,k,l,l0,l1,a;\n for(i=bj.length-1;i!==-1;--i) { dfs(bj[i]); }\n xj.length = n;\n for(i=xj.length-1;i!==-1;--i) { x[xj[i]] = 0; }\n for(i=bj.length-1;i!==-1;--i) { j = bj[i]; x[j] = b[j]; }\n for(i=xj.length-1;i!==-1;--i) {\n j = xj[i];\n j0 = Ai[j];\n j1 = max(Ai[j+1],j0);\n for(k=j0;k!==j1;++k) { if(Aj[k] === j) { x[j] /= Av[k]; break; } }\n a = x[j];\n for(k=j0;k!==j1;++k) {\n l = Aj[k];\n if(l !== j) x[l] -= a*Av[k];\n }\n }\n return x;\n}\nnumeric.ccsDFS = function ccsDFS(n) {\n this.k = Array(n);\n this.k1 = Array(n);\n this.j = Array(n);\n}\nnumeric.ccsDFS.prototype.dfs = function dfs(J,Ai,Aj,x,xj,Pinv) {\n var m = 0,foo,n=xj.length;\n var k = this.k, k1 = this.k1, j = this.j,km,k11;\n if(x[J]!==0) return;\n x[J] = 1;\n j[0] = J;\n k[0] = km = Ai[J];\n k1[0] = k11 = Ai[J+1];\n while(1) {\n if(km >= k11) {\n xj[n] = j[m];\n if(m===0) return;\n ++n;\n --m;\n km = k[m];\n k11 = k1[m];\n } else {\n foo = Pinv[Aj[km]];\n if(x[foo] === 0) {\n x[foo] = 1;\n k[m] = km;\n ++m;\n j[m] = foo;\n km = Ai[foo];\n k1[m] = k11 = Ai[foo+1];\n } else ++km;\n }\n }\n}\nnumeric.ccsLPSolve = function ccsLPSolve(A,B,x,xj,I,Pinv,dfs) {\n var Ai = A[0], Aj = A[1], Av = A[2],m = Ai.length-1, n=0;\n var Bi = B[0], Bj = B[1], Bv = B[2];\n \n var i,i0,i1,j,J,j0,j1,k,l,l0,l1,a;\n i0 = Bi[I];\n i1 = Bi[I+1];\n xj.length = 0;\n for(i=i0;i<i1;++i) { dfs.dfs(Pinv[Bj[i]],Ai,Aj,x,xj,Pinv); }\n for(i=xj.length-1;i!==-1;--i) { x[xj[i]] = 0; }\n for(i=i0;i!==i1;++i) { j = Pinv[Bj[i]]; x[j] = Bv[i]; }\n for(i=xj.length-1;i!==-1;--i) {\n j = xj[i];\n j0 = Ai[j];\n j1 = Ai[j+1];\n for(k=j0;k<j1;++k) { if(Pinv[Aj[k]] === j) { x[j] /= Av[k]; break; } }\n a = x[j];\n for(k=j0;k<j1;++k) {\n l = Pinv[Aj[k]];\n if(l !== j) x[l] -= a*Av[k];\n }\n }\n return x;\n}\nnumeric.ccsLUP1 = function ccsLUP1(A,threshold) {\n var m = A[0].length-1;\n var L = [numeric.rep([m+1],0),[],[]], U = [numeric.rep([m+1], 0),[],[]];\n var Li = L[0], Lj = L[1], Lv = L[2], Ui = U[0], Uj = U[1], Uv = U[2];\n var x = numeric.rep([m],0), xj = numeric.rep([m],0);\n var i,j,k,j0,j1,a,e,c,d,K;\n var sol = numeric.ccsLPSolve, max = Math.max, abs = Math.abs;\n var P = numeric.linspace(0,m-1),Pinv = numeric.linspace(0,m-1);\n var dfs = new numeric.ccsDFS(m);\n if(typeof threshold === \"undefined\") { threshold = 1; }\n for(i=0;i<m;++i) {\n sol(L,A,x,xj,i,Pinv,dfs);\n a = -1;\n e = -1;\n for(j=xj.length-1;j!==-1;--j) {\n k = xj[j];\n if(k <= i) continue;\n c = abs(x[k]);\n if(c > a) { e = k; a = c; }\n }\n if(abs(x[i])<threshold*a) {\n j = P[i];\n a = P[e];\n P[i] = a; Pinv[a] = i;\n P[e] = j; Pinv[j] = e;\n a = x[i]; x[i] = x[e]; x[e] = a;\n }\n a = Li[i];\n e = Ui[i];\n d = x[i];\n Lj[a] = P[i];\n Lv[a] = 1;\n ++a;\n for(j=xj.length-1;j!==-1;--j) {\n k = xj[j];\n c = x[k];\n xj[j] = 0;\n x[k] = 0;\n if(k<=i) { Uj[e] = k; Uv[e] = c; ++e; }\n else { Lj[a] = P[k]; Lv[a] = c/d; ++a; }\n }\n Li[i+1] = a;\n Ui[i+1] = e;\n }\n for(j=Lj.length-1;j!==-1;--j) { Lj[j] = Pinv[Lj[j]]; }\n return {L:L, U:U, P:P, Pinv:Pinv};\n}\nnumeric.ccsDFS0 = function ccsDFS0(n) {\n this.k = Array(n);\n this.k1 = Array(n);\n this.j = Array(n);\n}\nnumeric.ccsDFS0.prototype.dfs = function dfs(J,Ai,Aj,x,xj,Pinv,P) {\n var m = 0,foo,n=xj.length;\n var k = this.k, k1 = this.k1, j = this.j,km,k11;\n if(x[J]!==0) return;\n x[J] = 1;\n j[0] = J;\n k[0] = km = Ai[Pinv[J]];\n k1[0] = k11 = Ai[Pinv[J]+1];\n while(1) {\n if(isNaN(km)) throw new Error(\"Ow!\");\n if(km >= k11) {\n xj[n] = Pinv[j[m]];\n if(m===0) return;\n ++n;\n --m;\n km = k[m];\n k11 = k1[m];\n } else {\n foo = Aj[km];\n if(x[foo] === 0) {\n x[foo] = 1;\n k[m] = km;\n ++m;\n j[m] = foo;\n foo = Pinv[foo];\n km = Ai[foo];\n k1[m] = k11 = Ai[foo+1];\n } else ++km;\n }\n }\n}\nnumeric.ccsLPSolve0 = function ccsLPSolve0(A,B,y,xj,I,Pinv,P,dfs) {\n var Ai = A[0], Aj = A[1], Av = A[2],m = Ai.length-1, n=0;\n var Bi = B[0], Bj = B[1], Bv = B[2];\n \n var i,i0,i1,j,J,j0,j1,k,l,l0,l1,a;\n i0 = Bi[I];\n i1 = Bi[I+1];\n xj.length = 0;\n for(i=i0;i<i1;++i) { dfs.dfs(Bj[i],Ai,Aj,y,xj,Pinv,P); }\n for(i=xj.length-1;i!==-1;--i) { j = xj[i]; y[P[j]] = 0; }\n for(i=i0;i!==i1;++i) { j = Bj[i]; y[j] = Bv[i]; }\n for(i=xj.length-1;i!==-1;--i) {\n j = xj[i];\n l = P[j];\n j0 = Ai[j];\n j1 = Ai[j+1];\n for(k=j0;k<j1;++k) { if(Aj[k] === l) { y[l] /= Av[k]; break; } }\n a = y[l];\n for(k=j0;k<j1;++k) y[Aj[k]] -= a*Av[k];\n y[l] = a;\n }\n}\nnumeric.ccsLUP0 = function ccsLUP0(A,threshold) {\n var m = A[0].length-1;\n var L = [numeric.rep([m+1],0),[],[]], U = [numeric.rep([m+1], 0),[],[]];\n var Li = L[0], Lj = L[1], Lv = L[2], Ui = U[0], Uj = U[1], Uv = U[2];\n var y = numeric.rep([m],0), xj = numeric.rep([m],0);\n var i,j,k,j0,j1,a,e,c,d,K;\n var sol = numeric.ccsLPSolve0, max = Math.max, abs = Math.abs;\n var P = numeric.linspace(0,m-1),Pinv = numeric.linspace(0,m-1);\n var dfs = new numeric.ccsDFS0(m);\n if(typeof threshold === \"undefined\") { threshold = 1; }\n for(i=0;i<m;++i) {\n sol(L,A,y,xj,i,Pinv,P,dfs);\n a = -1;\n e = -1;\n for(j=xj.length-1;j!==-1;--j) {\n k = xj[j];\n if(k <= i) continue;\n c = abs(y[P[k]]);\n if(c > a) { e = k; a = c; }\n }\n if(abs(y[P[i]])<threshold*a) {\n j = P[i];\n a = P[e];\n P[i] = a; Pinv[a] = i;\n P[e] = j; Pinv[j] = e;\n }\n a = Li[i];\n e = Ui[i];\n d = y[P[i]];\n Lj[a] = P[i];\n Lv[a] = 1;\n ++a;\n for(j=xj.length-1;j!==-1;--j) {\n k = xj[j];\n c = y[P[k]];\n xj[j] = 0;\n y[P[k]] = 0;\n if(k<=i) { Uj[e] = k; Uv[e] = c; ++e; }\n else { Lj[a] = P[k]; Lv[a] = c/d; ++a; }\n }\n Li[i+1] = a;\n Ui[i+1] = e;\n }\n for(j=Lj.length-1;j!==-1;--j) { Lj[j] = Pinv[Lj[j]]; }\n return {L:L, U:U, P:P, Pinv:Pinv};\n}\nnumeric.ccsLUP = numeric.ccsLUP0;\n\nnumeric.ccsDim = function ccsDim(A) { return [numeric.sup(A[1])+1,A[0].length-1]; }\nnumeric.ccsGetBlock = function ccsGetBlock(A,i,j) {\n var s = numeric.ccsDim(A),m=s[0],n=s[1];\n if(typeof i === \"undefined\") { i = numeric.linspace(0,m-1); }\n else if(typeof i === \"number\") { i = [i]; }\n if(typeof j === \"undefined\") { j = numeric.linspace(0,n-1); }\n else if(typeof j === \"number\") { j = [j]; }\n var p,p0,p1,P = i.length,q,Q = j.length,r,jq,ip;\n var Bi = numeric.rep([n],0), Bj=[], Bv=[], B = [Bi,Bj,Bv];\n var Ai = A[0], Aj = A[1], Av = A[2];\n var x = numeric.rep([m],0),count=0,flags = numeric.rep([m],0);\n for(q=0;q<Q;++q) {\n jq = j[q];\n var q0 = Ai[jq];\n var q1 = Ai[jq+1];\n for(p=q0;p<q1;++p) {\n r = Aj[p];\n flags[r] = 1;\n x[r] = Av[p];\n }\n for(p=0;p<P;++p) {\n ip = i[p];\n if(flags[ip]) {\n Bj[count] = p;\n Bv[count] = x[i[p]];\n ++count;\n }\n }\n for(p=q0;p<q1;++p) {\n r = Aj[p];\n flags[r] = 0;\n }\n Bi[q+1] = count;\n }\n return B;\n}\n\nnumeric.ccsDot = function ccsDot(A,B) {\n var Ai = A[0], Aj = A[1], Av = A[2];\n var Bi = B[0], Bj = B[1], Bv = B[2];\n var sA = numeric.ccsDim(A), sB = numeric.ccsDim(B);\n var m = sA[0], n = sA[1], o = sB[1];\n var x = numeric.rep([m],0), flags = numeric.rep([m],0), xj = Array(m);\n var Ci = numeric.rep([o],0), Cj = [], Cv = [], C = [Ci,Cj,Cv];\n var i,j,k,j0,j1,i0,i1,l,p,a,b;\n for(k=0;k!==o;++k) {\n j0 = Bi[k];\n j1 = Bi[k+1];\n p = 0;\n for(j=j0;j<j1;++j) {\n a = Bj[j];\n b = Bv[j];\n i0 = Ai[a];\n i1 = Ai[a+1];\n for(i=i0;i<i1;++i) {\n l = Aj[i];\n if(flags[l]===0) {\n xj[p] = l;\n flags[l] = 1;\n p = p+1;\n }\n x[l] = x[l] + Av[i]*b;\n }\n }\n j0 = Ci[k];\n j1 = j0+p;\n Ci[k+1] = j1;\n for(j=p-1;j!==-1;--j) {\n b = j0+j;\n i = xj[j];\n Cj[b] = i;\n Cv[b] = x[i];\n flags[i] = 0;\n x[i] = 0;\n }\n Ci[k+1] = Ci[k]+p;\n }\n return C;\n}\n\nnumeric.ccsLUPSolve = function ccsLUPSolve(LUP,B) {\n var L = LUP.L, U = LUP.U, P = LUP.P;\n var Bi = B[0];\n var flag = false;\n if(typeof Bi !== \"object\") { B = [[0,B.length],numeric.linspace(0,B.length-1),B]; Bi = B[0]; flag = true; }\n var Bj = B[1], Bv = B[2];\n var n = L[0].length-1, m = Bi.length-1;\n var x = numeric.rep([n],0), xj = Array(n);\n var b = numeric.rep([n],0), bj = Array(n);\n var Xi = numeric.rep([m+1],0), Xj = [], Xv = [];\n var sol = numeric.ccsTSolve;\n var i,j,j0,j1,k,J,N=0;\n for(i=0;i<m;++i) {\n k = 0;\n j0 = Bi[i];\n j1 = Bi[i+1];\n for(j=j0;j<j1;++j) { \n J = LUP.Pinv[Bj[j]];\n bj[k] = J;\n b[J] = Bv[j];\n ++k;\n }\n bj.length = k;\n sol(L,b,x,bj,xj);\n for(j=bj.length-1;j!==-1;--j) b[bj[j]] = 0;\n sol(U,x,b,xj,bj);\n if(flag) return b;\n for(j=xj.length-1;j!==-1;--j) x[xj[j]] = 0;\n for(j=bj.length-1;j!==-1;--j) {\n J = bj[j];\n Xj[N] = J;\n Xv[N] = b[J];\n b[J] = 0;\n ++N;\n }\n Xi[i+1] = N;\n }\n return [Xi,Xj,Xv];\n}\n\nnumeric.ccsbinop = function ccsbinop(body,setup) {\n if(typeof setup === \"undefined\") setup='';\n return Function('X','Y',\n 'var Xi = X[0], Xj = X[1], Xv = X[2];\\n'+\n 'var Yi = Y[0], Yj = Y[1], Yv = Y[2];\\n'+\n 'var n = Xi.length-1,m = Math.max(numeric.sup(Xj),numeric.sup(Yj))+1;\\n'+\n 'var Zi = numeric.rep([n+1],0), Zj = [], Zv = [];\\n'+\n 'var x = numeric.rep([m],0),y = numeric.rep([m],0);\\n'+\n 'var xk,yk,zk;\\n'+\n 'var i,j,j0,j1,k,p=0;\\n'+\n setup+\n 'for(i=0;i<n;++i) {\\n'+\n ' j0 = Xi[i]; j1 = Xi[i+1];\\n'+\n ' for(j=j0;j!==j1;++j) {\\n'+\n ' k = Xj[j];\\n'+\n ' x[k] = 1;\\n'+\n ' Zj[p] = k;\\n'+\n ' ++p;\\n'+\n ' }\\n'+\n ' j0 = Yi[i]; j1 = Yi[i+1];\\n'+\n ' for(j=j0;j!==j1;++j) {\\n'+\n ' k = Yj[j];\\n'+\n ' y[k] = Yv[j];\\n'+\n ' if(x[k] === 0) {\\n'+\n ' Zj[p] = k;\\n'+\n ' ++p;\\n'+\n ' }\\n'+\n ' }\\n'+\n ' Zi[i+1] = p;\\n'+\n ' j0 = Xi[i]; j1 = Xi[i+1];\\n'+\n ' for(j=j0;j!==j1;++j) x[Xj[j]] = Xv[j];\\n'+\n ' j0 = Zi[i]; j1 = Zi[i+1];\\n'+\n ' for(j=j0;j!==j1;++j) {\\n'+\n ' k = Zj[j];\\n'+\n ' xk = x[k];\\n'+\n ' yk = y[k];\\n'+\n body+'\\n'+\n ' Zv[j] = zk;\\n'+\n ' }\\n'+\n ' j0 = Xi[i]; j1 = Xi[i+1];\\n'+\n ' for(j=j0;j!==j1;++j) x[Xj[j]] = 0;\\n'+\n ' j0 = Yi[i]; j1 = Yi[i+1];\\n'+\n ' for(j=j0;j!==j1;++j) y[Yj[j]] = 0;\\n'+\n '}\\n'+\n 'return [Zi,Zj,Zv];'\n );\n};\n\n(function() {\n var k,A,B,C;\n for(k in numeric.ops2) {\n if(isFinite(eval('1'+numeric.ops2[k]+'0'))) A = '[Y[0],Y[1],numeric.'+k+'(X,Y[2])]';\n else A = 'NaN';\n if(isFinite(eval('0'+numeric.ops2[k]+'1'))) B = '[X[0],X[1],numeric.'+k+'(X[2],Y)]';\n else B = 'NaN';\n if(isFinite(eval('1'+numeric.ops2[k]+'0')) && isFinite(eval('0'+numeric.ops2[k]+'1'))) C = 'numeric.ccs'+k+'MM(X,Y)';\n else C = 'NaN';\n numeric['ccs'+k+'MM'] = numeric.ccsbinop('zk = xk '+numeric.ops2[k]+'yk;');\n numeric['ccs'+k] = Function('X','Y',\n 'if(typeof X === \"number\") return '+A+';\\n'+\n 'if(typeof Y === \"number\") return '+B+';\\n'+\n 'return '+C+';\\n'\n );\n }\n}());\n\nnumeric.ccsScatter = function ccsScatter(A) {\n var Ai = A[0], Aj = A[1], Av = A[2];\n var n = numeric.sup(Aj)+1,m=Ai.length;\n var Ri = numeric.rep([n],0),Rj=Array(m), Rv = Array(m);\n var counts = numeric.rep([n],0),i;\n for(i=0;i<m;++i) counts[Aj[i]]++;\n for(i=0;i<n;++i) Ri[i+1] = Ri[i] + counts[i];\n var ptr = Ri.slice(0),k,Aii;\n for(i=0;i<m;++i) {\n Aii = Aj[i];\n k = ptr[Aii];\n Rj[k] = Ai[i];\n Rv[k] = Av[i];\n ptr[Aii]=ptr[Aii]+1;\n }\n return [Ri,Rj,Rv];\n}\n\nnumeric.ccsGather = function ccsGather(A) {\n var Ai = A[0], Aj = A[1], Av = A[2];\n var n = Ai.length-1,m = Aj.length;\n var Ri = Array(m), Rj = Array(m), Rv = Array(m);\n var i,j,j0,j1,p;\n p=0;\n for(i=0;i<n;++i) {\n j0 = Ai[i];\n j1 = Ai[i+1];\n for(j=j0;j!==j1;++j) {\n Rj[p] = i;\n Ri[p] = Aj[j];\n Rv[p] = Av[j];\n ++p;\n }\n }\n return [Ri,Rj,Rv];\n}\n\n// The following sparse linear algebra routines are deprecated.\n\nnumeric.sdim = function dim(A,ret,k) {\n if(typeof ret === \"undefined\") { ret = []; }\n if(typeof A !== \"object\") return ret;\n if(typeof k === \"undefined\") { k=0; }\n if(!(k in ret)) { ret[k] = 0; }\n if(A.length > ret[k]) ret[k] = A.length;\n var i;\n for(i in A) {\n if(A.hasOwnProperty(i)) dim(A[i],ret,k+1);\n }\n return ret;\n};\n\nnumeric.sclone = function clone(A,k,n) {\n if(typeof k === \"undefined\") { k=0; }\n if(typeof n === \"undefined\") { n = numeric.sdim(A).length; }\n var i,ret = Array(A.length);\n if(k === n-1) {\n for(i in A) { if(A.hasOwnProperty(i)) ret[i] = A[i]; }\n return ret;\n }\n for(i in A) {\n if(A.hasOwnProperty(i)) ret[i] = clone(A[i],k+1,n);\n }\n return ret;\n}\n\nnumeric.sdiag = function diag(d) {\n var n = d.length,i,ret = Array(n),i1,i2,i3;\n for(i=n-1;i>=1;i-=2) {\n i1 = i-1;\n ret[i] = []; ret[i][i] = d[i];\n ret[i1] = []; ret[i1][i1] = d[i1];\n }\n if(i===0) { ret[0] = []; ret[0][0] = d[i]; }\n return ret;\n}\n\nnumeric.sidentity = function identity(n) { return numeric.sdiag(numeric.rep([n],1)); }\n\nnumeric.stranspose = function transpose(A) {\n var ret = [], n = A.length, i,j,Ai;\n for(i in A) {\n if(!(A.hasOwnProperty(i))) continue;\n Ai = A[i];\n for(j in Ai) {\n if(!(Ai.hasOwnProperty(j))) continue;\n if(typeof ret[j] !== \"object\") { ret[j] = []; }\n ret[j][i] = Ai[j];\n }\n }\n return ret;\n}\n\nnumeric.sLUP = function LUP(A,tol) {\n throw new Error(\"The function numeric.sLUP had a bug in it and has been removed. Please use the new numeric.ccsLUP function instead.\");\n};\n\nnumeric.sdotMM = function dotMM(A,B) {\n var p = A.length, q = B.length, BT = numeric.stranspose(B), r = BT.length, Ai, BTk;\n var i,j,k,accum;\n var ret = Array(p),reti;\n for(i=p-1;i>=0;i--) {\n reti = [];\n Ai = A[i];\n for(k=r-1;k>=0;k--) {\n accum = 0;\n BTk = BT[k];\n for(j in Ai) {\n if(!(Ai.hasOwnProperty(j))) continue;\n if(j in BTk) { accum += Ai[j]*BTk[j]; }\n }\n if(accum) reti[k] = accum;\n }\n ret[i] = reti;\n }\n return ret;\n}\n\nnumeric.sdotMV = function dotMV(A,x) {\n var p = A.length, Ai, i,j;\n var ret = Array(p), accum;\n for(i=p-1;i>=0;i--) {\n Ai = A[i];\n accum = 0;\n for(j in Ai) {\n if(!(Ai.hasOwnProperty(j))) continue;\n if(x[j]) accum += Ai[j]*x[j];\n }\n if(accum) ret[i] = accum;\n }\n return ret;\n}\n\nnumeric.sdotVM = function dotMV(x,A) {\n var i,j,Ai,alpha;\n var ret = [], accum;\n for(i in x) {\n if(!x.hasOwnProperty(i)) continue;\n Ai = A[i];\n alpha = x[i];\n for(j in Ai) {\n if(!Ai.hasOwnProperty(j)) continue;\n if(!ret[j]) { ret[j] = 0; }\n ret[j] += alpha*Ai[j];\n }\n }\n return ret;\n}\n\nnumeric.sdotVV = function dotVV(x,y) {\n var i,ret=0;\n for(i in x) { if(x[i] && y[i]) ret+= x[i]*y[i]; }\n return ret;\n}\n\nnumeric.sdot = function dot(A,B) {\n var m = numeric.sdim(A).length, n = numeric.sdim(B).length;\n var k = m*1000+n;\n switch(k) {\n case 0: return A*B;\n case 1001: return numeric.sdotVV(A,B);\n case 2001: return numeric.sdotMV(A,B);\n case 1002: return numeric.sdotVM(A,B);\n case 2002: return numeric.sdotMM(A,B);\n default: throw new Error('numeric.sdot not implemented for tensors of order '+m+' and '+n);\n }\n}\n\nnumeric.sscatter = function scatter(V) {\n var n = V[0].length, Vij, i, j, m = V.length, A = [], Aj;\n for(i=n-1;i>=0;--i) {\n if(!V[m-1][i]) continue;\n Aj = A;\n for(j=0;j<m-2;j++) {\n Vij = V[j][i];\n if(!Aj[Vij]) Aj[Vij] = [];\n Aj = Aj[Vij];\n }\n Aj[V[j][i]] = V[j+1][i];\n }\n return A;\n}\n\nnumeric.sgather = function gather(A,ret,k) {\n if(typeof ret === \"undefined\") ret = [];\n if(typeof k === \"undefined\") k = [];\n var n,i,Ai;\n n = k.length;\n for(i in A) {\n if(A.hasOwnProperty(i)) {\n k[n] = parseInt(i);\n Ai = A[i];\n if(typeof Ai === \"number\") {\n if(Ai) {\n if(ret.length === 0) {\n for(i=n+1;i>=0;--i) ret[i] = [];\n }\n for(i=n;i>=0;--i) ret[i].push(k[i]);\n ret[n+1].push(Ai);\n }\n } else gather(Ai,ret,k);\n }\n }\n if(k.length>n) k.pop();\n return ret;\n}\n\n// 6. Coordinate matrices\nnumeric.cLU = function LU(A) {\n var I = A[0], J = A[1], V = A[2];\n var p = I.length, m=0, i,j,k,a,b,c;\n for(i=0;i<p;i++) if(I[i]>m) m=I[i];\n m++;\n var L = Array(m), U = Array(m), left = numeric.rep([m],Infinity), right = numeric.rep([m],-Infinity);\n var Ui, Uj,alpha;\n for(k=0;k<p;k++) {\n i = I[k];\n j = J[k];\n if(j<left[i]) left[i] = j;\n if(j>right[i]) right[i] = j;\n }\n for(i=0;i<m-1;i++) { if(right[i] > right[i+1]) right[i+1] = right[i]; }\n for(i=m-1;i>=1;i--) { if(left[i]<left[i-1]) left[i-1] = left[i]; }\n var countL = 0, countU = 0;\n for(i=0;i<m;i++) {\n U[i] = numeric.rep([right[i]-left[i]+1],0);\n L[i] = numeric.rep([i-left[i]],0);\n countL += i-left[i]+1;\n countU += right[i]-i+1;\n }\n for(k=0;k<p;k++) { i = I[k]; U[i][J[k]-left[i]] = V[k]; }\n for(i=0;i<m-1;i++) {\n a = i-left[i];\n Ui = U[i];\n for(j=i+1;left[j]<=i && j<m;j++) {\n b = i-left[j];\n c = right[i]-i;\n Uj = U[j];\n alpha = Uj[b]/Ui[a];\n if(alpha) {\n for(k=1;k<=c;k++) { Uj[k+b] -= alpha*Ui[k+a]; }\n L[j][i-left[j]] = alpha;\n }\n }\n }\n var Ui = [], Uj = [], Uv = [], Li = [], Lj = [], Lv = [];\n var p,q,foo;\n p=0; q=0;\n for(i=0;i<m;i++) {\n a = left[i];\n b = right[i];\n foo = U[i];\n for(j=i;j<=b;j++) {\n if(foo[j-a]) {\n Ui[p] = i;\n Uj[p] = j;\n Uv[p] = foo[j-a];\n p++;\n }\n }\n foo = L[i];\n for(j=a;j<i;j++) {\n if(foo[j-a]) {\n Li[q] = i;\n Lj[q] = j;\n Lv[q] = foo[j-a];\n q++;\n }\n }\n Li[q] = i;\n Lj[q] = i;\n Lv[q] = 1;\n q++;\n }\n return {U:[Ui,Uj,Uv], L:[Li,Lj,Lv]};\n};\n\nnumeric.cLUsolve = function LUsolve(lu,b) {\n var L = lu.L, U = lu.U, ret = numeric.clone(b);\n var Li = L[0], Lj = L[1], Lv = L[2];\n var Ui = U[0], Uj = U[1], Uv = U[2];\n var p = Ui.length, q = Li.length;\n var m = ret.length,i,j,k;\n k = 0;\n for(i=0;i<m;i++) {\n while(Lj[k] < i) {\n ret[i] -= Lv[k]*ret[Lj[k]];\n k++;\n }\n k++;\n }\n k = p-1;\n for(i=m-1;i>=0;i--) {\n while(Uj[k] > i) {\n ret[i] -= Uv[k]*ret[Uj[k]];\n k--;\n }\n ret[i] /= Uv[k];\n k--;\n }\n return ret;\n};\n\nnumeric.cgrid = function grid(n,shape) {\n if(typeof n === \"number\") n = [n,n];\n var ret = numeric.rep(n,-1);\n var i,j,count;\n if(typeof shape !== \"function\") {\n switch(shape) {\n case 'L':\n shape = function(i,j) { return (i>=n[0]/2 || j<n[1]/2); }\n break;\n default:\n shape = function(i,j) { return true; };\n break;\n }\n }\n count=0;\n for(i=1;i<n[0]-1;i++) for(j=1;j<n[1]-1;j++) \n if(shape(i,j)) {\n ret[i][j] = count;\n count++;\n }\n return ret;\n}\n\nnumeric.cdelsq = function delsq(g) {\n var dir = [[-1,0],[0,-1],[0,1],[1,0]];\n var s = numeric.dim(g), m = s[0], n = s[1], i,j,k,p,q;\n var Li = [], Lj = [], Lv = [];\n for(i=1;i<m-1;i++) for(j=1;j<n-1;j++) {\n if(g[i][j]<0) continue;\n for(k=0;k<4;k++) {\n p = i+dir[k][0];\n q = j+dir[k][1];\n if(g[p][q]<0) continue;\n Li.push(g[i][j]);\n Lj.push(g[p][q]);\n Lv.push(-1);\n }\n Li.push(g[i][j]);\n Lj.push(g[i][j]);\n Lv.push(4);\n }\n return [Li,Lj,Lv];\n}\n\nnumeric.cdotMV = function dotMV(A,x) {\n var ret, Ai = A[0], Aj = A[1], Av = A[2],k,p=Ai.length,N;\n N=0;\n for(k=0;k<p;k++) { if(Ai[k]>N) N = Ai[k]; }\n N++;\n ret = numeric.rep([N],0);\n for(k=0;k<p;k++) { ret[Ai[k]]+=Av[k]*x[Aj[k]]; }\n return ret;\n}\n\n// 7. Splines\n\nnumeric.Spline = function Spline(x,yl,yr,kl,kr) { this.x = x; this.yl = yl; this.yr = yr; this.kl = kl; this.kr = kr; }\nnumeric.Spline.prototype._at = function _at(x1,p) {\n var x = this.x;\n var yl = this.yl;\n var yr = this.yr;\n var kl = this.kl;\n var kr = this.kr;\n var x1,a,b,t;\n var add = numeric.add, sub = numeric.sub, mul = numeric.mul;\n a = sub(mul(kl[p],x[p+1]-x[p]),sub(yr[p+1],yl[p]));\n b = add(mul(kr[p+1],x[p]-x[p+1]),sub(yr[p+1],yl[p]));\n t = (x1-x[p])/(x[p+1]-x[p]);\n var s = t*(1-t);\n return add(add(add(mul(1-t,yl[p]),mul(t,yr[p+1])),mul(a,s*(1-t))),mul(b,s*t));\n}\nnumeric.Spline.prototype.at = function at(x0) {\n if(typeof x0 === \"number\") {\n var x = this.x;\n var n = x.length;\n var p,q,mid,floor = Math.floor,a,b,t;\n p = 0;\n q = n-1;\n while(q-p>1) {\n mid = floor((p+q)/2);\n if(x[mid] <= x0) p = mid;\n else q = mid;\n }\n return this._at(x0,p);\n }\n var n = x0.length, i, ret = Array(n);\n for(i=n-1;i!==-1;--i) ret[i] = this.at(x0[i]);\n return ret;\n}\nnumeric.Spline.prototype.diff = function diff() {\n var x = this.x;\n var yl = this.yl;\n var yr = this.yr;\n var kl = this.kl;\n var kr = this.kr;\n var n = yl.length;\n var i,dx,dy;\n var zl = kl, zr = kr, pl = Array(n), pr = Array(n);\n var add = numeric.add, mul = numeric.mul, div = numeric.div, sub = numeric.sub;\n for(i=n-1;i!==-1;--i) {\n dx = x[i+1]-x[i];\n dy = sub(yr[i+1],yl[i]);\n pl[i] = div(add(mul(dy, 6),mul(kl[i],-4*dx),mul(kr[i+1],-2*dx)),dx*dx);\n pr[i+1] = div(add(mul(dy,-6),mul(kl[i], 2*dx),mul(kr[i+1], 4*dx)),dx*dx);\n }\n return new numeric.Spline(x,zl,zr,pl,pr);\n}\nnumeric.Spline.prototype.roots = function roots() {\n function sqr(x) { return x*x; }\n function heval(y0,y1,k0,k1,x) {\n var A = k0*2-(y1-y0);\n var B = -k1*2+(y1-y0);\n var t = (x+1)*0.5;\n var s = t*(1-t);\n return (1-t)*y0+t*y1+A*s*(1-t)+B*s*t;\n }\n var ret = [];\n var x = this.x, yl = this.yl, yr = this.yr, kl = this.kl, kr = this.kr;\n if(typeof yl[0] === \"number\") {\n yl = [yl];\n yr = [yr];\n kl = [kl];\n kr = [kr];\n }\n var m = yl.length,n=x.length-1,i,j,k,y,s,t;\n var ai,bi,ci,di, ret = Array(m),ri,k0,k1,y0,y1,A,B,D,dx,cx,stops,z0,z1,zm,t0,t1,tm;\n var sqrt = Math.sqrt;\n for(i=0;i!==m;++i) {\n ai = yl[i];\n bi = yr[i];\n ci = kl[i];\n di = kr[i];\n ri = [];\n for(j=0;j!==n;j++) {\n if(j>0 && bi[j]*ai[j]<0) ri.push(x[j]);\n dx = (x[j+1]-x[j]);\n cx = x[j];\n y0 = ai[j];\n y1 = bi[j+1];\n k0 = ci[j]/dx;\n k1 = di[j+1]/dx;\n D = sqr(k0-k1+3*(y0-y1)) + 12*k1*y0;\n A = k1+3*y0+2*k0-3*y1;\n B = 3*(k1+k0+2*(y0-y1));\n if(D<=0) {\n z0 = A/B;\n if(z0>x[j] && z0<x[j+1]) stops = [x[j],z0,x[j+1]];\n else stops = [x[j],x[j+1]];\n } else {\n z0 = (A-sqrt(D))/B;\n z1 = (A+sqrt(D))/B;\n stops = [x[j]];\n if(z0>x[j] && z0<x[j+1]) stops.push(z0);\n if(z1>x[j] && z1<x[j+1]) stops.push(z1);\n stops.push(x[j+1]);\n }\n t0 = stops[0];\n z0 = this._at(t0,j);\n for(k=0;k<stops.length-1;k++) {\n t1 = stops[k+1];\n z1 = this._at(t1,j);\n if(z0 === 0) {\n ri.push(t0); \n t0 = t1;\n z0 = z1;\n continue;\n }\n if(z1 === 0 || z0*z1>0) {\n t0 = t1;\n z0 = z1;\n continue;\n }\n var side = 0;\n while(1) {\n tm = (z0*t1-z1*t0)/(z0-z1);\n if(tm <= t0 || tm >= t1) { break; }\n zm = this._at(tm,j);\n if(zm*z1>0) {\n t1 = tm;\n z1 = zm;\n if(side === -1) z0*=0.5;\n side = -1;\n } else if(zm*z0>0) {\n t0 = tm;\n z0 = zm;\n if(side === 1) z1*=0.5;\n side = 1;\n } else break;\n }\n ri.push(tm);\n t0 = stops[k+1];\n z0 = this._at(t0, j);\n }\n if(z1 === 0) ri.push(t1);\n }\n ret[i] = ri;\n }\n if(typeof this.yl[0] === \"number\") return ret[0];\n return ret;\n}\nnumeric.spline = function spline(x,y,k1,kn) {\n var n = x.length, b = [], dx = [], dy = [];\n var i;\n var sub = numeric.sub,mul = numeric.mul,add = numeric.add;\n for(i=n-2;i>=0;i--) { dx[i] = x[i+1]-x[i]; dy[i] = sub(y[i+1],y[i]); }\n if(typeof k1 === \"string\" || typeof kn === \"string\") { \n k1 = kn = \"periodic\";\n }\n // Build sparse tridiagonal system\n var T = [[],[],[]];\n switch(typeof k1) {\n case \"undefined\":\n b[0] = mul(3/(dx[0]*dx[0]),dy[0]);\n T[0].push(0,0);\n T[1].push(0,1);\n T[2].push(2/dx[0],1/dx[0]);\n break;\n case \"string\":\n b[0] = add(mul(3/(dx[n-2]*dx[n-2]),dy[n-2]),mul(3/(dx[0]*dx[0]),dy[0]));\n T[0].push(0,0,0);\n T[1].push(n-2,0,1);\n T[2].push(1/dx[n-2],2/dx[n-2]+2/dx[0],1/dx[0]);\n break;\n default:\n b[0] = k1;\n T[0].push(0);\n T[1].push(0);\n T[2].push(1);\n break;\n }\n for(i=1;i<n-1;i++) {\n b[i] = add(mul(3/(dx[i-1]*dx[i-1]),dy[i-1]),mul(3/(dx[i]*dx[i]),dy[i]));\n T[0].push(i,i,i);\n T[1].push(i-1,i,i+1);\n T[2].push(1/dx[i-1],2/dx[i-1]+2/dx[i],1/dx[i]);\n }\n switch(typeof kn) {\n case \"undefined\":\n b[n-1] = mul(3/(dx[n-2]*dx[n-2]),dy[n-2]);\n T[0].push(n-1,n-1);\n T[1].push(n-2,n-1);\n T[2].push(1/dx[n-2],2/dx[n-2]);\n break;\n case \"string\":\n T[1][T[1].length-1] = 0;\n break;\n default:\n b[n-1] = kn;\n T[0].push(n-1);\n T[1].push(n-1);\n T[2].push(1);\n break;\n }\n if(typeof b[0] !== \"number\") b = numeric.transpose(b);\n else b = [b];\n var k = Array(b.length);\n if(typeof k1 === \"string\") {\n for(i=k.length-1;i!==-1;--i) {\n k[i] = numeric.ccsLUPSolve(numeric.ccsLUP(numeric.ccsScatter(T)),b[i]);\n k[i][n-1] = k[i][0];\n }\n } else {\n for(i=k.length-1;i!==-1;--i) {\n k[i] = numeric.cLUsolve(numeric.cLU(T),b[i]);\n }\n }\n if(typeof y[0] === \"number\") k = k[0];\n else k = numeric.transpose(k);\n return new numeric.Spline(x,y,y,k,k);\n}\n\n// 8. FFT\nnumeric.fftpow2 = function fftpow2(x,y) {\n var n = x.length;\n if(n === 1) return;\n var cos = Math.cos, sin = Math.sin, i,j;\n var xe = Array(n/2), ye = Array(n/2), xo = Array(n/2), yo = Array(n/2);\n j = n/2;\n for(i=n-1;i!==-1;--i) {\n --j;\n xo[j] = x[i];\n yo[j] = y[i];\n --i;\n xe[j] = x[i];\n ye[j] = y[i];\n }\n fftpow2(xe,ye);\n fftpow2(xo,yo);\n j = n/2;\n var t,k = (-6.2831853071795864769252867665590057683943387987502116419/n),ci,si;\n for(i=n-1;i!==-1;--i) {\n --j;\n if(j === -1) j = n/2-1;\n t = k*i;\n ci = cos(t);\n si = sin(t);\n x[i] = xe[j] + ci*xo[j] - si*yo[j];\n y[i] = ye[j] + ci*yo[j] + si*xo[j];\n }\n}\nnumeric._ifftpow2 = function _ifftpow2(x,y) {\n var n = x.length;\n if(n === 1) return;\n var cos = Math.cos, sin = Math.sin, i,j;\n var xe = Array(n/2), ye = Array(n/2), xo = Array(n/2), yo = Array(n/2);\n j = n/2;\n for(i=n-1;i!==-1;--i) {\n --j;\n xo[j] = x[i];\n yo[j] = y[i];\n --i;\n xe[j] = x[i];\n ye[j] = y[i];\n }\n _ifftpow2(xe,ye);\n _ifftpow2(xo,yo);\n j = n/2;\n var t,k = (6.2831853071795864769252867665590057683943387987502116419/n),ci,si;\n for(i=n-1;i!==-1;--i) {\n --j;\n if(j === -1) j = n/2-1;\n t = k*i;\n ci = cos(t);\n si = sin(t);\n x[i] = xe[j] + ci*xo[j] - si*yo[j];\n y[i] = ye[j] + ci*yo[j] + si*xo[j];\n }\n}\nnumeric.ifftpow2 = function ifftpow2(x,y) {\n numeric._ifftpow2(x,y);\n numeric.diveq(x,x.length);\n numeric.diveq(y,y.length);\n}\nnumeric.convpow2 = function convpow2(ax,ay,bx,by) {\n numeric.fftpow2(ax,ay);\n numeric.fftpow2(bx,by);\n var i,n = ax.length,axi,bxi,ayi,byi;\n for(i=n-1;i!==-1;--i) {\n axi = ax[i]; ayi = ay[i]; bxi = bx[i]; byi = by[i];\n ax[i] = axi*bxi-ayi*byi;\n ay[i] = axi*byi+ayi*bxi;\n }\n numeric.ifftpow2(ax,ay);\n}\nnumeric.T.prototype.fft = function fft() {\n var x = this.x, y = this.y;\n var n = x.length, log = Math.log, log2 = log(2),\n p = Math.ceil(log(2*n-1)/log2), m = Math.pow(2,p);\n var cx = numeric.rep([m],0), cy = numeric.rep([m],0), cos = Math.cos, sin = Math.sin;\n var k, c = (-3.141592653589793238462643383279502884197169399375105820/n),t;\n var a = numeric.rep([m],0), b = numeric.rep([m],0),nhalf = Math.floor(n/2);\n for(k=0;k<n;k++) a[k] = x[k];\n if(typeof y !== \"undefined\") for(k=0;k<n;k++) b[k] = y[k];\n cx[0] = 1;\n for(k=1;k<=m/2;k++) {\n t = c*k*k;\n cx[k] = cos(t);\n cy[k] = sin(t);\n cx[m-k] = cos(t);\n cy[m-k] = sin(t)\n }\n var X = new numeric.T(a,b), Y = new numeric.T(cx,cy);\n X = X.mul(Y);\n numeric.convpow2(X.x,X.y,numeric.clone(Y.x),numeric.neg(Y.y));\n X = X.mul(Y);\n X.x.length = n;\n X.y.length = n;\n return X;\n}\nnumeric.T.prototype.ifft = function ifft() {\n var x = this.x, y = this.y;\n var n = x.length, log = Math.log, log2 = log(2),\n p = Math.ceil(log(2*n-1)/log2), m = Math.pow(2,p);\n var cx = numeric.rep([m],0), cy = numeric.rep([m],0), cos = Math.cos, sin = Math.sin;\n var k, c = (3.141592653589793238462643383279502884197169399375105820/n),t;\n var a = numeric.rep([m],0), b = numeric.rep([m],0),nhalf = Math.floor(n/2);\n for(k=0;k<n;k++) a[k] = x[k];\n if(typeof y !== \"undefined\") for(k=0;k<n;k++) b[k] = y[k];\n cx[0] = 1;\n for(k=1;k<=m/2;k++) {\n t = c*k*k;\n cx[k] = cos(t);\n cy[k] = sin(t);\n cx[m-k] = cos(t);\n cy[m-k] = sin(t)\n }\n var X = new numeric.T(a,b), Y = new numeric.T(cx,cy);\n X = X.mul(Y);\n numeric.convpow2(X.x,X.y,numeric.clone(Y.x),numeric.neg(Y.y));\n X = X.mul(Y);\n X.x.length = n;\n X.y.length = n;\n return X.div(n);\n}\n\n//9. Unconstrained optimization\nnumeric.gradient = function gradient(f,x) {\n var n = x.length;\n var f0 = f(x);\n if(isNaN(f0)) throw new Error('gradient: f(x) is a NaN!');\n var max = Math.max;\n var i,x0 = numeric.clone(x),f1,f2, J = Array(n);\n var div = numeric.div, sub = numeric.sub,errest,roundoff,max = Math.max,eps = 1e-3,abs = Math.abs, min = Math.min;\n var t0,t1,t2,it=0,d1,d2,N;\n for(i=0;i<n;i++) {\n var h = max(1e-6*f0,1e-8);\n while(1) {\n ++it;\n if(it>20) { throw new Error(\"Numerical gradient fails\"); }\n x0[i] = x[i]+h;\n f1 = f(x0);\n x0[i] = x[i]-h;\n f2 = f(x0);\n x0[i] = x[i];\n if(isNaN(f1) || isNaN(f2)) { h/=16; continue; }\n J[i] = (f1-f2)/(2*h);\n t0 = x[i]-h;\n t1 = x[i];\n t2 = x[i]+h;\n d1 = (f1-f0)/h;\n d2 = (f0-f2)/h;\n N = max(abs(J[i]),abs(f0),abs(f1),abs(f2),abs(t0),abs(t1),abs(t2),1e-8);\n errest = min(max(abs(d1-J[i]),abs(d2-J[i]),abs(d1-d2))/N,h/N);\n if(errest>eps) { h/=16; }\n else break;\n }\n }\n return J;\n}\n\nnumeric.uncmin = function uncmin(f,x0,tol,gradient,maxit,callback,options) {\n var grad = numeric.gradient;\n if(typeof options === \"undefined\") { options = {}; }\n if(typeof tol === \"undefined\") { tol = 1e-8; }\n if(typeof gradient === \"undefined\") { gradient = function(x) { return grad(f,x); }; }\n if(typeof maxit === \"undefined\") maxit = 1000;\n x0 = numeric.clone(x0);\n var n = x0.length;\n var f0 = f(x0),f1,df0;\n if(isNaN(f0)) throw new Error('uncmin: f(x0) is a NaN!');\n var max = Math.max, norm2 = numeric.norm2;\n tol = max(tol,numeric.epsilon);\n var step,g0,g1,H1 = options.Hinv || numeric.identity(n);\n var dot = numeric.dot, inv = numeric.inv, sub = numeric.sub, add = numeric.add, ten = numeric.tensor, div = numeric.div, mul = numeric.mul;\n var all = numeric.all, isfinite = numeric.isFinite, neg = numeric.neg;\n var it=0,i,s,x1,y,Hy,Hs,ys,i0,t,nstep,t1,t2;\n var msg = \"\";\n g0 = gradient(x0);\n while(it<maxit) {\n if(typeof callback === \"function\") { if(callback(it,x0,f0,g0,H1)) { msg = \"Callback returned true\"; break; } }\n if(!all(isfinite(g0))) { msg = \"Gradient has Infinity or NaN\"; break; }\n step = neg(dot(H1,g0));\n if(!all(isfinite(step))) { msg = \"Search direction has Infinity or NaN\"; break; }\n nstep = norm2(step);\n if(nstep < tol) { msg=\"Newton step smaller than tol\"; break; }\n t = 1;\n df0 = dot(g0,step);\n // line search\n x1 = x0;\n while(it < maxit) {\n if(t*nstep < tol) { break; }\n s = mul(step,t);\n x1 = add(x0,s);\n f1 = f(x1);\n if(f1-f0 >= 0.1*t*df0 || isNaN(f1)) {\n t *= 0.5;\n ++it;\n continue;\n }\n break;\n }\n if(t*nstep < tol) { msg = \"Line search step size smaller than tol\"; break; }\n if(it === maxit) { msg = \"maxit reached during line search\"; break; }\n g1 = gradient(x1);\n y = sub(g1,g0);\n ys = dot(y,s);\n Hy = dot(H1,y);\n H1 = sub(add(H1,\n mul(\n (ys+dot(y,Hy))/(ys*ys),\n ten(s,s) )),\n div(add(ten(Hy,s),ten(s,Hy)),ys));\n x0 = x1;\n f0 = f1;\n g0 = g1;\n ++it;\n }\n return {solution: x0, f: f0, gradient: g0, invHessian: H1, iterations:it, message: msg};\n}\n\n// 10. Ode solver (Dormand-Prince)\nnumeric.Dopri = function Dopri(x,y,f,ymid,iterations,msg,events) {\n this.x = x;\n this.y = y;\n this.f = f;\n this.ymid = ymid;\n this.iterations = iterations;\n this.events = events;\n this.message = msg;\n}\nnumeric.Dopri.prototype._at = function _at(xi,j) {\n function sqr(x) { return x*x; }\n var sol = this;\n var xs = sol.x;\n var ys = sol.y;\n var k1 = sol.f;\n var ymid = sol.ymid;\n var n = xs.length;\n var x0,x1,xh,y0,y1,yh,xi;\n var floor = Math.floor,h;\n var c = 0.5;\n var add = numeric.add, mul = numeric.mul,sub = numeric.sub, p,q,w;\n x0 = xs[j];\n x1 = xs[j+1];\n y0 = ys[j];\n y1 = ys[j+1];\n h = x1-x0;\n xh = x0+c*h;\n yh = ymid[j];\n p = sub(k1[j ],mul(y0,1/(x0-xh)+2/(x0-x1)));\n q = sub(k1[j+1],mul(y1,1/(x1-xh)+2/(x1-x0)));\n w = [sqr(xi - x1) * (xi - xh) / sqr(x0 - x1) / (x0 - xh),\n sqr(xi - x0) * sqr(xi - x1) / sqr(x0 - xh) / sqr(x1 - xh),\n sqr(xi - x0) * (xi - xh) / sqr(x1 - x0) / (x1 - xh),\n (xi - x0) * sqr(xi - x1) * (xi - xh) / sqr(x0-x1) / (x0 - xh),\n (xi - x1) * sqr(xi - x0) * (xi - xh) / sqr(x0-x1) / (x1 - xh)];\n return add(add(add(add(mul(y0,w[0]),\n mul(yh,w[1])),\n mul(y1,w[2])),\n mul( p,w[3])),\n mul( q,w[4]));\n}\nnumeric.Dopri.prototype.at = function at(x) {\n var i,j,k,floor = Math.floor;\n if(typeof x !== \"number\") {\n var n = x.length, ret = Array(n);\n for(i=n-1;i!==-1;--i) {\n ret[i] = this.at(x[i]);\n }\n return ret;\n }\n var x0 = this.x;\n i = 0; j = x0.length-1;\n while(j-i>1) {\n k = floor(0.5*(i+j));\n if(x0[k] <= x) i = k;\n else j = k;\n }\n return this._at(x,i);\n}\n\nnumeric.dopri = function dopri(x0,x1,y0,f,tol,maxit,event) {\n if(typeof tol === \"undefined\") { tol = 1e-6; }\n if(typeof maxit === \"undefined\") { maxit = 1000; }\n var xs = [x0], ys = [y0], k1 = [f(x0,y0)], k2,k3,k4,k5,k6,k7, ymid = [];\n var A2 = 1/5;\n var A3 = [3/40,9/40];\n var A4 = [44/45,-56/15,32/9];\n var A5 = [19372/6561,-25360/2187,64448/6561,-212/729];\n var A6 = [9017/3168,-355/33,46732/5247,49/176,-5103/18656];\n var b = [35/384,0,500/1113,125/192,-2187/6784,11/84];\n var bm = [0.5*6025192743/30085553152,\n 0,\n 0.5*51252292925/65400821598,\n 0.5*-2691868925/45128329728,\n 0.5*187940372067/1594534317056,\n 0.5*-1776094331/19743644256,\n 0.5*11237099/235043384];\n var c = [1/5,3/10,4/5,8/9,1,1];\n var e = [-71/57600,0,71/16695,-71/1920,17253/339200,-22/525,1/40];\n var i = 0,er,j;\n var h = (x1-x0)/10;\n var it = 0;\n var add = numeric.add, mul = numeric.mul, y1,erinf;\n var max = Math.max, min = Math.min, abs = Math.abs, norminf = numeric.norminf,pow = Math.pow;\n var any = numeric.any, lt = numeric.lt, and = numeric.and, sub = numeric.sub;\n var e0, e1, ev;\n var ret = new numeric.Dopri(xs,ys,k1,ymid,-1,\"\");\n if(typeof event === \"function\") e0 = event(x0,y0);\n while(x0<x1 && it<maxit) {\n ++it;\n if(x0+h>x1) h = x1-x0;\n k2 = f(x0+c[0]*h, add(y0,mul( A2*h,k1[i])));\n k3 = f(x0+c[1]*h, add(add(y0,mul(A3[0]*h,k1[i])),mul(A3[1]*h,k2)));\n k4 = f(x0+c[2]*h, add(add(add(y0,mul(A4[0]*h,k1[i])),mul(A4[1]*h,k2)),mul(A4[2]*h,k3)));\n k5 = f(x0+c[3]*h, add(add(add(add(y0,mul(A5[0]*h,k1[i])),mul(A5[1]*h,k2)),mul(A5[2]*h,k3)),mul(A5[3]*h,k4)));\n k6 = f(x0+c[4]*h,add(add(add(add(add(y0,mul(A6[0]*h,k1[i])),mul(A6[1]*h,k2)),mul(A6[2]*h,k3)),mul(A6[3]*h,k4)),mul(A6[4]*h,k5)));\n y1 = add(add(add(add(add(y0,mul(k1[i],h*b[0])),mul(k3,h*b[2])),mul(k4,h*b[3])),mul(k5,h*b[4])),mul(k6,h*b[5]));\n k7 = f(x0+h,y1);\n er = add(add(add(add(add(mul(k1[i],h*e[0]),mul(k3,h*e[2])),mul(k4,h*e[3])),mul(k5,h*e[4])),mul(k6,h*e[5])),mul(k7,h*e[6]));\n if(typeof er === \"number\") erinf = abs(er);\n else erinf = norminf(er);\n if(erinf > tol) { // reject\n h = 0.2*h*pow(tol/erinf,0.25);\n if(x0+h === x0) {\n ret.msg = \"Step size became too small\";\n break;\n }\n continue;\n }\n ymid[i] = add(add(add(add(add(add(y0,\n mul(k1[i],h*bm[0])),\n mul(k3 ,h*bm[2])),\n mul(k4 ,h*bm[3])),\n mul(k5 ,h*bm[4])),\n mul(k6 ,h*bm[5])),\n mul(k7 ,h*bm[6]));\n ++i;\n xs[i] = x0+h;\n ys[i] = y1;\n k1[i] = k7;\n if(typeof event === \"function\") {\n var yi,xl = x0,xr = x0+0.5*h,xi;\n e1 = event(xr,ymid[i-1]);\n ev = and(lt(e0,0),lt(0,e1));\n if(!any(ev)) { xl = xr; xr = x0+h; e0 = e1; e1 = event(xr,y1); ev = and(lt(e0,0),lt(0,e1)); }\n if(any(ev)) {\n var xc, yc, en,ei;\n var side=0, sl = 1.0, sr = 1.0;\n while(1) {\n if(typeof e0 === \"number\") xi = (sr*e1*xl-sl*e0*xr)/(sr*e1-sl*e0);\n else {\n xi = xr;\n for(j=e0.length-1;j!==-1;--j) {\n if(e0[j]<0 && e1[j]>0) xi = min(xi,(sr*e1[j]*xl-sl*e0[j]*xr)/(sr*e1[j]-sl*e0[j]));\n }\n }\n if(xi <= xl || xi >= xr) break;\n yi = ret._at(xi, i-1);\n ei = event(xi,yi);\n en = and(lt(e0,0),lt(0,ei));\n if(any(en)) {\n xr = xi;\n e1 = ei;\n ev = en;\n sr = 1.0;\n if(side === -1) sl *= 0.5;\n else sl = 1.0;\n side = -1;\n } else {\n xl = xi;\n e0 = ei;\n sl = 1.0;\n if(side === 1) sr *= 0.5;\n else sr = 1.0;\n side = 1;\n }\n }\n y1 = ret._at(0.5*(x0+xi),i-1);\n ret.f[i] = f(xi,yi);\n ret.x[i] = xi;\n ret.y[i] = yi;\n ret.ymid[i-1] = y1;\n ret.events = ev;\n ret.iterations = it;\n return ret;\n }\n }\n x0 += h;\n y0 = y1;\n e0 = e1;\n h = min(0.8*h*pow(tol/erinf,0.25),4*h);\n }\n ret.iterations = it;\n return ret;\n}\n\n// 11. Ax = b\nnumeric.LU = function(A, fast) {\n fast = fast || false;\n\n var abs = Math.abs;\n var i, j, k, absAjk, Akk, Ak, Pk, Ai;\n var max;\n var n = A.length, n1 = n-1;\n var P = new Array(n);\n if(!fast) A = numeric.clone(A);\n\n for (k = 0; k < n; ++k) {\n Pk = k;\n Ak = A[k];\n max = abs(Ak[k]);\n for (j = k + 1; j < n; ++j) {\n absAjk = abs(A[j][k]);\n if (max < absAjk) {\n max = absAjk;\n Pk = j;\n }\n }\n P[k] = Pk;\n\n if (Pk != k) {\n A[k] = A[Pk];\n A[Pk] = Ak;\n Ak = A[k];\n }\n\n Akk = Ak[k];\n\n for (i = k + 1; i < n; ++i) {\n A[i][k] /= Akk;\n }\n\n for (i = k + 1; i < n; ++i) {\n Ai = A[i];\n for (j = k + 1; j < n1; ++j) {\n Ai[j] -= Ai[k] * Ak[j];\n ++j;\n Ai[j] -= Ai[k] * Ak[j];\n }\n if(j===n1) Ai[j] -= Ai[k] * Ak[j];\n }\n }\n\n return {\n LU: A,\n P: P\n };\n}\n\nnumeric.LUsolve = function LUsolve(LUP, b) {\n var i, j;\n var LU = LUP.LU;\n var n = LU.length;\n var x = numeric.clone(b);\n var P = LUP.P;\n var Pi, LUi, LUii, tmp;\n\n for (i=n-1;i!==-1;--i) x[i] = b[i];\n for (i = 0; i < n; ++i) {\n Pi = P[i];\n if (P[i] !== i) {\n tmp = x[i];\n x[i] = x[Pi];\n x[Pi] = tmp;\n }\n\n LUi = LU[i];\n for (j = 0; j < i; ++j) {\n x[i] -= x[j] * LUi[j];\n }\n }\n\n for (i = n - 1; i >= 0; --i) {\n LUi = LU[i];\n for (j = i + 1; j < n; ++j) {\n x[i] -= x[j] * LUi[j];\n }\n\n x[i] /= LUi[i];\n }\n\n return x;\n}\n\nnumeric.solve = function solve(A,b,fast) { return numeric.LUsolve(numeric.LU(A,fast), b); }\n\n// 12. Linear programming\nnumeric.echelonize = function echelonize(A) {\n var s = numeric.dim(A), m = s[0], n = s[1];\n var I = numeric.identity(m);\n var P = Array(m);\n var i,j,k,l,Ai,Ii,Z,a;\n var abs = Math.abs;\n var diveq = numeric.diveq;\n A = numeric.clone(A);\n for(i=0;i<m;++i) {\n k = 0;\n Ai = A[i];\n Ii = I[i];\n for(j=1;j<n;++j) if(abs(Ai[k])<abs(Ai[j])) k=j;\n P[i] = k;\n diveq(Ii,Ai[k]);\n diveq(Ai,Ai[k]);\n for(j=0;j<m;++j) if(j!==i) {\n Z = A[j]; a = Z[k];\n for(l=n-1;l!==-1;--l) Z[l] -= Ai[l]*a;\n Z = I[j];\n for(l=m-1;l!==-1;--l) Z[l] -= Ii[l]*a;\n }\n }\n return {I:I, A:A, P:P};\n}\n\nnumeric.__solveLP = function __solveLP(c,A,b,tol,maxit,x,flag) {\n var sum = numeric.sum, log = numeric.log, mul = numeric.mul, sub = numeric.sub, dot = numeric.dot, div = numeric.div, add = numeric.add;\n var m = c.length, n = b.length,y;\n var unbounded = false, cb,i0=0;\n var alpha = 1.0;\n var f0,df0,AT = numeric.transpose(A), svd = numeric.svd,transpose = numeric.transpose,leq = numeric.leq, sqrt = Math.sqrt, abs = Math.abs;\n var muleq = numeric.muleq;\n var norm = numeric.norminf, any = numeric.any,min = Math.min;\n var all = numeric.all, gt = numeric.gt;\n var p = Array(m), A0 = Array(n),e=numeric.rep([n],1), H;\n var solve = numeric.solve, z = sub(b,dot(A,x)),count;\n var dotcc = dot(c,c);\n var g;\n for(count=i0;count<maxit;++count) {\n var i,j,d;\n for(i=n-1;i!==-1;--i) A0[i] = div(A[i],z[i]);\n var A1 = transpose(A0);\n for(i=m-1;i!==-1;--i) p[i] = (/*x[i]+*/sum(A1[i]));\n alpha = 0.25*abs(dotcc/dot(c,p));\n var a1 = 100*sqrt(dotcc/dot(p,p));\n if(!isFinite(alpha) || alpha>a1) alpha = a1;\n g = add(c,mul(alpha,p));\n H = dot(A1,A0);\n for(i=m-1;i!==-1;--i) H[i][i] += 1;\n d = solve(H,div(g,alpha),true);\n var t0 = div(z,dot(A,d));\n var t = 1.0;\n for(i=n-1;i!==-1;--i) if(t0[i]<0) t = min(t,-0.999*t0[i]);\n y = sub(x,mul(d,t));\n z = sub(b,dot(A,y));\n if(!all(gt(z,0))) return { solution: x, message: \"\", iterations: count };\n x = y;\n if(alpha<tol) return { solution: y, message: \"\", iterations: count };\n if(flag) {\n var s = dot(c,g), Ag = dot(A,g);\n unbounded = true;\n for(i=n-1;i!==-1;--i) if(s*Ag[i]<0) { unbounded = false; break; }\n } else {\n if(x[m-1]>=0) unbounded = false;\n else unbounded = true;\n }\n if(unbounded) return { solution: y, message: \"Unbounded\", iterations: count };\n }\n return { solution: x, message: \"maximum iteration count exceeded\", iterations:count };\n}\n\nnumeric._solveLP = function _solveLP(c,A,b,tol,maxit) {\n var m = c.length, n = b.length,y;\n var sum = numeric.sum, log = numeric.log, mul = numeric.mul, sub = numeric.sub, dot = numeric.dot, div = numeric.div, add = numeric.add;\n var c0 = numeric.rep([m],0).concat([1]);\n var J = numeric.rep([n,1],-1);\n var A0 = numeric.blockMatrix([[A , J ]]);\n var b0 = b;\n var y = numeric.rep([m],0).concat(Math.max(0,numeric.sup(numeric.neg(b)))+1);\n var x0 = numeric.__solveLP(c0,A0,b0,tol,maxit,y,false);\n var x = numeric.clone(x0.solution);\n x.length = m;\n var foo = numeric.inf(sub(b,dot(A,x)));\n if(foo<0) { return { solution: NaN, message: \"Infeasible\", iterations: x0.iterations }; }\n var ret = numeric.__solveLP(c, A, b, tol, maxit-x0.iterations, x, true);\n ret.iterations += x0.iterations;\n return ret;\n};\n\nnumeric.solveLP = function solveLP(c,A,b,Aeq,beq,tol,maxit) {\n if(typeof maxit === \"undefined\") maxit = 1000;\n if(typeof tol === \"undefined\") tol = numeric.epsilon;\n if(typeof Aeq === \"undefined\") return numeric._solveLP(c,A,b,tol,maxit);\n var m = Aeq.length, n = Aeq[0].length, o = A.length;\n var B = numeric.echelonize(Aeq);\n var flags = numeric.rep([n],0);\n var P = B.P;\n var Q = [];\n var i;\n for(i=P.length-1;i!==-1;--i) flags[P[i]] = 1;\n for(i=n-1;i!==-1;--i) if(flags[i]===0) Q.push(i);\n var g = numeric.getRange;\n var I = numeric.linspace(0,m-1), J = numeric.linspace(0,o-1);\n var Aeq2 = g(Aeq,I,Q), A1 = g(A,J,P), A2 = g(A,J,Q), dot = numeric.dot, sub = numeric.sub;\n var A3 = dot(A1,B.I);\n var A4 = sub(A2,dot(A3,Aeq2)), b4 = sub(b,dot(A3,beq));\n var c1 = Array(P.length), c2 = Array(Q.length);\n for(i=P.length-1;i!==-1;--i) c1[i] = c[P[i]];\n for(i=Q.length-1;i!==-1;--i) c2[i] = c[Q[i]];\n var c4 = sub(c2,dot(c1,dot(B.I,Aeq2)));\n var S = numeric._solveLP(c4,A4,b4,tol,maxit);\n var x2 = S.solution;\n if(x2!==x2) return S;\n var x1 = dot(B.I,sub(beq,dot(Aeq2,x2)));\n var x = Array(c.length);\n for(i=P.length-1;i!==-1;--i) x[P[i]] = x1[i];\n for(i=Q.length-1;i!==-1;--i) x[Q[i]] = x2[i];\n return { solution: x, message:S.message, iterations: S.iterations };\n}\n\nnumeric.MPStoLP = function MPStoLP(MPS) {\n if(MPS instanceof String) { MPS.split('\\n'); }\n var state = 0;\n var states = ['Initial state','NAME','ROWS','COLUMNS','RHS','BOUNDS','ENDATA'];\n var n = MPS.length;\n var i,j,z,N=0,rows = {}, sign = [], rl = 0, vars = {}, nv = 0;\n var name;\n var c = [], A = [], b = [];\n function err(e) { throw new Error('MPStoLP: '+e+'\\nLine '+i+': '+MPS[i]+'\\nCurrent state: '+states[state]+'\\n'); }\n for(i=0;i<n;++i) {\n z = MPS[i];\n var w0 = z.match(/\\S*/g);\n var w = [];\n for(j=0;j<w0.length;++j) if(w0[j]!==\"\") w.push(w0[j]);\n if(w.length === 0) continue;\n for(j=0;j<states.length;++j) if(z.substr(0,states[j].length) === states[j]) break;\n if(j<states.length) {\n state = j;\n if(j===1) { name = w[1]; }\n if(j===6) return { name:name, c:c, A:numeric.transpose(A), b:b, rows:rows, vars:vars };\n continue;\n }\n switch(state) {\n case 0: case 1: err('Unexpected line');\n case 2: \n switch(w[0]) {\n case 'N': if(N===0) N = w[1]; else err('Two or more N rows'); break;\n case 'L': rows[w[1]] = rl; sign[rl] = 1; b[rl] = 0; ++rl; break;\n case 'G': rows[w[1]] = rl; sign[rl] = -1;b[rl] = 0; ++rl; break;\n case 'E': rows[w[1]] = rl; sign[rl] = 0;b[rl] = 0; ++rl; break;\n default: err('Parse error '+numeric.prettyPrint(w));\n }\n break;\n case 3:\n if(!vars.hasOwnProperty(w[0])) { vars[w[0]] = nv; c[nv] = 0; A[nv] = numeric.rep([rl],0); ++nv; }\n var p = vars[w[0]];\n for(j=1;j<w.length;j+=2) {\n if(w[j] === N) { c[p] = parseFloat(w[j+1]); continue; }\n var q = rows[w[j]];\n A[p][q] = (sign[q]<0?-1:1)*parseFloat(w[j+1]);\n }\n break;\n case 4:\n for(j=1;j<w.length;j+=2) b[rows[w[j]]] = (sign[rows[w[j]]]<0?-1:1)*parseFloat(w[j+1]);\n break;\n case 5: /*FIXME*/ break;\n case 6: err('Internal error');\n }\n }\n err('Reached end of file without ENDATA');\n}\n// seedrandom.js version 2.0.\n// Author: David Bau 4/2/2011\n//\n// Defines a method Math.seedrandom() that, when called, substitutes\n// an explicitly seeded RC4-based algorithm for Math.random(). Also\n// supports automatic seeding from local or network sources of entropy.\n//\n// Usage:\n//\n// <script src=http://davidbau.com/encode/seedrandom-min.js></script>\n//\n// Math.seedrandom('yipee'); Sets Math.random to a function that is\n// initialized using the given explicit seed.\n//\n// Math.seedrandom(); Sets Math.random to a function that is\n// seeded using the current time, dom state,\n// and other accumulated local entropy.\n// The generated seed string is returned.\n//\n// Math.seedrandom('yowza', true);\n// Seeds using the given explicit seed mixed\n// together with accumulated entropy.\n//\n// <script src=\"http://bit.ly/srandom-512\"></script>\n// Seeds using physical random bits downloaded\n// from random.org.\n//\n// <script src=\"https://jsonlib.appspot.com/urandom?callback=Math.seedrandom\">\n// </script> Seeds using urandom bits from call.jsonlib.com,\n// which is faster than random.org.\n//\n// Examples:\n//\n// Math.seedrandom(\"hello\"); // Use \"hello\" as the seed.\n// document.write(Math.random()); // Always 0.5463663768140734\n// document.write(Math.random()); // Always 0.43973793770592234\n// var rng1 = Math.random; // Remember the current prng.\n//\n// var autoseed = Math.seedrandom(); // New prng with an automatic seed.\n// document.write(Math.random()); // Pretty much unpredictable.\n//\n// Math.random = rng1; // Continue \"hello\" prng sequence.\n// document.write(Math.random()); // Always 0.554769432473455\n//\n// Math.seedrandom(autoseed); // Restart at the previous seed.\n// document.write(Math.random()); // Repeat the 'unpredictable' value.\n//\n// Notes:\n//\n// Each time seedrandom('arg') is called, entropy from the passed seed\n// is accumulated in a pool to help generate future seeds for the\n// zero-argument form of Math.seedrandom, so entropy can be injected over\n// time by calling seedrandom with explicit data repeatedly.\n//\n// On speed - This javascript implementation of Math.random() is about\n// 3-10x slower than the built-in Math.random() because it is not native\n// code, but this is typically fast enough anyway. Seeding is more expensive,\n// especially if you use auto-seeding. Some details (timings on Chrome 4):\n//\n// Our Math.random() - avg less than 0.002 milliseconds per call\n// seedrandom('explicit') - avg less than 0.5 milliseconds per call\n// seedrandom('explicit', true) - avg less than 2 milliseconds per call\n// seedrandom() - avg about 38 milliseconds per call\n//\n// LICENSE (BSD):\n//\n// Copyright 2010 David Bau, all rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n// \n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// \n// 3. Neither the name of this module nor the names of its contributors may\n// be used to endorse or promote products derived from this software\n// without specific prior written permission.\n// \n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n/**\n * All code is in an anonymous closure to keep the global namespace clean.\n *\n * @param {number=} overflow \n * @param {number=} startdenom\n */\n\n// Patched by Seb so that seedrandom.js does not pollute the Math object.\n// My tests suggest that doing Math.trouble = 1 makes Math lookups about 5%\n// slower.\nnumeric.seedrandom = { pow:Math.pow, random:Math.random };\n\n(function (pool, math, width, chunks, significance, overflow, startdenom) {\n\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nmath['seedrandom'] = function seedrandom(seed, use_entropy) {\n var key = [];\n var arc4;\n\n // Flatten the seed string or build one from local entropy if needed.\n seed = mixkey(flatten(\n use_entropy ? [seed, pool] :\n arguments.length ? seed :\n [new Date().getTime(), pool, window], 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n arc4 = new ARC4(key);\n\n // Mix the randomness into accumulated entropy.\n mixkey(arc4.S, pool);\n\n // Override Math.random\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n math['random'] = function random() { // Closure to return a random double:\n var n = arc4.g(chunks); // Start with a numerator n < 2 ^ 48\n var d = startdenom; // and denominator d = 2 ^ 48.\n var x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n // Return the seed that was used\n return seed;\n};\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\n/** @constructor */\nfunction ARC4(key) {\n var t, u, me = this, keylen = key.length;\n var i = 0, j = me.i = me.j = me.m = 0;\n me.S = [];\n me.c = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) { me.S[i] = i++; }\n for (i = 0; i < width; i++) {\n t = me.S[i];\n j = lowbits(j + t + key[i % keylen]);\n u = me.S[j];\n me.S[i] = u;\n me.S[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n me.g = function getnext(count) {\n var s = me.S;\n var i = lowbits(me.i + 1); var t = s[i];\n var j = lowbits(me.j + t); var u = s[j];\n s[i] = u;\n s[j] = t;\n var r = s[lowbits(t + u)];\n while (--count) {\n i = lowbits(i + 1); t = s[i];\n j = lowbits(j + t); u = s[j];\n s[i] = u;\n s[j] = t;\n r = r * width + s[lowbits(t + u)];\n }\n me.i = i;\n me.j = j;\n return r;\n };\n // For robust unpredictability discard an initial batch of values.\n // See http://www.rsa.com/rsalabs/node.asp?id=2009\n me.g(width);\n}\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\n/** @param {Object=} result \n * @param {string=} prop\n * @param {string=} typ */\nfunction flatten(obj, depth, result, prop, typ) {\n result = [];\n typ = typeof(obj);\n if (depth && typ == 'object') {\n for (prop in obj) {\n if (prop.indexOf('S') < 5) { // Avoid FF3 bug (local/sessionStorage)\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n }\n return (result.length ? result : obj + (typ != 'string' ? '\\0' : ''));\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\n/** @param {number=} smear \n * @param {number=} j */\nfunction mixkey(seed, key, smear, j) {\n seed += ''; // Ensure the seed is a string\n smear = 0;\n for (j = 0; j < seed.length; j++) {\n key[lowbits(j)] =\n lowbits((smear ^= key[lowbits(j)] * 19) + seed.charCodeAt(j));\n }\n seed = '';\n for (j in key) { seed += String.fromCharCode(key[j]); }\n return seed;\n}\n\n//\n// lowbits()\n// A quick \"n mod width\" for width a power of 2.\n//\nfunction lowbits(n) { return n & (width - 1); }\n\n//\n// The following constants are related to IEEE 754 limits.\n//\nstartdenom = math.pow(width, chunks);\nsignificance = math.pow(2, significance);\noverflow = significance * 2;\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to intefere with determinstic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n// End anonymous scope, and pass initial values.\n}(\n [], // pool: entropy pool starts empty\n numeric.seedrandom, // math: package containing random, pow, and seedrandom\n 256, // width: each RC4 output is 0 <= x < 256\n 6, // chunks: at least six RC4 outputs for each double\n 52 // significance: there are 52 significant digits in a double\n ));\n/* This file is a slightly modified version of quadprog.js from Alberto Santini.\n * It has been slightly modified by Sébastien Loisel to make sure that it handles\n * 0-based Arrays instead of 1-based Arrays.\n * License is in resources/LICENSE.quadprog */\n(function(exports) {\n\nfunction base0to1(A) {\n if(typeof A !== \"object\") { return A; }\n var ret = [], i,n=A.length;\n for(i=0;i<n;i++) ret[i+1] = base0to1(A[i]);\n return ret;\n}\nfunction base1to0(A) {\n if(typeof A !== \"object\") { return A; }\n var ret = [], i,n=A.length;\n for(i=1;i<n;i++) ret[i-1] = base1to0(A[i]);\n return ret;\n}\n\nfunction dpori(a, lda, n) {\n var i, j, k, kp1, t;\n\n for (k = 1; k <= n; k = k + 1) {\n a[k][k] = 1 / a[k][k];\n t = -a[k][k];\n //~ dscal(k - 1, t, a[1][k], 1);\n for (i = 1; i < k; i = i + 1) {\n a[i][k] = t * a[i][k];\n }\n\n kp1 = k + 1;\n if (n < kp1) {\n break;\n }\n for (j = kp1; j <= n; j = j + 1) {\n t = a[k][j];\n a[k][j] = 0;\n //~ daxpy(k, t, a[1][k], 1, a[1][j], 1);\n for (i = 1; i <= k; i = i + 1) {\n a[i][j] = a[i][j] + (t * a[i][k]);\n }\n }\n }\n\n}\n\nfunction dposl(a, lda, n, b) {\n var i, k, kb, t;\n\n for (k = 1; k <= n; k = k + 1) {\n //~ t = ddot(k - 1, a[1][k], 1, b[1], 1);\n t = 0;\n for (i = 1; i < k; i = i + 1) {\n t = t + (a[i][k] * b[i]);\n }\n\n b[k] = (b[k] - t) / a[k][k];\n }\n\n for (kb = 1; kb <= n; kb = kb + 1) {\n k = n + 1 - kb;\n b[k] = b[k] / a[k][k];\n t = -b[k];\n //~ daxpy(k - 1, t, a[1][k], 1, b[1], 1);\n for (i = 1; i < k; i = i + 1) {\n b[i] = b[i] + (t * a[i][k]);\n }\n }\n}\n\nfunction dpofa(a, lda, n, info) {\n var i, j, jm1, k, t, s;\n\n for (j = 1; j <= n; j = j + 1) {\n info[1] = j;\n s = 0;\n jm1 = j - 1;\n if (jm1 < 1) {\n s = a[j][j] - s;\n if (s <= 0) {\n break;\n }\n a[j][j] = Math.sqrt(s);\n } else {\n for (k = 1; k <= jm1; k = k + 1) {\n //~ t = a[k][j] - ddot(k - 1, a[1][k], 1, a[1][j], 1);\n t = a[k][j];\n for (i = 1; i < k; i = i + 1) {\n t = t - (a[i][j] * a[i][k]);\n }\n t = t / a[k][k];\n a[k][j] = t;\n s = s + t * t;\n }\n s = a[j][j] - s;\n if (s <= 0) {\n break;\n }\n a[j][j] = Math.sqrt(s);\n }\n info[1] = 0;\n }\n}\n\nfunction qpgen2(dmat, dvec, fddmat, n, sol, crval, amat,\n bvec, fdamat, q, meq, iact, nact, iter, work, ierr) {\n\n var i, j, l, l1, info, it1, iwzv, iwrv, iwrm, iwsv, iwuv, nvl, r, iwnbv,\n temp, sum, t1, tt, gc, gs, nu,\n t1inf, t2min,\n vsmall, tmpa, tmpb,\n go;\n\n r = Math.min(n, q);\n l = 2 * n + (r * (r + 5)) / 2 + 2 * q + 1;\n\n vsmall = 1.0e-60;\n do {\n vsmall = vsmall + vsmall;\n tmpa = 1 + 0.1 * vsmall;\n tmpb = 1 + 0.2 * vsmall;\n } while (tmpa <= 1 || tmpb <= 1);\n\n for (i = 1; i <= n; i = i + 1) {\n work[i] = dvec[i];\n }\n for (i = n + 1; i <= l; i = i + 1) {\n work[i] = 0;\n }\n for (i = 1; i <= q; i = i + 1) {\n iact[i] = 0;\n }\n\n info = [];\n\n if (ierr[1] === 0) {\n dpofa(dmat, fddmat, n, info);\n if (info[1] !== 0) {\n ierr[1] = 2;\n return;\n }\n dposl(dmat, fddmat, n, dvec);\n dpori(dmat, fddmat, n);\n } else {\n for (j = 1; j <= n; j = j + 1) {\n sol[j] = 0;\n for (i = 1; i <= j; i = i + 1) {\n sol[j] = sol[j] + dmat[i][j] * dvec[i];\n }\n }\n for (j = 1; j <= n; j = j + 1) {\n dvec[j] = 0;\n for (i = j; i <= n; i = i + 1) {\n dvec[j] = dvec[j] + dmat[j][i] * sol[i];\n }\n }\n }\n\n crval[1] = 0;\n for (j = 1; j <= n; j = j + 1) {\n sol[j] = dvec[j];\n crval[1] = crval[1] + work[j] * sol[j];\n work[j] = 0;\n for (i = j + 1; i <= n; i = i + 1) {\n dmat[i][j] = 0;\n }\n }\n crval[1] = -crval[1] / 2;\n ierr[1] = 0;\n\n iwzv = n;\n iwrv = iwzv + n;\n iwuv = iwrv + r;\n iwrm = iwuv + r + 1;\n iwsv = iwrm + (r * (r + 1)) / 2;\n iwnbv = iwsv + q;\n\n for (i = 1; i <= q; i = i + 1) {\n sum = 0;\n for (j = 1; j <= n; j = j + 1) {\n sum = sum + amat[j][i] * amat[j][i];\n }\n work[iwnbv + i] = Math.sqrt(sum);\n }\n nact = 0;\n iter[1] = 0;\n iter[2] = 0;\n\n function fn_goto_50() {\n iter[1] = iter[1] + 1;\n\n l = iwsv;\n for (i = 1; i <= q; i = i + 1) {\n l = l + 1;\n sum = -bvec[i];\n for (j = 1; j <= n; j = j + 1) {\n sum = sum + amat[j][i] * sol[j];\n }\n if (Math.abs(sum) < vsmall) {\n sum = 0;\n }\n if (i > meq) {\n work[l] = sum;\n } else {\n work[l] = -Math.abs(sum);\n if (sum > 0) {\n for (j = 1; j <= n; j = j + 1) {\n amat[j][i] = -amat[j][i];\n }\n bvec[i] = -bvec[i];\n }\n }\n }\n\n for (i = 1; i <= nact; i = i + 1) {\n work[iwsv + iact[i]] = 0;\n }\n\n nvl = 0;\n temp = 0;\n for (i = 1; i <= q; i = i + 1) {\n if (work[iwsv + i] < temp * work[iwnbv + i]) {\n nvl = i;\n temp = work[iwsv + i] / work[iwnbv + i];\n }\n }\n if (nvl === 0) {\n return 999;\n }\n\n return 0;\n }\n\n function fn_goto_55() {\n for (i = 1; i <= n; i = i + 1) {\n sum = 0;\n for (j = 1; j <= n; j = j + 1) {\n sum = sum + dmat[j][i] * amat[j][nvl];\n }\n work[i] = sum;\n }\n\n l1 = iwzv;\n for (i = 1; i <= n; i = i + 1) {\n work[l1 + i] = 0;\n }\n for (j = nact + 1; j <= n; j = j + 1) {\n for (i = 1; i <= n; i = i + 1) {\n work[l1 + i] = work[l1 + i] + dmat[i][j] * work[j];\n }\n }\n\n t1inf = true;\n for (i = nact; i >= 1; i = i - 1) {\n sum = work[i];\n l = iwrm + (i * (i + 3)) / 2;\n l1 = l - i;\n for (j = i + 1; j <= nact; j = j + 1) {\n sum = sum - work[l] * work[iwrv + j];\n l = l + j;\n }\n sum = sum / work[l1];\n work[iwrv + i] = sum;\n if (iact[i] < meq) {\n // continue;\n break;\n }\n if (sum < 0) {\n // continue;\n break;\n }\n t1inf = false;\n it1 = i;\n }\n\n if (!t1inf) {\n t1 = work[iwuv + it1] / work[iwrv + it1];\n for (i = 1; i <= nact; i = i + 1) {\n if (iact[i] < meq) {\n // continue;\n break;\n }\n if (work[iwrv + i] < 0) {\n // continue;\n break;\n }\n temp = work[iwuv + i] / work[iwrv + i];\n if (temp < t1) {\n t1 = temp;\n it1 = i;\n }\n }\n }\n\n sum = 0;\n for (i = iwzv + 1; i <= iwzv + n; i = i + 1) {\n sum = sum + work[i] * work[i];\n }\n if (Math.abs(sum) <= vsmall) {\n if (t1inf) {\n ierr[1] = 1;\n // GOTO 999\n return 999;\n } else {\n for (i = 1; i <= nact; i = i + 1) {\n work[iwuv + i] = work[iwuv + i] - t1 * work[iwrv + i];\n }\n work[iwuv + nact + 1] = work[iwuv + nact + 1] + t1;\n // GOTO 700\n return 700;\n }\n } else {\n sum = 0;\n for (i = 1; i <= n; i = i + 1) {\n sum = sum + work[iwzv + i] * amat[i][nvl];\n }\n tt = -work[iwsv + nvl] / sum;\n t2min = true;\n if (!t1inf) {\n if (t1 < tt) {\n tt = t1;\n t2min = false;\n }\n }\n\n for (i = 1; i <= n; i = i + 1) {\n sol[i] = sol[i] + tt * work[iwzv + i];\n if (Math.abs(sol[i]) < vsmall) {\n sol[i] = 0;\n }\n }\n\n crval[1] = crval[1] + tt * sum * (tt / 2 + work[iwuv + nact + 1]);\n for (i = 1; i <= nact; i = i + 1) {\n work[iwuv + i] = work[iwuv + i] - tt * work[iwrv + i];\n }\n work[iwuv + nact + 1] = work[iwuv + nact + 1] + tt;\n\n if (t2min) {\n nact = nact + 1;\n iact[nact] = nvl;\n\n l = iwrm + ((nact - 1) * nact) / 2 + 1;\n for (i = 1; i <= nact - 1; i = i + 1) {\n work[l] = work[i];\n l = l + 1;\n }\n\n if (nact === n) {\n work[l] = work[n];\n } else {\n for (i = n; i >= nact + 1; i = i - 1) {\n if (work[i] === 0) {\n // continue;\n break;\n }\n gc = Math.max(Math.abs(work[i - 1]), Math.abs(work[i]));\n gs = Math.min(Math.abs(work[i - 1]), Math.abs(work[i]));\n if (work[i - 1] >= 0) {\n temp = Math.abs(gc * Math.sqrt(1 + gs * gs / (gc * gc)));\n } else {\n temp = -Math.abs(gc * Math.sqrt(1 + gs * gs / (gc * gc)));\n }\n gc = work[i - 1] / temp;\n gs = work[i] / temp;\n\n if (gc === 1) {\n // continue;\n break;\n }\n if (gc === 0) {\n work[i - 1] = gs * temp;\n for (j = 1; j <= n; j = j + 1) {\n temp = dmat[j][i - 1];\n dmat[j][i - 1] = dmat[j][i];\n dmat[j][i] = temp;\n }\n } else {\n work[i - 1] = temp;\n nu = gs / (1 + gc);\n for (j = 1; j <= n; j = j + 1) {\n temp = gc * dmat[j][i - 1] + gs * dmat[j][i];\n dmat[j][i] = nu * (dmat[j][i - 1] + temp) - dmat[j][i];\n dmat[j][i - 1] = temp;\n\n }\n }\n }\n work[l] = work[nact];\n }\n } else {\n sum = -bvec[nvl];\n for (j = 1; j <= n; j = j + 1) {\n sum = sum + sol[j] * amat[j][nvl];\n }\n if (nvl > meq) {\n work[iwsv + nvl] = sum;\n } else {\n work[iwsv + nvl] = -Math.abs(sum);\n if (sum > 0) {\n for (j = 1; j <= n; j = j + 1) {\n amat[j][nvl] = -amat[j][nvl];\n }\n bvec[nvl] = -bvec[nvl];\n }\n }\n // GOTO 700\n return 700;\n }\n }\n\n return 0;\n }\n\n function fn_goto_797() {\n l = iwrm + (it1 * (it1 + 1)) / 2 + 1;\n l1 = l + it1;\n if (work[l1] === 0) {\n // GOTO 798\n return 798;\n }\n gc = Math.max(Math.abs(work[l1 - 1]), Math.abs(work[l1]));\n gs = Math.min(Math.abs(work[l1 - 1]), Math.abs(work[l1]));\n if (work[l1 - 1] >= 0) {\n temp = Math.abs(gc * Math.sqrt(1 + gs * gs / (gc * gc)));\n } else {\n temp = -Math.abs(gc * Math.sqrt(1 + gs * gs / (gc * gc)));\n }\n gc = work[l1 - 1] / temp;\n gs = work[l1] / temp;\n\n if (gc === 1) {\n // GOTO 798\n return 798;\n }\n if (gc === 0) {\n for (i = it1 + 1; i <= nact; i = i + 1) {\n temp = work[l1 - 1];\n work[l1 - 1] = work[l1];\n work[l1] = temp;\n l1 = l1 + i;\n }\n for (i = 1; i <= n; i = i + 1) {\n temp = dmat[i][it1];\n dmat[i][it1] = dmat[i][it1 + 1];\n dmat[i][it1 + 1] = temp;\n }\n } else {\n nu = gs / (1 + gc);\n for (i = it1 + 1; i <= nact; i = i + 1) {\n temp = gc * work[l1 - 1] + gs * work[l1];\n work[l1] = nu * (work[l1 - 1] + temp) - work[l1];\n work[l1 - 1] = temp;\n l1 = l1 + i;\n }\n for (i = 1; i <= n; i = i + 1) {\n temp = gc * dmat[i][it1] + gs * dmat[i][it1 + 1];\n dmat[i][it1 + 1] = nu * (dmat[i][it1] + temp) - dmat[i][it1 + 1];\n dmat[i][it1] = temp;\n }\n }\n\n return 0;\n }\n\n function fn_goto_798() {\n l1 = l - it1;\n for (i = 1; i <= it1; i = i + 1) {\n work[l1] = work[l];\n l = l + 1;\n l1 = l1 + 1;\n }\n\n work[iwuv + it1] = work[iwuv + it1 + 1];\n iact[it1] = iact[it1 + 1];\n it1 = it1 + 1;\n if (it1 < nact) {\n // GOTO 797\n return 797;\n }\n\n return 0;\n }\n\n function fn_goto_799() {\n work[iwuv + nact] = work[iwuv + nact + 1];\n work[iwuv + nact + 1] = 0;\n iact[nact] = 0;\n nact = nact - 1;\n iter[2] = iter[2] + 1;\n\n return 0;\n }\n\n go = 0;\n while (true) {\n go = fn_goto_50();\n if (go === 999) {\n return;\n }\n while (true) {\n go = fn_goto_55();\n if (go === 0) {\n break;\n }\n if (go === 999) {\n return;\n }\n if (go === 700) {\n if (it1 === nact) {\n fn_goto_799();\n } else {\n while (true) {\n fn_goto_797();\n go = fn_goto_798();\n if (go !== 797) {\n break;\n }\n }\n fn_goto_799();\n }\n }\n }\n }\n\n}\n\nfunction solveQP(Dmat, dvec, Amat, bvec, meq, factorized) {\n Dmat = base0to1(Dmat);\n dvec = base0to1(dvec);\n Amat = base0to1(Amat);\n var i, n, q,\n nact, r,\n crval = [], iact = [], sol = [], work = [], iter = [],\n message;\n\n meq = meq || 0;\n factorized = factorized ? base0to1(factorized) : [undefined, 0];\n bvec = bvec ? base0to1(bvec) : [];\n\n // In Fortran the array index starts from 1\n n = Dmat.length - 1;\n q = Amat[1].length - 1;\n\n if (!bvec) {\n for (i = 1; i <= q; i = i + 1) {\n bvec[i] = 0;\n }\n }\n for (i = 1; i <= q; i = i + 1) {\n iact[i] = 0;\n }\n nact = 0;\n r = Math.min(n, q);\n for (i = 1; i <= n; i = i + 1) {\n sol[i] = 0;\n }\n crval[1] = 0;\n for (i = 1; i <= (2 * n + (r * (r + 5)) / 2 + 2 * q + 1); i = i + 1) {\n work[i] = 0;\n }\n for (i = 1; i <= 2; i = i + 1) {\n iter[i] = 0;\n }\n\n qpgen2(Dmat, dvec, n, n, sol, crval, Amat,\n bvec, n, q, meq, iact, nact, iter, work, factorized);\n\n message = \"\";\n if (factorized[1] === 1) {\n message = \"constraints are inconsistent, no solution!\";\n }\n if (factorized[1] === 2) {\n message = \"matrix D in quadratic function is not positive definite!\";\n }\n\n return {\n solution: base1to0(sol),\n value: base1to0(crval),\n unconstrained_solution: base1to0(dvec),\n iterations: base1to0(iter),\n iact: base1to0(iact),\n message: message\n };\n}\nexports.solveQP = solveQP;\n}(numeric));\n/*\r\nShanti Rao sent me this routine by private email. I had to modify it\r\nslightly to work on Arrays instead of using a Matrix object.\r\nIt is apparently translated from http://stitchpanorama.sourceforge.net/Python/svd.py\r\n*/\r\n\r\nnumeric.svd= function svd(A) {\r\n var temp;\r\n//Compute the thin SVD from G. H. Golub and C. Reinsch, Numer. Math. 14, 403-420 (1970)\r\n\tvar prec= numeric.epsilon; //Math.pow(2,-52) // assumes double prec\r\n\tvar tolerance= 1.e-64/prec;\r\n\tvar itmax= 50;\r\n\tvar c=0;\r\n\tvar i=0;\r\n\tvar j=0;\r\n\tvar k=0;\r\n\tvar l=0;\r\n\t\r\n\tvar u= numeric.clone(A);\r\n\tvar m= u.length;\r\n\t\r\n\tvar n= u[0].length;\r\n\t\r\n\tif (m < n) throw \"Need more rows than columns\"\r\n\t\r\n\tvar e = new Array(n);\r\n\tvar q = new Array(n);\r\n\tfor (i=0; i<n; i++) e[i] = q[i] = 0.0;\r\n\tvar v = numeric.rep([n,n],0);\r\n//\tv.zero();\r\n\t\r\n \tfunction pythag(a,b)\r\n \t{\r\n\t\ta = Math.abs(a)\r\n\t\tb = Math.abs(b)\r\n\t\tif (a > b)\r\n\t\t\treturn a*Math.sqrt(1.0+(b*b/a/a))\r\n\t\telse if (b == 0.0) \r\n\t\t\treturn a\r\n\t\treturn b*Math.sqrt(1.0+(a*a/b/b))\r\n\t}\r\n\r\n\t//Householder's reduction to bidiagonal form\r\n\r\n\tvar f= 0.0;\r\n\tvar g= 0.0;\r\n\tvar h= 0.0;\r\n\tvar x= 0.0;\r\n\tvar y= 0.0;\r\n\tvar z= 0.0;\r\n\tvar s= 0.0;\r\n\t\r\n\tfor (i=0; i < n; i++)\r\n\t{\t\r\n\t\te[i]= g;\r\n\t\ts= 0.0;\r\n\t\tl= i+1;\r\n\t\tfor (j=i; j < m; j++) \r\n\t\t\ts += (u[j][i]*u[j][i]);\r\n\t\tif (s <= tolerance)\r\n\t\t\tg= 0.0;\r\n\t\telse\r\n\t\t{\t\r\n\t\t\tf= u[i][i];\r\n\t\t\tg= Math.sqrt(s);\r\n\t\t\tif (f >= 0.0) g= -g;\r\n\t\t\th= f*g-s\r\n\t\t\tu[i][i]=f-g;\r\n\t\t\tfor (j=l; j < n; j++)\r\n\t\t\t{\r\n\t\t\t\ts= 0.0\r\n\t\t\t\tfor (k=i; k < m; k++) \r\n\t\t\t\t\ts += u[k][i]*u[k][j]\r\n\t\t\t\tf= s/h\r\n\t\t\t\tfor (k=i; k < m; k++) \r\n\t\t\t\t\tu[k][j]+=f*u[k][i]\r\n\t\t\t}\r\n\t\t}\r\n\t\tq[i]= g\r\n\t\ts= 0.0\r\n\t\tfor (j=l; j < n; j++) \r\n\t\t\ts= s + u[i][j]*u[i][j]\r\n\t\tif (s <= tolerance)\r\n\t\t\tg= 0.0\r\n\t\telse\r\n\t\t{\t\r\n\t\t\tf= u[i][i+1]\r\n\t\t\tg= Math.sqrt(s)\r\n\t\t\tif (f >= 0.0) g= -g\r\n\t\t\th= f*g - s\r\n\t\t\tu[i][i+1] = f-g;\r\n\t\t\tfor (j=l; j < n; j++) e[j]= u[i][j]/h\r\n\t\t\tfor (j=l; j < m; j++)\r\n\t\t\t{\t\r\n\t\t\t\ts=0.0\r\n\t\t\t\tfor (k=l; k < n; k++) \r\n\t\t\t\t\ts += (u[j][k]*u[i][k])\r\n\t\t\t\tfor (k=l; k < n; k++) \r\n\t\t\t\t\tu[j][k]+=s*e[k]\r\n\t\t\t}\t\r\n\t\t}\r\n\t\ty= Math.abs(q[i])+Math.abs(e[i])\r\n\t\tif (y>x) \r\n\t\t\tx=y\r\n\t}\r\n\t\r\n\t// accumulation of right hand gtransformations\r\n\tfor (i=n-1; i != -1; i+= -1)\r\n\t{\t\r\n\t\tif (g != 0.0)\r\n\t\t{\r\n\t\t \th= g*u[i][i+1]\r\n\t\t\tfor (j=l; j < n; j++) \r\n\t\t\t\tv[j][i]=u[i][j]/h\r\n\t\t\tfor (j=l; j < n; j++)\r\n\t\t\t{\t\r\n\t\t\t\ts=0.0\r\n\t\t\t\tfor (k=l; k < n; k++) \r\n\t\t\t\t\ts += u[i][k]*v[k][j]\r\n\t\t\t\tfor (k=l; k < n; k++) \r\n\t\t\t\t\tv[k][j]+=(s*v[k][i])\r\n\t\t\t}\t\r\n\t\t}\r\n\t\tfor (j=l; j < n; j++)\r\n\t\t{\r\n\t\t\tv[i][j] = 0;\r\n\t\t\tv[j][i] = 0;\r\n\t\t}\r\n\t\tv[i][i] = 1;\r\n\t\tg= e[i]\r\n\t\tl= i\r\n\t}\r\n\t\r\n\t// accumulation of left hand transformations\r\n\tfor (i=n-1; i != -1; i+= -1)\r\n\t{\t\r\n\t\tl= i+1\r\n\t\tg= q[i]\r\n\t\tfor (j=l; j < n; j++) \r\n\t\t\tu[i][j] = 0;\r\n\t\tif (g != 0.0)\r\n\t\t{\r\n\t\t\th= u[i][i]*g\r\n\t\t\tfor (j=l; j < n; j++)\r\n\t\t\t{\r\n\t\t\t\ts=0.0\r\n\t\t\t\tfor (k=l; k < m; k++) s += u[k][i]*u[k][j];\r\n\t\t\t\tf= s/h\r\n\t\t\t\tfor (k=i; k < m; k++) u[k][j]+=f*u[k][i];\r\n\t\t\t}\r\n\t\t\tfor (j=i; j < m; j++) u[j][i] = u[j][i]/g;\r\n\t\t}\r\n\t\telse\r\n\t\t\tfor (j=i; j < m; j++) u[j][i] = 0;\r\n\t\tu[i][i] += 1;\r\n\t}\r\n\t\r\n\t// diagonalization of the bidiagonal form\r\n\tprec= prec*x\r\n\tfor (k=n-1; k != -1; k+= -1)\r\n\t{\r\n\t\tfor (var iteration=0; iteration < itmax; iteration++)\r\n\t\t{\t// test f splitting\r\n\t\t\tvar test_convergence = false\r\n\t\t\tfor (l=k; l != -1; l+= -1)\r\n\t\t\t{\t\r\n\t\t\t\tif (Math.abs(e[l]) <= prec)\r\n\t\t\t\t{\ttest_convergence= true\r\n\t\t\t\t\tbreak \r\n\t\t\t\t}\r\n\t\t\t\tif (Math.abs(q[l-1]) <= prec)\r\n\t\t\t\t\tbreak \r\n\t\t\t}\r\n\t\t\tif (!test_convergence)\r\n\t\t\t{\t// cancellation of e[l] if l>0\r\n\t\t\t\tc= 0.0\r\n\t\t\t\ts= 1.0\r\n\t\t\t\tvar l1= l-1\r\n\t\t\t\tfor (i =l; i<k+1; i++)\r\n\t\t\t\t{\t\r\n\t\t\t\t\tf= s*e[i]\r\n\t\t\t\t\te[i]= c*e[i]\r\n\t\t\t\t\tif (Math.abs(f) <= prec)\r\n\t\t\t\t\t\tbreak\r\n\t\t\t\t\tg= q[i]\r\n\t\t\t\t\th= pythag(f,g)\r\n\t\t\t\t\tq[i]= h\r\n\t\t\t\t\tc= g/h\r\n\t\t\t\t\ts= -f/h\r\n\t\t\t\t\tfor (j=0; j < m; j++)\r\n\t\t\t\t\t{\t\r\n\t\t\t\t\t\ty= u[j][l1]\r\n\t\t\t\t\t\tz= u[j][i]\r\n\t\t\t\t\t\tu[j][l1] = y*c+(z*s)\r\n\t\t\t\t\t\tu[j][i] = -y*s+(z*c)\r\n\t\t\t\t\t} \r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t\t// test f convergence\r\n\t\t\tz= q[k]\r\n\t\t\tif (l== k)\r\n\t\t\t{\t//convergence\r\n\t\t\t\tif (z<0.0)\r\n\t\t\t\t{\t//q[k] is made non-negative\r\n\t\t\t\t\tq[k]= -z\r\n\t\t\t\t\tfor (j=0; j < n; j++)\r\n\t\t\t\t\t\tv[j][k] = -v[j][k]\r\n\t\t\t\t}\r\n\t\t\t\tbreak //break out of iteration loop and move on to next k value\r\n\t\t\t}\r\n\t\t\tif (iteration >= itmax-1)\r\n\t\t\t\tthrow 'Error: no convergence.'\r\n\t\t\t// shift from bottom 2x2 minor\r\n\t\t\tx= q[l]\r\n\t\t\ty= q[k-1]\r\n\t\t\tg= e[k-1]\r\n\t\t\th= e[k]\r\n\t\t\tf= ((y-z)*(y+z)+(g-h)*(g+h))/(2.0*h*y)\r\n\t\t\tg= pythag(f,1.0)\r\n\t\t\tif (f < 0.0)\r\n\t\t\t\tf= ((x-z)*(x+z)+h*(y/(f-g)-h))/x\r\n\t\t\telse\r\n\t\t\t\tf= ((x-z)*(x+z)+h*(y/(f+g)-h))/x\r\n\t\t\t// next QR transformation\r\n\t\t\tc= 1.0\r\n\t\t\ts= 1.0\r\n\t\t\tfor (i=l+1; i< k+1; i++)\r\n\t\t\t{\t\r\n\t\t\t\tg= e[i]\r\n\t\t\t\ty= q[i]\r\n\t\t\t\th= s*g\r\n\t\t\t\tg= c*g\r\n\t\t\t\tz= pythag(f,h)\r\n\t\t\t\te[i-1]= z\r\n\t\t\t\tc= f/z\r\n\t\t\t\ts= h/z\r\n\t\t\t\tf= x*c+g*s\r\n\t\t\t\tg= -x*s+g*c\r\n\t\t\t\th= y*s\r\n\t\t\t\ty= y*c\r\n\t\t\t\tfor (j=0; j < n; j++)\r\n\t\t\t\t{\t\r\n\t\t\t\t\tx= v[j][i-1]\r\n\t\t\t\t\tz= v[j][i]\r\n\t\t\t\t\tv[j][i-1] = x*c+z*s\r\n\t\t\t\t\tv[j][i] = -x*s+z*c\r\n\t\t\t\t}\r\n\t\t\t\tz= pythag(f,h)\r\n\t\t\t\tq[i-1]= z\r\n\t\t\t\tc= f/z\r\n\t\t\t\ts= h/z\r\n\t\t\t\tf= c*g+s*y\r\n\t\t\t\tx= -s*g+c*y\r\n\t\t\t\tfor (j=0; j < m; j++)\r\n\t\t\t\t{\r\n\t\t\t\t\ty= u[j][i-1]\r\n\t\t\t\t\tz= u[j][i]\r\n\t\t\t\t\tu[j][i-1] = y*c+z*s\r\n\t\t\t\t\tu[j][i] = -y*s+z*c\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\te[l]= 0.0\r\n\t\t\te[k]= f\r\n\t\t\tq[k]= x\r\n\t\t} \r\n\t}\r\n\t\t\r\n\t//vt= transpose(v)\r\n\t//return (u,q,vt)\r\n\tfor (i=0;i<q.length; i++) \r\n\t if (q[i] < prec) q[i] = 0\r\n\t \r\n\t//sort eigenvalues\t\r\n\tfor (i=0; i< n; i++)\r\n\t{\t \r\n\t//writeln(q)\r\n\t for (j=i-1; j >= 0; j--)\r\n\t {\r\n\t if (q[j] < q[i])\r\n\t {\r\n\t// writeln(i,'-',j)\r\n\t c = q[j]\r\n\t q[j] = q[i]\r\n\t q[i] = c\r\n\t for(k=0;k<u.length;k++) { temp = u[k][i]; u[k][i] = u[k][j]; u[k][j] = temp; }\r\n\t for(k=0;k<v.length;k++) { temp = v[k][i]; v[k][i] = v[k][j]; v[k][j] = temp; }\r\n//\t u.swapCols(i,j)\r\n//\t v.swapCols(i,j)\r\n\t i = j\t \r\n\t }\r\n\t }\t\r\n\t}\r\n\t\r\n\treturn {U:u,S:q,V:v}\r\n};\r\n\r\n"],"names":["numeric","g","version","bench","f","interval","t1","n","i","Date","_myIndexOf","w","k","this","length","myIndexOf","Array","prototype","indexOf","Function","precision","largeArray","prettyPrint","x","fmtnum","isNaN","isFinite","scale","Math","floor","log","normalized","pow","basic","toPrecision","parseFloat","toString","ret","foo","push","join","a","b","c","d","flag","hasOwnProperty","parseDate","parse","replace","Error","parseCSV","t","j","split","pat","patnum","stripper","substr","count","baz","bar","match","test","toCSV","A","m","row","s","dim","getURL","url","client","XMLHttpRequest","open","send","imageURL","img","crc32Array","from","to","table","crc","s1","s2","adler32","crc32","h","stream","round","y","z","q","r","key","charAt","base64","_dim","mapreduce","body","init","mapreduce2","setup","same","rep","v","dotMMsmall","p","woo","i0","_getCol","dotMMbig","xj","gc","VV","dotVV","dotMV","dotVM","i1","dot","mulVS","mulSV","diag","Ai","getDiag","min","identity","pointwise","params","fun","avec","thevec","haveret","substring","apply","pointwise2","_biforeach","_biforeach2","_foreach","_foreach2","ops2","add","sub","mul","div","mod","and","or","eq","neq","lt","gt","leq","geq","band","bor","bxor","lshift","rshift","rrshift","opseq","addeq","subeq","muleq","diveq","modeq","lshifteq","rshifteq","rrshifteq","bandeq","boreq","bxoreq","mathfuns","mathfuns2","ops1","neg","not","bnot","clone","mapreducers","any","all","sum","prod","norm2Squared","norminf","norm1","sup","inf","o","code","codeeq","call","truncVV","truncVS","truncSV","trunc","inv","Aj","Ii","Ij","abs","I","v0","det","alpha","temp","k1","transpose","A0","A1","Bj","negtranspose","_random","rnd","random","norm2","sqrt","linspace","max","getBlock","setBlock","B","getRange","J","Bi","AI","blockMatrix","X","M","N","Xij","Z","ZI","l","Xijk","tensor","xi","T","Tbinop","rr","rc","cr","cc","reciprocal","transjugate","Tunop","exp","conj","sin","cos","Aix","Aiy","Ajx","Ajy","Rix","Riy","Rjx","Rjy","d1","ax","ay","bx","by","Rx","Ry","Ax","Ay","get","ik","set","vx","vy","undefined","getRows","ry","rx","setRows","getRow","setRow","eig","house","toUpperHessenberg","me","C","Ci","Qi","Q","H","epsilon","QRFrancis","maxiter","tr","Hloc","Hi","iter","QH1","QH2","concat","Q0","p1","disc","n1","n2","QH","QB","R","E","Rk","Rj","lambda","ccsSparse","counts","parseInt","Av","ccsFull","j0","j1","ccsDim","ccsTSolve","bj","dfs","ccsDFS","Pinv","km","k11","ccsLPSolve","Bv","ccsLUP1","threshold","e","L","U","Li","Lj","Lv","Ui","Uj","Uv","sol","P","ccsDFS0","ccsLPSolve0","ccsLUP0","ccsLUP","ccsGetBlock","jq","flags","q0","q1","ccsDot","sA","sB","Cj","Cv","ccsLUPSolve","LUP","Xi","Xj","Xv","ccsbinop","eval","ccsScatter","Ri","Rv","Aii","ptr","slice","ccsGather","sdim","sclone","sdiag","sidentity","stranspose","sLUP","tol","sdotMM","BTk","accum","reti","BT","sdotMV","sdotVM","sdotVV","sdot","sscatter","V","Vij","sgather","gather","pop","cLU","left","Infinity","right","cLUsolve","lu","cgrid","shape","cdelsq","dir","cdotMV","Spline","yl","yr","kl","kr","_at","x1","at","x0","mid","diff","dx","dy","zl","zr","pl","pr","roots","sqr","ai","bi","ci","di","ri","k0","y0","y1","D","stops","z0","z1","zm","t0","tm","side","spline","kn","fftpow2","xe","ye","xo","yo","si","_ifftpow2","ifftpow2","convpow2","axi","bxi","ayi","byi","fft","log2","ceil","cx","cy","Y","ifft","gradient","f0","f1","f2","t2","d2","it","uncmin","maxit","callback","options","grad","df0","step","g0","g1","Hy","ys","nstep","H1","Hinv","ten","isfinite","msg","solution","invHessian","iterations","message","Dopri","ymid","events","xh","yh","xs","dopri","event","k2","k3","k4","k5","k6","k7","er","erinf","e0","e1","ev","A3","A4","A5","A6","bm","yi","xl","xr","en","ei","sl","sr","LU","fast","absAjk","Akk","Ak","Pk","LUsolve","Pi","LUi","tmp","solve","echelonize","__solveLP","unbounded","svd","dotcc","a1","Ag","_solveLP","c0","b0","NaN","solveLP","Aeq","beq","Aeq2","A2","b4","c1","c2","c4","S","x2","MPStoLP","MPS","String","name","state","states","rows","sign","rl","vars","nv","err","w0","seedrandom","pool","math","width","chunks","significance","overflow","startdenom","ARC4","u","keylen","lowbits","flatten","obj","depth","result","prop","typ","mixkey","seed","smear","charCodeAt","fromCharCode","use_entropy","arc4","arguments","getTime","window","exports","base0to1","base1to0","solveQP","Dmat","dvec","Amat","bvec","meq","factorized","crval","iact","work","dmat","fddmat","amat","fdamat","nact","ierr","l1","info","it1","iwzv","iwrv","iwrm","iwsv","iwuv","nvl","iwnbv","tt","gs","nu","t1inf","t2min","vsmall","tmpa","tmpb","go","lda","jm1","dpofa","kb","dposl","kp1","dpori","fn_goto_50","fn_goto_55","fn_goto_797","fn_goto_798","fn_goto_799","qpgen2","value","unconstrained_solution","prec","tolerance","pythag","iteration","test_convergence","itmax"],"ignoreList":[],"sourceRoot":""}
|