@zerc20/wallet-sdk 0.0.0-stage → 0.2.0

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.
Files changed (84) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +26 -2
  3. package/dist/burnWorker.d.ts +1 -0
  4. package/dist/burnWorker.js +21 -0
  5. package/dist/burnWorker.js.map +1 -0
  6. package/dist/chain.d.ts +359 -0
  7. package/dist/chain.js +155 -0
  8. package/dist/chain.js.map +1 -0
  9. package/dist/context.d.ts +48 -0
  10. package/dist/context.js +40 -0
  11. package/dist/context.js.map +1 -0
  12. package/dist/core.d.ts +43 -0
  13. package/dist/core.js +106 -0
  14. package/dist/core.js.map +1 -0
  15. package/dist/errors.d.ts +38 -0
  16. package/dist/errors.js +26 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/index.d.ts +6 -0
  19. package/dist/index.js +19 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/network.d.ts +66 -0
  22. package/dist/network.js +55 -0
  23. package/dist/network.js.map +1 -0
  24. package/dist/pos.d.ts +93 -0
  25. package/dist/pos.js +302 -0
  26. package/dist/pos.js.map +1 -0
  27. package/dist/prove.d.ts +13 -0
  28. package/dist/prove.js +53 -0
  29. package/dist/prove.js.map +1 -0
  30. package/dist/rageExit.d.ts +5 -0
  31. package/dist/rageExit.js +146 -0
  32. package/dist/rageExit.js.map +1 -0
  33. package/dist/scan.d.ts +17 -0
  34. package/dist/scan.js +47 -0
  35. package/dist/scan.js.map +1 -0
  36. package/dist/seed.d.ts +8 -0
  37. package/dist/seed.js +35 -0
  38. package/dist/seed.js.map +1 -0
  39. package/dist/servers.d.ts +60 -0
  40. package/dist/servers.js +117 -0
  41. package/dist/servers.js.map +1 -0
  42. package/dist/services.d.ts +62 -0
  43. package/dist/services.js +131 -0
  44. package/dist/services.js.map +1 -0
  45. package/dist/spend.d.ts +151 -0
  46. package/dist/spend.js +745 -0
  47. package/dist/spend.js.map +1 -0
  48. package/dist/state.d.ts +174 -0
  49. package/dist/state.js +45 -0
  50. package/dist/state.js.map +1 -0
  51. package/dist/sync.d.ts +84 -0
  52. package/dist/sync.js +615 -0
  53. package/dist/sync.js.map +1 -0
  54. package/dist/tree.d.ts +19 -0
  55. package/dist/tree.js +63 -0
  56. package/dist/tree.js.map +1 -0
  57. package/dist/wallet.d.ts +303 -0
  58. package/dist/wallet.js +1002 -0
  59. package/dist/wallet.js.map +1 -0
  60. package/package.json +60 -4
  61. package/src/burnWorker.ts +25 -0
  62. package/src/chain.ts +228 -0
  63. package/src/context.ts +84 -0
  64. package/src/core.ts +147 -0
  65. package/src/errors.ts +63 -0
  66. package/src/index.ts +41 -0
  67. package/src/network.ts +94 -0
  68. package/src/pos.ts +415 -0
  69. package/src/prove.ts +67 -0
  70. package/src/rageExit.ts +168 -0
  71. package/src/scan.ts +62 -0
  72. package/src/seed.ts +46 -0
  73. package/src/servers.ts +172 -0
  74. package/src/services.ts +195 -0
  75. package/src/snarkjs.d.ts +11 -0
  76. package/src/spend.ts +912 -0
  77. package/src/state.ts +211 -0
  78. package/src/sync.ts +698 -0
  79. package/src/tree.ts +108 -0
  80. package/src/wallet.ts +1316 -0
  81. package/wasm/zerc20_wallet_core.d.ts +176 -0
  82. package/wasm/zerc20_wallet_core.js +783 -0
  83. package/wasm/zerc20_wallet_core_bg.wasm +0 -0
  84. package/wasm/zerc20_wallet_core_bg.wasm.d.ts +32 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,4FAA4F;AAE5F,OAAO,EAQL,MAAM,EACN,UAAU,EACV,aAAa,EACb,WAAW,EACX,OAAO,GACR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAY,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEnF,OAAO,EAA2B,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAwB,IAAI,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAA0C,IAAI,EAAE,MAAM,cAAc,CAAC;AAG5E,sGAAsG;AACtG,MAAM,cAAc,GAAG,YAAY,CAAC,0DAA0D,CAAC,CAAC;AAEhG,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,yFAAyF;AACzF,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,4DAA4D;AAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC;AAC7B,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,oGAAoG;AACpG,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC;AAEnC,MAAM,KAAK,GAAG,CAAC,CAAa,EAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,GAAG,GAAG,CAAC,CAAa,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAExD;8FAC8F;AAC9F,MAAM,UAAU,aAAa,CAAC,OAAiB,EAAE,IAAY;IAC3D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;UACU;AACV,SAAS,QAAQ,CACf,GAAQ,EACR,OAAe,EACf,OAAe,EACf,KAAa,EACb,IAAS,EACT,QAA4B,EAC5B,IAAY;IAEZ,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAQ,CAAC;IACpG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AACxH,CAAC;AAED;4FAC4F;AAC5F,MAAM,UAAU,YAAY,CAAC,GAAQ;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9G,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAQ,EAAE,MAA6B;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,iBAAiB,GAAG,eAAe,CAAC;IAClE,WAAW,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5F,IAAI,IAAI;QAAE,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED;+GAC+G;AAC/G,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,MAA6B;IAClE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAChG,MAAM,OAAO,GACX,CAAC,CAAC,IAAI,KAAK,UAAU;YACnB,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;aAC7B;YACH,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9E,WAAW,CACT,GAAG,EACH,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAChG,MAAM,CACP,CAAC;QACF,OAAO,CAAC,CAAC,SAAS,CAAC;QACnB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACf,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;CACzC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CACzB,MAAM,CAAC,GAAG,CACR,CAAC,CAAC,MAAM,CAAC,OAAO,EAChB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAC/C,CACF,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;mDAGmD;AACnD,MAAM,UAAU,WAAW,CACzB,GAAQ,EACR,EAAE,KAAK,EAAE,KAAK,EAA4C,EAC1D,MAA6B;IAE7B,uFAAuF;IACvF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACvF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACtD,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,2FAA2F;QAC3F,IAAI,CAAC,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;gBAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC;aAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC;aACvF,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;aACrD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,wDAAwD;IAC/G,CAAC;AACH,CAAC;AAED;0EAC0E;AAC1E,SAAS,QAAQ,CAAC,GAAQ,EAAE,CAAU,EAAE,EAAc,EAAE,MAA6B;IACnF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO;IACpD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;QAAE,OAAO;IACvF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC3G,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,OAAO;QACP,OAAO;QACP,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7B,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;AACL,CAAC;AAED;mCACmC;AACnC,SAAS,WAAW,CAAC,GAAQ,EAAE,CAAgC;IAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;QACvB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACjB,CAAC,CAAC,WAAW,KAAK,WAAW;QAC7B,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAC5E,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3E,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACrB,CAAC,CAAC,IAAI,KAAK,UAAU;QACnB,CAAC,CAAC;YACE,GAAG,IAAI;YACP,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;SAC7B;QACH,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAC5E,CAAC;AACJ,CAAC;AAED;uDACuD;AACvD,MAAM,UAAU,WAAW,CAAC,GAAQ,EAAE,OAAgB,EAAE,KAAiB,EAAE,MAA6B;IACtG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IACrF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,CAAoB,CAAC;IAC9F,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IAC/C,iFAAiF;IACjF,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC5E,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,OAAO;QACP,OAAO;QACP,SAAS,EAAE,CAAC,CAAC;QACb,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,IAAI;QACf,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;QACnB,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;SACjH;QACD,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;AACL,CAAC;AAED;;;+BAG+B;AAC/B,SAAS,aAAa,CACpB,GAAQ,EACR,CAA8C,EAC9C,GAAY,EACZ,MAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO;IACnC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC9E,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAoB,CAAC;QAClF,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO;QACnG,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACjD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7G,MAAM,MAAM,GAAkB;YAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YACjC,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACxC,KAAK,EAAE,EAAE;SACV,CAAC;QACF,IAAI,GAAG;YAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,UAAU,CAAC,GAAQ,EAAE,OAAe,EAAE,OAAe;IACnE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,IAA+B,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI;YAAE,SAAS;QAC3G,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAAE,IAAI,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;wGACwG;AACxG,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAQ,EACR,OAAe,EACf,OAAe,EACf,MAA6B,EAC7B,MAAoB;IAEpB,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACvF,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACjF,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC5E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAChH,MAAM,MAAM,GAAkB;QAC5B,OAAO;QACP,OAAO;QACP,SAAS,EAAE,KAAK;QAChB,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,cAAc,EAAE,IAAI;QACpB,yFAAyF;QACzF,OAAO,EAAE;YACP,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;SACjH;QACD,KAAK,EAAE,EAAE;KACV,CAAC;IACF,8FAA8F;IAC9F,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;iEAEiE;AACjE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,MAAoB;IAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,GAAG,CAAC,KAAK,CAAC,QAAQ;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACrD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAChD,CAAC;IACF,IAAI,MAAyC,CAAC;IAC9C,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;YACpC,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,KAAK,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAQ,EAAE,CAAY,EAAE,IAAU,EAAE,MAA6B;IACnF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,iFAAiF;QACjF,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,iGAAiG;IACjG,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;IACxB,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO;IAC7C,MAAM,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC;IAC7B,kGAAkG;IAClG,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,QAAU,CAAC,GAAG,MAAM,CAAC,CAAC;IACjG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACnB,OAAO;QACP,OAAO;QACP,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;QACjB,IAAI;QACJ,MAAM,EAAE,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;QACnD,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI;QACJ,IAAI;QACJ,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;QACpE,KAAK,EAAE,EAAE;KACV,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,SAAS,OAAO,CAAC,GAAQ,EAAE,OAAe,EAAE,GAAW;IACrD,MAAM,MAAM,GAAG,CAAC,EAAiB,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IACxE,OAAO,CACL,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAC5E;QACD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,QAAU,CAAC,CAAC,CAC/G,CACF,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,KAAK,UAAU,SAAS,CAAC,GAAQ,EAAE,CAAW,EAAE,MAAgB;IAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACjC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC;QAChE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,uEAAuE;IACvE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;gBAAE,SAAS;YAC3D,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBACb,OAAO;gBACP,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;aACtG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAY;QACvB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC3D,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACvF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACrG,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,WAAW,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7C,kHAAkH;IAClH,gGAAgG;IAChG,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,IAAI,GACR,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACrD,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAChC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE;gBAChB,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,IAAI;gBAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;;gBACxB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,uHAAuH;QACvH,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;IACvE,CAAC;IACD,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,iDAAiD;IACjD,IAAI,GAAG;QAAE,MAAM,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAChG,2GAA2G;IAC3G,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtF,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC;IAElD,6CAA6C;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,MAAM,aAAa,GAAG,KAAK,EAAE,KAAa,EAAmB,EAAE;QAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,CAAC,CAAC;IACF,uEAAuE;IACvE,MAAM,KAAK,GAAG;QACZ,GAAG,KAAK;aACL,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;aAC3B,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,EAAE,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;SAChG,CAAC,CAAC,CACJ;QACH,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KACzE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9C,KAAK,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,SAAS;YAAE,SAAS;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CACtB,gBAAgB,EAChB,CAAC,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EACtC,MAAM,CAAC,eAAe,EACtB,IAAI,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CACzE,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1C,CAAC;IACD,0CAA0C;IAC1C,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,SAAS,CAAC;AACpG,CAAC;AAED;wCACwC;AACxC,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrD,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;QAC3B,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAChC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,iBAAiB;QAC7D,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC;AACJ,CAAC;AAED;6DAC6D;AAC7D,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC;AAKD;uGACuG;AACvG,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAY,EACZ,OAAgB,EAChB,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,OAAO,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE;QAC7B,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;QAC9B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAED;gHACgH;AAChH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAqD,EACrD,QAAmB;IAEnB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtC,SAAS;YACX,CAAC;YACD,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED;eACe;AACf,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAQ,EAAE,QAAmB;IAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC7F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;6GAC6G;AAC7G,KAAK,UAAU,iBAAiB,CAC9B,CAAW,EACX,UAAyB,EACzB,SAAiB,EACjB,QAAmB;IAEnB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC7F,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO;IAC1D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;QACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;KAC7D,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,iBAAiB;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;IAC7F,CAAC;AACH,CAAC;AAED;qHACqH;AACrH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,MAA6C,EAC7C,KAA4C,EAC5C,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5C,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACzE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAClD,CAAC;AAED;qDACqD;AACrD,MAAM,UAAU,SAAS,CACvB,KAAmB,EACnB,QAAoD,EACpD,IAAW;IAGX,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,CAAQ,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,CAAC,KAAK;YAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAClE,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;YAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1G,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC3E,IAAI,MAAM,IAAI,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;;gBAC7D,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;AACH,CAAC;AAED;oGACoG;AACpG,SAAS,KAAK,CACZ,KAAU,EACV,GAAM;IAEN,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;uCAEuC;AACvC,MAAM,UAAU,WAAW,CAAC,OAA6D,EAAE,UAAkB;IAC3G,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC;AAClG,CAAC;AAED;oCACoC;AACpC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAQ;IACpC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAI,CAAa,EAAqB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAU,CAAC,CAAC,CAAC,CAClH,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACzD,mHAAmH;IACnH,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,4GAA4G;IAC5G,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,MAAM;SACP,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,CACtE,CAAC;IACF,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/tree.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { Hex } from 'viem';
2
+ import type { Chain } from './chain.js';
3
+ import type { Asp, Indexer } from './servers.js';
4
+ export interface Membership {
5
+ /** The tree size, which is also the `rootIndex` a transact names. */
6
+ size: number;
7
+ root: Hex;
8
+ siblings: Hex[];
9
+ }
10
+ /** Commitments `is` in the latest proved root, all under that one root, read and checked once: `null` until a proved
11
+ * root covers every one of them. */
12
+ export declare function commitmentPaths(indexer: Indexer, chain: Chain, is: number[]): Promise<Membership[] | null>;
13
+ /** Commitment `i` in the latest proved root: `null` until a proved root covers it. */
14
+ export declare const commitmentPath: (indexer: Indexer, chain: Chain, i: number) => Promise<Membership | null>;
15
+ /** Deposits `is` in the ASP root the verifier currently publishes, all under that one root: `null` if that root does
16
+ * not approve every one of them. */
17
+ export declare function aspPaths(asp: Asp, chain: Chain, is: number[]): Promise<Membership[] | null>;
18
+ /** Deposit `i` in the ASP root the verifier currently publishes: `null` if that root does not approve it. */
19
+ export declare const aspPath: (asp: Asp, chain: Chain, i: number) => Promise<Membership | null>;
package/dist/tree.js ADDED
@@ -0,0 +1,63 @@
1
+ // Membership paths: a commitment in the latest proved root, and a deposit in the ASP's latest root. Built from
2
+ // what every wallet downloads, then checked against the roots the chain holds, so no server is trusted with them.
3
+ import { core } from './core.js';
4
+ import { fail } from './errors.js';
5
+ import { PAGE } from './servers.js';
6
+ const PAGE_BITS = 24;
7
+ /** The leaves of commitment `i`'s chunk, from page `i >> 12` of commitments. */
8
+ async function chunkOf(indexer, i) {
9
+ const chunk = Math.floor(i / PAGE);
10
+ const { entries } = await indexer.commitments(chunk);
11
+ if (entries.length < (i - chunk * PAGE + 1) * 128)
12
+ return fail('indexer-mismatch', `commitment ${i} is not served yet`);
13
+ return core.leaves(entries);
14
+ }
15
+ const hex = (b) => Array.from(b, (x) => x.toString(16).padStart(2, '0')).join('');
16
+ /** A path for leaf `i` (whose chunk's leaves are `leaves`) against the tree `at`, checked to fold to its root. */
17
+ async function pathAt(i, leaves, at, chunkRoots, pageRoots) {
18
+ const [roots, pages] = await Promise.all([chunkRoots(Math.floor(i / 2 ** PAGE_BITS)), pageRoots()]);
19
+ const siblings = core.path(BigInt(i), BigInt(at.size), leaves, roots, pages, at.partialChunk, at.partialPage);
20
+ const leaf = `0x${hex(leaves.subarray((i % PAGE) * 32, (i % PAGE) * 32 + 32))}`;
21
+ if (core.pathRoot(leaf, BigInt(i), siblings) !== at.root) {
22
+ return fail('indexer-mismatch', `the path of ${i} does not fold to root ${at.root}`);
23
+ }
24
+ return { size: at.size, root: at.root, siblings };
25
+ }
26
+ /** Commitments `is` in the latest proved root, all under that one root, read and checked once: `null` until a proved
27
+ * root covers every one of them. */
28
+ export async function commitmentPaths(indexer, chain, is) {
29
+ const at = (await indexer.status()).latestRoot;
30
+ if (!at || is.some((i) => at.size <= i))
31
+ return null;
32
+ const paths = [];
33
+ for (const i of is)
34
+ paths.push(await pathAt(i, await chunkOf(indexer, i), at, (p) => indexer.page('chunk-roots', p), () => indexer.pageRoots()));
35
+ // the root a server reports is checked against the ledger: a forged one would make the proof fail on chain
36
+ if (!(await chain.provedRoot(at.size, at.root)))
37
+ return fail('indexer-mismatch', `root ${at.root} is not proved`);
38
+ return paths;
39
+ }
40
+ /** Commitment `i` in the latest proved root: `null` until a proved root covers it. */
41
+ export const commitmentPath = async (indexer, chain, i) => (await commitmentPaths(indexer, chain, [i]))?.[0] ?? null;
42
+ /** Deposits `is` in the ASP root the verifier currently publishes, all under that one root: `null` if that root does
43
+ * not approve every one of them. */
44
+ export async function aspPaths(asp, chain, is) {
45
+ const root = await chain.latestAspRoot();
46
+ const at = await asp.rootEntry(root);
47
+ if (!at)
48
+ return fail('indexer-mismatch', `the ASP has no record of root ${root}`);
49
+ const paths = [];
50
+ for (const i of is) {
51
+ if (at.size <= i)
52
+ return null;
53
+ const c = Math.floor(i / PAGE);
54
+ const leaves = core.aspLeaves(await asp.bitmap(c), BigInt(c * PAGE), Math.min(PAGE, at.size - c * PAGE));
55
+ if (leaves.subarray((i % PAGE) * 32, (i % PAGE) * 32 + 32).every((b) => b === 0))
56
+ return null;
57
+ paths.push(await pathAt(i, leaves, at, (p) => asp.chunkRoots(p), () => asp.pageRoots()));
58
+ }
59
+ return paths;
60
+ }
61
+ /** Deposit `i` in the ASP root the verifier currently publishes: `null` if that root does not approve it. */
62
+ export const aspPath = async (asp, chain, i) => (await aspPaths(asp, chain, [i]))?.[0] ?? null;
63
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,303 @@
1
+ import { type Address, type Hex, type WalletClient } from 'viem';
2
+ import { type Referrer, type Token } from './chain.js';
3
+ import { type ErrorCode } from './errors.js';
4
+ import { type Network } from './network.js';
5
+ import { type MergeStep, type Step } from './spend.js';
6
+ import { type OperationRecord } from './state.js';
7
+ export interface OpenOptions {
8
+ network: Network;
9
+ /** The user's wallet (MetaMask, WalletConnect, ...) as a viem client with its account. */
10
+ walletClient: WalletClient;
11
+ /** The 32-byte root of every key. See `seedFromSignature`. */
12
+ seed: Uint8Array;
13
+ /** Where the encrypted state lives between sessions. */
14
+ persist: {
15
+ load(): Promise<Uint8Array | null | undefined>;
16
+ save(bytes: Uint8Array): Promise<void>;
17
+ };
18
+ /** Where a wallet with no saved state starts looking: the block its seed was first used at, or roughly when. Without
19
+ * it, an address registered before is looked for from the chain's start, and a new one from now on. */
20
+ birthday?: bigint | Date;
21
+ /** The app opening the wallet, when it takes a share of what reaches the deposit addresses it hands out. */
22
+ referrer?: Referrer;
23
+ }
24
+ /** What a deposit, or a deposit address, waits on: for an app to show while it does. */
25
+ export type DepositStep =
26
+ /** Behind another call of this wallet: a sync, or another operation. */
27
+ 'queued'
28
+ /** Recording a fresh burn address in storage first, a proof of work then a storage write (seconds). Only when none
29
+ * was recorded ahead, as on a token's first deposit, or a second one before a sync has recorded the next. */
30
+ | 'burn-address'
31
+ /** The wallet is asked to approve the token to take the underlying asset; then the approval is mined (a block). */
32
+ | 'approve'
33
+ /** The wallet is asked to send the wrap into the burn address, or with `wrapped`, the transfer. */
34
+ | 'wrap';
35
+ /** Why an amount is not spendable yet. */
36
+ export type PendingReason =
37
+ /** Announced by the payer, and not yet read on chain. */
38
+ 'incoming'
39
+ /** Waiting for a proved root that covers it (minutes). */
40
+ | 'awaiting-root'
41
+ /** Waiting for a proved root, which none will be until the protocol recovers: a forged root was proved, and the
42
+ * protocol is in an emergency. A deposit can be rage-exited meanwhile. */
43
+ | 'roots-halted'
44
+ /** A deposit the ASP has not decided on yet. */
45
+ | 'screening';
46
+ export interface Balance {
47
+ token: Token;
48
+ spendable: bigint;
49
+ pending: {
50
+ amount: bigint;
51
+ reason: PendingReason;
52
+ }[];
53
+ /** Deposits the ASP rejected: only `rageExit` returns them, to their sender. */
54
+ blocked: bigint;
55
+ }
56
+ export interface Activity {
57
+ /** The same across syncs and on every device of the wallet: `kind:chainId:index` of the commitment it made or found
58
+ * (a payment's or withdrawal's: its change's). One shown from this device's operation has the operation's id. */
59
+ id: string;
60
+ /** `sale`: a payment to an address one of this wallet's points of sale handed out. `merged`: a consolidation folded
61
+ * notes and deposits into one note. `returned`: a deposit rage-exited to its sender. */
62
+ kind: 'received' | 'sent' | 'deposited' | 'sale' | 'withdrawn' | 'merged' | 'returned';
63
+ token: Token;
64
+ amount: bigint;
65
+ /** What a payment, withdrawal or merge cost besides `amount`: the relayer's fee and the protocol's cut. Null where it
66
+ * paid none. */
67
+ fee: bigint | null;
68
+ /** The other side, where known: a payer's claimed address (unverified), where a payment or withdrawal went, or whom a
69
+ * returned deposit went back to. */
70
+ counterparty: Address | null;
71
+ /** What the counterparty alone does not say: the receive code a payment went to (it has no counterparty), or the
72
+ * deposit address a deposit came through (its counterparty, which forwarded what was sent to it). */
73
+ via: {
74
+ code: string;
75
+ } | {
76
+ depositAddress: Address;
77
+ } | null;
78
+ /** The burn address of this wallet's that a deposit or a sale reached: for a sale, its id at the point of sale. */
79
+ burnAddress: Address | null;
80
+ /** When it reached the chain: its block's time. Until that is read, when storage recorded it; for a failed attempt,
81
+ * when it started. */
82
+ at: Date | null;
83
+ /** Its place in the commitment tree, `chainId:index`: a deposit's (also a returned one's), a note's received or
84
+ * merged, or a payment's or withdrawal's change. */
85
+ coin: string | null;
86
+ /** Its transaction, where the wallet keeps it: a rage exit's, or one shown from this device's operation.
87
+ * `transaction` finds any. */
88
+ txHash: Hex | null;
89
+ /** `done` once on chain (in a block: a reorg may still take it back until final), `failed` for a payment or
90
+ * withdrawal that cannot land, shown only on the device that tried it. What is not on chain yet is not activity:
91
+ * an operation under way is in `operations()`, a note only announced is `incoming` in `balances()`. */
92
+ status: 'done' | 'failed';
93
+ }
94
+ /** An unspent note or deposit on chain: what payments and consolidations spend, now or once it settles. */
95
+ export interface CoinInfo {
96
+ /** Its place in the commitment tree, `chainId:index`. A deposit's is the id `rageExit` and `consolidate` take. */
97
+ id: string;
98
+ kind: 'note' | 'deposit';
99
+ token: Token;
100
+ amount: bigint;
101
+ /** Spendable, why not yet, `spending` (an input of an operation under way), or `blocked` (a deposit the ASP
102
+ * rejected: only `rageExit` returns it). */
103
+ state: 'spendable' | Exclude<PendingReason, 'incoming'> | 'spending' | 'blocked';
104
+ /** A note's payer (as claimed, unverified) or a deposit's sender, where known. */
105
+ from: Address | null;
106
+ /** For a deposit in `screening`, when the ASP should decide it: an estimate, null until there is one. */
107
+ screenedBy: Date | null;
108
+ }
109
+ export interface DepositInfo {
110
+ id: string;
111
+ /** The burn address it was sent to. */
112
+ address: Address;
113
+ /** Handed out by one of this wallet's points of sale (`posKey`), rather than for this wallet's own use. */
114
+ managed: boolean;
115
+ token: Token;
116
+ /** Unknown until its commitment is read: a sync after it lands. It is read again once final. */
117
+ amount: bigint | null;
118
+ sender: Address | null;
119
+ state: 'screening' | 'approved' | 'rejected' | 'spent';
120
+ }
121
+ /** A send's or withdrawal's recipient gets all of its amount, and the private balance pays `fee` on top. */
122
+ export interface FeeQuote {
123
+ /** To the relayer. */
124
+ relayer: bigint;
125
+ /** The protocol's cut of the public withdrawal: a withdrawal's, or the one that pays the relayer. */
126
+ protocol: bigint;
127
+ /** `relayer + protocol`: the `maxFee` this quote passes. */
128
+ fee: bigint;
129
+ /** Transactions needed: one JoinSplit for a send or a withdrawal, a consolidation's merges (each pays the relayer's
130
+ * fee again). */
131
+ steps: number;
132
+ }
133
+ export type OperationKind = OperationRecord['kind'];
134
+ export type OperationStatus = OperationRecord['status'];
135
+ export type CoinState = CoinInfo['state'];
136
+ export interface Operation {
137
+ readonly id: string;
138
+ readonly kind: OperationKind;
139
+ /** The chain it is on: its token's. */
140
+ readonly chainId: bigint;
141
+ readonly status: OperationStatus;
142
+ readonly error: string | undefined;
143
+ /** Why it failed, the code `wait()` throws. */
144
+ readonly errorCode: ErrorCode | undefined;
145
+ /** While pending, why its next step has kept failing since `since`: an error trying again may get past (a service
146
+ * down, a server behind the chain, or one of the wallet's own it cannot tell apart). It is tried again every sync;
147
+ * null once a try goes through or only waits. */
148
+ readonly retrying: {
149
+ message: string;
150
+ code: ErrorCode | undefined;
151
+ since: Date;
152
+ } | null;
153
+ /** The transactions it sent so far: a deposit's, a payment's one, a consolidation's one per round. */
154
+ readonly txHashes: Hex[];
155
+ /** How far a send, withdrawal or consolidation round has come, for an app to show; null for a deposit, or between
156
+ * rounds. It moves during a sync: read it while one runs. */
157
+ readonly stage: Step['stage'] | MergeStep['stage'] | null;
158
+ /** Whom a deposit pays, when it goes into their burn address (`deposit({ to })`); null otherwise. */
159
+ readonly to: Address | null;
160
+ /** Syncs until the operation is done; throws if it fails. */
161
+ wait(): Promise<void>;
162
+ }
163
+ export declare class Wallet {
164
+ #private;
165
+ private constructor();
166
+ /** Lets this wallet open again: in another tab, or here for another account. This object is done with: what is
167
+ * queued fails with `wallet-closed`, a burn address search stops, and the wallet is let go once the task under way
168
+ * ends, so that two never write its state at once. */
169
+ close(): Promise<void>;
170
+ get address(): Address;
171
+ /** Opens the wallet. The first time on this address, registers it for payments: one signature. */
172
+ static open(opts: OpenOptions): Promise<Wallet>;
173
+ /** Catches up: new notes, deposits, spends and roots, then advances every operation in flight. A chain or server that
174
+ * fails holds back only what needs it, and the first error is thrown once the rest is done. Settles before the burn
175
+ * addresses are topped up, which can take a phone tens of seconds. */
176
+ sync(): Promise<void>;
177
+ /** Syncs on its own: every 15 s while something is under way, every 5 min otherwise. Returns a stop function. */
178
+ autoSync(onChange?: () => void, onError?: (e: unknown) => void): () => void;
179
+ /** The tokens of every chain, as of opening or the last sync. */
180
+ tokens(): Token[];
181
+ balances(): Balance[];
182
+ /** Every unspent note and deposit on chain, and where each stands, as of opening or the last sync. A note announced
183
+ * but not on chain yet is not one: `balances()` counts it as incoming. */
184
+ coins(): CoinInfo[];
185
+ /** Everything this wallet received, sent, deposited, sold, withdrew, merged and returned, newest first: the same on every
186
+ * device of the wallet, read from storage and the chain. This device's operations add only what no other device can
187
+ * know: a failed attempt, and a payment in a block whose change is not found yet. */
188
+ activity(): Activity[];
189
+ /** `a`'s transaction and its block's time, read now: for an app to show on asking, as a sync does not read them. A
190
+ * coin's is the ledger's log of it, in the block the indexer names. Null while the chain does not show it. */
191
+ transaction(a: Activity): Promise<{
192
+ hash: Hex;
193
+ at: Date | null;
194
+ } | null>;
195
+ /** Every deposit found, with the id `rageExit` takes. */
196
+ deposits(): DepositInfo[];
197
+ /** The payments to the burn addresses this wallet's points of sale handed out. Spent ones are, normally, in a
198
+ * merged note. */
199
+ payments(): DepositInfo[];
200
+ /** The key of a new point of sale (`PointOfSale.connect`): the lane where it records the payment addresses it makes
201
+ * for this wallet, which this wallet, every other device of it and a restore read, and `payments()` shows what reaches
202
+ * them. The point of sale can spend none of it. One key for one point of sale: two would hand out the same
203
+ * addresses. */
204
+ posKey(): Promise<Hex>;
205
+ /** Refunds deposit `id` to its sender without the ASP, the attester or a proved root: for a deposit the ASP
206
+ * rejected, or when those services stop. The account's wallet sends the transactions and pays their gas. */
207
+ rageExit(id: string): Promise<Hex[]>;
208
+ operations(): Operation[];
209
+ /** Moves `amount` of the account's public tokens into the private balance: wraps the underlying asset into a fresh
210
+ * burn address (approving it first if needed). The deposit is spendable once the ASP has screened it. More than the
211
+ * account holds fails at once (`insufficient-funds`), before anything is asked of the wallet.
212
+ *
213
+ * With `to`, an address that registered, it pays them instead, privately: into a fresh burn address of theirs,
214
+ * under the public key they registered, told to them in storage first as a note is (`planDeposit`). They
215
+ * receive it as a deposit of their own, screened like any; the burn address names no one. It shows in `activity()`
216
+ * as sent. Finding the address takes about 2^16 hashes (`burn-address`).
217
+ *
218
+ * With `wrapped`, it pays from the account's zERC20 itself, as a withdrawal pays out, rather than its underlying
219
+ * asset: a plain transfer into the burn address, with no wrap and no approval.
220
+ *
221
+ * Returns once the wrap is sent: the operation is done once it is mined, which `wait()` or the next sync finds.
222
+ * `onStep` hears what it waits on meanwhile, for an app to show. */
223
+ deposit(opts: {
224
+ token: Token;
225
+ amount: bigint;
226
+ to?: Address;
227
+ wrapped?: boolean;
228
+ onStep?: (step: DepositStep) => void;
229
+ }): Promise<Operation>;
230
+ /** An address that takes `token`'s underlying asset from anywhere (an exchange withdrawal, another wallet) and
231
+ * deposits it privately, less `fee` (in the underlying's base units) to the deposit relayer each time: what arrives
232
+ * must exceed it. A wallet opened with a `referrer` also pays it its `bps` of the rest. Watched for 7 days by the
233
+ * deposit relayer; refunds go back to this account. `onStep` hears what it waits on (`queued`, `burn-address`). */
234
+ depositAddress(token: Token, opts?: {
235
+ onStep?: (step: DepositStep) => void;
236
+ }): Promise<{
237
+ address: Address;
238
+ fee: bigint;
239
+ }>;
240
+ /** A receive code for `token`, to hand to one payer: it pays any amount, as often as it likes, publicly by a transfer
241
+ * of the token to the code's burn address (a deposit, like a point of sale's payment addresses), or privately by
242
+ * `send`. It is one of this wallet's burn addresses, recorded in storage ahead of need, so handing it out writes
243
+ * nothing; it names neither this address nor its public key. Anyone who gets the code can pay it, and see what its
244
+ * other payers paid privately: give each payer its own. It is checksummed text (bech32m, `zerc201…`). */
245
+ receiveCode(token: Token): Promise<string>;
246
+ /** What a send or withdrawal of `amount` would cost now, or a consolidation of what the wallet holds. A send or
247
+ * withdrawal no single JoinSplit can pay now throws as it would (`needs-consolidation`, `funds-settling`,
248
+ * `insufficient-funds`). A consolidation of chosen `coins` throws `funds-settling` until all of them are spendable. */
249
+ fees(opts: {
250
+ kind: 'send' | 'withdraw' | 'consolidate';
251
+ token: Token;
252
+ amount?: bigint;
253
+ coins?: string[];
254
+ }): Promise<FeeQuote>;
255
+ /** The most a send or withdrawal of `token` can pay: what is spendable, less the fees `fees` quotes on top of it, and
256
+ * the merges first when one JoinSplit cannot spend it all, which `fees` then asks for (`needs-consolidation`). */
257
+ maxAmount(opts: {
258
+ kind: 'send' | 'withdraw';
259
+ token: Token;
260
+ }): Promise<bigint>;
261
+ /** What the next merge of a consolidation of everything would spend, as `coins()` ids: up to 100, the largest first,
262
+ * for `consolidate({ coins })`. Null when nothing spendable is worth merging. */
263
+ nextMerge(token: Token): Promise<string[] | null>;
264
+ /** Pays `amount` privately: to an address that has registered (any wallet that ever opened), or to a receive code
265
+ * (`receiveCode`). An address that never registered fails with `recipient-not-registered`. One JoinSplit from
266
+ * what is spendable now, or it fails here: `needs-consolidation`, `funds-settling` or `insufficient-funds`.
267
+ * `amount` is what the recipient gets, and `maxFee` caps what it pays on top, `fees({ kind: 'send' }).fee`: the
268
+ * relayer names its fee, so a quote the user saw is the cap. */
269
+ send(opts: {
270
+ to: string;
271
+ token: Token;
272
+ amount: bigint;
273
+ maxFee: bigint;
274
+ }): Promise<Operation>;
275
+ /** Merges `token`'s scattered notes and deposits into one note, without paying anyone: fewer, larger notes make
276
+ * later payments a single JoinSplit. One Nova merge spends up to 100 of them and pays the relayer's fee once; the
277
+ * network's merge prover proves it, seeing its witness in its enclave while it does: the openings of what it spends, but
278
+ * no private key, so it can prove only the merge this wallet signed. More
279
+ * take another merge, once a proved root is over the first one's note; `fees({ kind: 'consolidate' })` tells how
280
+ * many. A lone deposit becomes a note. A payment that fails with `needs-consolidation` goes through after this.
281
+ *
282
+ * With `coins` (ids from `coins()`, notes and deposits), only those are merged, into one note, and nothing else is
283
+ * touched; one still settling is waited for. `maxFee` caps the fees of every merge together,
284
+ * `fees({ kind: 'consolidate' }).fee`. */
285
+ consolidate(opts: {
286
+ token: Token;
287
+ coins?: string[];
288
+ maxFee: bigint;
289
+ }): Promise<Operation>;
290
+ /** Withdraws `amount` publicly to `to`, as zERC20 or with `unwrap` the underlying asset itself, so `to` needs no gas
291
+ * to unwrap. One JoinSplit, as `send`, and as there `to` gets all of `amount` and `maxFee` caps what is paid on top
292
+ * (`fees({ kind: 'withdraw' }).fee`). */
293
+ withdraw(opts: {
294
+ to: Address;
295
+ token: Token;
296
+ amount: bigint;
297
+ maxFee: bigint;
298
+ unwrap?: boolean;
299
+ }): Promise<Operation>;
300
+ }
301
+ /** Holds `address`'s wallet until the returned function is called: two tabs on one wallet would each overwrite the
302
+ * other's state and spend the same notes. Nothing where there are no Web Locks. */
303
+ export declare function lockWallet(address: Address): Promise<() => void>;