@univerjs/engine-render 0.24.0 → 0.25.0-insiders.20260604-29ebbff

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 (179) hide show
  1. package/lib/cjs/index.js +1001 -255
  2. package/lib/es/index.js +1001 -255
  3. package/lib/types/basics/index.d.ts +1 -0
  4. package/lib/types/basics/tools.d.ts +1 -0
  5. package/lib/types/basics/transformer-config.d.ts +17 -0
  6. package/lib/types/basics/zoom.d.ts +17 -0
  7. package/lib/types/components/docs/doc-background.d.ts +6 -0
  8. package/lib/types/components/docs/doc-component.d.ts +4 -0
  9. package/lib/types/components/docs/document.d.ts +6 -0
  10. package/lib/types/components/docs/extensions/font-and-base-line.d.ts +10 -0
  11. package/lib/types/components/docs/layout/block/paragraph/language-ruler.d.ts +4 -0
  12. package/lib/types/components/docs/layout/model/page.d.ts +1 -0
  13. package/lib/types/components/docs/table-render-viewport.d.ts +23 -0
  14. package/lib/types/components/sheets/extensions/border.d.ts +2 -2
  15. package/lib/types/components/sheets/interfaces.d.ts +4 -4
  16. package/lib/types/index.d.ts +2 -0
  17. package/lib/types/render-manager/render-manager.service.d.ts +1 -0
  18. package/lib/types/render-manager/render-unit.d.ts +3 -1
  19. package/lib/types/scene.transformer.d.ts +20 -0
  20. package/lib/umd/index.js +2 -2
  21. package/package.json +5 -5
  22. package/LICENSE +0 -176
  23. package/lib/cjs/en-us-Br9JW6Nt.js +0 -45
  24. package/lib/cjs/en-us-DKyh_RpA.js +0 -3
  25. package/lib/es/en-us-ClVoWMyT.js +0 -57
  26. /package/lib/cjs/{af-Bsj1JSBP.js → af-B2UUzO69.js} +0 -0
  27. /package/lib/cjs/{as-s7lqjieq.js → as-DbZDYp6O.js} +0 -0
  28. /package/lib/cjs/{be-L5eMFm5U.js → be-BBx0lyG-.js} +0 -0
  29. /package/lib/cjs/{bg-DPu8oywG.js → bg-DeX16RKi.js} +0 -0
  30. /package/lib/cjs/{bn-CIWO--x0.js → bn-3fjitMC3.js} +0 -0
  31. /package/lib/cjs/{ca-C4gmkbL6.js → ca-BxC8Zblv.js} +0 -0
  32. /package/lib/cjs/{cop-BYQt2Eln.js → cop-TvdaSBlz.js} +0 -0
  33. /package/lib/cjs/{cs-psn0RDcR.js → cs-MSNfJH-L.js} +0 -0
  34. /package/lib/cjs/{cu-CI412h46.js → cu-7FYbjEBr.js} +0 -0
  35. /package/lib/cjs/{cy-u9h1j59b.js → cy-CPuxVqb_.js} +0 -0
  36. /package/lib/cjs/{da-BQ70NE2J.js → da-BWsE849b.js} +0 -0
  37. /package/lib/cjs/{de-1901-C5Xgq4-z.js → de-1901-BYSTp3Fp.js} +0 -0
  38. /package/lib/cjs/{de-1996-BmpXhD5R.js → de-1996-DWtCfm_A.js} +0 -0
  39. /package/lib/cjs/{de-ch-1901-mUpubovn.js → de-ch-1901-rWVcF3cs.js} +0 -0
  40. /package/lib/cjs/{el-monoton-1KLys64v.js → el-monoton-BEUGM9Fi.js} +0 -0
  41. /package/lib/cjs/{el-polyton-C8sv-vqz.js → el-polyton-Bvh6HAfD.js} +0 -0
  42. /package/lib/cjs/{en-gb-DidBtNJX.js → en-gb-Dcrai7kY.js} +0 -0
  43. /package/lib/cjs/{es-C1gCT0OW.js → es-CVNdGI0L.js} +0 -0
  44. /package/lib/cjs/{et-UwA1uq3o.js → et-7Rdfp2-O.js} +0 -0
  45. /package/lib/cjs/{eu-pizKbeo6.js → eu-DyEtVwHo.js} +0 -0
  46. /package/lib/cjs/{fi-bkmcjeIB.js → fi-DzRES2Ke.js} +0 -0
  47. /package/lib/cjs/{fr-DTRdyReV.js → fr-DJMVMLCz.js} +0 -0
  48. /package/lib/cjs/{fur-CzaEPYy4.js → fur-CzhK3vxZ.js} +0 -0
  49. /package/lib/cjs/{ga-DfpmmLL7.js → ga-HXzOFdlG.js} +0 -0
  50. /package/lib/cjs/{gl-BvPLj87g.js → gl-C5TM79ih.js} +0 -0
  51. /package/lib/cjs/{grc-CWjbj1rE.js → grc-CPQF-xFI.js} +0 -0
  52. /package/lib/cjs/{gu-B9b71pv0.js → gu-AqCkEYxo.js} +0 -0
  53. /package/lib/cjs/{hi-B0PM9Naw.js → hi-DugLLbv4.js} +0 -0
  54. /package/lib/cjs/{hr-hhdjugdi.js → hr-LSMYFsyP.js} +0 -0
  55. /package/lib/cjs/{hsb-CUC0Vhy0.js → hsb-BlnRYHkg.js} +0 -0
  56. /package/lib/cjs/{hu-DNqLSdxp.js → hu-Dwvtkpy7.js} +0 -0
  57. /package/lib/cjs/{hy-Cr37-HYR.js → hy-BsG06_IV.js} +0 -0
  58. /package/lib/cjs/{ia-_xcaTvlU.js → ia-BMOUZLGD.js} +0 -0
  59. /package/lib/cjs/{id-DTTt6JOe.js → id-DhSs0vqq.js} +0 -0
  60. /package/lib/cjs/{is-BlJOUdIf.js → is-iJhrS7Aw.js} +0 -0
  61. /package/lib/cjs/{it-1kO7pboy.js → it-Aam-BmsV.js} +0 -0
  62. /package/lib/cjs/{ka-06TLrBSU.js → ka-CfLSYpVb.js} +0 -0
  63. /package/lib/cjs/{kmr-CqLLMgB-.js → kmr-DYCscIsi.js} +0 -0
  64. /package/lib/cjs/{kn-DsgCykwv.js → kn-OCEDIM_O.js} +0 -0
  65. /package/lib/cjs/{la-BtfI1L1Y.js → la-DFS3RPxE.js} +0 -0
  66. /package/lib/cjs/{la-x-classic-Csxxqk4A.js → la-x-classic-BocVpbl6.js} +0 -0
  67. /package/lib/cjs/{la-x-liturgic-DP4lkHMh.js → la-x-liturgic-CpZYm3b6.js} +0 -0
  68. /package/lib/cjs/{lt-BLnhu8cj.js → lt-NC6HHzxn.js} +0 -0
  69. /package/lib/cjs/{lv-BWU1ykNC.js → lv-BMFTm6cB.js} +0 -0
  70. /package/lib/cjs/{ml-DCPEVUGQ.js → ml-DDWi25Fi.js} +0 -0
  71. /package/lib/cjs/{mn-cyrl-R4Uzk2PR.js → mn-cyrl-TCUeX7is.js} +0 -0
  72. /package/lib/cjs/{mn-cyrl-x-lmc-DcrbbdVO.js → mn-cyrl-x-lmc-BCmp3Ybn.js} +0 -0
  73. /package/lib/cjs/{mr-a95kT02n.js → mr-1gjg-u15.js} +0 -0
  74. /package/lib/cjs/{mul-ethi-Ha-646Ih.js → mul-ethi-B9a4BMM6.js} +0 -0
  75. /package/lib/cjs/{nb-DVDq5SId.js → nb-DS_J6lre.js} +0 -0
  76. /package/lib/cjs/{nl-xvtaATgd.js → nl-CBtSVLcv.js} +0 -0
  77. /package/lib/cjs/{nn-Dd3GYfsu.js → nn-DYJOn4Sh.js} +0 -0
  78. /package/lib/cjs/{no-Ccuz1dXv.js → no-C20NyT1P.js} +0 -0
  79. /package/lib/cjs/{oc-DMNrvVUu.js → oc-CrKqER_F.js} +0 -0
  80. /package/lib/cjs/{or-BBnbptii.js → or-ZqEtsnaq.js} +0 -0
  81. /package/lib/cjs/{pa-Bpqjl4TY.js → pa-BD3r0Teo.js} +0 -0
  82. /package/lib/cjs/{pi-Dw9S8R8a.js → pi-CQUwMUvz.js} +0 -0
  83. /package/lib/cjs/{pl-BxIw_3q_.js → pl-CawofTLo.js} +0 -0
  84. /package/lib/cjs/{pms-ts8oJNTo.js → pms-DMqDXwo-.js} +0 -0
  85. /package/lib/cjs/{pt-INYdw9le.js → pt-BIiUaINZ.js} +0 -0
  86. /package/lib/cjs/{rm-SrIsmyuH.js → rm-B_-8T7Y1.js} +0 -0
  87. /package/lib/cjs/{ro--lDLf93Z.js → ro-B2Xhfkgx.js} +0 -0
  88. /package/lib/cjs/{ru-CnviOn4F.js → ru-lj-rTTpe.js} +0 -0
  89. /package/lib/cjs/{sa--YzUfT9m.js → sa-D3h-cY2Z.js} +0 -0
  90. /package/lib/cjs/{sh-cyrl-C-Y7f9iS.js → sh-cyrl-0o7p_z-7.js} +0 -0
  91. /package/lib/cjs/{sh-latn-DE0Oa7St.js → sh-latn-BTi9p-0q.js} +0 -0
  92. /package/lib/cjs/{sk-CL5uDe3A.js → sk-D6mOX2KK.js} +0 -0
  93. /package/lib/cjs/{sl-D8ckCfPR.js → sl-Bzz3gkvn.js} +0 -0
  94. /package/lib/cjs/{sr-cyrl-CZdv8WGY.js → sr-cyrl-V07WO3rb.js} +0 -0
  95. /package/lib/cjs/{sv-DYQd48Sm.js → sv-CyQXUuzx.js} +0 -0
  96. /package/lib/cjs/{ta-DOa0x7zq.js → ta-Brwz0zYf.js} +0 -0
  97. /package/lib/cjs/{te-BtexCVtn.js → te-CgvirCa4.js} +0 -0
  98. /package/lib/cjs/{th-BJUX68-0.js → th-PlSNhaza.js} +0 -0
  99. /package/lib/cjs/{tk-CEs8UQxA.js → tk-O54r2ybT.js} +0 -0
  100. /package/lib/cjs/{tr-BMiKDMrF.js → tr-Dh1h3Dno.js} +0 -0
  101. /package/lib/cjs/{uk-B8pzUYbn.js → uk-E2mCrVCU.js} +0 -0
  102. /package/lib/cjs/{zh-latn-pinyin-s8_52NaR.js → zh-latn-pinyin-C2RfFfDl.js} +0 -0
  103. /package/lib/es/{af-I8XQee0A.js → af-DK_CjRn6.js} +0 -0
  104. /package/lib/es/{as-DPw4kbfa.js → as-BPtSu6VN.js} +0 -0
  105. /package/lib/es/{be-hSu5_2AE.js → be-CrQ0smca.js} +0 -0
  106. /package/lib/es/{bg-eIV91Ges.js → bg-CrQqGwni.js} +0 -0
  107. /package/lib/es/{bn-CF0YbkEW.js → bn-NCLZcWHi.js} +0 -0
  108. /package/lib/es/{ca-D0fayQwW.js → ca-SUf6Y2Om.js} +0 -0
  109. /package/lib/es/{cop-gnNw8zDV.js → cop-C3sk0IUo.js} +0 -0
  110. /package/lib/es/{cs-cUOdqXi9.js → cs-CmAteokq.js} +0 -0
  111. /package/lib/es/{cu-CJJk_6p3.js → cu-CBUlrW6Y.js} +0 -0
  112. /package/lib/es/{cy-he1_O-US.js → cy-BBPa6z2x.js} +0 -0
  113. /package/lib/es/{da-C_Tc6C75.js → da-CCDXfXtG.js} +0 -0
  114. /package/lib/es/{de-1901-D9yvXEO8.js → de-1901-CWoAOigE.js} +0 -0
  115. /package/lib/es/{de-1996-DIBM3qkD.js → de-1996-BL6awyxG.js} +0 -0
  116. /package/lib/es/{de-ch-1901-BEDgpl3-.js → de-ch-1901-hVThVHVb.js} +0 -0
  117. /package/lib/es/{el-monoton-BvjPOyvW.js → el-monoton-D3aKqTz2.js} +0 -0
  118. /package/lib/es/{el-polyton-DfJ9Eeih.js → el-polyton-ogVWcTzh.js} +0 -0
  119. /package/lib/es/{en-gb-DYXoK50H.js → en-gb-B7Al27b_.js} +0 -0
  120. /package/lib/es/{es-48latgZ8.js → es-DcaaHPU_.js} +0 -0
  121. /package/lib/es/{et-UzX1rSXY.js → et-B_spaleu.js} +0 -0
  122. /package/lib/es/{eu-ijD7H63T.js → eu-Ctv_kq9Z.js} +0 -0
  123. /package/lib/es/{fi-DDuxAHu5.js → fi-RW5VB8Yp.js} +0 -0
  124. /package/lib/es/{fr-6wTrAsbK.js → fr-BC2onEz9.js} +0 -0
  125. /package/lib/es/{fur-CcIOY8A9.js → fur-AC12wySk.js} +0 -0
  126. /package/lib/es/{ga-B4Qvh5qS.js → ga-Cn6LkudM.js} +0 -0
  127. /package/lib/es/{gl-D8H7uN6B.js → gl-DZGc-K_G.js} +0 -0
  128. /package/lib/es/{grc-DFNi6G6p.js → grc-DOlGgO8T.js} +0 -0
  129. /package/lib/es/{gu-0EahmEdu.js → gu-Bjl0l-cf.js} +0 -0
  130. /package/lib/es/{hi-C2ih9xmB.js → hi-DsAaTPCC.js} +0 -0
  131. /package/lib/es/{hr-CSbbBNUu.js → hr-DT1SBBes.js} +0 -0
  132. /package/lib/es/{hsb-hKsDwaW_.js → hsb-DC_ITc1e.js} +0 -0
  133. /package/lib/es/{hu-BPixuxjf.js → hu-DVk7Y_ka.js} +0 -0
  134. /package/lib/es/{hy-CTtThTdl.js → hy-e995ysyO.js} +0 -0
  135. /package/lib/es/{ia-CYCjbabb.js → ia-Cr4TJH0c.js} +0 -0
  136. /package/lib/es/{id-Cgsp-bEu.js → id-DifDyWg9.js} +0 -0
  137. /package/lib/es/{is-D_Awtowh.js → is-BT8UVRze.js} +0 -0
  138. /package/lib/es/{it-C2qJSkm3.js → it-Bt_Meacx.js} +0 -0
  139. /package/lib/es/{ka-DpGw5nvd.js → ka-jyoLzyDE.js} +0 -0
  140. /package/lib/es/{kmr-CCdNyB20.js → kmr-Cfwhwuff.js} +0 -0
  141. /package/lib/es/{kn-B4tAUtFU.js → kn-C6Lov-DP.js} +0 -0
  142. /package/lib/es/{la-DIUYl8Yo.js → la-DuvHjUWw.js} +0 -0
  143. /package/lib/es/{la-x-classic-DsbLrq-C.js → la-x-classic-yTyAOQEt.js} +0 -0
  144. /package/lib/es/{la-x-liturgic-Ggenbcb5.js → la-x-liturgic-CXeQb4FY.js} +0 -0
  145. /package/lib/es/{lt-BcizI7gZ.js → lt-BBe8DlDF.js} +0 -0
  146. /package/lib/es/{lv-BOgrbf6v.js → lv-Q2BBHnzp.js} +0 -0
  147. /package/lib/es/{ml-CTD7giel.js → ml-2xLVYkVY.js} +0 -0
  148. /package/lib/es/{mn-cyrl-CDxGttkw.js → mn-cyrl-lHM4n0oC.js} +0 -0
  149. /package/lib/es/{mn-cyrl-x-lmc-kjrnm3ii.js → mn-cyrl-x-lmc-3aetruI8.js} +0 -0
  150. /package/lib/es/{mr-DttMNydl.js → mr-CjWJPVmH.js} +0 -0
  151. /package/lib/es/{mul-ethi-mmW8ZEm0.js → mul-ethi-D_CMSMEq.js} +0 -0
  152. /package/lib/es/{nb-DCiD6jLz.js → nb-DI8u59ch.js} +0 -0
  153. /package/lib/es/{nl-BKWsn_4x.js → nl-BHQJ6Gvn.js} +0 -0
  154. /package/lib/es/{nn-b0W3mz5j.js → nn-ntZvarUK.js} +0 -0
  155. /package/lib/es/{no-B3l46gib.js → no-B8ItS0F3.js} +0 -0
  156. /package/lib/es/{oc-zkqkXjNo.js → oc-P_i3-xLA.js} +0 -0
  157. /package/lib/es/{or-DEnI_Cls.js → or-50rxpoq4.js} +0 -0
  158. /package/lib/es/{pa-Sh-QSMIs.js → pa-C54UG8eN.js} +0 -0
  159. /package/lib/es/{pi-DxMx4Uwd.js → pi-B9cgjyG1.js} +0 -0
  160. /package/lib/es/{pl-CISKU0vg.js → pl-9fg-ESVt.js} +0 -0
  161. /package/lib/es/{pms-DUga94hR.js → pms-BRGfm5gS.js} +0 -0
  162. /package/lib/es/{pt-CzW61i2q.js → pt-Cum2_NUC.js} +0 -0
  163. /package/lib/es/{rm-C1U6i4AB.js → rm-C0MIK9N4.js} +0 -0
  164. /package/lib/es/{ro-DSU53KfM.js → ro-0fmdH0HA.js} +0 -0
  165. /package/lib/es/{ru-gduZDLhv.js → ru-v4l-ayaq.js} +0 -0
  166. /package/lib/es/{sa-Bney0xbB.js → sa-CKY9c_Vq.js} +0 -0
  167. /package/lib/es/{sh-cyrl-CCByyO89.js → sh-cyrl-BpCRFOmq.js} +0 -0
  168. /package/lib/es/{sh-latn-CTIiTfzt.js → sh-latn-sRy4Tuaj.js} +0 -0
  169. /package/lib/es/{sk-DK-iy-nO.js → sk-_iOeDNrQ.js} +0 -0
  170. /package/lib/es/{sl-BvzIjkCq.js → sl-DpiklF-D.js} +0 -0
  171. /package/lib/es/{sr-cyrl-7T4T5Th1.js → sr-cyrl-Dpzrbd0W.js} +0 -0
  172. /package/lib/es/{sv-BynygC4t.js → sv-CFm5y56M.js} +0 -0
  173. /package/lib/es/{ta-CglfOvwm.js → ta-BcghgTbD.js} +0 -0
  174. /package/lib/es/{te-Bec4xJud.js → te-B5Spl2Jk.js} +0 -0
  175. /package/lib/es/{th-B67OcLue.js → th-DWX5iPSo.js} +0 -0
  176. /package/lib/es/{tk-CYfVPVLR.js → tk-BMbKB10q.js} +0 -0
  177. /package/lib/es/{tr-BxhGLs2f.js → tr-CIHIuzqc.js} +0 -0
  178. /package/lib/es/{uk-CnWqKnI0.js → uk-Dir3oxLs.js} +0 -0
  179. /package/lib/es/{zh-latn-pinyin-CKxTJrac.js → zh-latn-pinyin-BdYb-Ey_.js} +0 -0
package/lib/cjs/index.js CHANGED
@@ -6,6 +6,19 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __exportAll = (all, no_symbols) => {
10
+ let target = {};
11
+ for (var name in all) {
12
+ __defProp(target, name, {
13
+ get: all[name],
14
+ enumerable: true
15
+ });
16
+ }
17
+ if (!no_symbols) {
18
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
19
+ }
20
+ return target;
21
+ };
9
22
  var __copyProps = (to, from, except, desc) => {
10
23
  if (from && typeof from === "object" || typeof from === "function") {
11
24
  for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
@@ -26,7 +39,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
39
  }) : target, mod));
27
40
 
28
41
  //#endregion
29
- const require_en_us = require('./en-us-Br9JW6Nt.js');
30
42
  let _univerjs_core = require("@univerjs/core");
31
43
  let cjk_regex = require("cjk-regex");
32
44
  cjk_regex = __toESM(cjk_regex);
@@ -309,14 +321,7 @@ function getFontStyleString(textStyle) {
309
321
  let originFontSize = defaultFontSize;
310
322
  if (textStyle.fs) originFontSize = Math.ceil(textStyle.fs);
311
323
  let fontSize = originFontSize;
312
- let fontFamilyResult = defaultFont;
313
- if (textStyle.ff) {
314
- let fontFamily = textStyle.ff;
315
- fontFamily = fontFamily.replace(/"/g, "").replace(/'/g, "");
316
- if (fontFamily.indexOf(" ") > -1) fontFamily = `"${fontFamily}"`;
317
- if (fontFamily == null) fontFamily = defaultFont;
318
- fontFamilyResult = fontFamily;
319
- }
324
+ const fontFamilyResult = normalizeFontFamily(textStyle.ff, defaultFont);
320
325
  const { va: baselineOffset } = textStyle;
321
326
  if (baselineOffset === _univerjs_core.BaselineOffset.SUBSCRIPT || baselineOffset === _univerjs_core.BaselineOffset.SUPERSCRIPT) {
322
327
  const { sbr, spr } = FontCache.getBaselineOffsetInfo(fontFamilyResult, fontSize);
@@ -331,6 +336,13 @@ function getFontStyleString(textStyle) {
331
336
  fontFamily: fontFamilyResult
332
337
  };
333
338
  }
339
+ function normalizeFontFamily(fontFamily, defaultFont) {
340
+ if (!(fontFamily === null || fontFamily === void 0 ? void 0 : fontFamily.trim())) return defaultFont;
341
+ return fontFamily.split(",").map((item) => {
342
+ const family = item.trim().replace(/^['"]|['"]$/g, "");
343
+ return family.includes(" ") ? `"${family}"` : family;
344
+ }).filter(Boolean).join(", ");
345
+ }
334
346
  const CJK_LETTER_REG = cjk_regex.letters().toRegExp();
335
347
  function hasCJKText(text) {
336
348
  return CJK_LETTER_REG.test(text);
@@ -384,6 +396,9 @@ function hasArabic(text) {
384
396
  function hasTibetan(text) {
385
397
  return /[\u0180-\u024F]/gi.test(text);
386
398
  }
399
+ function hasThai(text) {
400
+ return /[\u0E00-\u0E7F]/.test(text);
401
+ }
387
402
  function hasSpace(text) {
388
403
  return /\s+/g.test(text);
389
404
  }
@@ -650,7 +665,7 @@ function getSystemHighlightColor() {
650
665
  }
651
666
 
652
667
  //#endregion
653
- //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
668
+ //#region \0@oxc-project+runtime@0.133.0/helpers/esm/typeof.js
654
669
  function _typeof(o) {
655
670
  "@babel/helpers - typeof";
656
671
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -661,7 +676,7 @@ function _typeof(o) {
661
676
  }
662
677
 
663
678
  //#endregion
664
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
679
+ //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPrimitive.js
665
680
  function toPrimitive(t, r) {
666
681
  if ("object" != _typeof(t) || !t) return t;
667
682
  var e = t[Symbol.toPrimitive];
@@ -674,14 +689,14 @@ function toPrimitive(t, r) {
674
689
  }
675
690
 
676
691
  //#endregion
677
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
692
+ //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPropertyKey.js
678
693
  function toPropertyKey(t) {
679
694
  var i = toPrimitive(t, "string");
680
695
  return "symbol" == _typeof(i) ? i : i + "";
681
696
  }
682
697
 
683
698
  //#endregion
684
- //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
699
+ //#region \0@oxc-project+runtime@0.133.0/helpers/esm/defineProperty.js
685
700
  function _defineProperty(e, r, t) {
686
701
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
687
702
  value: t,
@@ -1697,7 +1712,9 @@ var Vector2 = class Vector2 {
1697
1712
  function getDevicePixelRatio() {
1698
1713
  let _pixelRatio = 1;
1699
1714
  const context = createCanvasElement().getContext("2d");
1700
- _pixelRatio = (window.devicePixelRatio || 1) / (context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1);
1715
+ _pixelRatio = (() => {
1716
+ return (window.devicePixelRatio || 1) / (context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1);
1717
+ })();
1701
1718
  if (_pixelRatio < 1) return 1;
1702
1719
  return _pixelRatio;
1703
1720
  }
@@ -2952,6 +2969,37 @@ var Transform = class Transform {
2952
2969
  }
2953
2970
  };
2954
2971
 
2972
+ //#endregion
2973
+ //#region src/basics/zoom.ts
2974
+ const MIN_ZOOM_RATIO = .1;
2975
+ const MAX_ZOOM_RATIO = 4;
2976
+ const PIXEL_DELTA_TO_ZOOM_RATIO = .008;
2977
+ const MAX_WHEEL_ZOOM_STEP = .14;
2978
+ const MAX_WHEEL_ZOOM_STEP_BELOW_ONE = .07;
2979
+ const LINE_DELTA_PIXEL_SIZE = 16;
2980
+ const PAGE_DELTA_PIXEL_SIZE = 800;
2981
+ const ZOOM_RATIO_PRECISION = 100;
2982
+ function clamp(value, min, max) {
2983
+ return Math.min(max, Math.max(min, value));
2984
+ }
2985
+ function normalizeWheelDelta(event) {
2986
+ const deltaY = Number.isFinite(event.deltaY) ? event.deltaY : 0;
2987
+ const deltaX = Number.isFinite(event.deltaX) ? event.deltaX : 0;
2988
+ let delta = Math.abs(deltaY) >= Math.abs(deltaX) ? deltaY : deltaX;
2989
+ if (delta === 0 && typeof event.wheelDelta === "number") delta = -event.wheelDelta / 3;
2990
+ if (event.deltaMode === EventConstants.DOM_DELTA_LINE) delta *= LINE_DELTA_PIXEL_SIZE;
2991
+ else if (event.deltaMode === EventConstants.DOM_DELTA_PAGE) delta *= PAGE_DELTA_PIXEL_SIZE;
2992
+ return delta;
2993
+ }
2994
+ function getNextWheelZoomRatio(currentRatio, event) {
2995
+ const validCurrentRatio = Number.isFinite(currentRatio) ? currentRatio : 1;
2996
+ const normalizedDelta = normalizeWheelDelta(event);
2997
+ if (normalizedDelta === 0) return clamp(validCurrentRatio, MIN_ZOOM_RATIO, MAX_ZOOM_RATIO);
2998
+ const maxStep = validCurrentRatio < 1 ? MAX_WHEEL_ZOOM_STEP_BELOW_ONE : MAX_WHEEL_ZOOM_STEP;
2999
+ const ratioDelta = clamp(-normalizedDelta * PIXEL_DELTA_TO_ZOOM_RATIO, -maxStep, maxStep);
3000
+ return clamp(Math.round((validCurrentRatio + ratioDelta) * ZOOM_RATIO_PRECISION) / ZOOM_RATIO_PRECISION, MIN_ZOOM_RATIO, MAX_ZOOM_RATIO);
3001
+ }
3002
+
2955
3003
  //#endregion
2956
3004
  //#region src/base-object.ts
2957
3005
  const BASE_OBJECT_ARRAY = [
@@ -11083,12 +11131,12 @@ length_base[28] = 258;
11083
11131
  const SHIFT_1 = 11;
11084
11132
  const SHIFT_2 = 5;
11085
11133
  const SHIFT_1_2 = SHIFT_1 - SHIFT_2;
11086
- const OMITTED_BMP_INDEX_1_LENGTH = 65536 >> SHIFT_1;
11134
+ const OMITTED_BMP_INDEX_1_LENGTH = 32;
11087
11135
  const INDEX_2_MASK = (1 << SHIFT_1_2) - 1;
11088
11136
  const INDEX_SHIFT = 2;
11089
11137
  const DATA_MASK = (1 << SHIFT_2) - 1;
11090
- const LSCP_INDEX_2_OFFSET = 65536 >> SHIFT_2;
11091
- const INDEX_1_OFFSET = LSCP_INDEX_2_OFFSET + (1024 >> SHIFT_2) + 32;
11138
+ const LSCP_INDEX_2_OFFSET = 2048;
11139
+ const INDEX_1_OFFSET = 2112;
11092
11140
  const DATA_GRANULARITY = 1 << INDEX_SHIFT;
11093
11141
  var UnicodeTrie = class {
11094
11142
  constructor(data) {
@@ -12053,6 +12101,17 @@ var Liquid = class {
12053
12101
  }
12054
12102
  };
12055
12103
 
12104
+ //#endregion
12105
+ //#region src/components/docs/table-render-viewport.ts
12106
+ let docsTableRenderViewportProvider = null;
12107
+ function setDocsTableRenderViewportProvider(provider) {
12108
+ docsTableRenderViewportProvider = provider;
12109
+ }
12110
+ function getDocsTableRenderViewport(unitId, tableId) {
12111
+ var _docsTableRenderViewp;
12112
+ return (_docsTableRenderViewp = docsTableRenderViewportProvider === null || docsTableRenderViewportProvider === void 0 ? void 0 : docsTableRenderViewportProvider(unitId, tableId)) !== null && _docsTableRenderViewp !== void 0 ? _docsTableRenderViewp : null;
12113
+ }
12114
+
12056
12115
  //#endregion
12057
12116
  //#region src/components/docs/view-model/data-stream-tree-node.ts
12058
12117
  var DataStreamTreeNode = class DataStreamTreeNode {
@@ -12221,6 +12280,17 @@ function parseDataStreamToTree(dataStream, tables) {
12221
12280
  const tableRowList = [];
12222
12281
  const tableCellList = [];
12223
12282
  const currentBlocks = [];
12283
+ const getParagraphList = () => tableCellList.length > 0 ? cellParagraphList : paragraphList;
12284
+ const appendToPreviousParagraph = (char) => {
12285
+ const tempParagraphList = getParagraphList();
12286
+ const lastParagraph = tempParagraphList[tempParagraphList.length - 1];
12287
+ if (lastParagraph) {
12288
+ var _lastParagraph$conten;
12289
+ lastParagraph.content = `${(_lastParagraph$conten = lastParagraph.content) !== null && _lastParagraph$conten !== void 0 ? _lastParagraph$conten : ""}${char}`;
12290
+ return true;
12291
+ }
12292
+ return false;
12293
+ };
12224
12294
  for (let i = 0; i < dataStreamLen; i++) {
12225
12295
  const char = dataStream[i];
12226
12296
  if (char === _univerjs_core.DataStreamTreeTokenType.PARAGRAPH) {
@@ -12281,6 +12351,9 @@ function parseDataStreamToTree(dataStream, tables) {
12281
12351
  const cellNode = tableCellList.pop();
12282
12352
  const lastRow = tableRowList[tableRowList.length - 1];
12283
12353
  batchParent(lastRow, [cellNode], _univerjs_core.DataStreamTreeNodeType.TABLE_ROW);
12354
+ } else if (char === _univerjs_core.DataStreamTreeTokenType.BLOCK_START) content += char;
12355
+ else if (char === _univerjs_core.DataStreamTreeTokenType.BLOCK_END) {
12356
+ if (content.length > 0 || !appendToPreviousParagraph(char)) content += char;
12284
12357
  } else if (char === _univerjs_core.DataStreamTreeTokenType.CUSTOM_BLOCK) {
12285
12358
  currentBlocks.push(i);
12286
12359
  content += char;
@@ -12597,6 +12670,8 @@ function _createSkeletonWordOrLetter(glyphType, content, config, glyphWidth, gly
12597
12670
  _univerjs_core.DataStreamTreeTokenType.TABLE_ROW_END,
12598
12671
  _univerjs_core.DataStreamTreeTokenType.TABLE_CELL_START,
12599
12672
  _univerjs_core.DataStreamTreeTokenType.TABLE_CELL_END,
12673
+ _univerjs_core.DataStreamTreeTokenType.BLOCK_START,
12674
+ _univerjs_core.DataStreamTreeTokenType.BLOCK_END,
12600
12675
  _univerjs_core.DataStreamTreeTokenType.CUSTOM_RANGE_START,
12601
12676
  _univerjs_core.DataStreamTreeTokenType.CUSTOM_RANGE_END,
12602
12677
  _univerjs_core.DataStreamTreeTokenType.COLUMN_BREAK,
@@ -13106,7 +13181,16 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13106
13181
  let left = 0;
13107
13182
  let rowHeight = 0;
13108
13183
  for (const cellNode of cellNodes) {
13109
- const cellPageSkeleton = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, cellNodes.indexOf(cellNode))[0];
13184
+ const col = cellNodes.indexOf(cellNode);
13185
+ const cellConfig = rowSource.tableCells[col];
13186
+ if (isCoveredTableCell(cellConfig)) {
13187
+ const cellPageSkeleton = createMergedCoveredCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton);
13188
+ cellPageSkeleton.left = left;
13189
+ if (shouldAdvanceTableCellLeft(table, row, col)) left += cellPageSkeleton.pageWidth;
13190
+ rowSkeleton.cells.push(cellPageSkeleton);
13191
+ continue;
13192
+ }
13193
+ const cellPageSkeleton = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col)[0];
13110
13194
  const { marginTop = 0, marginBottom = 0 } = cellPageSkeleton;
13111
13195
  const pageHeight = cellPageSkeleton.height + marginTop + marginBottom;
13112
13196
  cellPageSkeleton.left = left;
@@ -13116,7 +13200,7 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13116
13200
  rowHeight = Math.max(rowHeight, pageHeight);
13117
13201
  }
13118
13202
  if (hRule === _univerjs_core.TableRowHeightRule.AT_LEAST) rowHeight = Math.max(rowHeight, val.v);
13119
- else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeight = val.v;
13203
+ else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeight = Math.max(rowHeight, val.v);
13120
13204
  for (const cellPageSkeleton of rowSkeleton.cells) cellPageSkeleton.pageHeight = rowHeight;
13121
13205
  const rowConfig = table.tableRows[row];
13122
13206
  for (let i = 0; i < rowConfig.tableCells.length; i++) {
@@ -13147,6 +13231,7 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13147
13231
  }
13148
13232
  tableSkeleton.width = tableWidth;
13149
13233
  tableSkeleton.height = rowTop;
13234
+ applyMergedCellSpanHeights(tableSkeleton);
13150
13235
  const { pageWidth, marginLeft = 0, marginRight = 0 } = curPage;
13151
13236
  tableSkeleton.left = _getTableLeft(pageWidth - marginLeft - marginRight, tableWidth, table.align, table.indent);
13152
13237
  return tableSkeleton;
@@ -13170,14 +13255,14 @@ function createTableSkeletons(ctx, curPage, viewModel, tableNode, sectionBreakCo
13170
13255
  fromCurrentPage: false
13171
13256
  };
13172
13257
  }
13173
- const needRepeatHeader = table.tableRows[0].repeatHeaderRow === _univerjs_core.BooleanNumber.TRUE;
13258
+ const repeatRows = getLeadingRepeatHeaderRows(table, rowNodes);
13174
13259
  const curTableSkeleton = getNullTableSkeleton(startIndex, endIndex, table);
13175
13260
  const createCache = {
13176
13261
  rowTop: 0,
13177
13262
  tableWidth: 0,
13178
13263
  remainHeight: availableHeight,
13179
- repeatRow: needRepeatHeader ? rowNodes[0] : null,
13180
- repeatRowHeight: 0
13264
+ repeatRows,
13265
+ repeatRowsHeight: 0
13181
13266
  };
13182
13267
  skeTables.push(curTableSkeleton);
13183
13268
  for (const rowNode of rowNodes) dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, rowNode, rowNodes.indexOf(rowNode), table, createCache);
@@ -13193,6 +13278,7 @@ function updateTableSkeletonsPosition(cache, curPage, skeTables, table) {
13193
13278
  const tableLeft = _getTableLeft(pageWidth - marginLeft - marginRight, tableWidth, table.align, table.indent);
13194
13279
  let tableIndex = 0;
13195
13280
  for (const tableSkeleton of skeTables) {
13281
+ applyMergedCellSpanHeights(tableSkeleton);
13196
13282
  tableSkeleton.width = tableWidth;
13197
13283
  tableSkeleton.left = tableLeft;
13198
13284
  tableSkeleton.st = tableSkeleton.rows[0].st - 1;
@@ -13209,7 +13295,7 @@ function getCurTableSkeleton(skeTables) {
13209
13295
  function getAvailableHeight(curPage, cache, hasRepeatHeader) {
13210
13296
  const { marginTop, marginBottom, pageHeight } = curPage;
13211
13297
  let pageContentHeight = pageHeight - marginTop - marginBottom;
13212
- if (hasRepeatHeader) pageContentHeight -= cache.repeatRowHeight;
13298
+ if (hasRepeatHeader) pageContentHeight -= cache.repeatRowsHeight;
13213
13299
  return pageContentHeight;
13214
13300
  }
13215
13301
  function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, rowNode, row, table, cache, isRepeatRow = false) {
@@ -13227,17 +13313,13 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13227
13313
  const rowHeights = [0];
13228
13314
  for (const cellNode of cellNodes) {
13229
13315
  const col = cellNodes.indexOf(cellNode);
13230
- const cellPageSkeletons = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col, canRowSplit && !needOpenNewTable ? cache.remainHeight : availableHeight, pageContentHeight);
13231
- while (rowSkeletons.length < cellPageSkeletons.length) {
13232
- const rowSkeleton = _getNullTableRowSkeleton(startIndex, endIndex, row, rowSource, isRepeatRow);
13233
- const colCount = cellNodes.length;
13234
- rowSkeleton.cells = [...new Array(colCount)].map((_, i) => {
13235
- const cellSkeleton = createNullCellPage(ctx, sectionBreakConfig, table, row, i).page;
13236
- cellSkeleton.parent = rowSkeleton;
13237
- return cellSkeleton;
13238
- });
13239
- rowSkeletons.push(rowSkeleton);
13316
+ const cellConfig = rowSource.tableCells[col];
13317
+ if (isCoveredTableCell(cellConfig)) {
13318
+ if (rowSkeletons.length === 0) rowSkeletons.push(createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow));
13319
+ continue;
13240
13320
  }
13321
+ const cellPageSkeletons = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col, canRowSplit && !needOpenNewTable ? cache.remainHeight : availableHeight, pageContentHeight);
13322
+ while (rowSkeletons.length < cellPageSkeletons.length) rowSkeletons.push(createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow));
13241
13323
  while (rowHeights.length < cellPageSkeletons.length) rowHeights.push(0);
13242
13324
  for (const cellPageSkeleton of cellPageSkeletons) {
13243
13325
  const { marginTop: cellMarginTop = 0, marginBottom: cellMarginBottom = 0 } = cellPageSkeleton;
@@ -13252,18 +13334,20 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13252
13334
  for (const rowSke of rowSkeletons) {
13253
13335
  const rowIndex = rowSkeletons.indexOf(rowSke);
13254
13336
  if (hRule === _univerjs_core.TableRowHeightRule.AT_LEAST) rowHeights[rowIndex] = Math.max(rowHeights[rowIndex], val.v);
13255
- else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeights[rowIndex] = val.v;
13337
+ else if (hRule === _univerjs_core.TableRowHeightRule.EXACT) rowHeights[rowIndex] = Math.max(rowHeights[rowIndex], val.v);
13256
13338
  rowHeights[rowIndex] = Math.min(rowHeights[rowIndex], pageContentHeight);
13257
13339
  let left = 0;
13258
- for (const cellPageSkeleton of rowSke.cells) {
13340
+ for (let col = 0; col < rowSke.cells.length; col++) {
13341
+ const cellPageSkeleton = rowSke.cells[col];
13342
+ if (cellPageSkeleton == null) continue;
13259
13343
  cellPageSkeleton.left = left;
13260
13344
  cellPageSkeleton.pageHeight = rowHeights[rowIndex];
13261
- left += cellPageSkeleton.pageWidth;
13345
+ if (shouldAdvanceTableCellLeft(table, rowSke.index, col)) left += cellPageSkeleton.pageWidth;
13262
13346
  cache.tableWidth = Math.max(cache.tableWidth, left);
13263
13347
  }
13264
13348
  rowSke.height = rowHeights[rowIndex];
13265
13349
  }
13266
- if (row === 0 && cache.repeatRow) cache.repeatRowHeight = rowHeights[rowHeights.length - 1];
13350
+ if (!isRepeatRow && row < cache.repeatRows.length) cache.repeatRowsHeight += rowHeights.reduce((total, height) => total + height, 0);
13267
13351
  for (const rowSkeleton of rowSkeletons) _verticalAlignInCell(rowSkeleton, rowSource);
13268
13352
  while (rowSkeletons.length > 0) {
13269
13353
  const rowSkeleton = rowSkeletons.shift();
@@ -13274,10 +13358,11 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13274
13358
  if (curTableSkeleton.rows.length > 0) {
13275
13359
  curTableSkeleton = getNullTableSkeleton(startIndex, endIndex, table);
13276
13360
  skeTables.push(curTableSkeleton);
13277
- if (cache.repeatRow && isRepeatRow === false && row !== 0 && rowSkeleton.index !== lastRow.index) {
13278
- const FIRST_ROW_INDEX = 0;
13361
+ if (cache.repeatRows.length > 0 && isRepeatRow === false && row >= cache.repeatRows.length && rowSkeleton.index !== lastRow.index) {
13279
13362
  cache.remainHeight = getAvailableHeight(curPage, cache, false);
13280
- dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, cache.repeatRow, FIRST_ROW_INDEX, table, cache, true);
13363
+ cache.repeatRows.forEach((repeatRow, repeatRowIndex) => {
13364
+ dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, repeatRow, repeatRowIndex, table, cache, true);
13365
+ });
13281
13366
  }
13282
13367
  }
13283
13368
  }
@@ -13290,6 +13375,15 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13290
13375
  cache.rowTop += rowSkeleton.height;
13291
13376
  }
13292
13377
  }
13378
+ function getLeadingRepeatHeaderRows(table, rowNodes) {
13379
+ const repeatRows = [];
13380
+ for (let index = 0; index < rowNodes.length; index++) {
13381
+ var _table$tableRows$inde;
13382
+ if (((_table$tableRows$inde = table.tableRows[index]) === null || _table$tableRows$inde === void 0 ? void 0 : _table$tableRows$inde.repeatHeaderRow) !== _univerjs_core.BooleanNumber.TRUE) break;
13383
+ repeatRows.push(rowNodes[index]);
13384
+ }
13385
+ return repeatRows;
13386
+ }
13293
13387
  function _verticalAlignInCell(rowSkeleton, rowSource) {
13294
13388
  for (let i = 0; i < rowSource.tableCells.length; i++) {
13295
13389
  const cellConfig = rowSource.tableCells[i];
@@ -13314,6 +13408,75 @@ function _verticalAlignInCell(rowSkeleton, rowSource) {
13314
13408
  cellPageSkeleton.marginTop = marginTop;
13315
13409
  }
13316
13410
  }
13411
+ function createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow = false) {
13412
+ const rowSkeleton = _getNullTableRowSkeleton(startIndex, endIndex, row, rowSource, isRepeatRow);
13413
+ const colCount = rowSource.tableCells.length;
13414
+ rowSkeleton.cells = Array.from({ length: colCount }, (_, col) => createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton));
13415
+ return rowSkeleton;
13416
+ }
13417
+ function createMergedCoveredCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton) {
13418
+ return createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton);
13419
+ }
13420
+ function applyMergedCellSpanHeights(tableSkeleton) {
13421
+ var _tableSkeleton$tableS, _tableSkeleton$tableS2;
13422
+ const tableRows = (_tableSkeleton$tableS = (_tableSkeleton$tableS2 = tableSkeleton.tableSource) === null || _tableSkeleton$tableS2 === void 0 ? void 0 : _tableSkeleton$tableS2.tableRows) !== null && _tableSkeleton$tableS !== void 0 ? _tableSkeleton$tableS : [];
13423
+ if (tableRows.length === 0) return;
13424
+ const skeletonRowsByIndex = new Map(tableSkeleton.rows.map((row) => [row.index, row]));
13425
+ tableRows.forEach((rowSource, rowIndex) => {
13426
+ rowSource.tableCells.forEach((cellConfig, columnIndex) => {
13427
+ var _cellConfig$rowSpan, _cellConfig$columnSpa;
13428
+ const rowSpan = (_cellConfig$rowSpan = cellConfig.rowSpan) !== null && _cellConfig$rowSpan !== void 0 ? _cellConfig$rowSpan : 1;
13429
+ const columnSpan = (_cellConfig$columnSpa = cellConfig.columnSpan) !== null && _cellConfig$columnSpa !== void 0 ? _cellConfig$columnSpa : 1;
13430
+ if (rowSpan <= 1 && columnSpan <= 1) return;
13431
+ const masterRow = skeletonRowsByIndex.get(rowIndex);
13432
+ const masterCell = masterRow === null || masterRow === void 0 ? void 0 : masterRow.cells[columnIndex];
13433
+ if (!masterCell || masterCell.isMergedCellCovered) return;
13434
+ let pageHeight = 0;
13435
+ for (let row = rowIndex; row < rowIndex + rowSpan; row++) {
13436
+ var _skeletonRowsByIndex$, _skeletonRowsByIndex$2;
13437
+ pageHeight += (_skeletonRowsByIndex$ = (_skeletonRowsByIndex$2 = skeletonRowsByIndex.get(row)) === null || _skeletonRowsByIndex$2 === void 0 ? void 0 : _skeletonRowsByIndex$2.height) !== null && _skeletonRowsByIndex$ !== void 0 ? _skeletonRowsByIndex$ : 0;
13438
+ }
13439
+ if (pageHeight > 0) masterCell.pageHeight = pageHeight;
13440
+ });
13441
+ });
13442
+ }
13443
+ function createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton) {
13444
+ const cellSkeleton = createNullCellPage(ctx, sectionBreakConfig, table, row, col).page;
13445
+ cellSkeleton.parent = rowSkeleton;
13446
+ if (isCoveredTableCell(table.tableRows[row].tableCells[col])) Object.assign(cellSkeleton, { isMergedCellCovered: true });
13447
+ return cellSkeleton;
13448
+ }
13449
+ function shouldAdvanceTableCellLeft(table, row, col) {
13450
+ var _table$tableRows$row;
13451
+ if (!isCoveredTableCell((_table$tableRows$row = table.tableRows[row]) === null || _table$tableRows$row === void 0 ? void 0 : _table$tableRows$row.tableCells[col])) return true;
13452
+ const masterCell = findMergedMasterCell(table, row, col);
13453
+ if (masterCell == null) return true;
13454
+ return masterCell.row !== row;
13455
+ }
13456
+ function findMergedMasterCell(table, row, col) {
13457
+ for (let rowIndex = 0; rowIndex <= row; rowIndex++) {
13458
+ const rowSource = table.tableRows[rowIndex];
13459
+ if (rowSource == null) continue;
13460
+ for (let columnIndex = 0; columnIndex < rowSource.tableCells.length; columnIndex++) {
13461
+ var _cellConfig$rowSpan2, _cellConfig$columnSpa2;
13462
+ const cellConfig = rowSource.tableCells[columnIndex];
13463
+ if (isCoveredTableCell(cellConfig)) continue;
13464
+ const rowSpan = Math.max(1, (_cellConfig$rowSpan2 = cellConfig.rowSpan) !== null && _cellConfig$rowSpan2 !== void 0 ? _cellConfig$rowSpan2 : 1);
13465
+ const columnSpan = Math.max(1, (_cellConfig$columnSpa2 = cellConfig.columnSpan) !== null && _cellConfig$columnSpa2 !== void 0 ? _cellConfig$columnSpa2 : 1);
13466
+ if (rowSpan <= 1 && columnSpan <= 1) continue;
13467
+ const containsRow = row >= rowIndex && row < rowIndex + rowSpan;
13468
+ const containsColumn = col >= columnIndex && col < columnIndex + columnSpan;
13469
+ if (containsRow && containsColumn) return {
13470
+ row: rowIndex,
13471
+ col: columnIndex
13472
+ };
13473
+ }
13474
+ }
13475
+ return null;
13476
+ }
13477
+ function isCoveredTableCell(cellConfig) {
13478
+ return (cellConfig === null || cellConfig === void 0 ? void 0 : cellConfig.rowSpan) === 0 || (cellConfig === null || cellConfig === void 0 ? void 0 : cellConfig.columnSpan) === 0;
13479
+ }
13317
13480
  function _getTableLeft(pageWidth, tableWidth, align, indent = { v: 0 }) {
13318
13481
  switch (align) {
13319
13482
  case _univerjs_core.TableAlignmentType.START: return indent.v;
@@ -14419,13 +14582,13 @@ const DEFAULT_PAGE_SIZE = {
14419
14582
  const DEFAULT_MODERN_DOCUMENT_STYLE = {
14420
14583
  pageNumberStart: 1,
14421
14584
  pageSize: {
14422
- width: ptToPixel(595),
14585
+ width: _univerjs_core.MODERN_DOCUMENT_WIDTH[_univerjs_core.ModernDocumentWidthMode.MEDIUM],
14423
14586
  height: Number.POSITIVE_INFINITY
14424
14587
  },
14425
- marginTop: ptToPixel(50),
14426
- marginBottom: ptToPixel(50),
14427
- marginRight: ptToPixel(50),
14428
- marginLeft: ptToPixel(50),
14588
+ marginTop: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14589
+ marginBottom: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14590
+ marginRight: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14591
+ marginLeft: _univerjs_core.MODERN_DOCUMENT_DEFAULT_MARGIN,
14429
14592
  renderConfig: {
14430
14593
  vertexAngle: 0,
14431
14594
  centerAngle: 0,
@@ -14455,8 +14618,13 @@ function prepareSectionBreakConfig(ctx, nodeIndex) {
14455
14618
  const { documentFlavor } = documentStyle;
14456
14619
  let sectionBreak = viewModel.getSectionBreak(sectionNode.endIndex) || DEFAULT_SECTION_BREAK;
14457
14620
  if (documentFlavor === _univerjs_core.DocumentFlavor.MODERN) {
14621
+ var _documentStyle$pageSi, _documentStyle$pageSi2;
14622
+ const modernPageWidth = (_documentStyle$pageSi = (_documentStyle$pageSi2 = documentStyle.pageSize) === null || _documentStyle$pageSi2 === void 0 ? void 0 : _documentStyle$pageSi2.width) !== null && _documentStyle$pageSi !== void 0 ? _documentStyle$pageSi : DEFAULT_MODERN_DOCUMENT_STYLE.pageSize.width;
14458
14623
  sectionBreak = Object.assign({}, sectionBreak, DEFAULT_MODERN_SECTION_BREAK);
14459
- documentStyle = Object.assign({}, documentStyle, DEFAULT_MODERN_DOCUMENT_STYLE);
14624
+ documentStyle = Object.assign({}, documentStyle, DEFAULT_MODERN_DOCUMENT_STYLE, { pageSize: {
14625
+ ...DEFAULT_MODERN_DOCUMENT_STYLE.pageSize,
14626
+ width: modernPageWidth
14627
+ } });
14460
14628
  }
14461
14629
  const { pageNumberStart: global_pageNumberStart = 1, pageSize: global_pageSize = DEFAULT_PAGE_SIZE, pageOrient: global_pageOrient = _univerjs_core.PageOrientType.PORTRAIT, defaultHeaderId: global_defaultHeaderId, defaultFooterId: global_defaultFooterId, evenPageHeaderId: global_evenPageHeaderId, evenPageFooterId: global_evenPageFooterId, firstPageHeaderId: global_firstPageHeaderId, firstPageFooterId: global_firstPageFooterId, useFirstPageHeaderFooter: global_useFirstPageHeaderFooter, evenAndOddHeaders: global_evenAndOddHeaders, marginTop: global_marginTop = 0, marginBottom: global_marginBottom = 0, marginRight: global_marginRight = 0, marginLeft: global_marginLeft = 0, marginHeader: global_marginHeader = 0, marginFooter: global_marginFooter = 0, autoHyphenation = _univerjs_core.BooleanNumber.FALSE, doNotHyphenateCaps = _univerjs_core.BooleanNumber.FALSE, consecutiveHyphenLimit = Number.POSITIVE_INFINITY, hyphenationZone, renderConfig: global_renderConfig = {
14462
14630
  horizontalAlign: _univerjs_core.HorizontalAlign.LEFT,
@@ -14693,12 +14861,14 @@ function _createSkeletonHeaderFooter(ctx, headerOrFooterViewModel, sectionBreakC
14693
14861
  return page;
14694
14862
  }
14695
14863
  function createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, availableHeight = Number.POSITIVE_INFINITY, maxCellPageHeight = Number.POSITIVE_INFINITY) {
14696
- var _ref, _cellConfig$margin;
14864
+ var _ref, _cellConfig$margin, _cellConfig$columnSpa;
14697
14865
  const { lists, footerTreeMap, headerTreeMap, localeService, drawings } = sectionBreakConfig;
14698
14866
  const { skeletonResourceReference } = ctx;
14699
14867
  const { cellMargin, tableRows, tableColumns, tableId } = tableConfig;
14700
- const { start = { v: 10 }, end = { v: 10 }, top = { v: 5 }, bottom = { v: 5 } } = (_ref = (_cellConfig$margin = tableRows[row].tableCells[col].margin) !== null && _cellConfig$margin !== void 0 ? _cellConfig$margin : cellMargin) !== null && _ref !== void 0 ? _ref : {};
14701
- const pageWidth = tableColumns[col].size.width.v;
14868
+ const cellConfig = tableRows[row].tableCells[col];
14869
+ const { start = { v: 10 }, end = { v: 10 }, top = { v: 5 }, bottom = { v: 5 } } = (_ref = (_cellConfig$margin = cellConfig.margin) !== null && _cellConfig$margin !== void 0 ? _cellConfig$margin : cellMargin) !== null && _ref !== void 0 ? _ref : {};
14870
+ const columnSpan = Math.max(1, (_cellConfig$columnSpa = cellConfig.columnSpan) !== null && _cellConfig$columnSpa !== void 0 ? _cellConfig$columnSpa : 1);
14871
+ const pageWidth = tableColumns.slice(col, col + columnSpan).reduce((sum, column) => sum + column.size.width.v, 0);
14702
14872
  const pageHeight = maxCellPageHeight;
14703
14873
  const cellSectionBreakConfig = {
14704
14874
  lists,
@@ -14727,6 +14897,7 @@ function createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, avai
14727
14897
  };
14728
14898
  }
14729
14899
  function createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, tableConfig, row, col, availableHeight = Number.POSITIVE_INFINITY, maxCellPageHeight = Number.POSITIVE_INFINITY) {
14900
+ var _ctx$dataModel, _ctx$dataModel$getBod;
14730
14901
  const sectionNode = cellNode.children[0];
14731
14902
  const { page: areaPage, sectionBreakConfig: cellSectionBreakConfig } = createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, availableHeight, maxCellPageHeight);
14732
14903
  const { pages } = dealWithSection(ctx, viewModel, sectionNode, areaPage, cellSectionBreakConfig);
@@ -14735,9 +14906,36 @@ function createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, t
14735
14906
  p.segmentId = tableConfig.tableId;
14736
14907
  }
14737
14908
  updateBlockIndex(pages, cellNode.startIndex);
14909
+ applyTrailingCellBlockRangeSpaceBelow(pages, (_ctx$dataModel = ctx.dataModel) === null || _ctx$dataModel === void 0 || (_ctx$dataModel$getBod = _ctx$dataModel.getBody) === null || _ctx$dataModel$getBod === void 0 ? void 0 : _ctx$dataModel$getBod.call(_ctx$dataModel), cellNode.endIndex);
14738
14910
  updateInlineDrawingCoordsAndBorder(ctx, pages);
14911
+ expandCellPageHeightForInlineDrawings(pages);
14739
14912
  return pages;
14740
14913
  }
14914
+ function expandCellPageHeightForInlineDrawings(pages) {
14915
+ for (const page of pages) {
14916
+ var _page$skeDrawings;
14917
+ (_page$skeDrawings = page.skeDrawings) === null || _page$skeDrawings === void 0 || _page$skeDrawings.forEach((drawing) => {
14918
+ var _drawing$drawingOrigi, _drawing$aTop, _drawing$height;
14919
+ if (((_drawing$drawingOrigi = drawing.drawingOrigin) === null || _drawing$drawingOrigi === void 0 ? void 0 : _drawing$drawingOrigi.layoutType) !== _univerjs_core.PositionedObjectLayoutType.INLINE) return;
14920
+ const drawingBottom = ((_drawing$aTop = drawing.aTop) !== null && _drawing$aTop !== void 0 ? _drawing$aTop : 0) + ((_drawing$height = drawing.height) !== null && _drawing$height !== void 0 ? _drawing$height : 0);
14921
+ if (drawingBottom > page.height) page.height = drawingBottom;
14922
+ });
14923
+ }
14924
+ }
14925
+ function applyTrailingCellBlockRangeSpaceBelow(pages, body, cellEndIndex) {
14926
+ const blockRanges = body === null || body === void 0 ? void 0 : body.blockRanges;
14927
+ const trailingBlockRangeSpace = 28;
14928
+ if (!(blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.length)) return;
14929
+ for (const page of pages) {
14930
+ var _page$sections$at, _body$paragraphs;
14931
+ const lastLine = (_page$sections$at = page.sections.at(-1)) === null || _page$sections$at === void 0 || (_page$sections$at = _page$sections$at.columns.at(-1)) === null || _page$sections$at === void 0 ? void 0 : _page$sections$at.lines.at(-1);
14932
+ if (!lastLine) continue;
14933
+ const paragraphIndex = lastLine.paragraphIndex;
14934
+ if (!blockRanges.some((range) => range.startIndex < paragraphIndex && paragraphIndex < range.endIndex)) continue;
14935
+ if (body === null || body === void 0 || (_body$paragraphs = body.paragraphs) === null || _body$paragraphs === void 0 ? void 0 : _body$paragraphs.some((paragraph) => paragraph.startIndex > paragraphIndex && paragraph.startIndex < cellEndIndex)) continue;
14936
+ page.height += lastLine.spaceBelowApply || trailingBlockRangeSpace;
14937
+ }
14938
+ }
14741
14939
  function _getVerticalMargin(marginTB, headerOrFooter, pageHeight) {
14742
14940
  if (!headerOrFooter || headerOrFooter.sections[0].columns[0].lines.length === 0) return marginTB;
14743
14941
  const HeaderFooterPageHeight = headerOrFooter.height + headerOrFooter.marginTop + headerOrFooter.marginBottom;
@@ -15144,6 +15342,11 @@ function ___getLevelAndSuffix(levelAndSuffixPre) {
15144
15342
 
15145
15343
  //#endregion
15146
15344
  //#region src/components/docs/layout/block/paragraph/linebreaking.ts
15345
+ const BLOCK_LAYOUT_OUTER_SPACING_MAP = new Map([
15346
+ [_univerjs_core.DocumentBlockRangeType.CALLOUT, 34],
15347
+ [_univerjs_core.DocumentBlockRangeType.CODE, 32],
15348
+ [_univerjs_core.DocumentBlockRangeType.QUOTE, 24]
15349
+ ]);
15147
15350
  function _getListLevelAncestors(bullet, listLevel) {
15148
15351
  if (!bullet || !listLevel) return;
15149
15352
  const { listId, nestingLevel } = bullet;
@@ -15170,6 +15373,57 @@ function _updateListLevelAncestors(paragraph, bullet, bulletSkeleton, listLevel)
15170
15373
  cacheItem.splice(nestingLevel + 1);
15171
15374
  listLevel === null || listLevel === void 0 || listLevel.set(listId, cacheItem);
15172
15375
  }
15376
+ function _withMinSpacing(style, key, value) {
15377
+ var _current$v;
15378
+ const current = style[key];
15379
+ const nextValue = Math.max((_current$v = current === null || current === void 0 ? void 0 : current.v) !== null && _current$v !== void 0 ? _current$v : 0, value);
15380
+ style[key] = {
15381
+ ...current,
15382
+ v: nextValue
15383
+ };
15384
+ }
15385
+ function _getNextAdjacentBlockRange(blockRanges, blockRange) {
15386
+ return blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.filter((range) => range.startIndex > blockRange.endIndex).sort((left, right) => left.startIndex - right.startIndex)[0];
15387
+ }
15388
+ function _hasNextAdjacentLayoutBlockRange(blockRanges, blockRange) {
15389
+ const nextBlockRange = _getNextAdjacentBlockRange(blockRanges, blockRange);
15390
+ return nextBlockRange != null && BLOCK_LAYOUT_OUTER_SPACING_MAP.has(nextBlockRange.blockType) && nextBlockRange.startIndex === blockRange.endIndex + 1;
15391
+ }
15392
+ function _applyDefaultLayoutParagraphStyle(style, hasBlockRange) {
15393
+ if (style.lineSpacing == null) style.lineSpacing = _univerjs_core.DEFAULT_DOCUMENT_PARAGRAPH_LINE_SPACING;
15394
+ if (hasBlockRange) return;
15395
+ if (style.spaceAbove == null) style.spaceAbove = { v: _univerjs_core.DEFAULT_DOCUMENT_PARAGRAPH_SPACE_ABOVE };
15396
+ if (style.spaceBelow == null) style.spaceBelow = { v: _univerjs_core.DEFAULT_DOCUMENT_PARAGRAPH_SPACE_BELOW };
15397
+ }
15398
+ function _applyBlockRangeLayoutParagraphStyle(body, paragraph, paragraphStyle, shouldApplyDocumentDefaults) {
15399
+ var _body$paragraphs, _BLOCK_LAYOUT_OUTER_S;
15400
+ const style = _univerjs_core.Tools.deepClone(paragraphStyle);
15401
+ const blockRanges = body === null || body === void 0 ? void 0 : body.blockRanges;
15402
+ if (!(blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.length)) {
15403
+ if (shouldApplyDocumentDefaults) _applyDefaultLayoutParagraphStyle(style, false);
15404
+ return style;
15405
+ }
15406
+ const blockRange = blockRanges.find((range) => BLOCK_LAYOUT_OUTER_SPACING_MAP.has(range.blockType) && paragraph.startIndex > range.startIndex && paragraph.startIndex < range.endIndex);
15407
+ if (!blockRange) {
15408
+ if (shouldApplyDocumentDefaults) _applyDefaultLayoutParagraphStyle(style, false);
15409
+ return style;
15410
+ }
15411
+ _applyDefaultLayoutParagraphStyle(style, true);
15412
+ const blockParagraphs = ((_body$paragraphs = body === null || body === void 0 ? void 0 : body.paragraphs) !== null && _body$paragraphs !== void 0 ? _body$paragraphs : []).filter((item) => item.startIndex > blockRange.startIndex && item.startIndex < blockRange.endIndex).sort((left, right) => left.startIndex - right.startIndex);
15413
+ const firstParagraph = blockParagraphs[0];
15414
+ const lastParagraph = blockParagraphs[blockParagraphs.length - 1];
15415
+ const outerSpacing = (_BLOCK_LAYOUT_OUTER_S = BLOCK_LAYOUT_OUTER_SPACING_MAP.get(blockRange.blockType)) !== null && _BLOCK_LAYOUT_OUTER_S !== void 0 ? _BLOCK_LAYOUT_OUTER_S : 0;
15416
+ if ((firstParagraph === null || firstParagraph === void 0 ? void 0 : firstParagraph.startIndex) === paragraph.startIndex) _withMinSpacing(style, "spaceAbove", outerSpacing);
15417
+ if ((lastParagraph === null || lastParagraph === void 0 ? void 0 : lastParagraph.startIndex) === paragraph.startIndex && !_hasNextAdjacentLayoutBlockRange(blockRanges, blockRange)) _withMinSpacing(style, "spaceBelow", outerSpacing);
15418
+ return style;
15419
+ }
15420
+ function _shouldApplyDocumentDefaultParagraphStyle(viewModel) {
15421
+ var _viewModel$getSnapsho;
15422
+ const snapshot = (_viewModel$getSnapsho = viewModel.getSnapshot) === null || _viewModel$getSnapsho === void 0 ? void 0 : _viewModel$getSnapsho.call(viewModel);
15423
+ const documentFlavor = snapshot === null || snapshot === void 0 ? void 0 : snapshot.documentStyle.documentFlavor;
15424
+ if (snapshot == null) return true;
15425
+ return documentFlavor != null && documentFlavor !== _univerjs_core.DocumentFlavor.UNSPECIFIED;
15426
+ }
15173
15427
  function _getDrawingSkeletonFormat(drawingOrigin) {
15174
15428
  const { drawingId } = drawingOrigin;
15175
15429
  return {
@@ -15192,6 +15446,7 @@ function _getNextPageNumber(lastPage) {
15192
15446
  return lastPage.pageNumber + 1;
15193
15447
  }
15194
15448
  function lineBreaking(ctx, viewModel, shapedTextList, curPage, paragraphNode, sectionBreakConfig, tableSkeleton) {
15449
+ var _viewModel$getBody, _viewModel$getBody2;
15195
15450
  const { skeletonResourceReference } = ctx;
15196
15451
  const { lists, drawings = {}, localeService } = sectionBreakConfig;
15197
15452
  const { endIndex, blocks = [], children } = paragraphNode;
@@ -15208,7 +15463,7 @@ function lineBreaking(ctx, viewModel, shapedTextList, curPage, paragraphNode, se
15208
15463
  }
15209
15464
  const paragraphConfig = {
15210
15465
  paragraphIndex: endIndex,
15211
- paragraphStyle: _univerjs_core.Tools.deepClone(paragraphStyle),
15466
+ paragraphStyle: _applyBlockRangeLayoutParagraphStyle((_viewModel$getBody = (_viewModel$getBody2 = viewModel.getBody) === null || _viewModel$getBody2 === void 0 ? void 0 : _viewModel$getBody2.call(viewModel)) !== null && _viewModel$getBody !== void 0 ? _viewModel$getBody : null, paragraph, paragraphStyle, _shouldApplyDocumentDefaultParagraphStyle(viewModel)),
15212
15467
  paragraphNonInlineSkeDrawings,
15213
15468
  paragraphInlineSkeDrawings,
15214
15469
  skeTablesInParagraph: tableSkeleton ? [{
@@ -15768,6 +16023,22 @@ function TibetanHandler(index, charArray, viewModel, paragraphNode, sectionBreak
15768
16023
  glyphGroup: [createSkeletonWordGlyph(glyph.join(""), config)]
15769
16024
  };
15770
16025
  }
16026
+ function ThaiHandler(index, charArray, viewModel, paragraphNode, sectionBreakConfig, paragraph) {
16027
+ const config = getFontCreateConfig(index, viewModel, paragraphNode, sectionBreakConfig, paragraph);
16028
+ const glyph = [];
16029
+ let step = 0;
16030
+ for (let i = 0; i < charArray.length; i++) {
16031
+ const newChar = charArray[i];
16032
+ if (hasThai(newChar)) {
16033
+ glyph.push(newChar);
16034
+ step++;
16035
+ } else break;
16036
+ }
16037
+ return {
16038
+ step,
16039
+ glyphGroup: [createSkeletonWordGlyph(glyph.join(""), config)]
16040
+ };
16041
+ }
15771
16042
 
15772
16043
  //#endregion
15773
16044
  //#region src/components/docs/layout/block/paragraph/shaping.ts
@@ -15913,6 +16184,11 @@ function shaping(ctx, content, viewModel, paragraphNode, sectionBreakConfig, use
15913
16184
  shapedGlyphs.push(...glyphGroup);
15914
16185
  i += step;
15915
16186
  src = src.substring(step);
16187
+ } else if (hasThai(char)) {
16188
+ const { step, glyphGroup } = ThaiHandler(i, src, viewModel, paragraphNode, sectionBreakConfig, paragraph);
16189
+ shapedGlyphs.push(...glyphGroup);
16190
+ i += step;
16191
+ src = src.substring(step);
15916
16192
  } else {
15917
16193
  const { step, glyphGroup } = otherHandler(i, src, viewModel, paragraphNode, sectionBreakConfig, paragraph);
15918
16194
  shapedGlyphs.push(...glyphGroup);
@@ -16036,86 +16312,125 @@ function _pushPage(allCurrentSkeletonPages, blockSkeletonPages) {
16036
16312
  //#endregion
16037
16313
  //#region src/components/docs/layout/hyphenation/pattern-loaders.gen.ts
16038
16314
  const PATTERN_LOADERS = {
16039
- ["af"]: () => Promise.resolve().then(() => require("./af-Bsj1JSBP.js")),
16040
- ["as"]: () => Promise.resolve().then(() => require("./as-s7lqjieq.js")),
16041
- ["be"]: () => Promise.resolve().then(() => require("./be-L5eMFm5U.js")),
16042
- ["bg"]: () => Promise.resolve().then(() => require("./bg-DPu8oywG.js")),
16043
- ["bn"]: () => Promise.resolve().then(() => require("./bn-CIWO--x0.js")),
16044
- ["ca"]: () => Promise.resolve().then(() => require("./ca-C4gmkbL6.js")),
16045
- ["cop"]: () => Promise.resolve().then(() => require("./cop-BYQt2Eln.js")),
16046
- ["cs"]: () => Promise.resolve().then(() => require("./cs-psn0RDcR.js")),
16047
- ["cu"]: () => Promise.resolve().then(() => require("./cu-CI412h46.js")),
16048
- ["cy"]: () => Promise.resolve().then(() => require("./cy-u9h1j59b.js")),
16049
- ["da"]: () => Promise.resolve().then(() => require("./da-BQ70NE2J.js")),
16050
- ["de-1901"]: () => Promise.resolve().then(() => require("./de-1901-C5Xgq4-z.js")),
16051
- ["de-1996"]: () => Promise.resolve().then(() => require("./de-1996-BmpXhD5R.js")),
16052
- ["de-ch-1901"]: () => Promise.resolve().then(() => require("./de-ch-1901-mUpubovn.js")),
16053
- ["el-monoton"]: () => Promise.resolve().then(() => require("./el-monoton-1KLys64v.js")),
16054
- ["el-polyton"]: () => Promise.resolve().then(() => require("./el-polyton-C8sv-vqz.js")),
16055
- ["en-gb"]: () => Promise.resolve().then(() => require("./en-gb-DidBtNJX.js")),
16056
- ["en-us"]: () => Promise.resolve().then(() => require("./en-us-DKyh_RpA.js")),
16057
- ["es"]: () => Promise.resolve().then(() => require("./es-C1gCT0OW.js")),
16058
- ["et"]: () => Promise.resolve().then(() => require("./et-UwA1uq3o.js")),
16059
- ["eu"]: () => Promise.resolve().then(() => require("./eu-pizKbeo6.js")),
16060
- ["fi"]: () => Promise.resolve().then(() => require("./fi-bkmcjeIB.js")),
16061
- ["fr"]: () => Promise.resolve().then(() => require("./fr-DTRdyReV.js")),
16062
- ["fur"]: () => Promise.resolve().then(() => require("./fur-CzaEPYy4.js")),
16063
- ["ga"]: () => Promise.resolve().then(() => require("./ga-DfpmmLL7.js")),
16064
- ["gl"]: () => Promise.resolve().then(() => require("./gl-BvPLj87g.js")),
16065
- ["grc"]: () => Promise.resolve().then(() => require("./grc-CWjbj1rE.js")),
16066
- ["gu"]: () => Promise.resolve().then(() => require("./gu-B9b71pv0.js")),
16067
- ["hi"]: () => Promise.resolve().then(() => require("./hi-B0PM9Naw.js")),
16068
- ["hr"]: () => Promise.resolve().then(() => require("./hr-hhdjugdi.js")),
16069
- ["hsb"]: () => Promise.resolve().then(() => require("./hsb-CUC0Vhy0.js")),
16070
- ["hu"]: () => Promise.resolve().then(() => require("./hu-DNqLSdxp.js")),
16071
- ["hy"]: () => Promise.resolve().then(() => require("./hy-Cr37-HYR.js")),
16072
- ["ia"]: () => Promise.resolve().then(() => require("./ia-_xcaTvlU.js")),
16073
- ["id"]: () => Promise.resolve().then(() => require("./id-DTTt6JOe.js")),
16074
- ["is"]: () => Promise.resolve().then(() => require("./is-BlJOUdIf.js")),
16075
- ["it"]: () => Promise.resolve().then(() => require("./it-1kO7pboy.js")),
16076
- ["ka"]: () => Promise.resolve().then(() => require("./ka-06TLrBSU.js")),
16077
- ["kmr"]: () => Promise.resolve().then(() => require("./kmr-CqLLMgB-.js")),
16078
- ["kn"]: () => Promise.resolve().then(() => require("./kn-DsgCykwv.js")),
16079
- ["la"]: () => Promise.resolve().then(() => require("./la-BtfI1L1Y.js")),
16080
- ["la-x-classic"]: () => Promise.resolve().then(() => require("./la-x-classic-Csxxqk4A.js")),
16081
- ["la-x-liturgic"]: () => Promise.resolve().then(() => require("./la-x-liturgic-DP4lkHMh.js")),
16082
- ["lt"]: () => Promise.resolve().then(() => require("./lt-BLnhu8cj.js")),
16083
- ["lv"]: () => Promise.resolve().then(() => require("./lv-BWU1ykNC.js")),
16084
- ["ml"]: () => Promise.resolve().then(() => require("./ml-DCPEVUGQ.js")),
16085
- ["mn-cyrl"]: () => Promise.resolve().then(() => require("./mn-cyrl-R4Uzk2PR.js")),
16086
- ["mn-cyrl-x-lmc"]: () => Promise.resolve().then(() => require("./mn-cyrl-x-lmc-DcrbbdVO.js")),
16087
- ["mr"]: () => Promise.resolve().then(() => require("./mr-a95kT02n.js")),
16088
- ["mul-ethi"]: () => Promise.resolve().then(() => require("./mul-ethi-Ha-646Ih.js")),
16089
- ["nb"]: () => Promise.resolve().then(() => require("./nb-DVDq5SId.js")),
16090
- ["nl"]: () => Promise.resolve().then(() => require("./nl-xvtaATgd.js")),
16091
- ["nn"]: () => Promise.resolve().then(() => require("./nn-Dd3GYfsu.js")),
16092
- ["no"]: () => Promise.resolve().then(() => require("./no-Ccuz1dXv.js")),
16093
- ["oc"]: () => Promise.resolve().then(() => require("./oc-DMNrvVUu.js")),
16094
- ["or"]: () => Promise.resolve().then(() => require("./or-BBnbptii.js")),
16095
- ["pa"]: () => Promise.resolve().then(() => require("./pa-Bpqjl4TY.js")),
16096
- ["pi"]: () => Promise.resolve().then(() => require("./pi-Dw9S8R8a.js")),
16097
- ["pl"]: () => Promise.resolve().then(() => require("./pl-BxIw_3q_.js")),
16098
- ["pms"]: () => Promise.resolve().then(() => require("./pms-ts8oJNTo.js")),
16099
- ["pt"]: () => Promise.resolve().then(() => require("./pt-INYdw9le.js")),
16100
- ["rm"]: () => Promise.resolve().then(() => require("./rm-SrIsmyuH.js")),
16101
- ["ro"]: () => Promise.resolve().then(() => require("./ro--lDLf93Z.js")),
16102
- ["ru"]: () => Promise.resolve().then(() => require("./ru-CnviOn4F.js")),
16103
- ["sa"]: () => Promise.resolve().then(() => require("./sa--YzUfT9m.js")),
16104
- ["sh-cyrl"]: () => Promise.resolve().then(() => require("./sh-cyrl-C-Y7f9iS.js")),
16105
- ["sh-latn"]: () => Promise.resolve().then(() => require("./sh-latn-DE0Oa7St.js")),
16106
- ["sk"]: () => Promise.resolve().then(() => require("./sk-CL5uDe3A.js")),
16107
- ["sl"]: () => Promise.resolve().then(() => require("./sl-D8ckCfPR.js")),
16108
- ["sr-cyrl"]: () => Promise.resolve().then(() => require("./sr-cyrl-CZdv8WGY.js")),
16109
- ["sv"]: () => Promise.resolve().then(() => require("./sv-DYQd48Sm.js")),
16110
- ["ta"]: () => Promise.resolve().then(() => require("./ta-DOa0x7zq.js")),
16111
- ["te"]: () => Promise.resolve().then(() => require("./te-BtexCVtn.js")),
16112
- ["th"]: () => Promise.resolve().then(() => require("./th-BJUX68-0.js")),
16113
- ["tk"]: () => Promise.resolve().then(() => require("./tk-CEs8UQxA.js")),
16114
- ["tr"]: () => Promise.resolve().then(() => require("./tr-BMiKDMrF.js")),
16115
- ["uk"]: () => Promise.resolve().then(() => require("./uk-B8pzUYbn.js")),
16116
- ["zh-latn-pinyin"]: () => Promise.resolve().then(() => require("./zh-latn-pinyin-s8_52NaR.js"))
16315
+ ["af"]: () => Promise.resolve().then(() => require("./af-B2UUzO69.js")),
16316
+ ["as"]: () => Promise.resolve().then(() => require("./as-DbZDYp6O.js")),
16317
+ ["be"]: () => Promise.resolve().then(() => require("./be-BBx0lyG-.js")),
16318
+ ["bg"]: () => Promise.resolve().then(() => require("./bg-DeX16RKi.js")),
16319
+ ["bn"]: () => Promise.resolve().then(() => require("./bn-3fjitMC3.js")),
16320
+ ["ca"]: () => Promise.resolve().then(() => require("./ca-BxC8Zblv.js")),
16321
+ ["cop"]: () => Promise.resolve().then(() => require("./cop-TvdaSBlz.js")),
16322
+ ["cs"]: () => Promise.resolve().then(() => require("./cs-MSNfJH-L.js")),
16323
+ ["cu"]: () => Promise.resolve().then(() => require("./cu-7FYbjEBr.js")),
16324
+ ["cy"]: () => Promise.resolve().then(() => require("./cy-CPuxVqb_.js")),
16325
+ ["da"]: () => Promise.resolve().then(() => require("./da-BWsE849b.js")),
16326
+ ["de-1901"]: () => Promise.resolve().then(() => require("./de-1901-BYSTp3Fp.js")),
16327
+ ["de-1996"]: () => Promise.resolve().then(() => require("./de-1996-DWtCfm_A.js")),
16328
+ ["de-ch-1901"]: () => Promise.resolve().then(() => require("./de-ch-1901-rWVcF3cs.js")),
16329
+ ["el-monoton"]: () => Promise.resolve().then(() => require("./el-monoton-BEUGM9Fi.js")),
16330
+ ["el-polyton"]: () => Promise.resolve().then(() => require("./el-polyton-Bvh6HAfD.js")),
16331
+ ["en-gb"]: () => Promise.resolve().then(() => require("./en-gb-Dcrai7kY.js")),
16332
+ ["en-us"]: () => Promise.resolve().then(() => en_us_exports),
16333
+ ["es"]: () => Promise.resolve().then(() => require("./es-CVNdGI0L.js")),
16334
+ ["et"]: () => Promise.resolve().then(() => require("./et-7Rdfp2-O.js")),
16335
+ ["eu"]: () => Promise.resolve().then(() => require("./eu-DyEtVwHo.js")),
16336
+ ["fi"]: () => Promise.resolve().then(() => require("./fi-DzRES2Ke.js")),
16337
+ ["fr"]: () => Promise.resolve().then(() => require("./fr-DJMVMLCz.js")),
16338
+ ["fur"]: () => Promise.resolve().then(() => require("./fur-CzhK3vxZ.js")),
16339
+ ["ga"]: () => Promise.resolve().then(() => require("./ga-HXzOFdlG.js")),
16340
+ ["gl"]: () => Promise.resolve().then(() => require("./gl-C5TM79ih.js")),
16341
+ ["grc"]: () => Promise.resolve().then(() => require("./grc-CPQF-xFI.js")),
16342
+ ["gu"]: () => Promise.resolve().then(() => require("./gu-AqCkEYxo.js")),
16343
+ ["hi"]: () => Promise.resolve().then(() => require("./hi-DugLLbv4.js")),
16344
+ ["hr"]: () => Promise.resolve().then(() => require("./hr-LSMYFsyP.js")),
16345
+ ["hsb"]: () => Promise.resolve().then(() => require("./hsb-BlnRYHkg.js")),
16346
+ ["hu"]: () => Promise.resolve().then(() => require("./hu-Dwvtkpy7.js")),
16347
+ ["hy"]: () => Promise.resolve().then(() => require("./hy-BsG06_IV.js")),
16348
+ ["ia"]: () => Promise.resolve().then(() => require("./ia-BMOUZLGD.js")),
16349
+ ["id"]: () => Promise.resolve().then(() => require("./id-DhSs0vqq.js")),
16350
+ ["is"]: () => Promise.resolve().then(() => require("./is-iJhrS7Aw.js")),
16351
+ ["it"]: () => Promise.resolve().then(() => require("./it-Aam-BmsV.js")),
16352
+ ["ka"]: () => Promise.resolve().then(() => require("./ka-CfLSYpVb.js")),
16353
+ ["kmr"]: () => Promise.resolve().then(() => require("./kmr-DYCscIsi.js")),
16354
+ ["kn"]: () => Promise.resolve().then(() => require("./kn-OCEDIM_O.js")),
16355
+ ["la"]: () => Promise.resolve().then(() => require("./la-DFS3RPxE.js")),
16356
+ ["la-x-classic"]: () => Promise.resolve().then(() => require("./la-x-classic-BocVpbl6.js")),
16357
+ ["la-x-liturgic"]: () => Promise.resolve().then(() => require("./la-x-liturgic-CpZYm3b6.js")),
16358
+ ["lt"]: () => Promise.resolve().then(() => require("./lt-NC6HHzxn.js")),
16359
+ ["lv"]: () => Promise.resolve().then(() => require("./lv-BMFTm6cB.js")),
16360
+ ["ml"]: () => Promise.resolve().then(() => require("./ml-DDWi25Fi.js")),
16361
+ ["mn-cyrl"]: () => Promise.resolve().then(() => require("./mn-cyrl-TCUeX7is.js")),
16362
+ ["mn-cyrl-x-lmc"]: () => Promise.resolve().then(() => require("./mn-cyrl-x-lmc-BCmp3Ybn.js")),
16363
+ ["mr"]: () => Promise.resolve().then(() => require("./mr-1gjg-u15.js")),
16364
+ ["mul-ethi"]: () => Promise.resolve().then(() => require("./mul-ethi-B9a4BMM6.js")),
16365
+ ["nb"]: () => Promise.resolve().then(() => require("./nb-DS_J6lre.js")),
16366
+ ["nl"]: () => Promise.resolve().then(() => require("./nl-CBtSVLcv.js")),
16367
+ ["nn"]: () => Promise.resolve().then(() => require("./nn-DYJOn4Sh.js")),
16368
+ ["no"]: () => Promise.resolve().then(() => require("./no-C20NyT1P.js")),
16369
+ ["oc"]: () => Promise.resolve().then(() => require("./oc-CrKqER_F.js")),
16370
+ ["or"]: () => Promise.resolve().then(() => require("./or-ZqEtsnaq.js")),
16371
+ ["pa"]: () => Promise.resolve().then(() => require("./pa-BD3r0Teo.js")),
16372
+ ["pi"]: () => Promise.resolve().then(() => require("./pi-CQUwMUvz.js")),
16373
+ ["pl"]: () => Promise.resolve().then(() => require("./pl-CawofTLo.js")),
16374
+ ["pms"]: () => Promise.resolve().then(() => require("./pms-DMqDXwo-.js")),
16375
+ ["pt"]: () => Promise.resolve().then(() => require("./pt-BIiUaINZ.js")),
16376
+ ["rm"]: () => Promise.resolve().then(() => require("./rm-B_-8T7Y1.js")),
16377
+ ["ro"]: () => Promise.resolve().then(() => require("./ro-B2Xhfkgx.js")),
16378
+ ["ru"]: () => Promise.resolve().then(() => require("./ru-lj-rTTpe.js")),
16379
+ ["sa"]: () => Promise.resolve().then(() => require("./sa-D3h-cY2Z.js")),
16380
+ ["sh-cyrl"]: () => Promise.resolve().then(() => require("./sh-cyrl-0o7p_z-7.js")),
16381
+ ["sh-latn"]: () => Promise.resolve().then(() => require("./sh-latn-BTi9p-0q.js")),
16382
+ ["sk"]: () => Promise.resolve().then(() => require("./sk-D6mOX2KK.js")),
16383
+ ["sl"]: () => Promise.resolve().then(() => require("./sl-Bzz3gkvn.js")),
16384
+ ["sr-cyrl"]: () => Promise.resolve().then(() => require("./sr-cyrl-V07WO3rb.js")),
16385
+ ["sv"]: () => Promise.resolve().then(() => require("./sv-CyQXUuzx.js")),
16386
+ ["ta"]: () => Promise.resolve().then(() => require("./ta-Brwz0zYf.js")),
16387
+ ["te"]: () => Promise.resolve().then(() => require("./te-CgvirCa4.js")),
16388
+ ["th"]: () => Promise.resolve().then(() => require("./th-PlSNhaza.js")),
16389
+ ["tk"]: () => Promise.resolve().then(() => require("./tk-O54r2ybT.js")),
16390
+ ["tr"]: () => Promise.resolve().then(() => require("./tr-Dh1h3Dno.js")),
16391
+ ["uk"]: () => Promise.resolve().then(() => require("./uk-E2mCrVCU.js")),
16392
+ ["zh-latn-pinyin"]: () => Promise.resolve().then(() => require("./zh-latn-pinyin-C2RfFfDl.js"))
16117
16393
  };
16118
16394
 
16395
+ //#endregion
16396
+ //#region src/components/docs/layout/hyphenation/patterns/en-us.ts
16397
+ var en_us_exports = /* @__PURE__ */ __exportAll({ EnUs: () => EnUs });
16398
+ /**
16399
+ * Copyright 2023-present DreamNum Co., Ltd.
16400
+ *
16401
+ * Licensed under the Apache License, Version 2.0 (the "License");
16402
+ * you may not use this file except in compliance with the License.
16403
+ * You may obtain a copy of the License at
16404
+ *
16405
+ * http://www.apache.org/licenses/LICENSE-2.0
16406
+ *
16407
+ * Unless required by applicable law or agreed to in writing, software
16408
+ * distributed under the License is distributed on an "AS IS" BASIS,
16409
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16410
+ * See the License for the specific language governing permissions and
16411
+ * limitations under the License.
16412
+ */
16413
+ const EnUs = [
16414
+ "0004,004,001,003,005,0005,00005,000005,0002,002,0000005,0003,00003,00505,00034,0001,00055,00004,4,05,0055,04,42,03,02,2,404,3,044,01,0505,55,5,045,041,0033,000004,22,00504,5504,0042,1,21,41,402,405,4004,43,23,000054,303,3005,022,5004,000003,252,45,25,2004,000505,054,403,401,3002,0025,144,432,00054,34,12,234,0022,014,0304,012,143,503,0403,101,052,414,212,011,043,00002,0041,0024,05005,03003,00102,0404,04303,01004,0034,025,0044,00404,00025,0103,042,0205,412,104,54,344,433,5005,253,055,0402,3004,0043,204,505,454,0000004,00303,04004,552,201,4005,0255,52,444,14,44,02004,033,05004,00045,00013,0021,0405,00044,0054,50055,000303,00001,304,0204,11,301,232,122,00305,504,000043,0104,00052,000045,50004,0023,00033,00032,00202,5003,202,0401,0000505,214,102,032,000161,004101,00501,00301,0036,0052,00023,006101,006,00401,000521,0014,0063,00012,000501,000006,000604,000601,005001,005005,0010305,00006,003012,003005,0003011,0061,013,000021,000022,000105,00211,00062,00051,000112,006013,000011,0200306,1021,0050001,003003,2102,305,000015,01030005,000035,001011,00021,16330001,0234,030006,5020001,000001,00016,0031,021,21431,002305,0350014,0000012,000063,00101,106,105,00435,00063,0300061,00041,100306,003602,023,0503,0010011,10003,1005,30011,00031,0001001,0000061,0030003,30305,001201,0301,5000101,500101,00015,000401,000065,000016,0000402,0500002,000205,030201,500301,00014,5001,000002,00030011,01034,0300006,030213,00400304,050001,05003,000311,0634,00061,0006,00000604,00050013,00213,0030001,100003,000033,30002,00003632,0003004,050003,0000021,006303,0000006,00005005,30451,03001,00231,00056,00011,6,001001,00500001,03005,503005,0000010001,1002,003001,001065,300001,32011,32,0000003,0213001,0500053,021005,10001,0000011,0001041,0020016,100032,50011,0606,5002,3001,03002,0015001,0102,00003001,000000033,0000001,300101,300015,0101003,00000101,0100501,0101,0010033,00000362,000014,0005001,031",
16415
+ "{\".\":[{\"a\":[{\"c\":[{\"h\":0}],\"d\":[{\"d\":[{\"e\":[{\"r\":1}]}]}],\"f\":[{\"t\":2}],\"l\":[{\"t\":3}],\"m\":[{\"a\":[{\"t\":4}]}],\"n\":[{\"c\":4,\"g\":0,\"i\":[{\"m\":5}],\"t\":[{\"e\":3,\"i\":[{\"s\":6}]},0]}],\"r\":[{\"s\":4,\"t\":[{\"i\":[{\"e\":1}],\"y\":1}]}],\"s\":[{\"c\":3,\"p\":2,\"s\":2,\"t\":[{\"e\":[{\"r\":7}]}]}],\"t\":[{\"o\":[{\"m\":6}]}],\"u\":[{\"d\":2}],\"v\":[{\"i\":1}],\"w\":[{\"n\":0}]}],\"b\":[{\"a\":[{\"g\":1,\"n\":[{\"a\":4}],\"s\":[{\"e\":0}]}],\"e\":[{\"r\":[{\"a\":4},0],\"s\":[{\"m\":3,\"t\":[{\"o\":4}]}]}],\"r\":[{\"i\":8}],\"u\":[{\"t\":[{\"t\":[{\"i\":0}]}]}]}],\"c\":[{\"a\":[{\"m\":[{\"p\":[{\"e\":0}]}],\"n\":[{\"c\":5}],\"p\":[{\"a\":[{\"b\":6}]}],\"r\":[{\"o\":[{\"l\":5}]}],\"t\":1}],\"e\":[{\"l\":[{\"a\":1}]}],\"h\":[{\"i\":[{\"l\":[{\"l\":[{\"i\":7}]}]}]},1],\"i\":[{\"t\":[{\"r\":5}]},9],\"o\":[{\"e\":3,\"r\":[{\"n\":[{\"e\":[{\"r\":5}]}]},1],\"n\":[{\"g\":[{\"r\":5}]}]}]}],\"d\":[{\"e\":[{\"m\":[{\"o\":[{\"i\":1}]}],\"o\":3,\"r\":[{\"a\":3,\"i\":[{\"v\":[{\"a\":4}]},3]}],\"s\":[{\"c\":0}]}],\"i\":[{\"c\":[{\"t\":[{\"i\":[{\"o\":10}]}]}]}],\"o\":[{\"t\":1}],\"u\":[{\"c\":1,\"m\":[{\"b\":6}]}],\"r\":[{\"i\":[{\"v\":67}]}]}],\"e\":[{\"a\":[{\"r\":[{\"t\":[{\"h\":7}]}],\"s\":[{\"i\":11}]}],\"b\":1,\"e\":[{\"r\":0}],\"g\":9,\"l\":[{\"d\":4,\"e\":[{\"m\":3}]}],\"n\":[{\"a\":[{\"m\":12}],\"g\":3,\"s\":3}],\"q\":[{\"u\":[{\"i\":[{\"t\":13}]}]}],\"r\":[{\"r\":[{\"i\":1}]}],\"s\":3,\"u\":[{\"l\":[{\"e\":[{\"r\":1}]}]},3],\"y\":[{\"e\":5}],\"t\":[{\"h\":[{\"y\":[{\"l\":162}]}]}],\"v\":[{\"e\":[{\"r\":[{\"s\":[{\"i\":[{\"b\":158}]}]}]}]},9]}],\"f\":[{\"e\":[{\"s\":11}],\"o\":[{\"r\":[{\"m\":[{\"e\":[{\"r\":5}]}]}]}]}],\"g\":[{\"a\":[{\"s\":[{\"o\":[{\"m\":163}]}]},9],\"e\":[{\"n\":[{\"t\":14}],\"o\":[{\"g\":4,\"m\":[{\"e\":1}],\"t\":164}]},9],\"i\":[{\"a\":4,\"b\":1}],\"o\":[{\"r\":1}]}],\"h\":[{\"a\":[{\"n\":[{\"d\":[{\"i\":6}],\"k\":5}]}],\"e\":[{\"r\":[{\"o\":[{\"i\":6,\"e\":3}]}],\"s\":11,\"t\":11,\"m\":[{\"o\":165}],\"p\":[{\"a\":166}]},9],\"i\":[{\"b\":3,\"e\":[{\"r\":3}]}],\"o\":[{\"n\":[{\"e\":[{\"y\":5}],\"o\":11}],\"v\":5}]}],\"i\":[{\"d\":[{\"l\":1,\"o\":[{\"l\":12}]}],\"m\":[{\"m\":3,\"p\":[{\"i\":[{\"n\":4}]}]}],\"n\":[{\"c\":[{\"i\":3}],\"e\":8,\"k\":9,\"s\":3,\"u\":[{\"t\":167}]},2],\"r\":[{\"r\":4}],\"s\":[{\"i\":1}]}],\"j\":[{\"u\":[{\"r\":3}]}],\"l\":[{\"a\":[{\"c\":[{\"y\":1}],\"m\":1,\"t\":[{\"e\":[{\"r\":5}],\"h\":6}]}],\"e\":[{\"g\":[{\"e\":5}],\"n\":0,\"p\":5,\"v\":15,\"i\":[{\"c\":[{\"e\":[{\"s\":170}]}]}]},9],\"i\":[{\"g\":[{\"a\":5},1],\"n\":9,\"o\":3,\"t\":1}]}],\"m\":[{\"a\":[{\"g\":[{\"a\":16}],\"l\":[{\"o\":5}],\"n\":[{\"a\":5}],\"r\":[{\"t\":[{\"i\":5}]}]}],\"e\":[{\"r\":[{\"c\":11}],\"t\":[{\"e\":[{\"r\":4}],\"a\":[{\"l\":[{\"a\":0}]}]}],\"g\":[{\"a\":[{\"l\":171}]}]},9],\"i\":[{\"s\":[{\"t\":[{\"i\":6}],\"e\":[{\"r\":[{\"s\":173}]}]},15],\"m\":[{\"i\":[{\"c\":172}]}]}],\"o\":[{\"n\":[{\"e\":11}],\"r\":[{\"o\":3}]}],\"u\":[{\"t\":[{\"a\":[{\"b\":6},4]}]}]}],\"n\":[{\"i\":[{\"c\":1}],\"e\":[{\"o\":[{\"f\":174}]}],\"o\":[{\"e\":[{\"t\":[{\"h\":15}]}],\"n\":[{\"e\":[{\"m\":175}]}]}]}],\"o\":[{\"d\":[{\"d\":5},9],\"f\":[{\"t\":[{\"e\":4}]}],\"r\":[{\"a\":[{\"t\":[{\"o\":4}]}],\"c\":3,\"d\":2,\"t\":3}],\"s\":[{\"t\":[{\"l\":1}]},3],\"t\":[{\"h\":11}],\"u\":[{\"t\":11}]}],\"p\":[{\"e\":[{\"d\":[{\"a\":[{\"l\":5}]}],\"t\":[{\"e\":4,\"i\":[{\"t\":4}]}]}],\"i\":[{\"e\":1,\"o\":[{\"n\":5}],\"t\":9}],\"r\":[{\"e\":[{\"m\":11,\"a\":[{\"m\":15}]}]}],\"o\":[{\"l\":[{\"y\":[{\"s\":137}]}],\"s\":[{\"t\":[{\"a\":[{\"m\":137}]}]}]}]}],\"r\":[{\"a\":[{\"c\":1,\"n\":[{\"t\":0}],\"t\":[{\"i\":[{\"o\":[{\"n\":[{\"a\":7}]}]}]}],\"v\":[{\"e\":[{\"n\":[{\"o\":176}]}]}]}],\"e\":[{\"e\":[{\"c\":173},8],\"m\":[{\"i\":[{\"t\":4}]}],\"s\":[{\"t\":[{\"a\":[{\"t\":4}]}]},8]}],\"i\":[{\"g\":1,\"t\":[{\"u\":5}]}],\"o\":[{\"q\":1,\"s\":[{\"t\":5}],\"w\":[{\"d\":5}]}],\"u\":[{\"d\":1}]}],\"s\":[{\"c\":[{\"i\":[{\"e\":11}]}],\"e\":[{\"l\":[{\"f\":6,\"l\":6}],\"n\":9,\"r\":[{\"i\":[{\"e\":4}]}],\"m\":[{\"i\":[{\"c\":0,\"d\":177,\"p\":36,\"r\":36,\"s\":178,\"v\":36},6]}]}],\"h\":9,\"i\":[{\"n\":[{\"g\":17}]},9],\"t\":[{\"a\":[{\"b\":[{\"l\":5}]}]},1],\"y\":9,\"p\":[{\"h\":[{\"i\":[{\"n\":179}]}],\"i\":[{\"n\":[{\"o\":137}]}]}]}],\"t\":[{\"a\":[{\"p\":[{\"e\":[{\"s\":[{\"t\":[{\"r\":180}]}]}]}]},1],\"e\":[{\"n\":[{\"a\":[{\"n\":5}]}],\"l\":[{\"e\":[{\"g\":[{\"r\":3}]}]}]},1],\"h\":9,\"i\":[{\"l\":0,\"m\":[{\"o\":16}],\"n\":[{\"g\":17,\"k\":5}]},9],\"o\":[{\"n\":[{\"a\":0}],\"p\":[{\"i\":5,\"o\":[{\"g\":170}]},1],\"u\":[{\"s\":5}],\"q\":9}],\"r\":[{\"i\":[{\"b\":[{\"u\":[{\"t\":6}]}]}]}]}],\"u\":[{\"n\":[{\"a\":[{\"t\":[{\"t\":144}]},2],\"c\":[{\"e\":3}],\"d\":[{\"e\":[{\"r\":7}]}],\"e\":[{\"r\":[{\"r\":181}]},2],\"k\":4,\"o\":4,\"u\":3}],\"p\":3,\"r\":[{\"e\":11}],\"s\":[{\"a\":4}]}],\"v\":[{\"e\":[{\"n\":[{\"d\":[{\"e\":0}]}],\"r\":[{\"a\":4}]}],\"i\":[{\"c\":[{\"a\":[{\"r\":151}]}]}]}],\"w\":[{\"i\":[{\"l\":[{\"i\":5}]}],\"e\":[{\"b\":[{\"l\":131}]}]}],\"y\":[{\"e\":1}],\"k\":[{\"i\":[{\"l\":[{\"n\":[{\"i\":168}]}]}],\"o\":[{\"r\":[{\"t\":[{\"e\":169}]}]}]}]}],\"a\":[{\"b\":[{\".\":18,\"a\":[{\"l\":19,\"n\":19}],\"e\":[{\"r\":[{\"d\":4}]},8],\"i\":[{\"a\":5,\"t\":[{\"a\":[{\"b\":13}]}]}],\"l\":[{\"a\":[{\"t\":4}]}],\"o\":[{\"l\":[{\"i\":[{\"z\":20,\"c\":19}]}]}],\"r\":[{\"o\":[{\"g\":4}]},18],\"u\":[{\"l\":3}]}],\"c\":[{\"a\":[{\"r\":[{\"d\":4,\"o\":4},21],\"b\":[{\"l\":24}]}],\"e\":[{\"o\":[{\"u\":19}],\"r\":2}],\"h\":[{\"e\":[{\"t\":19}]}],\"i\":[{\"e\":23,\"n\":2,\"o\":23},22],\"r\":[{\"o\":[{\"b\":4}]}],\"t\":[{\"i\":[{\"f\":5}]}],\"u\":[{\"l\":3,\"m\":1}]}],\"d\":[{\"d\":[{\"i\":[{\"n\":1}]}],\"e\":[{\"r\":[{\".\":4}]}],\"i\":[{\"a\":23,\"c\":[{\"a\":3}],\"e\":[{\"r\":0}],\"o\":23,\"t\":23,\"u\":19},25],\"l\":[{\"e\":1}],\"o\":[{\"w\":3}],\"r\":[{\"a\":[{\"n\":4}]}],\"s\":[{\"u\":1}],\"u\":[{\"c\":23,\"m\":4},18]},24],\"e\":[{\"r\":[{\"i\":[{\"e\":17}]},1]}],\"f\":[{\"f\":[{\"i\":[{\"s\":[{\"h\":170}]}]},0]},24],\"g\":[{\"a\":[{\"b\":21,\"n\":0}],\"e\":[{\"l\":[{\"l\":4}],\"o\":0,\"u\":18}],\"i\":2,\"l\":26,\"n\":2,\"o\":[{\"g\":27,\"n\":[{\"i\":3}]},24],\"u\":[{\"e\":[{\"r\":19}],\"l\":4}],\"y\":21}],\"h\":[{\"a\":23,\"e\":23,\"l\":1,\"o\":23}],\"i\":[{\"a\":19,\"c\":[{\".\":23}],\"l\":[{\"y\":4}],\"n\":[{\"i\":[{\"n\":5}],\"o\":5},28],\"t\":[{\"e\":[{\"n\":5}]}]},9],\"j\":29,\"k\":[{\"e\":[{\"n\":2}]}],\"l\":[{\"a\":[{\"b\":4,\"d\":3,\"r\":21}],\"d\":[{\"i\":18}],\"e\":[{\"n\":[{\"d\":3,\"t\":[{\"i\":21}]}],\"o\":30},25],\"i\":[{\"a\":[{\".\":1}],\"e\":0},2],\"l\":[{\"e\":[{\"v\":4}],\"i\":[{\"c\":18}]}],\"m\":18,\"o\":[{\"g\":[{\".\":19}]}],\"y\":[{\".\":21,\"s\":[{\"t\":31},18],\"t\":32,\"z\":27}]}],\"m\":[{\"a\":[{\"b\":4,\"g\":3,\"r\":[{\"a\":5}],\"s\":[{\"c\":4}],\"t\":[{\"i\":[{\"s\":21}],\"o\":33}]},18],\"e\":[{\"r\":[{\"a\":4}],\"n\":[{\"t\":[{\"a\":[{\"b\":182}]}]}]}],\"i\":[{\"c\":3,\"f\":4,\"l\":[{\"y\":4}],\"n\":[{\"o\":0},2]}],\"o\":[{\"n\":19,\"r\":[{\"i\":6}]},24],\"p\":[{\"e\":[{\"n\":5}]}]}],\"n\":[{\"a\":[{\"g\":[{\"e\":3}],\"l\":[{\"y\":[{\"s\":183},27]}],\"r\":[{\"c\":3,\"i\":17},23],\"t\":[{\"i\":23}]}],\"d\":[{\"e\":[{\"s\":17}],\"i\":[{\"s\":3}],\"l\":2,\"o\":[{\"w\":1}]},18],\"e\":[{\"e\":19,\"n\":23,\"s\":[{\"t\":[{\".\":4}]}],\"u\":23}],\"g\":[{\"i\":[{\"e\":5}],\"l\":2},25],\"i\":[{\"c\":34,\"e\":[{\"s\":23}],\"f\":35,\"m\":[{\"e\":1,\"i\":19}],\"n\":[{\"e\":19}],\"o\":3,\"p\":23,\"s\":[{\"h\":3}],\"t\":3,\"u\":23}],\"k\":[{\"l\":[{\"i\":1}]}],\"n\":[{\"i\":[{\"z\":32}]}],\"o\":[{\"t\":[{\"h\":7},4],\"a\":[{\"c\":148}]},0],\"s\":[{\"a\":9,\"c\":[{\"o\":1}],\"n\":1,\"p\":[{\"o\":11},9],\"t\":1,\"u\":[{\"r\":1}],\"g\":[{\"r\":5}],\"v\":11}],\"t\":[{\"a\":[{\"l\":36}],\"i\":[{\"e\":1,\"d\":137,\"n\":184,\"r\":[{\"e\":137}]}],\"o\":18,\"r\":9,\"w\":1}],\"u\":[{\"a\":3,\"l\":3,\"r\":19}]},24],\"o\":18,\"p\":[{\"a\":[{\"r\":17,\"t\":4}],\"e\":[{\"r\":[{\"o\":4}],\"a\":[{\"b\":[{\"l\":[{\"e\":132}]}]}]}],\"h\":[{\"e\":[{\"r\":23}],\"i\":18}],\"i\":[{\"l\":[{\"l\":[{\"a\":[{\"r\":4},21]}]}],\"n\":3,\"t\":[{\"a\":3,\"u\":23}]}],\"l\":24,\"o\":[{\"c\":6,\"l\":[{\"a\":4}],\"r\":[{\"i\":6}],\"s\":[{\"t\":12}]}],\"s\":[{\"e\":[{\"s\":5}]}],\"u\":23}],\"q\":[{\"u\":[{\"e\":6}]}],\"r\":[{\"a\":[{\"c\":[{\"t\":3}],\"d\":[{\"e\":19,\"i\":[{\"s\":4}]}],\"l\":3,\"m\":[{\"e\":[{\"t\":[{\"e\":19}]}]}],\"n\":[{\"g\":17}],\"p\":11,\"t\":[{\"i\":[{\"o\":19,\"v\":4}]},1],\"u\":19,\"v\":38,\"w\":17}],\"b\":[{\"a\":[{\"l\":36}]}],\"c\":[{\"h\":[{\"a\":[{\"n\":1}],\"e\":[{\"t\":185}]}]}],\"d\":[{\"i\":[{\"n\":[{\"e\":4}]}],\"r\":1}],\"e\":[{\"a\":[{\"s\":4}],\"e\":23,\"n\":[{\"t\":3}],\"s\":[{\"s\":19}]}],\"f\":[{\"i\":1,\"l\":1}],\"i\":[{\"a\":[{\"l\":4,\"n\":3}],\"e\":[{\"t\":23}],\"m\":1,\"n\":[{\"a\":[{\"t\":4}]}],\"o\":3,\"z\":9},2],\"m\":[{\"i\":9}],\"o\":[{\"d\":20,\"n\":[{\"i\":19}],\"o\":23}],\"p\":9,\"q\":3,\"r\":[{\"e\":17,\"a\":[{\"n\":[{\"g\":[{\"e\":9}]}]}]}],\"s\":[{\"a\":1,\"h\":9}]},37],\"s\":[{\".\":18,\"a\":[{\"b\":1,\"n\":[{\"t\":3}]}],\"h\":[{\"i\":17}],\"i\":[{\"a\":[{\".\":19}],\"b\":23,\"c\":23,\"t\":39}],\"k\":[{\"i\":11}],\"l\":1,\"o\":[{\"c\":21}],\"p\":[{\"h\":4}],\"s\":[{\"h\":1}],\"t\":[{\"e\":[{\"n\":3}],\"r\":2}],\"u\":[{\"r\":[{\"a\":6}]}],\"y\":[{\"m\":[{\"p\":[{\"t\":[{\"o\":[{\"t\":4}]}]}]}]}]}],\"t\":[{\"a\":[{\"b\":[{\"l\":3}],\"c\":4,\"l\":[{\"o\":3}],\"p\":4},24],\"e\":[{\"c\":[{\"h\":4},5],\"g\":[{\"o\":3}],\"n\":[{\".\":3}],\"r\":[{\"a\":3,\"n\":[{\"a\":19},6]}],\"s\":[{\"t\":3}],\"v\":4}],\"h\":[{\"e\":[{\"m\":5,\"n\":19,\"r\":[{\"o\":[{\"s\":186}]}]}],\"o\":[{\"m\":5},1]},18],\"i\":[{\".\":18,\"a\":19,\"b\":20,\"c\":2,\"f\":3,\"o\":[{\"n\":[{\"a\":[{\"r\":7}]}]}],\"t\":[{\"u\":3}]}],\"o\":[{\"g\":21,\"m\":[{\"i\":[{\"z\":4}]},24],\"p\":21,\"s\":21}],\"r\":[{\"o\":[{\"p\":4}]},29],\"s\":[{\"k\":1}],\"t\":[{\"a\":[{\"g\":1}],\"e\":[{\"s\":[{\".\":170}]},4],\"h\":1}],\"u\":[{\"a\":4,\"e\":4,\"l\":3,\"r\":[{\"a\":3}]},24],\"y\":24}],\"u\":[{\"b\":1,\"g\":[{\"h\":[{\"t\":[{\"l\":17}]},12],\"u\":3}],\"l\":[{\"i\":[{\"f\":13}]},40],\"n\":[{\"d\":5}],\"r\":3,\"s\":[{\"i\":[{\"b\":4}]}],\"t\":[{\"e\":[{\"n\":5}],\"h\":2}]}],\"v\":[{\"a\":[{\"g\":3,\"n\":19},24],\"e\":[{\"n\":[{\"o\":0}],\"r\":[{\"a\":3,\"n\":4,\"y\":4}]}],\"i\":[{\"e\":[{\"r\":0}],\"g\":3,\"o\":[{\"u\":3}]},2],\"o\":[{\"c\":4,\"r\":29}]}],\"w\":[{\"a\":[{\"y\":27}],\"i\":3,\"l\":[{\"y\":1}],\"s\":0}],\"x\":[{\"i\":[{\"c\":1,\"d\":1}]}],\"y\":[{\"a\":[{\"l\":4}],\"e\":0,\"s\":0}],\"z\":[{\"i\":[{\"e\":[{\"r\":0}]}],\"z\":[{\"i\":5}]}]}],\"b\":[{\"a\":[{\".\":32,\"d\":[{\"g\":[{\"e\":[{\"r\":5}]}]}],\"g\":[{\"e\":1}],\"l\":[{\"a\":15}],\"n\":[{\"d\":[{\"a\":[{\"g\":5}]}],\"e\":0,\"i\":11}],\"r\":[{\"b\":[{\"i\":7}],\"i\":[{\"a\":17}],\"o\":[{\"n\":[{\"i\":[{\"e\":187}]}]}]}],\"s\":[{\"s\":[{\"i\":0}]}],\"t\":[{\"h\":[{\"y\":2}]},41],\"z\":1,\"c\":[{\"k\":[{\"e\":[{\"r\":[{\".\":84}]}]}]}]}],\"b\":[{\"e\":[{\"r\":23},24],\"i\":[{\"n\":[{\"a\":0}],\"t\":0}]},42],\"d\":43,\"e\":[{\".\":18,\"a\":[{\"k\":17,\"t\":12}],\"d\":[{\"a\":3,\"e\":3,\"i\":3},44],\"g\":[{\"i\":3,\"u\":4}],\"l\":[{\"i\":2,\"o\":3},41],\"m\":45,\"n\":[{\"i\":[{\"g\":4}],\"u\":4}],\"s\":[{\"p\":3,\"t\":[{\"r\":4}]},46],\"t\":[{\"i\":[{\"z\":5}],\"r\":4,\"w\":3},27],\"w\":3,\"y\":[{\"o\":4}],\"v\":[{\"i\":[{\"e\":9}]}]}],\"f\":25,\"h\":47,\"i\":[{\"b\":9,\"d\":[{\"i\":[{\"f\":167}]},1],\"e\":[{\"n\":4,\"r\":1},27],\"f\":48,\"l\":[{\"i\":[{\"z\":3}],\"l\":[{\"a\":[{\"b\":8}]}]},41],\"n\":[{\"a\":[{\"r\":49}],\"d\":0,\"e\":[{\"t\":4}]}],\"o\":[{\"g\":[{\"r\":3}],\"u\":4,\"m\":5,\"r\":[{\"b\":2,\"h\":15}]}],\"t\":[{\"i\":[{\"o\":50,\"v\":[{\"e\":188}]}],\"r\":3,\"u\":[{\"a\":51}],\"z\":19},9]}],\"j\":29,\"k\":1,\"l\":[{\"a\":[{\"t\":[{\"h\":7}],\"n\":[{\"d\":189}]}],\"e\":[{\".\":21,\"n\":17,\"s\":[{\"p\":32}]}],\"i\":[{\"s\":23,\"n\":[{\"d\":189}]}],\"o\":[{\"n\":[{\"d\":190}]},21],\"u\":[{\"n\":[{\"t\":17}]}]},52],\"m\":43,\"n\":[{\"e\":[{\"g\":5}]},47],\"o\":[{\"d\":[{\"i\":11},27],\"e\":1,\"l\":[{\"i\":[{\"c\":11}]}],\"m\":[{\"b\":[{\"i\":0}]}],\"n\":[{\"a\":[{\"t\":5},0]}],\"o\":27,\"r\":[{\".\":32,\"a\":43,\"d\":5,\"e\":32,\"i\":32,\"n\":[{\"o\":191}]}],\"s\":53,\"t\":[{\"a\":19,\"h\":6,\"o\":1,\"u\":[{\"l\":192}]}],\"u\":[{\"n\":[{\"d\":54}]}]}],\"p\":18,\"r\":[{\"i\":[{\"t\":18}],\"o\":[{\"t\":[{\"h\":54}]}],\"u\":[{\"s\":[{\"q\":17}]}]}],\"s\":[{\"o\":[{\"r\":17}]},55],\"t\":[{\"l\":1,\"o\":21,\"r\":23},25],\"u\":[{\"f\":[{\"f\":[{\"e\":[{\"r\":0}]}]}],\"g\":[{\"a\":1}],\"l\":[{\"i\":3}],\"m\":[{\"i\":17}],\"n\":[{\"t\":[{\"i\":17}]},1],\"r\":[{\"e\":3}],\"s\":[{\"i\":[{\"e\":[{\"r\":193,\"s\":193},5]}],\"s\":[{\"e\":17,\"i\":[{\"n\":[{\"g\":17}]}]}],\"t\":32}],\"t\":[{\"a\":18,\"i\":[{\"o\":27}],\"o\":19,\"e\":[{\"d\":[{\".\":8}]}],\"t\":[{\"e\":[{\"d\":0}]}]}]}],\"v\":29,\"w\":56,\"y\":[{\".\":32,\"s\":0}]}],\"c\":[{\"a\":[{\"b\":[{\"i\":[{\"n\":11}],\"l\":2}],\"c\":[{\"h\":17}],\"d\":[{\"e\":[{\"n\":4,\"m\":194}]}],\"g\":46,\"h\":57,\"l\":[{\"a\":[{\"t\":3}],\"l\":[{\"a\":0,\"i\":[{\"n\":6}]}],\"o\":18}],\"n\":[{\"d\":5,\"e\":0,\"i\":[{\"c\":0,\"s\":5,\"z\":11}],\"t\":[{\"y\":0}],\"y\":17}],\"p\":[{\"e\":[{\"r\":4}]}],\"r\":[{\"o\":[{\"m\":5}]}],\"s\":[{\"t\":[{\"e\":[{\"r\":6}],\"i\":[{\"g\":5}]}],\"y\":18}],\"t\":[{\"h\":1,\"i\":[{\"v\":18}],\"a\":[{\"s\":195}]}],\"v\":[{\"a\":[{\"l\":5}]}]},41],\"c\":[{\"h\":[{\"a\":6}],\"i\":[{\"a\":0}],\"o\":[{\"m\":[{\"p\":[{\"a\":10}]}],\"n\":17,\"u\":[{\"t\":12}]}]},23],\"e\":[{\".\":25,\"d\":[{\".\":18,\"e\":[{\"n\":18}]}],\"i\":27,\"l\":[{\".\":32,\"l\":27}],\"n\":[{\"c\":27,\"e\":58,\"i\":18,\"t\":27},41],\"p\":27,\"r\":[{\"a\":[{\"m\":4}]}],\"s\":[{\"a\":18,\"s\":[{\"i\":[{\"b\":59},27]}],\"t\":5}],\"t\":[{\"a\":60},0],\"w\":0}],\"h\":[{\".\":18,\"a\":[{\"b\":61,\"n\":[{\"i\":[{\"c\":32,\"s\":20}]}]}],\"e\":[{\"a\":[{\"p\":54}],\"d\":18,\"l\":[{\"o\":5}],\"m\":[{\"i\":27}],\"n\":[{\"e\":4}],\"r\":[{\".\":3,\"s\":3}]},8],\"i\":[{\"n\":[{\"e\":[{\".\":32,\"s\":[{\"s\":4}]}],\"i\":32},62],\"o\":32,\"t\":27,\"z\":8,\"e\":[{\"v\":[{\"o\":6}]}]}],\"o\":63,\"t\":[{\"i\":1}],\"s\":[{\".\":18,\"h\":[{\"u\":11}]}]},25],\"i\":[{\"a\":[{\"b\":64,\"r\":5},27],\"c\":4,\"e\":[{\"r\":18}],\"f\":[{\"i\":[{\"c\":[{\".\":32}]}]}],\"i\":18,\"l\":[{\"a\":1,\"i\":27}],\"m\":25,\"n\":[{\"a\":[{\"t\":27},21],\"e\":[{\"m\":11}],\"g\":[{\".\":19},29],\"o\":32,\"q\":8},25],\"o\":[{\"n\":17}],\"p\":[{\"e\":18,\"h\":3,\"i\":[{\"c\":18}]}],\"s\":[{\"t\":[{\"a\":18,\"i\":18}]}],\"t\":[{\"i\":[{\"z\":11}]},42],\"z\":32,\"g\":[{\"a\":[{\"r\":152}]}]},41],\"k\":[{\"i\":3},2],\"l\":[{\"a\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":[{\"o\":19}]}]}],\"e\":32},18]}],\"e\":[{\"m\":0,\"a\":[{\"r\":0}]}],\"i\":[{\"c\":18,\"m\":17}],\"y\":0},65],\"n\":19,\"o\":[{\"a\":[{\"g\":4}],\"e\":8,\"g\":[{\"r\":1},25],\"i\":[{\"n\":[{\"c\":3}]},0],\"l\":[{\"i\":5,\"o\":[{\"r\":11},32]}],\"m\":[{\"e\":[{\"r\":5}]}],\"n\":[{\"a\":0,\"e\":21,\"g\":11,\"t\":5}],\"p\":[{\"a\":3,\"i\":[{\"c\":11}],\"l\":1,\"h\":[{\"o\":[{\"n\":196}]}]}],\"r\":[{\"b\":18,\"o\":[{\"n\":12}]}],\"s\":[{\"e\":0}],\"v\":[{\"e\":17},15],\"w\":[{\"a\":5}],\"z\":[{\"e\":5,\"i\":4}],\"u\":[{\"s\":[{\"t\":[{\"i\":84}]}]}]},41],\"q\":29,\"r\":[{\"a\":[{\"s\":[{\"t\":6}],\"t\":[{\".\":32,\"i\":[{\"c\":32}]}]}],\"e\":[{\"a\":[{\"t\":11}],\"d\":32,\"t\":[{\"a\":47}],\"v\":0}],\"i\":[{\"f\":5,\"n\":21,\"s\":17,\"t\":[{\"i\":[{\"e\":11},32]}]},8],\"o\":[{\"p\":[{\"l\":0,\"o\":6}],\"s\":[{\"e\":17}],\"c\":[{\"o\":[{\"d\":197}]}],\"e\":[{\"c\":[{\"o\":148}]}]}],\"u\":[{\"d\":0}]}],\"s\":66,\"t\":[{\"a\":[{\"b\":0,\"n\":[{\"g\":4,\"t\":19}]}],\"e\":[{\"r\":23},24],\"i\":[{\"c\":[{\"u\":21}],\"m\":[{\"i\":12}]}],\"u\":[{\"r\":0}],\"w\":21,\"r\":[{\"o\":[{\"m\":[{\"e\":[{\"c\":198}]}]}]}]},42],\"u\":[{\"d\":5,\"f\":21,\"i\":[{\"t\":[{\"y\":4}]},21],\"l\":[{\"i\":32,\"t\":[{\"i\":[{\"s\":0}],\"u\":27}]}],\"m\":[{\"a\":9,\"e\":23,\"i\":1}],\"n\":27,\"p\":[{\"i\":3,\"y\":4}],\"r\":[{\"a\":[{\"b\":67,\"n\":[{\"c\":[{\"e\":199}]}]}],\"i\":[{\"a\":4}]}],\"s\":[{\"s\":[{\"i\":17}]},41],\"t\":[{\"i\":[{\"e\":1,\"v\":56}],\"r\":18},68]}],\"y\":41,\"z\":[{\"e\":0}]}],\"d\":[{\"a\":[{\".\":32,\"b\":70,\"c\":[{\"h\":17}],\"f\":18,\"g\":25,\"m\":71,\"n\":[{\"g\":11}],\"r\":[{\"d\":6,\"k\":6,\"y\":18}],\"t\":[{\"i\":[{\"v\":18}],\"o\":18,\"a\":[{\"b\":137}]},27],\"v\":[{\"e\":5},53],\"y\":32,\"l\":[{\"o\":[{\"n\":[{\"e\":48}]}]}]},69],\"b\":29,\"c\":19,\"d\":[{\"a\":[{\"b\":20}],\"i\":[{\"b\":94}]},72],\"e\":[{\".\":25,\"a\":[{\"f\":6,\"l\":[{\"s\":[{\".\":1}]}]}],\"b\":[{\"i\":[{\"t\":5}],\"o\":[{\"n\":1}]}],\"c\":[{\"a\":[{\"n\":36}],\"i\":[{\"l\":1}],\"o\":[{\"m\":4}],\"l\":[{\"a\":[{\"r\":200}],\"i\":[{\"n\":[{\"a\":64}]}]}]}],\"d\":42,\"e\":[{\".\":18}],\"i\":[{\"f\":4}],\"l\":[{\"i\":[{\"e\":17,\"q\":16}],\"o\":4}],\"m\":[{\".\":32,\"i\":[{\"c\":[{\".\":5},27],\"l\":4}],\"o\":[{\"n\":[{\"s\":1}],\"r\":7,\"s\":9}]},21],\"n\":[{\"a\":[{\"r\":1}],\"o\":3,\"t\":[{\"i\":[{\"f\":7}]}],\"u\":3},41],\"p\":[{\"a\":3,\"i\":17,\"u\":9},2],\"q\":23,\"r\":[{\"h\":21,\"m\":32,\"n\":[{\"i\":[{\"z\":6}]}],\"s\":5}],\"s\":[{\".\":24,\"c\":2,\"o\":64,\"t\":[{\"i\":11,\"r\":3}],\"u\":1,\"i\":[{\"c\":11}]},8],\"t\":[{\"o\":9,\"i\":[{\"c\":9}]},2],\"v\":[{\"i\":[{\"l\":11}]},2],\"y\":18,\"f\":[{\"i\":[{\"n\":[{\"i\":[{\"t\":[{\"i\":201}]}]}]}]}]}],\"f\":43,\"g\":[{\"a\":21,\"e\":[{\"t\":73}],\"i\":2,\"y\":24}],\"h\":74,\"i\":[{\".\":32,\"a\":[{\"b\":5},75],\"c\":[{\"a\":[{\"m\":1,\"i\":[{\"d\":15}]}],\"e\":21,\"t\":27}],\"d\":27,\"e\":[{\"n\":76}],\"f\":[{\"f\":[{\"r\":[{\"a\":5}]}]},29],\"g\":[{\"e\":3}],\"l\":[{\"a\":[{\"t\":[{\"o\":1}]}]}],\"n\":[{\"a\":41,\"e\":[{\".\":27}],\"i\":[{\"z\":4},32]},29],\"o\":[{\"g\":5},41],\"p\":[{\"l\":1}],\"r\":[{\"e\":[{\"n\":9,\"r\":9},2],\"t\":[{\"i\":6}]},8],\"s\":[{\"i\":32,\"t\":77},15],\"t\":[{\"i\":24}],\"v\":78,\"m\":[{\"e\":[{\"t\":[{\"h\":[{\"y\":141}]}]}]}]}],\"j\":29,\"k\":79,\"l\":[{\"a\":56,\"e\":[{\".\":27,\"d\":27,\"s\":[{\".\":27,\"s\":18}],\"a\":[{\"d\":42}]}],\"o\":48,\"u\":56,\"y\":25,\"i\":[{\"e\":202}]}],\"m\":29,\"n\":80,\"o\":[{\".\":27,\"d\":[{\"e\":4}],\"e\":32,\"f\":57,\"g\":21,\"l\":[{\"a\":1,\"i\":17,\"o\":[{\"r\":4}]}],\"m\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"a\":[{\"t\":3}],\"i\":17}],\"o\":[{\"d\":11}],\"p\":[{\"p\":0}],\"r\":21,\"s\":27,\"u\":[{\"t\":56}],\"v\":1,\"x\":27,\"w\":[{\"o\":[{\"r\":[{\"d\":203}]}]}]},41],\"p\":29,\"r\":[{\"a\":[{\"g\":[{\"o\":[{\"n\":6}]}],\"i\":18}],\"e\":[{\"a\":[{\"r\":6}],\"n\":[{\"a\":[{\"l\":204}]},32]},0],\"i\":[{\"b\":0,\"l\":17,\"f\":[{\"t\":[{\"a\":189}]}],\"p\":[{\"l\":[{\"e\":[{\"g\":205}]}]}]}],\"o\":[{\"p\":0,\"w\":18,\"m\":[{\"e\":[{\"d\":206}]}]}],\"u\":[{\"p\":[{\"l\":[{\"i\":32}]}]}],\"y\":18},41],\"s\":[{\"p\":1,\"w\":21,\"y\":21},81],\"t\":[{\"h\":24,\"a\":[{\"b\":23}]}],\"u\":[{\"a\":[{\"l\":[{\".\":9}]},82],\"c\":[{\"a\":29,\"e\":[{\"r\":5}],\"t\":[{\".\":18,\"s\":18}]},9],\"e\":[{\"l\":4}],\"g\":1,\"l\":[{\"e\":23}],\"m\":[{\"b\":[{\"e\":0}]}],\"n\":1,\"p\":[{\"e\":1},18],\"o\":[{\"p\":[{\"o\":[{\"l\":207}]}]}]},41],\"v\":29,\"w\":29,\"y\":[{\"n\":32,\"s\":[{\"e\":1,\"p\":5}]},24]}],\"e\":[{\"a\":[{\"b\":72,\"c\":[{\"t\":23}],\"d\":[{\"i\":[{\"e\":5}]},15],\"g\":[{\"e\":[{\"r\":4},1]}],\"l\":[{\"e\":[{\"r\":5}],\"o\":[{\"u\":11}]},1],\"m\":[{\"e\":[{\"r\":11}]}],\"n\":[{\"d\":19,\"i\":[{\"e\":[{\"s\":111}]}]}],\"r\":[{\"a\":11,\"c\":0,\"e\":[{\"s\":5}],\"i\":[{\"c\":0,\"l\":0}],\"k\":5,\"t\":[{\"e\":12},8]}],\"s\":[{\"p\":4,\"s\":23,\"t\":12}],\"t\":[{\"e\":[{\"n\":5}],\"h\":[{\"i\":12}],\"i\":[{\"f\":19}],\"u\":83},9],\"v\":[{\"e\":[{\"n\":11}],\"i\":5,\"o\":5},9]}],\"b\":[{\"e\":[{\"l\":[{\".\":21,\"s\":21}],\"n\":21}],\"i\":[{\"t\":21}],\"r\":23},42],\"c\":[{\"a\":[{\"d\":21,\"n\":[{\"c\":6}]}],\"c\":[{\"a\":6}],\"e\":[{\"s\":[{\"s\":[{\"a\":4}]}]},29],\"i\":[{\"b\":21,\"f\":[{\"i\":[{\"c\":[{\"a\":[{\"t\":4}]}],\"e\":4}],\"y\":4}],\"m\":3,\"t\":[{\"e\":19},0]},9],\"l\":[{\"a\":[{\"m\":21}],\"u\":[{\"s\":21}]}],\"o\":[{\"l\":24,\"m\":[{\"m\":21,\"p\":[{\"e\":21}]}],\"n\":[{\"c\":21}],\"r\":[{\"a\":3,\"o\":5},24]}],\"r\":[{\"e\":[{\"m\":21}]},29],\"t\":[{\"a\":[{\"n\":1}],\"e\":1}],\"u\":[{\"l\":[{\"a\":3},21]},29],\"h\":[{\"a\":[{\"s\":23}]}]}],\"d\":[{\"a\":37,\"d\":61,\"e\":[{\"r\":34,\"s\":0}],\"i\":[{\"a\":23,\"b\":3,\"c\":[{\"a\":3}],\"m\":3,\"t\":2,\"z\":5},18],\"o\":[{\"l\":21,\"n\":84},18],\"r\":[{\"i\":21}],\"u\":[{\"l\":[{\"o\":4,\"i\":[{\"n\":[{\"g\":2}]}]},21]}],\"g\":[{\"l\":15}]}],\"e\":[{\"c\":9,\"d\":[{\"i\":11}],\"f\":9,\"l\":[{\"i\":11,\"y\":1}],\"m\":9,\"n\":[{\"a\":1}],\"p\":85,\"s\":[{\"t\":17},86],\"t\":[{\"y\":1}],\"x\":19}],\"f\":[{\"e\":[{\"r\":[{\"e\":83}]}],\"f\":41,\"i\":[{\"c\":[{\"i\":32},21],\"l\":17,\"n\":[{\"e\":23,\"i\":[{\"t\":[{\"e\":20}]}]}],\"t\":27}],\"o\":[{\"r\":[{\"e\":[{\"s\":6}]}]}],\"u\":[{\"s\":[{\"e\":[{\".\":21}]}]}]},29],\"g\":[{\"a\":[{\"l\":18}],\"e\":[{\"r\":17}],\"i\":[{\"b\":4,\"c\":1,\"n\":[{\"g\":4}],\"t\":87}],\"n\":4,\"o\":[{\".\":21,\"s\":21}],\"u\":[{\"l\":2,\"r\":19}],\"y\":32}],\"h\":[{\"e\":[{\"r\":17}]},72],\"i\":[{\"c\":19,\"d\":4,\"g\":[{\"l\":4},8],\"m\":[{\"b\":23}],\"n\":[{\"f\":23,\"g\":29,\"s\":[{\"t\":19}]}],\"r\":[{\"d\":0}],\"t\":[{\"e\":11,\"h\":3,\"y\":19}]},9],\"j\":[{\"u\":[{\"d\":[{\"i\":4},21]}]},29],\"k\":[{\"i\":[{\"n\":0}],\"l\":[{\"a\":1}]}],\"l\":[{\"a\":[{\".\":21,\"c\":21,\"n\":[{\"d\":17}],\"t\":[{\"i\":[{\"v\":4}]}],\"w\":21,\"x\":[{\"a\":36}]},29],\"e\":[{\"a\":23,\"b\":[{\"r\":[{\"a\":4}]}],\"c\":32,\"d\":21,\"g\":[{\"a\":3}],\"n\":19,\"r\":34,\"s\":29}],\"f\":9,\"i\":[{\"b\":[{\"e\":23}],\"c\":[{\".\":33,\"a\":3}],\"e\":[{\"r\":23}],\"g\":[{\"i\":[{\"b\":4}]}],\"m\":19,\"n\":[{\"g\":83}],\"o\":23,\"s\":[{\"h\":4},24],\"v\":88,\"t\":[{\"i\":[{\"s\":208}]}]},9],\"l\":[{\"a\":[{\"b\":1},18],\"o\":17}],\"o\":[{\"c\":19,\"g\":4,\"p\":[{\".\":3}],\"a\":29}],\"s\":[{\"h\":9}],\"t\":[{\"a\":1}],\"u\":[{\"d\":19,\"g\":4}]}],\"m\":[{\"a\":[{\"c\":21,\"g\":21,\"n\":[{\"a\":4},19]}],\"b\":4,\"e\":[{\"l\":24,\"t\":21},29],\"i\":[{\"c\":[{\"a\":3}],\"e\":0,\"g\":[{\"r\":[{\"a\":4}]}],\"n\":[{\"e\":4,\"i\":35},89],\"s\":[{\"h\":4,\"s\":19},21],\"z\":3}],\"n\":[{\"i\":[{\"z\":32}]}],\"o\":[{\"g\":0,\"n\":[{\"i\":[{\"o\":7}]}]}],\"p\":[{\"i\":3}],\"u\":[{\"l\":[{\"a\":4},21],\"n\":11}],\"y\":23}],\"n\":[{\"a\":[{\"m\":[{\"o\":4}],\"n\":[{\"t\":21}]}],\"c\":[{\"h\":[{\"e\":[{\"r\":17}]}]}],\"d\":[{\"i\":[{\"c\":3,\"x\":2}]}],\"e\":[{\"a\":19,\"e\":19,\"m\":3,\"r\":[{\"o\":4}],\"s\":[{\"i\":4,\"t\":4}],\"t\":[{\"r\":3}],\"w\":23}],\"i\":[{\"c\":[{\"s\":4}],\"e\":19,\"l\":19,\"o\":23,\"s\":[{\"h\":3}],\"t\":3,\"u\":19,\"z\":32}],\"n\":18,\"o\":[{\"g\":0,\"s\":21,\"v\":3},18],\"s\":[{\"w\":1}],\"t\":[{\"a\":[{\"g\":[{\"e\":5}]}],\"h\":[{\"e\":[{\"s\":18}]}]}],\"u\":[{\"a\":3,\"f\":4}],\"y\":[{\".\":23}],\"z\":61}],\"o\":[{\"f\":19,\"g\":[{\"r\":[{\"a\":[{\"p\":3}]}]},9],\"i\":90,\"l\":23,\"p\":[{\"a\":[{\"r\":11}]}],\"r\":[{\"e\":3,\"o\":[{\"l\":4}]},29],\"s\":0,\"t\":[{\"o\":1},21],\"u\":[{\"t\":19}],\"w\":19}],\"p\":[{\"a\":[{\"i\":23,\"n\":[{\"c\":4}]},24],\"e\":[{\"l\":19,\"n\":[{\"t\":23}],\"t\":[{\"i\":[{\"t\":[{\"i\":[{\"o\":4}]}]}]}]}],\"h\":[{\"e\":17}],\"l\":[{\"i\":21}],\"o\":29,\"r\":[{\"e\":[{\"c\":[{\"a\":4},21],\"d\":21,\"h\":3}],\"o\":[{\"b\":21},23]}],\"s\":[{\"h\":1}],\"t\":[{\"i\":[{\"b\":13}]}],\"u\":[{\"t\":[{\"a\":4},21]}],\"i\":[{\"n\":[{\"e\":[{\"p\":[{\"h\":209}]}]}]}]}],\"q\":[{\"u\":[{\"i\":[{\"l\":12,\"s\":91}]}]},29],\"r\":[{\"a\":[{\"b\":0,\"n\":[{\"d\":18}],\"r\":3,\"t\":[{\"i\":[{\".\":18}]}]},2],\"b\":[{\"l\":1},25],\"c\":[{\"h\":[{\"e\":1},3]}],\"e\":[{\".\":25,\"a\":[{\"l\":23}],\"c\":[{\"o\":5}],\"i\":[{\"n\":11}],\"l\":[{\".\":4}],\"m\":[{\"o\":3}],\"n\":[{\"a\":4,\"c\":[{\"e\":4}],\"e\":18,\"t\":3}],\"q\":0,\"s\":[{\"s\":4,\"t\":3}],\"t\":17}],\"h\":2,\"i\":[{\"a\":[{\"n\":[{\".\":210}]},92],\"c\":[{\"k\":32}],\"e\":[{\"n\":23,\"r\":0}],\"n\":[{\"e\":3}],\"o\":29,\"t\":18,\"u\":1,\"v\":[{\"a\":21},0]},2],\"m\":93,\"n\":[{\"i\":[{\"s\":1,\"t\":18,\"z\":32}],\"o\":3}],\"o\":[{\"b\":4,\"c\":19,\"r\":0,\"u\":2},25],\"s\":[{\"e\":[{\"t\":3}]},2],\"t\":[{\"e\":[{\"r\":11}],\"l\":18,\"w\":3}],\"u\":[{\"t\":0},18],\"w\":[{\"a\":[{\"u\":32}]}]}],\"s\":[{\"a\":[{\"g\":[{\"e\":[{\".\":21,\"s\":21}]}]},72],\"c\":[{\"a\":[{\"n\":4},24],\"r\":23,\"u\":4},9],\"e\":[{\"c\":[{\"r\":4},24],\"n\":[{\"c\":4}],\"r\":[{\"t\":[{\".\":21,\"s\":21}],\"v\":[{\"a\":21}]}]},74],\"h\":[{\"a\":23,\"e\":[{\"n\":5}]},18],\"i\":[{\"c\":24,\"d\":[{\"e\":[{\"n\":4}]},24],\"g\":[{\"n\":[{\"a\":4}]}],\"m\":94,\"n\":95,\"s\":[{\"t\":[{\"e\":17}]}],\"u\":0},29],\"k\":[{\"i\":[{\"n\":19}]}],\"m\":[{\"i\":1}],\"o\":[{\"l\":[{\"u\":3},24],\"n\":[{\"a\":4},24]}],\"p\":[{\"e\":[{\"r\":3}],\"i\":[{\"r\":[{\"a\":4}]}],\"r\":[{\"e\":1}],\"a\":[{\"c\":[{\"i\":211}]}]},29],\"s\":[{\"i\":[{\"b\":96}]},25],\"t\":[{\"a\":[{\"n\":36}],\"i\":[{\"g\":3,\"m\":4}],\"o\":[{\"n\":23},44],\"r\":[{\"o\":19,\"u\":[{\"c\":10}]},25]}],\"u\":[{\"r\":[{\"r\":4},24]}],\"w\":1}],\"t\":[{\"a\":[{\"b\":0}],\"e\":[{\"n\":[{\"d\":17}],\"o\":23}],\"h\":[{\"o\":[{\"d\":54}],\"y\":[{\"l\":[{\"e\":[{\"n\":[{\"e\":162}]}]}]}]}],\"i\":[{\"c\":2,\"d\":[{\"e\":19}],\"n\":[{\"o\":0},17],\"r\":19,\"t\":[{\"i\":[{\"o\":19,\"v\":4}]}]}],\"n\":18,\"o\":[{\"n\":[{\"a\":4}]}],\"r\":[{\"a\":23,\"e\":23,\"i\":[{\"c\":3,\"f\":4}],\"o\":[{\"g\":3,\"s\":4}]}],\"u\":[{\"a\":3}],\"y\":[{\"m\":4}],\"z\":4}],\"u\":[{\"n\":19,\"p\":23,\"r\":[{\"o\":3}],\"s\":0,\"t\":[{\"e\":17,\"i\":[{\"l\":6}],\"r\":4}],\"c\":[{\"l\":[{\"i\":[{\"d\":212}]}]}]},18],\"v\":[{\"a\":[{\"p\":97,\"s\":[{\"t\":4},24]}],\"e\":[{\"a\":19,\"l\":[{\"l\":3,\"o\":12}],\"n\":[{\"g\":19,\"i\":17}],\"r\":[{\"b\":19},2]}],\"i\":[{\"d\":3,\"l\":0,\"n\":21,\"v\":0},29],\"o\":[{\"c\":19}],\"u\":19}],\"w\":[{\"a\":[{\"g\":21},29],\"e\":[{\"e\":19}],\"h\":23,\"i\":[{\"l\":6,\"n\":[{\"g\":3}],\"t\":23}]}],\"x\":[{\"p\":41}],\"y\":[{\"c\":32,\"e\":[{\".\":32}],\"s\":0}]}],\"f\":[{\"a\":[{\"b\":[{\"l\":3,\"r\":11}],\"c\":[{\"e\":1}],\"g\":18,\"i\":[{\"n\":17}],\"l\":[{\"l\":[{\"e\":6}]}],\"m\":[{\"a\":26,\"i\":[{\"s\":5}]}],\"r\":[{\"t\":[{\"h\":5}]},32],\"t\":[{\"a\":3,\"h\":[{\"e\":3}],\"o\":18}],\"u\":[{\"l\":[{\"t\":7}]}]},41],\"b\":56,\"d\":18,\"e\":[{\".\":18,\"a\":[{\"s\":17,\"t\":[{\"h\":54}]}],\"b\":[{\"r\":[{\"u\":[{\"a\":15}]}]},1],\"c\":[{\"a\":18,\"t\":32}],\"d\":25,\"l\":[{\"i\":3}],\"m\":[{\"o\":1}],\"n\":[{\"d\":[{\"e\":6},8]}],\"r\":[{\"r\":32,\"m\":[{\"i\":[{\"o\":213}]}]},15],\"v\":0}],\"f\":[{\"e\":[{\"s\":21}],\"i\":[{\"e\":21,\"n\":[{\".\":19}],\"s\":94}],\"l\":[{\"y\":21}],\"y\":24},43],\"h\":18,\"i\":[{\"a\":3,\"c\":[{\".\":48,\"a\":[{\"l\":47,\"n\":23,\"t\":[{\"e\":18}]}],\"e\":[{\"n\":23,\"r\":3}],\"i\":[{\"a\":32,\"e\":32},0],\"s\":18,\"u\":3,\"h\":27}],\"d\":[{\"e\":[{\"l\":4}]}],\"g\":[{\"h\":[{\"t\":7}]}],\"l\":[{\"i\":5,\"l\":[{\"i\":[{\"n\":6}]}],\"y\":18}],\"n\":[{\"a\":32,\"d\":97,\"e\":9,\"g\":98,\"n\":0},25],\"s\":[{\"t\":[{\"i\":0}]}],\"t\":[{\"t\":[{\"e\":[{\"d\":[{\".\":5}]}]}]}]},41],\"l\":[{\"e\":[{\"s\":[{\"s\":19}]}],\"i\":[{\"n\":17}],\"o\":[{\"r\":[{\"e\":11}],\"w\":[{\"e\":[{\"r\":[{\".\":84}]}]}]}],\"y\":100,\"a\":[{\"g\":[{\"e\":[{\"l\":214}]}]}],\"u\":[{\"o\":[{\"r\":27}]}]},99],\"m\":18,\"n\":18,\"o\":[{\"n\":[{\"d\":[{\"e\":0}],\"t\":0},32],\"r\":[{\"a\":[{\"t\":4,\"y\":5}],\"e\":[{\"t\":6}],\"i\":0,\"t\":[{\"a\":6}]},9],\"s\":5},41],\"p\":56,\"r\":[{\"a\":[{\"t\":0}],\"e\":[{\"a\":19,\"s\":[{\"c\":6}]}],\"i\":[{\"l\":17},8],\"o\":[{\"l\":6}]}],\"s\":48,\"t\":[{\"o\":21,\"y\":24},25],\"u\":[{\"e\":[{\"l\":4}],\"g\":18,\"m\":[{\"i\":[{\"n\":1}]}],\"n\":[{\"e\":4}],\"r\":[{\"i\":3}],\"s\":[{\"i\":17,\"s\":0}],\"t\":[{\"a\":18}]},27],\"y\":41}],\"g\":[{\"a\":[{\"f\":0,\"l\":[{\".\":32,\"i\":27,\"o\":3}],\"m\":[{\"e\":[{\"t\":4}],\"o\":19},25],\"n\":[{\"i\":[{\"s\":5,\"z\":[{\"a\":6},3]}],\"o\":18}],\"r\":[{\"n\":67}],\"s\":[{\"s\":17}],\"t\":[{\"h\":12,\"i\":[{\"v\":18}]}],\"z\":18},41],\"b\":23,\"d\":1,\"e\":[{\".\":25,\"d\":25,\"e\":[{\"z\":17}],\"l\":[{\"i\":[{\"n\":0,\"s\":4,\"z\":4}],\"y\":18}],\"n\":[{\"a\":[{\"t\":1}],\"i\":[{\"z\":4}],\"o\":18,\"y\":18,\"c\":[{\"y\":[{\".\":8}]}]},41],\"o\":[{\"m\":3,\"d\":215},41],\"r\":[{\"y\":21}],\"s\":[{\"i\":32}],\"t\":[{\"h\":6,\"o\":18,\"y\":1,\"i\":[{\"c\":[{\".\":8}]}]}],\"v\":1}],\"g\":[{\"e\":[{\"r\":23},24],\"l\":[{\"u\":6}],\"o\":0},101],\"h\":[{\"i\":[{\"n\":3}],\"o\":[{\"u\":[{\"t\":4}]}],\"t\":[{\"o\":1,\"w\":[{\"e\":15}]}]}],\"i\":[{\".\":32,\"a\":[{\"r\":5},102],\"c\":[{\"i\":[{\"a\":32}],\"o\":21},29],\"e\":[{\"n\":6,\"s\":[{\".\":32}]}],\"l\":0,\"m\":[{\"e\":[{\"n\":23}]}],\"n\":[{\".\":68,\"g\":[{\"e\":5}],\"s\":103}],\"o\":32,\"r\":[{\"l\":0},27],\"s\":[{\"l\":23}],\"u\":1,\"v\":32,\"z\":27}],\"l\":[{\"a\":[{\"d\":[{\"i\":6}],\"s\":32},0],\"e\":[{\"a\":[{\"d\":29}]},41],\"i\":[{\"b\":0,\"g\":23,\"s\":[{\"h\":43}]}],\"o\":[{\"r\":11,\"b\":[{\"i\":[{\"n\":106}]}]},27]},9],\"m\":[{\"y\":21},29],\"n\":[{\"a\":[{\".\":21,\"c\":69},1],\"e\":[{\"t\":[{\"t\":17,\"i\":[{\"s\":[{\"m\":137}]}]}]}],\"i\":[{\"n\":24,\"o\":21},29],\"o\":[{\"n\":21,\"m\":[{\"o\":5}],\"r\":[{\".\":216,\"e\":[{\"s\":[{\"p\":24}]}]}]},29]}],\"o\":[{\".\":27,\"b\":5,\"e\":32,\"g\":104,\"i\":[{\"s\":3}],\"n\":[{\"a\":105,\"d\":[{\"o\":7}],\"i\":[{\"z\":[{\"a\":217}]},3]},8],\"o\":32,\"r\":[{\"i\":[{\"z\":4}],\"o\":[{\"u\":5}]}],\"s\":[{\".\":32}],\"v\":15},41],\"p\":23,\"r\":[{\"a\":[{\"d\":[{\"a\":18}],\"i\":21,\"n\":84,\"p\":[{\"h\":[{\".\":32,\"e\":[{\"r\":[{\".\":7},19]}],\"i\":[{\"c\":32}],\"y\":18}]}],\"y\":18}],\"e\":[{\"n\":0,\"s\":[{\"s\":[{\".\":18}]}]}],\"i\":[{\"t\":18,\"e\":[{\"v\":213}]}],\"o\":21,\"u\":[{\"f\":17}]},41],\"s\":[{\"t\":[{\"e\":19}]},9],\"t\":[{\"h\":11}],\"u\":[{\"a\":[{\"r\":[{\"d\":27}]},1],\"e\":25,\"i\":[{\"t\":106}],\"n\":27,\"s\":27,\"t\":[{\"a\":[{\"n\":29}]},26]}],\"w\":23,\"y\":[{\"n\":107,\"r\":[{\"a\":4}]},41]}],\"h\":[{\"a\":[{\"b\":[{\"l\":73}],\"c\":[{\"h\":17}],\"e\":[{\"m\":0,\"t\":0}],\"g\":[{\"u\":19}],\"l\":[{\"a\":[{\"m\":12},3]}],\"m\":1,\"n\":[{\"c\":[{\"i\":0,\"y\":0}],\"d\":[{\".\":32}],\"g\":[{\"e\":[{\"r\":6}],\"o\":6},0],\"i\":[{\"z\":108}],\"k\":0,\"t\":[{\"e\":0}]}],\"p\":[{\"l\":11,\"t\":5,\"a\":[{\"r\":[{\"r\":218}]}]}],\"r\":[{\"a\":[{\"n\":3,\"s\":4}],\"d\":[{\"e\":12},8],\"l\":[{\"e\":0}],\"p\":[{\"e\":[{\"n\":6}]}],\"t\":[{\"e\":[{\"r\":5}]}]}],\"s\":[{\"s\":5}],\"u\":[{\"n\":17}],\"z\":[{\"a\":11},32],\"i\":[{\"r\":[{\"s\":137}]}],\"t\":[{\"c\":[{\"h\":213}]}]}],\"b\":29,\"e\":[{\"a\":[{\"d\":41,\"r\":27}],\"c\":[{\"a\":[{\"n\":1,\"t\":19}]}],\"d\":[{\"o\":13},21],\"l\":[{\"i\":93,\"l\":[{\"i\":[{\"s\":0}],\"y\":0}],\"o\":19}],\"m\":[{\"p\":0}],\"n\":[{\"a\":[{\"t\":5},17]},9],\"o\":[{\"r\":5}],\"p\":5,\"r\":[{\"a\":[{\"p\":12},21],\"b\":[{\"a\":0}],\"e\":[{\"a\":6}],\"n\":23,\"o\":[{\"u\":19}],\"y\":23}],\"s\":[{\"p\":64},29],\"t\":[{\"e\":[{\"d\":0}]},1],\"u\":0,\"x\":[{\"a\":168}]}],\"f\":29,\"h\":29,\"i\":[{\"a\":[{\"n\":4}],\"c\":[{\"o\":1}],\"g\":[{\"h\":6}],\"l\":109,\"m\":[{\"e\":[{\"r\":36}]}],\"n\":[{\"a\":21}],\"o\":[{\"n\":[{\"e\":17}]}],\"p\":[{\"e\":[{\"l\":[{\"a\":219}]}]},1],\"r\":[{\"l\":0,\"o\":3,\"p\":0,\"r\":0}],\"s\":[{\"e\":[{\"l\":11}],\"s\":0}],\"t\":[{\"h\":[{\"e\":[{\"r\":6}]}],\"e\":[{\"s\":[{\"i\":[{\"d\":12}]}]}]}],\"v\":9}],\"k\":18,\"l\":[{\"a\":[{\"n\":17}],\"o\":[{\"r\":[{\"i\":11}]},24]},80],\"m\":[{\"e\":[{\"t\":17}]},43],\"n\":[{\"a\":[{\"u\":[{\"z\":12}]}]},42],\"o\":[{\"d\":[{\"i\":[{\"z\":19}],\"s\":19}],\"g\":[{\"e\":17},1],\"l\":[{\"a\":[{\"r\":5}],\"e\":110}],\"m\":[{\"a\":1,\"e\":12}],\"n\":[{\"a\":0,\"y\":4}],\"o\":[{\"d\":27,\"n\":17}],\"r\":[{\"a\":[{\"t\":5}],\"i\":[{\"s\":4,\"c\":[{\".\":187}]}],\"t\":[{\"e\":12}],\"u\":4}],\"s\":[{\"e\":[{\"n\":4},0],\"p\":15}],\"u\":[{\"s\":[{\"e\":54},41]}],\"v\":[{\"e\":[{\"l\":5}]}]}],\"p\":56,\"r\":[{\"e\":[{\"e\":6}],\"o\":[{\"n\":[{\"i\":[{\"z\":5}]}],\"p\":[{\"o\":11}]}]},26],\"s\":[{\"h\":21},101],\"t\":[{\"a\":[{\"r\":21}],\"e\":[{\"n\":2,\"s\":4,\"o\":[{\"u\":216}]}],\"y\":21}],\"u\":[{\"g\":1,\"m\":[{\"i\":[{\"n\":1}]}],\"n\":[{\"k\":[{\"e\":5}],\"t\":0}],\"s\":[{\"t\":14}],\"t\":1}],\"w\":[{\"a\":[{\"r\":[{\"t\":21}]}]},29],\"y\":[{\"p\":[{\"e\":3,\"h\":3,\"o\":[{\"t\":[{\"h\":[{\"a\":137}]}]}]}],\"s\":9}]}],\"i\":[{\"a\":[{\"l\":24,\"m\":[{\"e\":[{\"t\":[{\"e\":5}]}]},0],\"n\":[{\"c\":18,\"i\":11,\"t\":46},24],\"p\":[{\"e\":4}],\"s\":[{\"s\":17}],\"t\":[{\"i\":[{\"v\":21}],\"r\":[{\"i\":[{\"c\":1}]}],\"u\":21}]},42],\"b\":[{\"e\":[{\"r\":[{\"a\":3,\"t\":4}]},0],\"i\":[{\"a\":4,\"n\":3,\"t\":[{\".\":4,\"e\":4}]}],\"l\":[{\"i\":3},29],\"o\":19,\"r\":[{\"i\":94},29],\"u\":[{\"n\":19}]}],\"c\":[{\"a\":[{\"m\":18,\"p\":32,\"r\":[{\".\":21,\"a\":21},18],\"s\":6,\"y\":21}],\"c\":[{\"u\":17}],\"e\":[{\"o\":18}],\"h\":18,\"i\":[{\"d\":19,\"n\":[{\"a\":4}],\"p\":[{\"a\":3},24]},25],\"l\":[{\"y\":21}],\"o\":[{\"c\":94}],\"r\":[{\"a\":32,\"y\":21},43],\"t\":[{\"e\":1,\"u\":[{\"a\":111},84]}],\"u\":[{\"l\":[{\"a\":3}],\"m\":1,\"o\":4,\"r\":23}]}],\"d\":[{\"a\":[{\"i\":21,\"n\":[{\"c\":4}]}],\"d\":4,\"e\":[{\"a\":[{\"l\":11}],\"s\":0}],\"i\":[{\"a\":[{\"n\":4,\"r\":0}],\"e\":19,\"o\":[{\"u\":5,\"s\":1},3],\"t\":2,\"u\":4},24],\"l\":[{\"e\":23}],\"o\":[{\"m\":21,\"w\":3}],\"r\":21,\"u\":[{\"o\":4},24]},25],\"e\":[{\"d\":[{\"e\":0}],\"g\":[{\"a\":113}],\"l\":[{\"d\":12}],\"n\":[{\"a\":67,\"e\":0,\"n\":19,\"t\":[{\"i\":23}]}],\"r\":[{\".\":29}],\"s\":[{\"c\":23,\"t\":29}],\"t\":23},112],\"f\":[{\".\":18,\"e\":[{\"r\":[{\"o\":4}]}],\"f\":[{\"e\":[{\"n\":5}],\"r\":1}],\"i\":[{\"c\":[{\".\":18}],\"e\":23}],\"l\":23,\"t\":18,\"a\":[{\"c\":[{\"e\":[{\"t\":137}]}]}]}],\"g\":[{\"a\":[{\"b\":5}],\"e\":[{\"r\":[{\"a\":3}]}],\"h\":[{\"t\":[{\"i\":12}]}],\"i\":[{\"b\":23,\"l\":3,\"n\":3,\"t\":3},18],\"l\":28,\"o\":[{\"r\":3,\"t\":4},24],\"r\":[{\"e\":19}],\"u\":[{\"i\":5,\"r\":2}],\"n\":[{\"i\":[{\"t\":[{\"e\":[{\"r\":213}]},0]}]}]},25],\"h\":23,\"i\":114,\"j\":[{\"k\":21},23],\"k\":18,\"l\":[{\"a\":[{\"b\":93,\"d\":[{\"e\":21}],\"m\":94,\"r\":[{\"a\":5}]},29],\"e\":[{\"g\":23,\"r\":2,\"v\":17}],\"f\":4,\"i\":[{\"a\":3,\"b\":9,\"o\":3,\"s\":[{\"t\":1}],\"t\":25,\"z\":9},2],\"l\":[{\"a\":[{\"b\":5}]}],\"n\":18,\"o\":[{\"q\":3}],\"t\":[{\"y\":1}],\"u\":[{\"r\":4}],\"v\":3}],\"m\":[{\"a\":[{\"g\":[{\"e\":3},21],\"r\":[{\"y\":5}]}],\"e\":[{\"n\":[{\"t\":[{\"a\":[{\"r\":10}]}]}],\"t\":18}],\"i\":[{\"d\":[{\"a\":4}],\"l\":[{\"e\":5}],\"n\":[{\"i\":19}],\"t\":18},2],\"n\":[{\"i\":1}],\"o\":[{\"n\":23}],\"u\":[{\"l\":[{\"a\":3}]},24],\"p\":[{\"e\":[{\"d\":[{\"a\":201}]}]}]}],\"n\":[{\".\":25,\"a\":[{\"u\":83,\"v\":18}],\"c\":[{\"e\":[{\"l\":36,\"r\":3}]}],\"d\":[{\"l\":[{\"i\":[{\"n\":[{\"g\":4}]}]}]},18],\"e\":[{\"e\":23,\"r\":[{\"a\":[{\"r\":17}]}],\"s\":[{\"s\":19}]},25],\"g\":[{\"a\":18,\"e\":[{\"n\":4},18],\"i\":18,\"l\":[{\"i\":[{\"n\":[{\"g\":4}]}]}],\"o\":18,\"u\":18}],\"i\":[{\".\":19,\"a\":21,\"o\":3,\"s\":2,\"t\":[{\"e\":[{\".\":19,\"l\":[{\"y\":[{\".\":19}]}]}],\"i\":[{\"o\":32}],\"y\":3}]},25],\"k\":18,\"l\":18,\"n\":25,\"o\":[{\"c\":90,\"s\":0,\"t\":21},42],\"s\":[{\"e\":3,\"u\":[{\"r\":[{\"a\":7}]}]},25],\"t\":[{\".\":25,\"h\":112}],\"u\":[{\"s\":19},2],\"y\":18,\"f\":[{\"r\":[{\"a\":[{\"s\":220}]}]}]}],\"o\":[{\".\":18,\"g\":[{\"e\":17,\"r\":9}],\"l\":29,\"m\":1,\"n\":[{\"a\":[{\"t\":11}],\"e\":[{\"r\":[{\"y\":0}]}],\"i\":11}],\"p\":[{\"h\":4}],\"r\":[{\"i\":11}],\"s\":21,\"t\":[{\"h\":4,\"i\":19,\"o\":1}],\"u\":[{\"r\":21}]},25],\"p\":[{\"e\":0,\"h\":[{\"r\":[{\"a\":[{\"s\":115}]}]}],\"i\":[{\"c\":1},3],\"r\":[{\"e\":96}],\"u\":[{\"l\":3}]},25],\"q\":[{\"u\":[{\"a\":23,\"e\":[{\"f\":4}],\"i\":[{\"d\":3,\"t\":116}]}]}],\"r\":[{\"a\":[{\"b\":0,\"c\":21},29],\"d\":[{\"e\":5}],\"e\":[{\"d\":[{\"e\":0}],\"f\":21,\"l\":117,\"s\":21}],\"g\":[{\"i\":4}],\"i\":[{\"d\":[{\"e\":5}],\"s\":1,\"t\":[{\"u\":11}],\"z\":118},2],\"m\":[{\"i\":[{\"n\":1}]}],\"o\":[{\"g\":0,\"n\":[{\".\":32}]}],\"u\":[{\"l\":4}],\"r\":[{\"e\":[{\"v\":[{\"o\":[{\"c\":221}]}]}]}]},18],\"s\":[{\".\":25,\"a\":[{\"g\":4,\"r\":3,\"s\":6}],\"c\":[{\"h\":3},119],\"e\":[{\"r\":3},18],\"f\":27,\"h\":[{\"a\":[{\"n\":4}],\"o\":[{\"n\":3,\"p\":5}]}],\"i\":[{\"b\":3,\"d\":0,\"s\":19,\"t\":[{\"i\":[{\"v\":4}]}]}],\"k\":26,\"l\":[{\"a\":[{\"n\":36}]}],\"m\":[{\"s\":18}],\"o\":[{\"m\":[{\"e\":[{\"r\":5}]}]},24],\"p\":[{\"i\":9,\"y\":1},2],\"s\":[{\"a\":[{\"l\":1}],\"e\":[{\"n\":36,\"s\":1}]},62],\"t\":[{\"a\":[{\".\":1}],\"e\":2,\"i\":2,\"l\":[{\"y\":0}],\"r\":[{\"a\":[{\"l\":18}]}]}],\"u\":[{\"s\":4},24]}],\"t\":[{\"a\":[{\".\":18,\"b\":[{\"i\":0}],\"g\":21,\"m\":120,\"n\":23,\"t\":23}],\"e\":[{\"r\":[{\"a\":3,\"i\":19}],\"s\":[{\"i\":[{\"m\":[{\"a\":29}]}]},1]},25],\"h\":[{\"i\":[{\"l\":148}]},25],\"i\":[{\"a\":18,\"c\":[{\"a\":3,\"k\":31},22],\"g\":3,\"l\":[{\"l\":4}],\"m\":24,\"o\":25,\"s\":[{\"m\":21},18],\"n\":[{\"e\":[{\"r\":[{\"a\":[{\"r\":158}]}]}]}]},29],\"o\":[{\"m\":121,\"n\":18}],\"r\":[{\"a\":[{\"m\":21}],\"y\":4}],\"t\":18,\"u\":[{\"a\":[{\"t\":3}],\"d\":19,\"l\":3}],\"z\":[{\".\":18}]}],\"u\":29,\"v\":[{\"e\":[{\"l\":[{\"l\":3}],\"n\":[{\".\":3}],\"r\":[{\".\":83,\"s\":[{\".\":21}]}]}],\"i\":[{\"l\":[{\".\":4}],\"o\":4,\"t\":2}],\"o\":[{\"r\":[{\"e\":19,\"o\":35}],\"t\":83}]},25],\"w\":56,\"x\":[{\"o\":1}],\"y\":18,\"z\":[{\"a\":[{\"r\":18}],\"i\":0,\"o\":[{\"n\":[{\"t\":32}]}]}]}],\"j\":[{\"a\":[{\"c\":[{\"q\":0}],\"p\":[{\"a\":[{\"n\":[{\"e\":[{\"s\":220}]}]}]},1],\"n\":[{\"u\":[{\"a\":12}]}]},32],\"e\":[{\"r\":[{\"s\":5,\"e\":[{\"m\":222}]}],\"s\":[{\"t\":[{\"i\":[{\"e\":18}],\"y\":18}]}],\"w\":11},41],\"o\":[{\"p\":1}],\"u\":[{\"d\":[{\"g\":32}]}]}],\"k\":[{\"a\":[{\".\":27,\"b\":23,\"g\":19,\"i\":[{\"s\":17}],\"l\":0}],\"b\":29,\"e\":[{\"d\":24,\"e\":41,\"g\":1,\"l\":[{\"i\":[{\"n\":[{\"g\":223}]},4]}],\"n\":[{\"d\":73}],\"r\":29,\"s\":[{\"t\":[{\".\":23}]},0],\"t\":[{\"y\":1}]}],\"f\":23,\"h\":1,\"i\":[{\".\":32,\"c\":122,\"l\":[{\"l\":21,\"o\":6}],\"m\":21,\"n\":[{\".\":21,\"d\":[{\"e\":0}],\"e\":[{\"s\":[{\"s\":19}],\"t\":[{\"i\":[{\"c\":224}]}]}],\"g\":0}],\"p\":1,\"s\":[{\"h\":19},0]},29],\"k\":1,\"l\":[{\"e\":[{\"y\":18}],\"y\":18},29],\"m\":29,\"n\":[{\"e\":[{\"s\":19}],\"o\":69}],\"o\":[{\"r\":4,\"s\":[{\"h\":17}],\"u\":23,\"v\":[{\"i\":[{\"a\":[{\"n\":41}]}]}]}],\"r\":[{\"o\":[{\"n\":5}]}],\"s\":[{\"c\":21,\"l\":1,\"y\":21,\"h\":[{\"a\":23}]},101],\"t\":19,\"w\":29}],\"l\":[{\"a\":[{\"b\":[{\"i\":[{\"c\":11}],\"o\":21}],\"c\":[{\"i\":[{\"e\":225},17]}],\"d\":[{\"e\":21,\"y\":3}],\"g\":[{\"n\":0}],\"m\":[{\"o\":11}],\"n\":[{\"d\":[{\"l\":0},27],\"e\":[{\"t\":5}],\"t\":[{\"e\":0}]}],\"r\":[{\"g\":0,\"i\":11,\"c\":[{\"e\":[{\"n\":176}]}]}],\"s\":[{\"e\":0}],\"t\":[{\"a\":[{\"n\":4}],\"e\":[{\"l\":[{\"i\":18}]}],\"i\":[{\"v\":18}]}],\"v\":[{\"a\":95},18],\"i\":[{\"n\":[{\"e\":[{\"s\":[{\"s\":226}]}]}]}]}],\"b\":[{\"i\":[{\"n\":17}]},42],\"c\":[{\"e\":0,\"i\":23,\"h\":[{\"a\":[{\"i\":23}],\"i\":[{\"l\":[{\"d\":227}]}]}]},101],\"d\":[{\"e\":[{\"r\":[{\"e\":1,\"i\":1}]},24],\"i\":[{\"s\":4},0],\"r\":[{\"i\":21},23]},25],\"e\":[{\"a\":[{\"d\":[{\"e\":[{\"r\":[{\".\":183}]}]}],\"s\":[{\"a\":228}]},9],\"b\":[{\"i\":1}],\"f\":[{\"t\":6}],\"g\":[{\".\":32,\"g\":32,\"e\":[{\"n\":[{\"d\":[{\"r\":[{\"e\":230}]}]}]}]}],\"m\":[{\"a\":[{\"t\":[{\"i\":[{\"c\":5}]},1]}]}],\"n\":[{\".\":18,\"c\":27,\"e\":[{\".\":32}],\"t\":41,\"o\":[{\"i\":[{\"d\":78}]}]}],\"p\":[{\"h\":3,\"r\":1}],\"r\":[{\"a\":[{\"b\":6}],\"e\":0,\"g\":27,\"i\":68,\"o\":21}],\"s\":[{\"c\":[{\"o\":4}],\"q\":32,\"s\":[{\".\":32},27]},8],\"v\":[{\"a\":23,\"e\":[{\"r\":[{\".\":0,\"a\":0,\"s\":0}]}]}],\"y\":[{\"e\":18},27],\"c\":[{\"t\":[{\"a\":[{\"b\":229}]}]}]}],\"f\":[{\"r\":19},25],\"g\":[{\"a\":[{\"r\":12},19],\"e\":[{\"s\":21}],\"o\":11},80],\"h\":48,\"i\":[{\"a\":[{\"g\":1,\"m\":9,\"r\":[{\"i\":[{\"z\":6}]}],\"s\":1,\"t\":[{\"o\":1}]}],\"b\":[{\"i\":4}],\"c\":[{\"i\":[{\"o\":32}],\"o\":[{\"r\":1}],\"s\":18,\"t\":[{\".\":18}],\"u\":21,\"y\":23}],\"d\":[{\"a\":23,\"e\":[{\"r\":5}],\"i\":27}],\"f\":[{\"e\":[{\"r\":11}],\"f\":21,\"l\":1}],\"g\":[{\"a\":[{\"t\":[{\"e\":32}]}],\"h\":27,\"r\":[{\"a\":1}]}],\"k\":27,\"l\":123,\"m\":[{\"b\":[{\"l\":0}],\"i\":11,\"o\":1,\"p\":90}],\"n\":[{\"a\":21,\"e\":[{\"a\":11},124],\"i\":11,\"k\":[{\"e\":[{\"r\":6}]}]}],\"o\":[{\"g\":4}],\"q\":125,\"s\":[{\"p\":0}],\"t\":[{\".\":24,\"i\":[{\"c\":[{\"a\":32,\"s\":108}]}],\"h\":[{\"o\":[{\"g\":204}]}]},29],\"v\":[{\"e\":[{\"r\":11}]}],\"z\":29}],\"j\":18,\"k\":[{\"a\":[{\"l\":23,\"t\":0},11]}],\"l\":[{\"a\":[{\"w\":21}],\"e\":[{\"a\":19,\"c\":23,\"g\":23,\"l\":23,\"n\":73,\"t\":73},24],\"i\":[{\"n\":[{\"a\":19},126],\"s\":[{\"h\":231}]},9],\"o\":[{\"q\":[{\"u\":[{\"i\":10}]}],\"u\":[{\"t\":4}],\"w\":19},1],\"f\":[{\"l\":2}]},29],\"m\":[{\"e\":[{\"t\":19}],\"i\":[{\"n\":[{\"g\":3}]}],\"o\":[{\"d\":21,\"n\":[{\"e\":[{\"l\":[{\"l\":232}]}]},17]}]},25],\"n\":81,\"o\":[{\".\":27,\"b\":[{\"a\":[{\"l\":5}],\"o\":[{\"t\":[{\"o\":233}]}]}],\"c\":[{\"i\":1}],\"f\":18,\"g\":[{\"i\":[{\"c\":27}],\"o\":19,\"u\":27,\"e\":[{\"s\":[{\".\":9}]}]}],\"m\":[{\"e\":[{\"r\":11}]}],\"n\":[{\"g\":32,\"i\":[{\"z\":127},0]}],\"o\":[{\"d\":6}],\"p\":[{\"e\":[{\".\":32}],\"i\":11,\"m\":23}],\"r\":[{\"a\":[{\"t\":[{\"o\":1}]},17],\"i\":[{\"e\":4}],\"o\":[{\"u\":5}]}],\"s\":[{\".\":32,\"e\":[{\"t\":5}],\"o\":[{\"p\":[{\"h\":[{\"i\":[{\"z\":32}],\"y\":32}]}]}],\"t\":0}],\"t\":[{\"a\":1}],\"u\":[{\"n\":[{\"d\":6}],\"t\":25}],\"v\":18,\"a\":[{\"d\":[{\"e\":[{\"d\":[{\".\":17}],\"r\":[{\".\":183}]}]}]}]}],\"p\":[{\"a\":[{\"b\":5}],\"h\":[{\"a\":23,\"i\":19}],\"i\":[{\"n\":[{\"g\":4}],\"t\":23}],\"l\":21,\"r\":19},25],\"r\":43,\"s\":[{\"c\":21,\"e\":24,\"i\":[{\"e\":21}]},81],\"t\":[{\"a\":[{\"g\":4,\"n\":[{\"e\":7}]}],\"e\":[{\"n\":17,\"r\":[{\"a\":36}],\"a\":23},29],\"h\":[{\"i\":[{\"l\":[{\"y\":148}]},11]}],\"i\":[{\"e\":[{\"s\":[{\".\":19}]}],\"s\":17}],\"r\":29,\"u\":[{\"r\":[{\"a\":12}]},8]},18],\"u\":[{\"a\":4,\"b\":[{\"r\":3}],\"c\":[{\"h\":17,\"i\":3}],\"e\":[{\"n\":3,\"p\":15}],\"f\":0,\"i\":[{\"d\":4}],\"m\":[{\"a\":1,\"i\":32,\"n\":[{\".\":19,\"i\":[{\"a\":32}]}],\"b\":[{\"i\":[{\"a\":[{\".\":235}]}]}]}],\"o\":[{\"r\":11},3],\"p\":18,\"s\":[{\"s\":17,\"t\":[{\"e\":11}]}],\"t\":41,\"n\":[{\"k\":[{\"e\":[{\"r\":234}]}]}]}],\"v\":[{\"e\":[{\"n\":19,\"t\":128}]}],\"w\":42,\"y\":[{\"a\":18,\"b\":18,\"m\":[{\"e\":4}],\"n\":[{\"o\":3}],\"s\":[{\"e\":19,\"t\":[{\"y\":[{\"r\":4}]}]},58],\"g\":[{\"a\":[{\"m\":[{\"i\":236}]}]}]},41]}],\"m\":[{\"a\":[{\"b\":25,\"c\":[{\"a\":9,\"h\":[{\"i\":[{\"n\":[{\"e\":4}]}]}],\"l\":1}],\"g\":[{\"i\":[{\"n\":5}],\"n\":32}],\"h\":25,\"i\":[{\"d\":6}],\"l\":[{\"d\":18,\"i\":[{\"g\":3,\"n\":4}],\"l\":[{\"i\":0}],\"t\":[{\"y\":0}],\"a\":[{\"p\":222}]}],\"n\":[{\"i\":[{\"a\":32,\"s\":5,\"z\":11}],\".\":24,\"u\":[{\"s\":[{\"c\":237}]}]}],\"p\":[{\"h\":[{\"r\":[{\"o\":244}]}]},18],\"r\":[{\"i\":[{\"n\":[{\"e\":[{\".\":4}]}],\"z\":4}],\"l\":[{\"y\":0}],\"v\":11,\"g\":[{\"i\":[{\"n\":238}]}]}],\"s\":[{\"c\":[{\"e\":4}],\"e\":0,\"t\":15}],\"t\":[{\"e\":32,\"h\":12,\"i\":[{\"s\":3,\"z\":[{\"a\":18}]}]}]},41],\"b\":[{\"a\":[{\"t\":129}],\"i\":[{\"l\":19,\"n\":[{\"g\":83}],\"v\":0}]},43],\"c\":56,\"e\":[{\".\":18,\"d\":[{\".\":18,\"i\":[{\"a\":32,\"e\":3,\"c\":[{\"i\":[{\"n\":152}]},84],\"o\":[{\"c\":239}]}],\"y\":108},25],\"g\":[{\"r\":[{\"a\":[{\"n\":240}]}]},9],\"l\":[{\"o\":[{\"n\":5}],\"t\":0}],\"m\":[{\"o\":130},9],\"n\":[{\"a\":[{\"c\":5},0],\"d\":[{\"e\":0}],\"e\":18,\"i\":0,\"s\":[{\"u\":7},17],\"t\":[{\"e\":0},27],\".\":24},41],\"o\":[{\"n\":4}],\"r\":[{\"s\":[{\"a\":19}]}],\"s\":[{\"t\":[{\"i\":27}]},25],\"t\":[{\"a\":[{\"l\":11},1],\"e\":2,\"h\":[{\"i\":4}],\"r\":[{\"i\":[{\"c\":32,\"e\":4}],\"y\":3},21]}],\"v\":1}],\"f\":43,\"h\":25,\"i\":[{\".\":32,\"a\":3,\"d\":[{\"a\":[{\"b\":241},0],\"g\":0}],\"g\":0,\"l\":[{\"i\":[{\"a\":27,\"e\":108,\"t\":[{\"a\":27}]}],\"l\":[{\"a\":[{\"g\":208}],\"i\":[{\"l\":[{\"i\":59}]}]},21]}],\"n\":[{\"a\":0,\"d\":27,\"e\":[{\"e\":19}],\"g\":[{\"l\":[{\"i\":5,\"y\":19},21]}],\"t\":0,\"u\":[{\"t\":[{\"e\":[{\"r\":242,\"s\":[{\"t\":242}]}]}]},21],\"i\":[{\"s\":[{\".\":174}]}]}],\"o\":[{\"t\":17}],\"s\":[{\"e\":[{\"r\":[{\".\":0}]}],\"l\":5,\"t\":[{\"i\":0,\"r\":[{\"y\":19}]}]},24],\"t\":[{\"h\":18}],\"z\":24}],\"k\":18,\"l\":43,\"m\":[{\"a\":[{\"r\":[{\"y\":5}],\"b\":243}]},29],\"n\":[{\"a\":1,\"i\":[{\"n\":21}],\"o\":1},43],\"o\":[{\"c\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":[{\"z\":32}]},245]}]},18]}],\"d\":131,\"g\":[{\"o\":1}],\"i\":[{\"s\":[{\"e\":5},84]}],\"k\":18,\"l\":[{\"e\":[{\"s\":[{\"t\":4}],\"c\":246}]}],\"m\":[{\"e\":3}],\"n\":[{\"e\":[{\"t\":5,\"y\":[{\"l\":247}]}],\"g\":[{\"e\":5}],\"i\":[{\"a\":12,\"s\":[{\"m\":0,\"t\":0}],\"z\":3}],\"o\":[{\"l\":36,\"c\":[{\"h\":12}],\"e\":[{\"n\":171}],\"s\":249}],\"y\":[{\".\":3}]}],\"r\":[{\"a\":[{\".\":18}],\"o\":[{\"n\":[{\"i\":[{\"s\":248}]}]}]},9],\"s\":[{\"e\":[{\"y\":4}],\"p\":3},8],\"t\":[{\"h\":[{\"e\":[{\"t\":250}]},12]}],\"u\":[{\"f\":19,\"s\":[{\"i\":[{\"n\":98}]},27]}],\"v\":9,\"e\":[{\"l\":[{\"a\":[{\"s\":167}]}]}]},41],\"p\":[{\"a\":[{\"r\":[{\"a\":[{\"b\":5},7],\"i\":6}]}],\"e\":[{\"t\":23}],\"h\":[{\"a\":[{\"s\":36}]}],\"i\":[{\"a\":0,\"e\":[{\"s\":4}],\"n\":34,\"r\":19,\"s\":4},24],\"o\":[{\"r\":[{\"i\":11}],\"s\":[{\"i\":[{\"t\":[{\"e\":6}]}]}],\"u\":[{\"s\":21}],\"v\":6}],\"t\":[{\"r\":1}],\"y\":24},43],\"r\":47,\"s\":[{\"h\":[{\"a\":[{\"c\":[{\"k\":251}]}]},21],\"i\":19},101],\"t\":18,\"u\":[{\"l\":[{\"a\":[{\"r\":49}],\"t\":[{\"i\":[{\"u\":252},54]},32]}],\"m\":27,\"n\":8,\"p\":18,\"u\":1,\"d\":[{\"r\":[{\"o\":9}]}]},41],\"w\":18}],\"n\":[{\"a\":[{\"b\":[{\"u\":21},81],\"c\":[{\".\":18,\"a\":1,\"t\":19}],\"g\":[{\"e\":[{\"r\":[{\".\":5}]}]}],\"k\":0,\"l\":[{\"i\":[{\"a\":4},1],\"t\":18}],\"m\":[{\"i\":[{\"t\":4}]}],\"n\":[{\"c\":[{\"i\":36}],\"i\":[{\"t\":0}],\"k\":17},24],\"r\":[{\"c\":[{\"h\":[{\"s\":[{\".\":73}]}]},11],\"e\":18,\"i\":11,\"l\":0,\"m\":19}],\"s\":[{\"c\":0,\"t\":[{\"i\":5}]},21],\"t\":[{\"a\":[{\"l\":3}],\"o\":[{\"m\":[{\"i\":[{\"z\":6}]}]}]},24],\"u\":[{\"s\":[{\"e\":11}],\"t\":27},24],\"v\":[{\"e\":0}]},41],\"b\":80,\"c\":[{\"a\":[{\"r\":6}],\"e\":[{\"s\":[{\".\":21}]}],\"h\":[{\"a\":23,\"e\":[{\"o\":19,\"s\":[{\"t\":253}]}],\"i\":[{\"l\":19,\"s\":23}]}],\"i\":[{\"n\":2,\"t\":1}],\"o\":[{\"u\":[{\"r\":[{\"a\":7}]}]}],\"r\":29,\"u\":29}],\"d\":[{\"a\":[{\"i\":21,\"n\":19}],\"e\":[{\"s\":[{\"t\":[{\".\":4}]}]},29],\"i\":[{\"b\":0,\"f\":79,\"t\":29,\"z\":23,\"e\":[{\"c\":[{\"k\":29}]}]}],\"u\":[{\"c\":19,\"r\":0}],\"w\":[{\"e\":9}],\"t\":[{\"h\":[{\"r\":3}]}]}],\"e\":[{\".\":25,\"a\":[{\"r\":23}],\"b\":[{\"u\":11,\"a\":[{\"c\":[{\"k\":3}]}]},9],\"c\":[{\"k\":32},9],\"d\":25,\"g\":[{\"a\":[{\"t\":[{\"i\":[{\"v\":5}]},1]}],\"e\":32}],\"l\":[{\"a\":1,\"i\":[{\"z\":5}]}],\"m\":[{\"i\":4,\"o\":1}],\"n\":[{\"e\":18},41],\"o\":27,\"p\":[{\"o\":1}],\"q\":9,\"r\":[{\"a\":[{\"b\":6,\"r\":21}],\"e\":24,\"i\":132,\"r\":0},29],\"s\":[{\".\":25,\"p\":18,\"t\":25,\"w\":18,\"k\":[{\"i\":119}]},41],\"t\":[{\"i\":[{\"c\":27}]}],\"v\":[{\"e\":19},1],\"w\":1}],\"f\":[{\"i\":[{\"n\":[{\"i\":[{\"t\":[{\"e\":[{\"s\":226}]}]}]}]}]},23],\"g\":[{\"a\":[{\"b\":21}],\"e\":[{\"l\":23,\"n\":[{\"e\":[{\"s\":5},133]}],\"r\":[{\"e\":19,\"i\":23}]}],\"h\":[{\"a\":4,\"o\":2}],\"i\":[{\"b\":23,\"n\":2,\"t\":19}],\"l\":[{\"a\":21}],\"o\":[{\"v\":17}],\"s\":[{\"h\":4,\"p\":[{\"r\":2}]}],\"u\":[{\"m\":21},29],\"y\":24}],\"h\":[{\"a\":[{\"b\":12},0],\"e\":0},80],\"i\":[{\"a\":[{\"n\":[{\".\":114},3],\"p\":1},68],\"b\":[{\"a\":3,\"l\":1}],\"d\":[{\"i\":4},1],\"e\":[{\"r\":1}],\"f\":[{\"i\":[{\"c\":[{\"a\":[{\"t\":4}]}]},9]}],\"g\":[{\"r\":19}],\"k\":0,\"m\":[{\"i\":[{\"z\":3}]},29],\"n\":[{\"e\":[{\".\":32}],\"g\":0},29],\"o\":1,\"s\":[{\".\":32,\"t\":[{\"a\":0}]}],\"t\":[{\"h\":21,\"i\":[{\"o\":27}],\"o\":[{\"r\":23}],\"r\":3},24]}],\"j\":29,\"k\":[{\"e\":[{\"r\":[{\"o\":19}],\"t\":23}],\"i\":[{\"n\":3}],\"l\":29,\"r\":[{\"u\":[{\"p\":3}]}]},44],\"l\":[{\"e\":[{\"s\":[{\"s\":19}]}]},43],\"m\":[{\"e\":[{\"t\":17},0]},19],\"n\":[{\"e\":0,\"i\":[{\"a\":[{\"l\":11}],\"v\":0}]},101],\"o\":[{\"b\":[{\"l\":[{\"e\":3},0]}],\"c\":[{\"l\":19,\"e\":[{\"r\":[{\"o\":[{\"s\":254}]}]}]}],\"d\":66,\"e\":27,\"g\":[{\"e\":17},18],\"i\":[{\"s\":[{\"i\":6}]}],\"l\":[{\"i\":134,\"o\":[{\"g\":[{\"i\":[{\"s\":32}]}]}]}],\"m\":[{\"i\":[{\"c\":27,\"z\":108,\"s\":[{\"t\":82}]}],\"o\":1,\"y\":3,\"a\":[{\"l\":214}],\"e\":[{\"n\":[{\"o\":194}]}]}],\"n\":[{\"a\":[{\"g\":0}],\"i\":[{\"z\":19,\"s\":[{\"o\":255}]},5],\"e\":[{\"q\":15}]},1],\"p\":[{\"o\":[{\"l\":[{\"i\":135,\"y\":[{\".\":256}]}]}]},18],\"r\":[{\"a\":[{\"b\":5,\"r\":[{\"y\":1}]}]}],\"s\":[{\"c\":18,\"e\":0,\"t\":5}],\"t\":[{\"a\":4}],\"u\":[{\"n\":27},41],\"v\":[{\"e\":[{\"l\":136,\"m\":[{\"b\":2}]}]}],\"w\":[{\"l\":12}]}],\"p\":[{\"i\":0,\"r\":[{\"e\":[{\"c\":17}]}]},72],\"q\":29,\"r\":[{\"u\":0},29],\"s\":[{\"a\":[{\"b\":4,\"t\":[{\"i\":36}]}],\"c\":[{\"e\":[{\"i\":[{\"v\":4}]}]},1],\"e\":[{\"s\":83},24],\"i\":[{\"d\":137,\"g\":17}],\"l\":24,\"m\":[{\"o\":[{\"o\":1}]},3],\"o\":[{\"c\":21}],\"p\":[{\"e\":1,\"i\":19}],\"t\":[{\"a\":[{\"b\":[{\"l\":6}]}]}]},81],\"t\":[{\"a\":[{\"b\":0}],\"e\":[{\"r\":[{\"s\":12}]}],\"i\":[{\"b\":19,\"e\":[{\"r\":0}],\"f\":8,\"n\":[{\"e\":23,\"g\":83}],\"p\":0},9],\"r\":[{\"o\":[{\"l\":[{\"l\":[{\"i\":7}]}]}],\"e\":[{\"p\":137}]}],\"s\":1,\"u\":[{\"m\":[{\"e\":11}]}]},29],\"u\":[{\"a\":2,\"d\":1,\"e\":[{\"n\":4}],\"f\":[{\"f\":[{\"e\":0}]}],\"i\":[{\"n\":23,\"t\":50}],\"m\":[{\"e\":2,\"i\":19},21],\"n\":138,\"o\":23,\"t\":[{\"r\":3}]}],\"v\":74,\"w\":72,\"y\":[{\"m\":0,\"p\":0}],\"z\":[{\"a\":23},18]}],\"o\":[{\"a\":[{\"d\":11,\"l\":[{\"e\":[{\"s\":108}]}],\"r\":[{\"d\":12}],\"s\":[{\"e\":0,\"t\":[{\"e\":6}]}],\"t\":[{\"i\":5}]},18],\"b\":[{\"a\":[{\"b\":35,\"r\":19}],\"e\":[{\"l\":0}],\"i\":[{\"n\":[{\"g\":4},24]},29],\"r\":23,\"u\":[{\"l\":3}],\"l\":[{\"i\":[{\"g\":189}]}]}],\"c\":[{\"e\":29,\"h\":[{\"e\":[{\"t\":23}],\"a\":[{\"s\":23}]},0],\"i\":[{\"f\":12,\"l\":21}],\"l\":[{\"a\":[{\"m\":21}]}],\"o\":[{\"d\":21}],\"r\":[{\"a\":[{\"c\":3,\"t\":[{\"i\":[{\"z\":4}]}]}],\"e\":12,\"i\":[{\"t\":32}]}],\"t\":[{\"o\":[{\"r\":[{\"a\":7}]}]}],\"u\":[{\"l\":[{\"a\":3}],\"r\":[{\"e\":19}]}]}],\"d\":[{\"d\":[{\"e\":[{\"d\":4}]}],\"i\":[{\"c\":3,\"o\":11,\"t\":[{\"i\":[{\"c\":137}]}]}],\"o\":[{\"r\":12},139],\"u\":[{\"c\":[{\"t\":[{\".\":4,\"s\":4}]}]}],\"e\":[{\"l\":[{\"l\":[{\"i\":12}]}]}]}],\"e\":[{\"l\":21,\"n\":[{\"g\":19}],\"r\":[{\"s\":[{\"t\":257}]},23],\"t\":[{\"a\":1}],\"v\":23}],\"f\":[{\"i\":[{\"t\":[{\"e\":4,\"t\":17}]},24]}],\"g\":[{\"a\":[{\"r\":121,\"t\":[{\"i\":[{\"v\":4}],\"o\":21}]}],\"e\":[{\"n\":[{\"e\":19}],\"o\":19,\"r\":21},29],\"i\":[{\"e\":23,\"s\":140,\"t\":3}],\"l\":[{\"y\":79},21],\"n\":[{\"i\":[{\"z\":27}]}],\"r\":[{\"o\":21}],\"u\":[{\"i\":5}],\"y\":[{\"n\":25},41]}],\"h\":[{\"a\":[{\"b\":6}]},74],\"i\":[{\"c\":[{\"e\":[{\"s\":11}]}],\"d\":[{\"e\":[{\"r\":3}]}],\"f\":[{\"f\":17}],\"g\":0,\"l\":[{\"e\":[{\"t\":4}]}],\"n\":[{\"g\":23,\"t\":[{\"e\":[{\"r\":6}]}]}],\"s\":[{\"m\":19,\"o\":[{\"n\":4}],\"t\":[{\"e\":[{\"n\":6}]}]}],\"t\":[{\"e\":[{\"r\":3}]}]},9],\"j\":19,\"k\":[{\"e\":[{\"n\":23,\"s\":[{\"t\":15}]}],\"i\":[{\"e\":4}]},25],\"l\":[{\"a\":[{\"n\":21,\"s\":[{\"s\":36}]},29],\"d\":[{\"e\":15},9],\"e\":[{\"r\":3,\"s\":[{\"c\":23,\"t\":[{\"e\":[{\"r\":88}]}]}],\"t\":23}],\"f\":[{\"i\":1}],\"i\":[{\"a\":23,\"c\":[{\"e\":23}],\"d\":[{\".\":4}],\"f\":73,\"l\":19,\"n\":[{\"g\":3}],\"o\":19,\"s\":[{\".\":19,\"h\":3}],\"t\":[{\"e\":19,\"i\":[{\"o\":19}]}],\"v\":19,\"g\":[{\"o\":[{\"p\":[{\"o\":258}]}]}]},9],\"l\":[{\"i\":[{\"e\":17}]}],\"o\":[{\"g\":[{\"i\":[{\"z\":4}]}],\"r\":0,\"n\":[{\"o\":[{\"m\":259}]}]}],\"p\":[{\"l\":4}],\"t\":9,\"u\":[{\"b\":3,\"m\":[{\"e\":3}],\"n\":3,\"s\":19}],\"v\":9,\"y\":24}],\"m\":[{\"a\":[{\"h\":4,\"l\":5,\"t\":[{\"i\":[{\"z\":4}]}]}],\"b\":[{\"e\":9,\"l\":1}],\"e\":[{\"n\":[{\"a\":3}],\"r\":[{\"s\":[{\"e\":4}]}],\"t\":[{\"r\":[{\"y\":4}]},21],\"c\":[{\"h\":[{\"a\":260}]}]},24],\"i\":[{\"a\":23,\"c\":[{\".\":3,\"a\":3}],\"d\":19,\"n\":[{\"i\":19},2]}],\"m\":[{\"e\":[{\"n\":[{\"d\":32}]}]}],\"o\":[{\"g\":[{\"e\":0}],\"n\":21}],\"p\":[{\"i\":3,\"r\":[{\"o\":7}]}]}],\"n\":[{\"a\":[{\"c\":1,\"n\":23},2],\"c\":[{\"i\":[{\"l\":27}]},2],\"d\":[{\"o\":4},25],\"e\":[{\"n\":23,\"s\":[{\"t\":4}]}],\"g\":[{\"u\":1}],\"i\":[{\"c\":2,\"o\":23,\"s\":2,\"u\":19}],\"k\":[{\"e\":[{\"y\":3}]}],\"o\":[{\"d\":[{\"i\":1}],\"m\":[{\"y\":3,\"i\":[{\"c\":137}]}],\"r\":[{\"m\":[{\"a\":23}]}],\"t\":[{\"o\":[{\"n\":261}]}],\"u\":23}],\"s\":[{\"p\":[{\"i\":[{\"r\":[{\"a\":10}]},36]}],\"u\":17},3],\"t\":[{\"e\":[{\"n\":36}],\"i\":[{\"f\":7},93]}],\"u\":[{\"m\":4}],\"v\":[{\"a\":6}]},24],\"o\":[{\"d\":[{\"e\":5,\"i\":5}],\"k\":1,\"p\":[{\"i\":11}],\"r\":[{\"d\":23}],\"s\":[{\"t\":6}]},9],\"p\":[{\"a\":24,\"e\":[{\"d\":5,\"r\":[{\"a\":[{\"g\":18},27]},2]}],\"h\":[{\"a\":[{\"n\":19}],\"e\":[{\"r\":19}]},25],\"i\":[{\"n\":[{\"g\":3}],\"t\":23,\"s\":[{\"m\":[{\".\":2}]}]}],\"o\":[{\"n\":19,\"s\":[{\"i\":21}]}],\"r\":29,\"u\":2,\"y\":5}],\"q\":29,\"r\":[{\"a\":[{\".\":19,\"g\":83,\"l\":[{\"i\":[{\"z\":4}]}],\"n\":[{\"g\":[{\"e\":4}]}]},29],\"e\":[{\"a\":[{\"l\":19},5],\"i\":3,\"s\":[{\"h\":5,\"t\":[{\".\":4}]}],\"w\":17}],\"g\":[{\"u\":1}],\"i\":[{\"a\":56,\"c\":[{\"a\":3}],\"l\":19,\"n\":2,\"o\":29,\"t\":[{\"y\":3}],\"u\":23}],\"m\":[{\"i\":9}],\"n\":[{\"e\":8}],\"o\":[{\"f\":19,\"u\":[{\"g\":3}]}],\"p\":[{\"e\":4}],\"r\":[{\"h\":27}],\"s\":[{\"e\":[{\"n\":5},1],\"t\":17}],\"t\":[{\"h\":[{\"i\":3,\"y\":3,\"o\":[{\"n\":[{\"i\":[{\"t\":262}]}]}],\"r\":[{\"i\":137}]}],\"y\":1,\"i\":[{\"v\":[{\"e\":[{\"l\":[{\"y\":4}]}]}]}]}],\"u\":[{\"m\":19}],\"y\":29}],\"s\":[{\"a\":[{\"l\":3}],\"c\":[{\"e\":1,\"o\":[{\"p\":[{\"i\":18},23]}],\"r\":19},9],\"i\":[{\"e\":95,\"t\":[{\"i\":[{\"v\":4}],\"o\":3,\"y\":3}],\"u\":0}],\"l\":1,\"o\":24,\"p\":[{\"a\":1,\"o\":1,\"h\":[{\"e\":[{\"r\":83}]}]}],\"t\":[{\"a\":[{\"t\":[{\"i\":19}]},9],\"i\":[{\"l\":4,\"t\":4}]}]}],\"t\":[{\"a\":[{\"n\":21}],\"e\":[{\"l\":[{\"e\":[{\"g\":36}]}],\"r\":[{\".\":3,\"s\":4}],\"s\":[{\"t\":[{\"e\":[{\"r\":263}],\"o\":[{\"r\":264}]}]},21]}],\"h\":[{\"e\":[{\"s\":[{\"i\":5}],\"o\":[{\"s\":265}]}],\"i\":14},18],\"i\":[{\"c\":[{\".\":3,\"a\":4,\"e\":23}],\"f\":23,\"s\":23}],\"o\":[{\"s\":5}]}],\"u\":[{\"b\":[{\"l\":3,\"a\":[{\"d\":[{\"o\":116}]}]}],\"c\":[{\"h\":[{\"i\":6}]}],\"e\":[{\"t\":4}],\"l\":1,\"n\":[{\"c\":[{\"e\":[{\"r\":6}]}],\"d\":8}],\"v\":4},9],\"v\":[{\"e\":[{\"n\":1,\"r\":[{\"n\":[{\"e\":17}],\"s\":12,\"t\":1}]}],\"i\":[{\"s\":23,\"t\":[{\"i\":36}],\"a\":[{\"n\":[{\".\":266}]}]}],\"o\":[{\"l\":60}]}],\"w\":[{\"d\":[{\"e\":[{\"r\":3}]}],\"e\":[{\"l\":3,\"s\":[{\"t\":4}]}],\"i\":2,\"n\":[{\"i\":5}],\"o\":21}],\"y\":[{\"a\":2}],\"x\":[{\"i\":[{\"d\":[{\"i\":[{\"c\":267}]}]}]}]}],\"p\":[{\"a\":[{\"c\":[{\"a\":1,\"e\":1,\"t\":0}],\"d\":21,\"g\":[{\"a\":[{\"n\":32,\"t\":23}]}],\"i\":[{\"n\":17},21],\"l\":[{\"m\":[{\"a\":[{\"t\":268}]}]},21],\"n\":[{\"a\":0,\"e\":[{\"l\":11}],\"t\":[{\"y\":0}],\"y\":3}],\"p\":[{\"u\":1},2],\"r\":[{\"a\":[{\"b\":[{\"l\":6}],\"g\":[{\"e\":5,\"r\":[{\"a\":269}]}],\"l\":[{\"e\":228}],\"m\":[{\"e\":12},36]}],\"d\":[{\"i\":5}],\"e\":[{\"l\":5},27],\"i\":[{\"s\":0},28]}],\"t\":[{\"e\":[{\"r\":4},9],\"h\":[{\"i\":[{\"c\":32}],\"y\":4}],\"r\":[{\"i\":[{\"c\":1}]}]}],\"v\":0,\"y\":27},41],\"b\":43,\"d\":1,\"e\":[{\".\":18,\"a\":[{\"r\":[{\"l\":17}]},138],\"c\":9,\"d\":[{\"e\":27,\"i\":[{\"a\":36,\"c\":0},27]},37],\"e\":[{\"d\":0,\"v\":208},21],\"k\":0,\"l\":[{\"a\":1,\"i\":[{\"e\":17}]}],\"n\":[{\"a\":[{\"n\":1}],\"c\":21,\"t\":[{\"h\":0}]}],\"o\":[{\"n\":4}],\"r\":[{\"a\":[{\".\":21,\"b\":[{\"l\":6}],\"g\":21}],\"i\":[{\"s\":[{\"t\":6}]},21],\"m\":[{\"a\":[{\"l\":0}],\"e\":7}],\"n\":21,\"o\":11,\"t\":[{\"i\":11}],\"u\":4,\"v\":15}],\"t\":[{\"e\":[{\"n\":4}],\"i\":[{\"z\":4}]},9]}],\"f\":18,\"g\":18,\"h\":[{\".\":18,\"a\":[{\"r\":[{\"i\":6}]}],\"e\":[{\"n\":[{\"o\":11}],\"r\":1,\"s\":[{\".\":1}]}],\"i\":[{\"c\":2,\"e\":32,\"n\":[{\"g\":4}],\"s\":[{\"t\":[{\"i\":32}]}],\"z\":27,\"l\":[{\"a\":[{\"n\":[{\"t\":168}],\"t\":[{\"e\":[{\"l\":270}]}]}]}]}],\"l\":9,\"o\":[{\"b\":27,\"n\":[{\"e\":27,\"i\":32}],\"r\":0}],\"s\":18,\"t\":3,\"u\":32,\"y\":41}],\"i\":[{\"a\":[{\"n\":17},3],\"c\":[{\"i\":[{\"e\":1}],\"y\":1,\"a\":[{\"d\":271}]}],\"d\":[{\"a\":19,\"e\":3,\"i\":32},21],\"e\":[{\"c\":27,\"n\":3}],\"g\":[{\"r\":[{\"a\":[{\"p\":1}]}]}],\"l\":[{\"o\":3}],\"n\":[{\".\":21,\"d\":17,\"o\":21},9],\"o\":[{\"n\":17},141],\"t\":[{\"h\":[{\"a\":4},23],\"u\":9}]}],\"k\":142,\"l\":[{\"a\":[{\"n\":27,\"s\":[{\"t\":6}]}],\"i\":[{\"a\":11,\"e\":[{\"r\":5}],\"g\":18,\"n\":[{\"a\":[{\"r\":5}]},0],\"c\":[{\"a\":[{\"b\":208}]}]}],\"o\":[{\"i\":17}],\"u\":[{\"m\":[{\"b\":17},0]}]},143],\"m\":43,\"n\":48,\"o\":[{\"c\":1,\"d\":[{\".\":32}],\"e\":[{\"m\":4,\"t\":144}],\"g\":145,\"i\":[{\"n\":[{\"t\":32,\"c\":[{\"a\":12}]},84]}],\"l\":[{\"y\":[{\"t\":6,\"e\":137,\"p\":[{\"h\":[{\"o\":[{\"n\":[{\"o\":272}]}]}]}]}],\"e\":[{\".\":41}]}],\"n\":[{\"i\":1}],\"p\":1,\"r\":[{\"y\":1},124],\"s\":[{\"s\":15},41],\"t\":[{\"a\":1},21],\"u\":[{\"n\":32}]}],\"p\":[{\"a\":[{\"r\":[{\"a\":5}]}],\"e\":[{\"d\":21,\"l\":19,\"n\":23,\"r\":23,\"t\":23},24],\"o\":[{\"s\":[{\"i\":[{\"t\":[{\"e\":5}]}]}]}]},43],\"r\":[{\"a\":[{\"y\":[{\"e\":17}]}],\"e\":[{\"c\":[{\"i\":32,\"o\":5}],\"e\":[{\"m\":11}],\"f\":[{\"a\":[{\"c\":6}]}],\"l\":[{\"a\":0}],\"r\":11,\"s\":[{\"e\":23,\"s\":27,\"p\":[{\"l\":[{\"i\":84}]}]}],\"t\":[{\"e\":[{\"n\":5}]}],\"v\":11,\"m\":[{\"a\":[{\"c\":273}]}],\"n\":[{\"e\":[{\"u\":15}]}]}],\"i\":[{\"e\":53,\"n\":[{\"t\":146}],\"s\":[{\"o\":12},0]}],\"o\":[{\"c\":[{\"a\":23,\"e\":[{\"s\":[{\"s\":8}]}],\"i\":[{\"t\":[{\"y\":[{\".\":274}]}]}]}],\"f\":[{\"i\":[{\"t\":6}]}],\"l\":11,\"s\":[{\"e\":12}],\"t\":15,\"g\":[{\"e\":208}]}]},9],\"s\":[{\"e\":[{\"u\":[{\"d\":[{\"o\":[{\"d\":276,\"f\":276}]},275]}]},24],\"h\":1,\"i\":[{\"b\":21}]},81],\"t\":[{\"a\":[{\"b\":134}],\"e\":24,\"h\":24,\"i\":[{\"m\":11}],\"u\":[{\"r\":0}],\"w\":21,\"o\":[{\"m\":[{\"a\":[{\"t\":277}]}]}],\"r\":[{\"o\":[{\"l\":278}]}]},42],\"u\":[{\"b\":[{\"e\":[{\"s\":[{\"c\":181}]}]},11],\"e\":0,\"f\":0,\"l\":[{\"c\":11}],\"m\":1,\"n\":9,\"r\":[{\"r\":0}],\"s\":32,\"t\":[{\"e\":[{\"r\":11},32],\"r\":3,\"t\":[{\"e\":[{\"d\":0}],\"i\":[{\"n\":0}]}]},9]}],\"w\":23}],\"q\":[{\"u\":[{\"a\":[{\"v\":5,\"i\":[{\"n\":[{\"t\":[{\"e\":279}]}]}],\"s\":[{\"i\":[{\"r\":281,\"s\":281},280]}]}],\"e\":[{\".\":25,\"r\":27,\"t\":27}],\"i\":[{\"n\":[{\"t\":[{\"e\":[{\"s\":[{\"s\":282}]}]}]}],\"v\":[{\"a\":[{\"r\":14}]}]}]},9]}],\"r\":[{\"a\":[{\"b\":[{\"i\":3,\"o\":[{\"l\":[{\"i\":[{\"c\":29}],\"o\":[{\"i\":236}]}]}]},25],\"c\":[{\"h\":[{\"e\":17,\"u\":3}],\"l\":19}],\"f\":[{\"f\":[{\"i\":5}],\"t\":0}],\"i\":24,\"l\":[{\"o\":1}],\"m\":[{\"e\":[{\"t\":[{\"r\":[{\"i\":[{\"z\":283}]}]},11],\"n\":24}],\"i\":24,\"o\":[{\"u\":3}]}],\"n\":[{\"e\":[{\"o\":6}],\"g\":[{\"e\":0}],\"i\":21,\"o\":4,\"h\":[{\"a\":[{\"s\":167}]}]}],\"p\":[{\"e\":[{\"r\":11}],\"h\":[{\"y\":27}]}],\"r\":[{\"c\":5,\"e\":[{\"f\":5},17],\"i\":[{\"l\":18}]}],\"s\":24,\"t\":[{\"i\":[{\"o\":[{\"n\":115}]}]}],\"u\":[{\"t\":0}],\"v\":[{\"a\":[{\"i\":4}],\"e\":[{\"l\":11}]}],\"z\":[{\"i\":[{\"e\":4}]}],\"d\":[{\"i\":[{\"g\":127,\"o\":[{\"g\":249}]}]}],\"o\":[{\"r\":2}]}],\"b\":[{\"a\":[{\"b\":21,\"g\":21}],\"i\":[{\"f\":0,\"n\":[{\"e\":19,\"g\":[{\".\":4,\"e\":284}]},24]},8],\"o\":1},29],\"c\":[{\"e\":[{\"n\":17},24],\"h\":[{\"a\":23,\"e\":[{\"r\":0}]}],\"i\":[{\"b\":90,\"t\":1}],\"u\":[{\"m\":12}]},29],\"d\":[{\"a\":[{\"l\":21}],\"i\":[{\"a\":0,\"e\":[{\"r\":0}],\"n\":[{\"g\":3},17]},9]}],\"e\":[{\".\":25,\"a\":[{\"l\":2,\"n\":3,\"r\":[{\"r\":4}],\"v\":32,\"w\":1}],\"b\":[{\"r\":[{\"a\":[{\"t\":19}]}]}],\"c\":[{\"o\":[{\"l\":[{\"l\":5}],\"m\":[{\"p\":[{\"e\":5}]}]}],\"r\":[{\"e\":1}],\"i\":[{\"p\":[{\"r\":285}]}],\"t\":[{\"a\":[{\"n\":[{\"g\":286}]}]}]}],\"d\":[{\"e\":2,\"i\":[{\"s\":3,\"t\":5}]},37],\"f\":[{\"a\":[{\"c\":1}],\"e\":[{\"r\":[{\".\":4}]},9],\"i\":3,\"y\":1}],\"g\":[{\"i\":[{\"s\":11}]}],\"i\":[{\"t\":4}],\"l\":[{\"i\":2,\"u\":4}],\"n\":[{\"t\":[{\"a\":90,\"e\":0}]}],\"o\":2,\"p\":[{\"i\":[{\"n\":4}],\"o\":[{\"s\":[{\"i\":1}]}],\"u\":2}],\"r\":[{\"i\":21,\"o\":17,\"u\":4},147],\"s\":[{\".\":21,\"p\":[{\"i\":1}],\"s\":[{\"i\":[{\"b\":6}]}],\"t\":[{\"a\":[{\"l\":4}],\"r\":3},8]}],\"t\":[{\"e\":[{\"r\":1}],\"i\":[{\"z\":96}],\"r\":[{\"i\":[{\"b\":[{\"u\":85}]},3]}]}],\"u\":[{\"t\":[{\"i\":4}]},8],\"v\":[{\"a\":[{\"l\":1}],\"e\":[{\"l\":11,\"r\":[{\".\":30,\"s\":4,\"t\":4}]}],\"i\":[{\"l\":4}],\"o\":[{\"l\":[{\"u\":5}]}]},8],\"w\":[{\"h\":1}]}],\"f\":[{\"u\":0,\"y\":21},29],\"g\":[{\"e\":[{\"r\":3,\"t\":23}],\"i\":[{\"c\":23,\"n\":[{\"g\":3},0],\"s\":19,\"t\":19}],\"l\":29,\"o\":[{\"n\":0}],\"u\":23},9],\"h\":[{\".\":18,\"a\":[{\"l\":18}]},1],\"i\":[{\"a\":[{\"b\":0,\"g\":1,\"l\":[{\".\":23}]},3],\"b\":[{\"a\":11},21],\"c\":[{\"a\":[{\"s\":5}],\"e\":21,\"i\":[{\"d\":32,\"e\":1},18],\"o\":21}],\"d\":[{\"e\":[{\"r\":5}]}],\"e\":[{\"n\":[{\"c\":3,\"t\":3}],\"r\":2,\"t\":4}],\"g\":[{\"a\":[{\"n\":5}],\"i\":32}],\"l\":[{\"i\":[{\"z\":11}]}],\"m\":[{\"a\":[{\"n\":32}],\"i\":5,\"o\":27,\"p\":[{\"e\":0}]}],\"n\":[{\"a\":[{\".\":32},24],\"d\":0,\"e\":0,\"g\":0}],\"o\":2,\"p\":[{\"h\":[{\"e\":6},32],\"l\":[{\"i\":[{\"c\":5}]},9]}],\"q\":21,\"s\":[{\".\":21,\"c\":0,\"h\":23,\"p\":0},24],\"t\":[{\"a\":[{\"b\":116}],\"e\":[{\"d\":[{\".\":19}],\"r\":[{\".\":5,\"s\":5}]}],\"i\":[{\"c\":11}],\"u\":[{\"r\":5},9]}],\"v\":[{\"e\":[{\"l\":5,\"t\":11}],\"i\":11,\"o\":[{\"l\":287}]}]}],\"j\":23,\"k\":[{\"e\":[{\"t\":23}],\"l\":[{\"e\":1,\"i\":[{\"n\":1}]}],\".\":288,\"h\":[{\"o\":2}],\"r\":[{\"a\":[{\"u\":29}]}],\"s\":[{\".\":288}]}],\"l\":[{\"e\":[{\"d\":24,\"q\":[{\"u\":30}]},0],\"i\":[{\"g\":21,\"s\":[{\"h\":4},21]}],\"o\":73},29],\"m\":[{\"a\":[{\"c\":5}],\"e\":[{\"n\":23,\"r\":[{\"s\":4}]},24],\"i\":[{\"n\":[{\"g\":[{\".\":21},3]}],\"o\":21,\"t\":23}],\"y\":21},29],\"n\":[{\"a\":[{\"r\":21}],\"e\":[{\"l\":23,\"r\":21,\"t\":19,\"y\":23}],\"i\":[{\"c\":19,\"s\":92,\"t\":23,\"v\":23}],\"o\":[{\"u\":21},0],\"u\":23}],\"o\":[{\"b\":[{\"l\":11,\"o\":[{\"t\":289}]}],\"c\":[{\"r\":3},24],\"e\":[{\"l\":[{\"a\":[{\"s\":167}]}],\"p\":[{\"i\":[{\"d\":[{\"e\":290}]}]}]},1],\"f\":[{\"e\":2,\"i\":[{\"l\":4}]}],\"k\":[{\"e\":[{\"r\":4}]},8],\"l\":[{\"e\":[{\".\":32}]}],\"m\":[{\"e\":[{\"t\":[{\"e\":5}],\"s\":[{\"h\":3}]}],\"i\":0,\"p\":0}],\"n\":[{\"a\":[{\"l\":0}],\"e\":0,\"i\":[{\"s\":134}],\"t\":[{\"a\":0}]}],\"o\":[{\"m\":41,\"t\":32}],\"p\":[{\"e\":[{\"l\":3}],\"i\":[{\"c\":11}]}],\"r\":[{\"i\":11,\"o\":4}],\"s\":[{\"p\":[{\"e\":[{\"r\":5}]}],\"s\":0}],\"t\":[{\"h\":[{\"e\":1}],\"y\":1,\"r\":[{\"o\":[{\"n\":2}]}]}],\"v\":[{\"a\":1,\"e\":[{\"l\":5}]}],\"x\":5}],\"p\":[{\"e\":[{\"a\":21,\"n\":[{\"t\":19}],\"r\":[{\".\":4}],\"t\":23}],\"h\":95,\"i\":[{\"n\":[{\"g\":3}]}],\"o\":23,\"a\":[{\"u\":[{\"l\":[{\"i\":291}]}]}]},29],\"r\":[{\"e\":[{\"c\":0,\"f\":0,\"o\":21,\"s\":[{\"t\":0}]}],\"i\":[{\"o\":0,\"v\":0}],\"o\":[{\"n\":17,\"s\":17}],\"y\":[{\"s\":17}]},72],\"s\":[{\"a\":[{\"t\":[{\"i\":5}]},29],\"c\":1,\"e\":[{\"c\":[{\"r\":0},23],\"r\":[{\".\":4,\"a\":[{\"d\":[{\"i\":238}]}]}],\"s\":3,\"v\":148},24],\"h\":[{\"a\":19},29],\"i\":[{\"b\":90},29],\"o\":[{\"n\":12}],\"p\":29,\"w\":19},44],\"t\":[{\"a\":[{\"c\":[{\"h\":36}],\"g\":21}],\"e\":[{\"b\":23,\"n\":[{\"d\":17}],\"o\":5}],\"i\":[{\"b\":4,\"d\":0,\"e\":[{\"r\":21}],\"g\":23,\"l\":[{\"i\":12,\"l\":17,\"y\":21}],\"s\":[{\"t\":21}],\"v\":21},29],\"r\":[{\"i\":23,\"o\":[{\"p\":[{\"h\":115}]}],\"e\":[{\"u\":29}]}],\"s\":[{\"h\":1}],\"h\":[{\"o\":[{\"u\":29}]}]}],\"u\":[{\"a\":3,\"e\":[{\"l\":93,\"n\":3}],\"g\":[{\"l\":1}],\"i\":[{\"n\":3}],\"m\":[{\"p\":[{\"l\":11}]}],\"n\":[{\"k\":6,\"t\":[{\"y\":0}]},9],\"s\":[{\"c\":19}],\"t\":[{\"i\":[{\"n\":6}]}]}],\"v\":[{\"e\":[{\"l\":[{\"i\":17}],\"n\":23,\"r\":[{\".\":4}],\"s\":[{\"t\":19}],\"y\":23,\"i\":[{\"l\":29}]},1],\"i\":[{\"c\":23,\"v\":0}],\"o\":23}],\"w\":29,\"y\":[{\"c\":1,\"n\":[{\"g\":[{\"e\":32}]}],\"t\":3}],\"z\":[{\"s\":[{\"c\":2}]}]}],\"s\":[{\"a\":[{\"b\":42,\"c\":[{\"k\":32,\"r\":[{\"i\":11}],\"t\":23}],\"i\":32,\"l\":[{\"a\":[{\"r\":36}],\"m\":0,\"o\":4,\"t\":0,\"e\":[{\"s\":[{\"c\":54,\"w\":7}]}]}],\"n\":[{\"c\":27,\"d\":[{\"e\":0}]}],\"p\":[{\"a\":[{\"r\":[{\"i\":[{\"l\":292}]}]}]},29],\"t\":[{\"a\":4,\"i\":[{\"o\":76}],\"u\":11}],\"u\":0,\"v\":[{\"o\":[{\"r\":4}]}],\"w\":32},9],\"b\":56,\"c\":[{\"a\":[{\"n\":[{\"t\":149}],\"p\":[{\"e\":[{\"r\":267}]},0],\"v\":6,\"t\":[{\"o\":[{\"l\":208}]}]}],\"e\":[{\"d\":21,\"i\":18,\"s\":21}],\"h\":[{\"o\":21,\"i\":[{\"t\":[{\"z\":21}]}],\"r\":[{\"o\":[{\"d\":[{\"i\":[{\"n\":[{\"g\":293}]}]}]}]}]},8],\"i\":[{\"e\":68,\"n\":[{\"d\":150}],\"u\":[{\"t\":[{\"t\":294}]}]}],\"l\":[{\"e\":6,\"i\":21}],\"o\":[{\"f\":17,\"p\":[{\"y\":18}],\"u\":[{\"r\":[{\"a\":7}]}]}],\"u\":29,\"r\":[{\"a\":[{\"p\":[{\"e\":[{\"r\":[{\".\":36}]}]}]}]}],\"y\":[{\"t\":[{\"h\":247}]}]}],\"d\":56,\"e\":[{\".\":18,\"a\":[{\"s\":17,\"w\":5},1],\"c\":[{\"o\":151,\"t\":27}],\"d\":[{\"e\":95,\"l\":19},125],\"g\":[{\"r\":11},9],\"i\":32,\"l\":[{\"e\":2,\"f\":32,\"v\":32}],\"m\":[{\"e\":[{\"s\":[{\"t\":295}]},18],\"o\":[{\"l\":1}],\"a\":[{\"p\":[{\"h\":287}]}],\"i\":[{\"t\":[{\"i\":[{\"c\":296}]}]}]}],\"n\":[{\"a\":[{\"t\":5}],\"c\":18,\"d\":0,\"e\":[{\"d\":19}],\"g\":5,\"i\":[{\"n\":19}],\"t\":[{\"d\":18,\"l\":18}]}],\"p\":[{\"a\":152,\"t\":[{\"e\":[{\"m\":[{\"b\":11}]}]}]}],\"r\":[{\".\":43,\"l\":21,\"o\":0,\"v\":[{\"o\":18}]}],\"s\":[{\"h\":4,\"t\":5},72],\"u\":[{\"m\":113}],\"v\":[{\"e\":[{\"n\":11}]},32],\"w\":[{\"i\":0}],\"x\":32}],\"f\":47,\"g\":48,\"h\":[{\".\":25,\"e\":[{\"r\":2,\"v\":32}],\"i\":[{\"n\":2,\"o\":3,\"p\":27,\"v\":6}],\"o\":[{\"l\":[{\"d\":4}],\"n\":12,\"r\":[{\"t\":7},17],\"e\":[{\"s\":[{\"t\":137}]}]},0],\"w\":18},24],\"i\":[{\"b\":2,\"c\":[{\"c\":19}],\"d\":[{\"e\":[{\".\":27,\"s\":[{\"t\":6,\"w\":6},32],\"d\":[{\".\":8}]}],\"i\":[{\"z\":4},32]}],\"g\":[{\"n\":[{\"a\":18}]}],\"l\":[{\"e\":0,\"y\":18}],\"n\":[{\"a\":24,\"e\":[{\".\":32}],\"g\":23},42],\"o\":[{\"n\":[{\"a\":6},32]},41],\"r\":[{\"a\":5,\"e\":[{\"s\":[{\"i\":[{\"d\":4}]}]}]},9],\"s\":41,\"t\":[{\"i\":[{\"o\":27}]}],\"u\":32,\"v\":41,\"z\":32}],\"k\":[{\"e\":[{\"t\":23},18],\"i\":[{\"n\":[{\"e\":4,\"g\":4}]}],\"y\":[{\"s\":[{\"c\":15}]}]},9],\"l\":[{\"a\":[{\"t\":23}],\"e\":24,\"i\":[{\"t\":[{\"h\":7}]}],\"o\":[{\"v\":[{\"a\":[{\"k\":[{\"i\":[{\"a\":297}]}]}]}]}]},74],\"m\":[{\"a\":[{\"l\":[{\"l\":54}],\"n\":12},23],\"e\":[{\"l\":17,\"n\":19}],\"i\":[{\"t\":[{\"h\":32}]}],\"o\":[{\"l\":[{\"d\":49}]}]},42],\"n\":72,\"o\":[{\"c\":[{\"e\":1}],\"f\":[{\"t\":12}],\"l\":[{\"a\":[{\"b\":1}],\"d\":153,\"i\":[{\"c\":3}],\"v\":32,\"u\":[{\"t\":[{\"e\":9}]}]}],\"m\":27,\"n\":[{\".\":68,\"a\":17,\"g\":0}],\"p\":[{\"h\":[{\"i\":[{\"c\":32,\"z\":19}],\"y\":19}]},21],\"r\":[{\"c\":5,\"d\":5}],\"v\":[{\"i\":4},18],\"g\":[{\"a\":[{\"m\":[{\"y\":298}]}]}]},41],\"p\":[{\"a\":[{\"i\":32,\"n\":0,\"c\":[{\"e\":299,\"i\":[{\"n\":69}]}]},25],\"e\":[{\"n\":[{\"d\":17}],\"o\":57,\"r\":25,\"c\":[{\"i\":[{\"o\":11}]}]}],\"h\":[{\"e\":[{\"r\":[{\"o\":213},27]},24],\"o\":6}],\"i\":[{\"l\":17,\"n\":[{\"g\":4}],\"o\":18,\"c\":[{\"i\":[{\"l\":208}]}]}],\"l\":[{\"y\":21}],\"o\":[{\"n\":21,\"r\":[{\"t\":[{\"s\":[{\"c\":300,\"w\":300}]}]},17],\"t\":18,\"k\":[{\"e\":[{\"s\":[{\"w\":10}]}]}]}]}],\"q\":[{\"u\":[{\"a\":[{\"l\":[{\"l\":36}]}],\"i\":[{\"t\":[{\"o\":88}]}]}]}],\"r\":29,\"s\":[{\"a\":[{\"s\":12,\"c\":[{\"h\":[{\"u\":301}]}]},29],\"c\":94,\"e\":[{\"l\":23,\"n\":[{\"g\":19}],\"s\":[{\".\":21}],\"t\":19}],\"i\":[{\"e\":[{\"r\":0},21],\"l\":[{\"y\":4}],\"a\":[{\"n\":[{\".\":210}]}],\"g\":[{\"n\":[{\"a\":[{\"b\":302}]}]}]},29],\"l\":[{\"i\":1},21],\"n\":21,\"p\":[{\"e\":[{\"n\":[{\"d\":115}]}]}],\"t\":9,\"u\":[{\"r\":[{\"a\":6}]}],\"w\":4,\"h\":[{\"a\":[{\"t\":3}]}]},25],\"t\":[{\".\":25,\"a\":[{\"g\":24,\"l\":24,\"m\":[{\"i\":17,\"p\":69}],\"n\":[{\"d\":32,\"t\":[{\"s\":[{\"h\":[{\"i\":303}]}]}]}],\"p\":90,\"t\":[{\".\":32,\"i\":15}],\"r\":[{\"t\":[{\"l\":[{\"i\":12}]}]}]}],\"e\":[{\"d\":21,\"r\":[{\"n\":[{\"i\":7}],\"o\":19}],\"w\":[{\"a\":6},8]}],\"h\":[{\"e\":23}],\"i\":[{\".\":21,\"a\":19,\"c\":[{\"k\":32},29],\"e\":21,\"f\":23,\"n\":[{\"g\":3}],\"r\":32},9],\"l\":[{\"e\":29}],\"o\":[{\"c\":[{\"k\":32}],\"m\":[{\"a\":12}],\"n\":[{\"e\":32}],\"p\":21,\"r\":[{\"e\":27,\"a\":[{\"b\":304}]}]}],\"r\":[{\"a\":[{\"d\":21,\"t\":[{\"u\":32,\"a\":[{\"g\":305}]}],\"y\":21}],\"i\":[{\"d\":21,\"b\":[{\"u\":[{\"t\":7}]}]}],\"y\":18},1],\"w\":61,\"y\":[{\"l\":[{\"i\":[{\"s\":137}]}]},24],\"b\":4,\"s\":[{\"c\":[{\"r\":4}]}],\"u\":[{\"p\":[{\"i\":[{\"d\":306}]}]}]}],\"u\":[{\"a\":[{\"l\":2}],\"b\":111,\"g\":151,\"i\":[{\"s\":4,\"t\":12}],\"l\":21,\"m\":[{\"i\":11},9],\"n\":9,\"r\":9,\"p\":[{\"e\":[{\"r\":[{\"e\":307}]}]}]},41],\"v\":18,\"w\":[{\"o\":18,\"i\":[{\"m\":[{\"m\":177}]}]},9],\"y\":[{\"c\":18,\"l\":27,\"n\":[{\"o\":5,\"c\":41}],\"r\":[{\"i\":[{\"n\":4}]}],\"t\":[{\"h\":[{\"i\":308}]}]},21]}],\"t\":[{\"a\":[{\".\":27,\"b\":[{\"l\":[{\"e\":[{\"s\":4}]}],\"o\":[{\"l\":[{\"i\":[{\"z\":32,\"s\":[{\"m\":309}]}]}]}]},25],\"c\":[{\"i\":18}],\"d\":[{\"o\":4}],\"f\":46,\"i\":[{\"l\":[{\"o\":5}]}],\"l\":[{\"a\":4,\"e\":[{\"n\":5}],\"i\":11,\"k\":[{\"a\":204},18],\"l\":[{\"i\":[{\"s\":0}]}],\"o\":[{\"g\":4}]},9],\"m\":[{\"o\":4,\"i\":[{\"n\":82}]}],\"n\":[{\"d\":[{\"e\":0}],\"t\":[{\"a\":54}]}],\"p\":[{\"e\":[{\"r\":4}],\"l\":4,\"a\":[{\"t\":[{\"h\":310}]}]}],\"r\":[{\"a\":0,\"c\":18,\"e\":18,\"i\":[{\"z\":3}],\"r\":[{\"h\":311}]}],\"s\":[{\"e\":0,\"y\":4}],\"t\":[{\"i\":[{\"c\":18}],\"u\":[{\"r\":1}]}],\"u\":[{\"n\":17}],\"v\":0,\"w\":25,\"x\":[{\"i\":[{\"s\":0}]}],\"g\":[{\"o\":[{\"n\":[{\".\":3}]}]}]},41],\"b\":42,\"c\":[{\"h\":[{\"e\":[{\"t\":5}],\"c\":15,\"i\":[{\"e\":[{\"r\":237}]}]},21],\"r\":29},18],\"d\":43,\"e\":[{\".\":18,\"a\":[{\"d\":[{\"i\":17}],\"t\":18,\"c\":[{\"h\":[{\"e\":[{\"r\":[{\".\":36}]}]}]}]}],\"c\":[{\"e\":17,\"t\":32}],\"d\":[{\"i\":4},42],\"e\":41,\"g\":[{\"e\":[{\"r\":4}],\"i\":4},0],\"l\":[{\".\":27,\"i\":17,\"s\":32,\"e\":[{\"g\":84,\"r\":[{\"o\":249}]}]}],\"m\":[{\"a\":[{\"t\":11},154]}],\"n\":[{\"a\":[{\"n\":27}],\"c\":27,\"d\":27,\"e\":[{\"s\":18}],\"t\":[{\"a\":[{\"g\":0}]},41]}],\"o\":41,\"p\":[{\"e\":4},1],\"r\":[{\"c\":11,\"d\":155,\"i\":[{\"e\":[{\"s\":5}],\"s\":11,\"z\":[{\"a\":6}],\"c\":[{\".\":8}]},41],\"n\":[{\"i\":[{\"t\":32}]}],\"v\":5,\"g\":[{\"e\":[{\"i\":312}]}]}],\"s\":[{\".\":18,\"s\":[{\".\":23,\"e\":[{\"s\":313}]},18]}],\"t\":[{\"h\":[{\"e\":6}]}],\"u\":27,\"x\":27,\"y\":18}],\"f\":42,\"g\":43,\"h\":[{\".\":25,\"a\":[{\"n\":17,\"l\":[{\"a\":[{\"m\":228}]}]}],\"e\":[{\"a\":[{\"s\":3,\"t\":5},18],\"i\":[{\"s\":11}],\"t\":27},9],\"i\":[{\"c\":[{\".\":4,\"a\":4}],\"l\":18,\"n\":[{\"k\":32}]}],\"l\":18,\"o\":[{\"d\":[{\"e\":4,\"i\":[{\"c\":32}],\"o\":[{\"n\":11}]}],\"o\":18,\"r\":[{\"i\":[{\"t\":6,\"z\":5}]}],\"g\":[{\"e\":[{\"n\":[{\"i\":314}]}]}],\"k\":[{\"e\":[{\"r\":175}]}]}],\"s\":25,\"y\":[{\"l\":[{\"a\":[{\"n\":228}]}],\"s\":[{\"c\":11}]}]}],\"i\":[{\"a\":[{\"b\":1,\"t\":[{\"o\":1}],\"n\":[{\".\":70}]},41],\"b\":156,\"c\":[{\"k\":18,\"o\":21,\"u\":157}],\"d\":[{\"i\":32}],\"e\":[{\"n\":27}],\"f\":[{\"y\":4},8],\"g\":[{\"u\":32},25],\"l\":[{\"l\":[{\"i\":[{\"n\":6}]}]}],\"m\":[{\"p\":18,\"u\":[{\"l\":5}]},41],\"n\":[{\"a\":24,\"e\":[{\".\":27}],\"i\":27,\"o\":[{\"m\":285}]},42],\"o\":[{\"c\":4,\"n\":[{\"e\":[{\"e\":6}]}]},41],\"q\":32,\"s\":[{\"a\":3,\"e\":27,\"m\":0,\"o\":4,\"p\":0,\"t\":[{\"i\":[{\"c\":[{\"a\":32}]}]}]}],\"t\":[{\"l\":3}],\"u\":1,\"v\":[{\"a\":0},41],\"z\":[{\"a\":3,\"e\":[{\"n\":3}]},41]}],\"l\":[{\"a\":[{\"n\":17},19],\"e\":[{\".\":27,\"d\":27,\"s\":[{\".\":27}],\"t\":[{\".\":19}]}],\"o\":19,\"i\":[{\"e\":[{\"r\":315}]}]},25],\"m\":[{\"e\":0},43],\"n\":81,\"o\":[{\"b\":3,\"c\":[{\"r\":[{\"a\":[{\"t\":4}]}]}],\"d\":[{\"o\":18}],\"f\":25,\"g\":[{\"r\":9}],\"i\":[{\"c\":4}],\"m\":[{\"a\":9,\"b\":0,\"y\":3}],\"n\":[{\"a\":[{\"l\":[{\"i\":0}],\"t\":3}],\"o\":18,\"y\":18}],\"r\":[{\"a\":9,\"i\":[{\"e\":3,\"z\":5}]}],\"s\":8,\"u\":[{\"r\":32,\"t\":18}],\"w\":[{\"a\":[{\"r\":3}]}],\"l\":[{\"o\":[{\"g\":[{\"y\":84}]}]}],\"t\":[{\"i\":[{\"c\":11}]}]},41],\"p\":43,\"r\":[{\"a\":[{\"b\":11,\"c\":[{\"h\":5,\"i\":[{\"t\":17},36],\"t\":[{\"e\":17}]}],\"s\":17,\"v\":[{\"e\":[{\"n\":5,\"s\":158,\"r\":[{\"s\":[{\"a\":[{\"b\":317}]},15]}]}]}],\"i\":[{\"t\":[{\"o\":[{\"r\":316}]}]}]},41],\"e\":[{\"f\":5,\"m\":[{\"i\":6},0],\"a\":[{\"c\":[{\"h\":[{\"e\":318}]}]}]}],\"i\":[{\"a\":[{\"l\":[{\".\":1}]},32],\"c\":[{\"e\":[{\"s\":5}],\"i\":[{\"a\":32}],\"s\":18}],\"m\":25,\"v\":0}],\"o\":[{\"m\":[{\"i\":5}],\"n\":[{\"i\":6,\"y\":18}],\"p\":[{\"h\":[{\"e\":5}],\"i\":[{\"s\":175}],\"o\":[{\"l\":[{\"e\":[{\"s\":320}],\"i\":[{\"s\":320,\"t\":321}]}]}]}],\"s\":[{\"p\":11}],\"v\":11,\"l\":[{\"e\":[{\"u\":[{\"m\":319}]}]}],\"f\":[{\"i\":[{\"c\":[{\".\":17}],\"t\":11}]}]}],\"u\":[{\"i\":5,\"s\":17}]}],\"s\":[{\"c\":[{\"h\":[{\"i\":[{\"e\":12}]}]},21],\"h\":0,\"w\":21},101],\"t\":[{\"e\":[{\"s\":21}],\"o\":19,\"u\":0,\"r\":[{\"i\":[{\"b\":[{\"u\":[{\"t\":322}]}]}]}]},66],\"u\":[{\"a\":[{\"r\":3},2],\"b\":[{\"i\":1}],\"d\":8,\"e\":18,\"f\":46,\"i\":76,\"m\":27,\"n\":[{\"i\":[{\"s\":1}]}],\"p\":[{\".\":48}],\"r\":[{\"e\":27,\"i\":[{\"s\":11},32],\"o\":5,\"y\":4,\"n\":[{\"a\":[{\"r\":12}]}]}],\"s\":27},41],\"v\":18,\"w\":[{\"a\":43,\"i\":[{\"s\":17}],\"o\":18,\"h\":29},1],\"y\":[{\"a\":18,\"l\":25,\"p\":[{\"e\":12,\"h\":4,\"a\":[{\"l\":64}]}]},41],\"z\":[{\"e\":1},18]}],\"u\":[{\"a\":[{\"b\":18,\"c\":0,\"n\":[{\"a\":4,\"i\":0}],\"r\":[{\"a\":[{\"n\":[{\"t\":5}]}],\"d\":8,\"i\":11,\"t\":11}],\"t\":29,\"v\":0,\"d\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":3,\"u\":15}]}]}]}]}],\"b\":[{\"e\":[{\"l\":21,\"r\":[{\"o\":21},23]},1],\"i\":[{\"n\":[{\"g\":33}]},72],\"l\":[{\"e\":[{\".\":23}]}]}],\"c\":[{\"a\":23,\"i\":[{\"b\":0,\"t\":1}],\"l\":[{\"e\":12}],\"r\":23,\"u\":23,\"y\":21}],\"d\":[{\"d\":4,\"e\":[{\"r\":3,\"s\":[{\"t\":4}],\"v\":17}],\"i\":[{\"c\":29,\"e\":[{\"d\":3,\"s\":3}],\"s\":4,\"t\":19}],\"o\":[{\"n\":[{\"y\":232},21]}],\"s\":[{\"i\":1}],\"u\":21}],\"e\":[{\"n\":[{\"e\":21,\"s\":17,\"t\":[{\"e\":0}]}],\"r\":[{\"i\":[{\"l\":0}]}],\"a\":[{\"m\":15}]}],\"f\":[{\"a\":27,\"l\":23}],\"g\":[{\"h\":[{\"e\":[{\"n\":11}]}],\"i\":[{\"n\":4}]}],\"i\":[{\"l\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"g\":29},1],\"r\":[{\"m\":0}],\"t\":[{\"a\":17}],\"v\":[{\"e\":[{\"r\":[{\".\":0}]}]},11]},156],\"j\":19,\"k\":18,\"l\":[{\"a\":[{\"b\":5,\"t\":[{\"i\":19}]},29],\"c\":[{\"h\":[{\"e\":32},17]}],\"d\":[{\"e\":[{\"r\":3}]}],\"e\":[{\"n\":29},1],\"g\":[{\"i\":1}],\"i\":[{\"a\":19,\"n\":[{\"g\":3}],\"s\":[{\"h\":4}]},9],\"l\":[{\"a\":[{\"r\":1}],\"i\":[{\"b\":96,\"s\":1}]}],\"m\":61,\"o\":72,\"s\":[{\"e\":[{\"s\":5}]},18],\"t\":[{\"i\":2,\"r\":[{\"a\":54}],\"u\":18}],\"u\":[{\"l\":4},23],\"v\":4}],\"m\":[{\"a\":[{\"b\":4}],\"b\":[{\"i\":1,\"l\":[{\"y\":1}]}],\"i\":[{\"n\":[{\"g\":83}]},29],\"o\":[{\"r\":[{\"o\":6}]}],\"p\":9}],\"n\":[{\"a\":[{\"t\":17}],\"e\":[{\"r\":1},24],\"i\":[{\"m\":1,\"n\":24,\"s\":[{\"h\":4}],\"v\":11},29],\"s\":[{\"w\":1},93],\"t\":[{\"a\":[{\"b\":11}],\"e\":[{\"r\":[{\".\":1}],\"s\":1}]}],\"u\":0,\"y\":4,\"z\":4}],\"o\":[{\"r\":[{\"s\":21}],\"s\":19,\"u\":29}],\"p\":[{\"e\":[{\"r\":[{\"s\":6}]},29],\"i\":[{\"a\":19,\"n\":[{\"g\":3}]}],\"l\":23,\"p\":[{\"o\":[{\"r\":[{\"t\":10}]}]},3],\"t\":[{\"i\":[{\"b\":5}],\"u\":17}]}],\"r\":[{\"a\":[{\".\":18,\"g\":21,\"s\":21,\"l\":[{\".\":216}]},29],\"b\":[{\"e\":1}],\"c\":0,\"d\":2,\"e\":[{\"a\":[{\"t\":5}]}],\"f\":[{\"e\":[{\"r\":1}],\"r\":1}],\"i\":[{\"f\":[{\"i\":[{\"c\":0}]},23],\"n\":2,\"o\":23,\"t\":29,\"z\":3,\"a\":[{\"l\":[{\".\":0}]}]}],\"l\":[{\"i\":[{\"n\":[{\"g\":[{\".\":5}]}]}]},9],\"n\":[{\"o\":1}],\"o\":[{\"s\":17}],\"p\":[{\"e\":1,\"i\":1}],\"s\":[{\"e\":[{\"r\":5}]}],\"t\":[{\"e\":[{\"s\":4}],\"h\":[{\"e\":3}],\"i\":[{\"e\":1},17]}],\"u\":23}],\"s\":[{\"a\":[{\"d\":19,\"n\":19,\"p\":1}],\"c\":[{\"i\":3},8],\"e\":[{\"a\":5,\"r\":[{\".\":9}]}],\"i\":[{\"a\":19,\"c\":23}],\"l\":[{\"i\":[{\"n\":1}]}],\"p\":2,\"s\":[{\"l\":4}],\"t\":[{\"e\":[{\"r\":[{\"e\":4}]}],\"r\":2}],\"u\":[{\"r\":17},24]},25],\"t\":[{\"a\":[{\"b\":0,\"t\":23}],\"e\":[{\".\":18,\"l\":18,\"n\":[{\"i\":17},18]}],\"i\":[{\"l\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"e\":23,\"g\":3}],\"o\":[{\"n\":[{\"a\":7}]}],\"s\":21,\"z\":31},101],\"l\":34,\"o\":[{\"f\":4,\"g\":5,\"m\":[{\"a\":[{\"t\":[{\"i\":[{\"c\":5}]}]}]}],\"n\":19,\"u\":21}],\"s\":0}],\"u\":[{\"m\":1},23],\"v\":74,\"x\":[{\"u\":11}],\"z\":[{\"e\":1}]}],\"v\":[{\"a\":[{\".\":32,\"b\":159,\"c\":[{\"i\":[{\"l\":5}],\"u\":11}],\"g\":[{\"e\":1,\"u\":[{\"e\":[{\"r\":170}]}]},0],\"l\":[{\"i\":[{\"e\":4}],\"o\":5,\"u\":15}],\"m\":[{\"o\":4}],\"n\":[{\"i\":[{\"z\":4}]}],\"p\":[{\"i\":4}],\"r\":[{\"i\":[{\"e\":[{\"d\":5}]}]}],\"t\":[{\"i\":[{\"v\":29}]},27],\"u\":[{\"d\":[{\"e\":[{\"v\":54}]}]}]},41],\"e\":[{\".\":18,\"d\":18,\"g\":11,\"l\":[{\".\":23,\"l\":[{\"i\":11}],\"o\":1,\"y\":21}],\"n\":[{\"o\":[{\"m\":11}],\"u\":[{\"e\":19}]}],\"r\":[{\"d\":21,\"e\":[{\".\":32,\"l\":[{\"y\":[{\".\":41}]},21],\"n\":[{\"c\":5},23],\"s\":21,\"i\":[{\"g\":324}]}],\"i\":[{\"e\":11}],\"m\":[{\"i\":[{\"n\":36}]}],\"s\":[{\"e\":27}],\"t\":[{\"h\":11}]}],\"s\":[{\".\":18,\"t\":[{\"e\":0,\"i\":[{\"t\":[{\"e\":15}]}]}]},99],\"t\":[{\"e\":[{\"r\":11},1],\"y\":1}]}],\"i\":[{\"a\":[{\"l\":[{\"i\":4}],\"n\":32}],\"d\":[{\"e\":[{\".\":32,\"d\":32,\"n\":47,\"s\":32}],\"i\":32}],\"f\":23,\"g\":[{\"n\":4}],\"k\":0,\"l\":[{\"i\":[{\"t\":32,\"z\":127}]},25],\"n\":[{\"a\":26,\"c\":24,\"d\":5,\"g\":18},29],\"o\":[{\"l\":11,\"r\":73,\"u\":2}],\"p\":1,\"r\":[{\"o\":4}],\"s\":[{\"i\":[{\"t\":11}],\"o\":3,\"u\":3}],\"t\":[{\"i\":18,\"r\":11,\"y\":18}],\"v\":[{\"i\":[{\"p\":[{\"a\":[{\"r\":325}]}]}]},27]}],\"o\":[{\".\":32,\"i\":[{\"r\":[{\"d\":[{\"u\":323}]}],\"c\":[{\"e\":[{\"p\":213}]}]},0],\"k\":27,\"l\":[{\"a\":1,\"e\":19,\"t\":32,\"v\":27}],\"m\":[{\"i\":5}],\"r\":[{\"a\":[{\"b\":5}],\"i\":17,\"y\":1}],\"t\":[{\"a\":1,\"e\":[{\"e\":18}]}]}],\"v\":26,\"y\":21}],\"w\":[{\"a\":[{\"b\":[{\"l\":19}],\"c\":25,\"g\":[{\"e\":[{\"r\":4}],\"o\":5}],\"i\":[{\"t\":6}],\"l\":[{\".\":19}],\"m\":0,\"r\":[{\"t\":0}],\"s\":[{\"t\":[{\"e\":[{\"w\":[{\"a\":326}]}]},0]}],\"t\":[{\"e\":2}],\"v\":[{\"e\":[{\"r\":4,\"g\":327}]}]}],\"b\":29,\"e\":[{\"a\":[{\"r\":[{\"i\":[{\"e\":5}]}],\"t\":[{\"h\":54}]}],\"d\":[{\"n\":0}],\"e\":[{\"t\":12,\"v\":5,\"k\":[{\"n\":137}]}],\"l\":[{\"l\":0}],\"r\":29,\"s\":[{\"t\":12}],\"v\":23}],\"h\":[{\"i\":0}],\"i\":[{\"l\":[{\"l\":[{\"i\":[{\"n\":6}]}]},8],\"n\":[{\"d\":[{\"e\":0}],\"g\":0}],\"r\":0,\"s\":[{\"e\":27}],\"t\":[{\"h\":12}],\"z\":5,\"d\":[{\"e\":[{\"s\":[{\"p\":6}]}]}]},9],\"k\":21,\"l\":[{\"e\":[{\"s\":1}],\"i\":[{\"n\":3}]}],\"n\":[{\"o\":21}],\"o\":[{\"m\":15,\"v\":[{\"e\":[{\"n\":4}]}],\"k\":[{\"e\":[{\"n\":85}]}]},160],\"p\":19,\"r\":[{\"a\":[{\"p\":[{\"a\":[{\"r\":[{\"o\":12}]}]}]},0],\"i\":[{\"t\":[{\"a\":36,\"e\":[{\"r\":[{\".\":183}]}]}]},0]}],\"s\":[{\"h\":23,\"l\":1,\"p\":[{\"e\":1}],\"t\":60}],\"t\":18,\"y\":1,\"c\":23}],\"x\":[{\"a\":[{\"c\":[{\"e\":5}],\"g\":[{\"o\":21}],\"m\":11,\"p\":21,\"s\":5},29],\"c\":161,\"e\":[{\"c\":[{\"u\":[{\"t\":[{\"o\":1}]}]}],\"d\":24,\"r\":[{\"i\":0,\"o\":4}]},29],\"h\":[{\"i\":[{\"l\":6},8],\"u\":0},29],\"i\":[{\"a\":4,\"c\":4,\"d\":[{\"i\":4}],\"m\":[{\"e\":21,\"i\":[{\"z\":4}]}]},23],\"o\":[{\"b\":21},23],\"p\":[{\"a\":[{\"n\":[{\"d\":17}]}],\"e\":[{\"c\":[{\"t\":[{\"o\":10}]}],\"d\":11}]},23],\"t\":[{\"i\":23},74],\"u\":[{\"a\":3},29],\"x\":1,\"q\":[{\"u\":[{\"i\":[{\"s\":54}]}]},29]}],\"y\":[{\"a\":[{\"c\":19,\"r\":110,\"t\":19}],\"b\":29,\"c\":[{\"e\":[{\"r\":4},24],\"h\":[{\"e\":[{\"d\":264},0]},23],\"o\":[{\"m\":17,\"t\":17}]},29],\"d\":29,\"e\":[{\"e\":19,\"r\":[{\"f\":21},29],\"s\":[{\"t\":[{\"e\":[{\"r\":[{\"y\":328}]}]}]},0],\"t\":1}],\"g\":[{\"i\":19}],\"h\":47,\"i\":29,\"l\":[{\"a\":23,\"l\":[{\"a\":[{\"b\":[{\"l\":6}]}]}],\"o\":23,\"u\":19}],\"m\":[{\"b\":[{\"o\":[{\"l\":7}]}],\"e\":[{\"t\":[{\"r\":[{\"y\":20}]}]},0],\"p\":[{\"a\":12}]}],\"n\":[{\"c\":[{\"h\":[{\"r\":3}]}],\"d\":4,\"g\":4,\"i\":[{\"c\":4}],\"x\":32}],\"o\":[{\"d\":4,\"g\":33,\"m\":0,\"n\":[{\"e\":[{\"t\":4}],\"s\":21}],\"s\":21},72],\"p\":[{\"e\":[{\"d\":21,\"r\":6}],\"i\":3,\"o\":[{\"c\":21},23],\"t\":[{\"a\":9}],\"u\":19}],\"r\":[{\"a\":[{\"m\":5}],\"i\":[{\"a\":4}],\"o\":23,\"r\":1}],\"s\":[{\"c\":1,\"e\":161,\"i\":[{\"c\":[{\"a\":3}],\"o\":3,\"s\":27}],\"o\":21,\"s\":0,\"t\":[{\"a\":3,\"r\":[{\"o\":29}]},2],\"u\":[{\"r\":17}]}],\"t\":[{\"h\":[{\"i\":[{\"n\":23}]}],\"i\":[{\"c\":3}]}],\"w\":29}],\"z\":[{\"a\":[{\"b\":79,\"r\":8},2],\"b\":18,\"e\":[{\"n\":1,\"p\":1,\"r\":[{\"o\":3},29],\"t\":0},25],\"i\":[{\"l\":21,\"s\":21,\"a\":[{\"n\":[{\".\":23}]}]},42],\"l\":32,\"m\":18,\"o\":[{\"m\":1,\"o\":[{\"l\":4}],\"p\":[{\"h\":[{\"r\":329}]}]},41],\"t\":[{\"e\":0}],\"z\":[{\"y\":21,\"w\":231},101]}]}",
16416
+ [
16417
+ "as-so-ciate",
16418
+ "as-so-ciates",
16419
+ "dec-li-na-tion",
16420
+ "oblig-a-tory",
16421
+ "phil-an-thropic",
16422
+ "present",
16423
+ "presents",
16424
+ "project",
16425
+ "projects",
16426
+ "reci-procity",
16427
+ "re-cog-ni-zance",
16428
+ "ref-or-ma-tion",
16429
+ "ret-ri-bu-tion",
16430
+ "ta-ble"
16431
+ ]
16432
+ ];
16433
+
16119
16434
  //#endregion
16120
16435
  //#region src/components/docs/layout/hyphenation/tools.ts
16121
16436
  function parsePattern(pattern) {
@@ -16166,8 +16481,8 @@ var Hyphen = class Hyphen {
16166
16481
  this.loadPattern("en-gb");
16167
16482
  }
16168
16483
  _preloadPatterns() {
16169
- this._patterns.set("en-us", parsePattern(require_en_us.EnUs));
16170
- this._loadExceptionsToCache("en-us", require_en_us.EnUs);
16484
+ this._patterns.set("en-us", parsePattern(EnUs));
16485
+ this._loadExceptionsToCache("en-us", EnUs);
16171
16486
  }
16172
16487
  _loadExceptionsToCache(lang, pattern) {
16173
16488
  if (pattern.length < 3) return;
@@ -16768,28 +17083,45 @@ var DocumentSkeleton = class DocumentSkeleton extends _univerjs_core.Skeleton {
16768
17083
  }
16769
17084
  }
16770
17085
  let exactMatch = null;
16771
- if (skeTables.size > 0) for (const table of skeTables.values()) {
16772
- var _this$_findLiquid, _this$_findLiquid2, _this$_findLiquid9;
16773
- const { top: tableTop, left: tableLeft, rows } = table;
16774
- (_this$_findLiquid = this._findLiquid) === null || _this$_findLiquid === void 0 || _this$_findLiquid.translateSave();
16775
- (_this$_findLiquid2 = this._findLiquid) === null || _this$_findLiquid2 === void 0 || _this$_findLiquid2.translate(tableLeft, tableTop);
16776
- for (const row of rows) {
16777
- var _this$_findLiquid3, _this$_findLiquid4, _this$_findLiquid8;
16778
- const { top: rowTop, cells, isRepeatRow } = row;
16779
- if (isRepeatRow) continue;
16780
- (_this$_findLiquid3 = this._findLiquid) === null || _this$_findLiquid3 === void 0 || _this$_findLiquid3.translateSave();
16781
- (_this$_findLiquid4 = this._findLiquid) === null || _this$_findLiquid4 === void 0 || _this$_findLiquid4.translate(0, rowTop);
16782
- for (const cell of cells) {
16783
- var _this$_findLiquid5, _this$_findLiquid6, _exactMatch3, _this$_findLiquid7;
16784
- const { left: cellLeft } = cell;
17086
+ if (skeTables.size > 0) {
17087
+ var _this$_docViewModel$g, _this$_docViewModel$g2, _this$_docViewModel$g3;
17088
+ const unitId = (_this$_docViewModel$g = (_this$_docViewModel$g2 = (_this$_docViewModel$g3 = this._docViewModel.getDataModel()).getUnitId) === null || _this$_docViewModel$g2 === void 0 ? void 0 : _this$_docViewModel$g2.call(_this$_docViewModel$g3)) !== null && _this$_docViewModel$g !== void 0 ? _this$_docViewModel$g : "";
17089
+ for (const table of skeTables.values()) {
17090
+ var _this$_findLiquid, _this$_findLiquid2, _this$_findLiquid11;
17091
+ const { top: tableTop, left: tableLeft, rows } = table;
17092
+ const sourceTableId = getTableIdAndSliceIndex(table.tableId).tableId;
17093
+ const viewport = getDocsTableRenderViewport(unitId, sourceTableId);
17094
+ (_this$_findLiquid = this._findLiquid) === null || _this$_findLiquid === void 0 || _this$_findLiquid.translateSave();
17095
+ (_this$_findLiquid2 = this._findLiquid) === null || _this$_findLiquid2 === void 0 || _this$_findLiquid2.translate(tableLeft, tableTop);
17096
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) {
17097
+ var _this$_findLiquid4;
17098
+ const visibleLeft = this._findLiquid.x;
17099
+ const visibleRight = visibleLeft + viewport.viewportWidth;
17100
+ if (x < visibleLeft || x > visibleRight) {
17101
+ var _this$_findLiquid3;
17102
+ (_this$_findLiquid3 = this._findLiquid) === null || _this$_findLiquid3 === void 0 || _this$_findLiquid3.translateRestore();
17103
+ continue;
17104
+ }
17105
+ (_this$_findLiquid4 = this._findLiquid) === null || _this$_findLiquid4 === void 0 || _this$_findLiquid4.translate(-viewport.scrollLeft, 0);
17106
+ }
17107
+ for (const row of rows) {
17108
+ var _this$_findLiquid5, _this$_findLiquid6, _this$_findLiquid10;
17109
+ const { top: rowTop, cells, isRepeatRow } = row;
17110
+ if (isRepeatRow) continue;
16785
17111
  (_this$_findLiquid5 = this._findLiquid) === null || _this$_findLiquid5 === void 0 || _this$_findLiquid5.translateSave();
16786
- (_this$_findLiquid6 = this._findLiquid) === null || _this$_findLiquid6 === void 0 || _this$_findLiquid6.translate(cellLeft, 0);
16787
- exactMatch = (_exactMatch3 = exactMatch) !== null && _exactMatch3 !== void 0 ? _exactMatch3 : this._collectNearestNode(cell, 3, cell, segmentId, pi, cache, x, y, pageLength, nestLevel + 1);
16788
- (_this$_findLiquid7 = this._findLiquid) === null || _this$_findLiquid7 === void 0 || _this$_findLiquid7.translateRestore();
17112
+ (_this$_findLiquid6 = this._findLiquid) === null || _this$_findLiquid6 === void 0 || _this$_findLiquid6.translate(0, rowTop);
17113
+ for (const cell of cells) {
17114
+ var _this$_findLiquid7, _this$_findLiquid8, _exactMatch3, _this$_findLiquid9;
17115
+ const { left: cellLeft } = cell;
17116
+ (_this$_findLiquid7 = this._findLiquid) === null || _this$_findLiquid7 === void 0 || _this$_findLiquid7.translateSave();
17117
+ (_this$_findLiquid8 = this._findLiquid) === null || _this$_findLiquid8 === void 0 || _this$_findLiquid8.translate(cellLeft, 0);
17118
+ exactMatch = (_exactMatch3 = exactMatch) !== null && _exactMatch3 !== void 0 ? _exactMatch3 : this._collectNearestNode(cell, 3, cell, segmentId, pi, cache, x, y, pageLength, nestLevel + 1);
17119
+ (_this$_findLiquid9 = this._findLiquid) === null || _this$_findLiquid9 === void 0 || _this$_findLiquid9.translateRestore();
17120
+ }
17121
+ (_this$_findLiquid10 = this._findLiquid) === null || _this$_findLiquid10 === void 0 || _this$_findLiquid10.translateRestore();
16789
17122
  }
16790
- (_this$_findLiquid8 = this._findLiquid) === null || _this$_findLiquid8 === void 0 || _this$_findLiquid8.translateRestore();
17123
+ (_this$_findLiquid11 = this._findLiquid) === null || _this$_findLiquid11 === void 0 || _this$_findLiquid11.translateRestore();
16791
17124
  }
16792
- (_this$_findLiquid9 = this._findLiquid) === null || _this$_findLiquid9 === void 0 || _this$_findLiquid9.translateRestore();
16793
17125
  }
16794
17126
  if (exactMatch) {
16795
17127
  this._findLiquid.translateRestore();
@@ -17074,10 +17406,12 @@ function createDocumentModelWithStyle(content, textStyle, config = {}) {
17074
17406
  width: Number.POSITIVE_INFINITY,
17075
17407
  height: Number.POSITIVE_INFINITY
17076
17408
  },
17409
+ documentFlavor: _univerjs_core.DocumentFlavor.UNSPECIFIED,
17077
17410
  marginTop,
17078
17411
  marginBottom,
17079
17412
  marginRight,
17080
17413
  marginLeft,
17414
+ paragraphLineGapDefault: 0,
17081
17415
  renderConfig: {
17082
17416
  horizontalAlign,
17083
17417
  verticalAlign,
@@ -17119,7 +17453,7 @@ function getFontFormat(format) {
17119
17453
  }
17120
17454
 
17121
17455
  //#endregion
17122
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
17456
+ //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateParam.js
17123
17457
  function __decorateParam(paramIndex, decorator) {
17124
17458
  return function(target, key) {
17125
17459
  decorator(target, key, paramIndex);
@@ -17127,7 +17461,7 @@ function __decorateParam(paramIndex, decorator) {
17127
17461
  }
17128
17462
 
17129
17463
  //#endregion
17130
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
17464
+ //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
17131
17465
  function __decorate(decorators, target, key, desc) {
17132
17466
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17133
17467
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -21291,6 +21625,7 @@ var FontAndBaseLine = class extends docExtension {
21291
21625
  "actualFontMap",
21292
21626
  {}
21293
21627
  );
21628
+ _defineProperty(this, "_textFillImageCache", /* @__PURE__ */ new Map());
21294
21629
  }
21295
21630
  draw(ctx, _parentScale, glyph, _, _more) {
21296
21631
  var _glyph$parent;
@@ -21309,13 +21644,162 @@ var FontAndBaseLine = class extends docExtension {
21309
21644
  this.actualFontMap[fontStringPxStr] = ctx.font;
21310
21645
  }
21311
21646
  }
21312
- const { cl: colorStyle, va: baselineOffset } = textStyle;
21647
+ const { cl: colorStyle, va: baselineOffset, textFill } = textStyle;
21313
21648
  const fontColor = (0, _univerjs_core.getColorStyle)(colorStyle) || "rgb(0,0,0)";
21314
- if (fontColor && this._preFontColor !== fontColor) ctx.fillStyle = fontColor;
21315
21649
  if (baselineOffset === _univerjs_core.BaselineOffset.SUPERSCRIPT) spanPointWithFont.y += -bBox.spo;
21316
21650
  else if (baselineOffset === _univerjs_core.BaselineOffset.SUBSCRIPT) spanPointWithFont.y += bBox.sbo;
21651
+ if (this._fillTextWithTextFill(ctx, glyph, spanPointWithFont, textFill, fontColor)) return;
21652
+ if (fontColor && this._preFontColor !== fontColor) ctx.fillStyle = fontColor;
21317
21653
  this._fillText(ctx, glyph, spanPointWithFont);
21318
21654
  }
21655
+ _fillTextWithTextFill(ctx, glyph, spanPointWithFont, textFill, fallbackColor) {
21656
+ if (!textFill || textFill.type === "none") return (textFill === null || textFill === void 0 ? void 0 : textFill.type) === "none";
21657
+ const { content, glyphType } = glyph;
21658
+ if (content == null || glyphType === 2) return false;
21659
+ const { renderConfig } = this.extensionOffset;
21660
+ const { vertexAngle, centerAngle } = renderConfig !== null && renderConfig !== void 0 ? renderConfig : {};
21661
+ const VERTICAL_DEG = 90;
21662
+ if (vertexAngle === VERTICAL_DEG && centerAngle === VERTICAL_DEG) return false;
21663
+ const bounds = this._getGlyphPaintBounds(glyph, spanPointWithFont);
21664
+ if (bounds.width <= 0 || bounds.height <= 0) return false;
21665
+ const color = this._colorWithOpacity(textFill.color || fallbackColor, textFill.opacity);
21666
+ if (textFill.type === "solid") {
21667
+ ctx.fillStyle = color;
21668
+ this._fillText(ctx, glyph, spanPointWithFont);
21669
+ return true;
21670
+ }
21671
+ if (textFill.type === "gradient") {
21672
+ const gradient = this._createTextGradient(ctx, bounds, textFill, fallbackColor);
21673
+ if (!gradient) return false;
21674
+ ctx.fillStyle = gradient;
21675
+ this._fillText(ctx, glyph, spanPointWithFont);
21676
+ return true;
21677
+ }
21678
+ if (textFill.type === "picture") {
21679
+ const pattern = this._createTextPicturePattern(ctx, bounds, textFill);
21680
+ if (!pattern) return false;
21681
+ ctx.fillStyle = pattern;
21682
+ this._fillText(ctx, glyph, spanPointWithFont);
21683
+ return true;
21684
+ }
21685
+ return false;
21686
+ }
21687
+ _getGlyphPaintBounds(glyph, spanPointWithFont) {
21688
+ const { width, bBox } = glyph;
21689
+ const textWidth = Math.max(width, bBox.width, 1);
21690
+ const textHeight = Math.max(bBox.aba + bBox.abd, 1);
21691
+ return {
21692
+ left: spanPointWithFont.x,
21693
+ top: spanPointWithFont.y - bBox.aba,
21694
+ width: textWidth,
21695
+ height: textHeight
21696
+ };
21697
+ }
21698
+ _createTextGradient(ctx, bounds, textFill, fallbackColor) {
21699
+ var _gradient$type, _gradient$angle, _context;
21700
+ const gradient = textFill.gradient;
21701
+ const type = (_gradient$type = gradient === null || gradient === void 0 ? void 0 : gradient.type) !== null && _gradient$type !== void 0 ? _gradient$type : "linear";
21702
+ const angle = (_gradient$angle = gradient === null || gradient === void 0 ? void 0 : gradient.angle) !== null && _gradient$angle !== void 0 ? _gradient$angle : 0;
21703
+ const stops = this._normalizeGradientStops(gradient === null || gradient === void 0 ? void 0 : gradient.stops, textFill.color || fallbackColor);
21704
+ const centerX = bounds.left + bounds.width / 2;
21705
+ const centerY = bounds.top + bounds.height / 2;
21706
+ let canvasGradient;
21707
+ if (type === "radial") {
21708
+ const radius = Math.max(bounds.width, bounds.height) / 2;
21709
+ canvasGradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, radius);
21710
+ } else if (type === "angular" && "createConicGradient" in ((_context = ctx._context) !== null && _context !== void 0 ? _context : ctx)) {
21711
+ var _context2;
21712
+ canvasGradient = ((_context2 = ctx._context) !== null && _context2 !== void 0 ? _context2 : ctx).createConicGradient((angle - 90) * Math.PI / 180, centerX, centerY);
21713
+ } else if (type === "diamond") {
21714
+ const radius = Math.max(bounds.width, bounds.height) / 2;
21715
+ canvasGradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, radius);
21716
+ } else {
21717
+ const line = this._getLinearGradientLine(bounds, angle);
21718
+ canvasGradient = ctx.createLinearGradient(line.x0, line.y0, line.x1, line.y1);
21719
+ }
21720
+ for (const stop of stops) {
21721
+ var _textFill$opacity, _stop$opacity;
21722
+ const opacity = ((_textFill$opacity = textFill.opacity) !== null && _textFill$opacity !== void 0 ? _textFill$opacity : 1) * ((_stop$opacity = stop.opacity) !== null && _stop$opacity !== void 0 ? _stop$opacity : 1);
21723
+ canvasGradient.addColorStop(stop.offset, this._colorWithOpacity(stop.color, opacity));
21724
+ }
21725
+ return canvasGradient;
21726
+ }
21727
+ _createTextPicturePattern(ctx, bounds, textFill) {
21728
+ var _textFill$picture, _ref, _textFill$picture$opa, _textFill$picture2, _textFill$picture3, _pattern$setTransform;
21729
+ const source = (_textFill$picture = textFill.picture) === null || _textFill$picture === void 0 ? void 0 : _textFill$picture.source;
21730
+ if (!source) return null;
21731
+ const image = this._getTextFillImage(source);
21732
+ if (!image || !image.complete || !(image.naturalWidth || image.width)) return null;
21733
+ const canvas = document.createElement("canvas");
21734
+ canvas.width = Math.max(1, Math.ceil(bounds.width));
21735
+ canvas.height = Math.max(1, Math.ceil(bounds.height));
21736
+ const canvasContext = canvas.getContext("2d");
21737
+ if (!canvasContext) return null;
21738
+ canvasContext.globalAlpha = this._clamp((_ref = (_textFill$picture$opa = (_textFill$picture2 = textFill.picture) === null || _textFill$picture2 === void 0 ? void 0 : _textFill$picture2.opacity) !== null && _textFill$picture$opa !== void 0 ? _textFill$picture$opa : textFill.opacity) !== null && _ref !== void 0 ? _ref : 1, 0, 1);
21739
+ if (((_textFill$picture3 = textFill.picture) === null || _textFill$picture3 === void 0 ? void 0 : _textFill$picture3.mode) === "tile") {
21740
+ var _textFill$picture$sca, _textFill$picture$sca2, _textFill$picture$off, _textFill$picture$off2;
21741
+ const scaleX = (_textFill$picture$sca = textFill.picture.scaleX) !== null && _textFill$picture$sca !== void 0 ? _textFill$picture$sca : 1;
21742
+ const scaleY = (_textFill$picture$sca2 = textFill.picture.scaleY) !== null && _textFill$picture$sca2 !== void 0 ? _textFill$picture$sca2 : 1;
21743
+ const cellWidth = Math.max(1, (image.naturalWidth || image.width) * scaleX);
21744
+ const cellHeight = Math.max(1, (image.naturalHeight || image.height) * scaleY);
21745
+ const offsetX = (_textFill$picture$off = textFill.picture.offsetX) !== null && _textFill$picture$off !== void 0 ? _textFill$picture$off : 0;
21746
+ const offsetY = (_textFill$picture$off2 = textFill.picture.offsetY) !== null && _textFill$picture$off2 !== void 0 ? _textFill$picture$off2 : 0;
21747
+ for (let x = (offsetX % cellWidth + cellWidth) % cellWidth - cellWidth; x < canvas.width; x += cellWidth) for (let y = (offsetY % cellHeight + cellHeight) % cellHeight - cellHeight; y < canvas.height; y += cellHeight) canvasContext.drawImage(image, x, y, cellWidth, cellHeight);
21748
+ } else canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
21749
+ const pattern = ctx.createPattern(canvas, "no-repeat");
21750
+ pattern === null || pattern === void 0 || (_pattern$setTransform = pattern.setTransform) === null || _pattern$setTransform === void 0 || _pattern$setTransform.call(pattern, new DOMMatrix().translate(bounds.left, bounds.top));
21751
+ return pattern;
21752
+ }
21753
+ _getTextFillImage(source) {
21754
+ const cached = this._textFillImageCache.get(source);
21755
+ if (cached) return cached;
21756
+ const image = new Image();
21757
+ image.crossOrigin = "anonymous";
21758
+ image.src = source;
21759
+ this._textFillImageCache.set(source, image);
21760
+ return image.complete ? image : null;
21761
+ }
21762
+ _normalizeGradientStops(stops, fallbackColor) {
21763
+ return (stops && stops.length >= 2 ? stops : [{
21764
+ offset: 0,
21765
+ color: fallbackColor
21766
+ }, {
21767
+ offset: 100,
21768
+ color: "#ffffff"
21769
+ }]).map((stop) => ({
21770
+ color: stop.color,
21771
+ offset: this._clamp(stop.offset > 1 ? stop.offset / 100 : stop.offset, 0, 1),
21772
+ opacity: stop.opacity
21773
+ }));
21774
+ }
21775
+ _getLinearGradientLine(bounds, angle) {
21776
+ const angleRad = angle * Math.PI / 180;
21777
+ const centerX = bounds.left + bounds.width / 2;
21778
+ const centerY = bounds.top + bounds.height / 2;
21779
+ const cos = Math.cos(angleRad);
21780
+ const sin = Math.sin(angleRad);
21781
+ const halfDiagonal = (Math.abs(bounds.width * cos) + Math.abs(bounds.height * sin)) / 2;
21782
+ return {
21783
+ x0: centerX - cos * halfDiagonal,
21784
+ y0: centerY - sin * halfDiagonal,
21785
+ x1: centerX + cos * halfDiagonal,
21786
+ y1: centerY + sin * halfDiagonal
21787
+ };
21788
+ }
21789
+ _colorWithOpacity(color, opacity) {
21790
+ if (opacity === void 0 || opacity >= 1) return color;
21791
+ const alpha = this._clamp(opacity, 0, 1);
21792
+ const hex = color.trim();
21793
+ if (/^#[0-9a-f]{3}$/i.test(hex)) {
21794
+ const [, r, g, b] = hex;
21795
+ return `rgba(${Number.parseInt(r + r, 16)}, ${Number.parseInt(g + g, 16)}, ${Number.parseInt(b + b, 16)}, ${alpha})`;
21796
+ }
21797
+ if (/^#[0-9a-f]{6}$/i.test(hex)) return `rgba(${Number.parseInt(hex.slice(1, 3), 16)}, ${Number.parseInt(hex.slice(3, 5), 16)}, ${Number.parseInt(hex.slice(5, 7), 16)}, ${alpha})`;
21798
+ return color;
21799
+ }
21800
+ _clamp(value, min, max) {
21801
+ return Math.max(min, Math.min(max, value));
21802
+ }
21319
21803
  _fillText(ctx, glyph, spanPointWithFont) {
21320
21804
  const { renderConfig, spanStartPoint, centerPoint } = this.extensionOffset;
21321
21805
  const { content, width, bBox } = glyph;
@@ -21543,7 +22027,8 @@ DocumentsSpanAndLineExtensionRegistry.add(new Line());
21543
22027
 
21544
22028
  //#endregion
21545
22029
  //#region src/components/docs/document.ts
21546
- const DEFAULT_BORDER_COLOR = { color: { rgb: "#dee0e3" } };
22030
+ const DEFAULT_BORDER_COLOR = { color: { rgb: "#c7c9cc" } };
22031
+ const TABLE_VIEWPORT_BORDER_CLIP_PADDING = 2;
21547
22032
  var Documents = class Documents extends DocComponent {
21548
22033
  constructor(oKey, documentSkeleton, config) {
21549
22034
  super(oKey, documentSkeleton, config);
@@ -21726,29 +22211,62 @@ var Documents = class Documents extends DocComponent {
21726
22211
  }
21727
22212
  }
21728
22213
  _drawTable(ctx, page, skeTables, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale) {
21729
- for (const [_tableId, tableSkeleton] of skeTables) {
21730
- var _this$_drawLiquid, _this$_drawLiquid2, _this$_drawLiquid9;
22214
+ const drawLiquid = this._drawLiquid;
22215
+ if (drawLiquid == null) return;
22216
+ const renderUnitId = this._getRenderUnitId();
22217
+ for (const [tableId, tableSkeleton] of skeTables) {
21731
22218
  const { top: tableTop, left: tableLeft, rows } = tableSkeleton;
21732
- (_this$_drawLiquid = this._drawLiquid) === null || _this$_drawLiquid === void 0 || _this$_drawLiquid.translateSave();
21733
- (_this$_drawLiquid2 = this._drawLiquid) === null || _this$_drawLiquid2 === void 0 || _this$_drawLiquid2.translate(tableLeft, tableTop);
22219
+ const sourceTableId = getTableIdAndSliceIndex(tableId).tableId;
22220
+ const viewport = this._getTableViewport(page, tableSkeleton, renderUnitId, sourceTableId);
22221
+ drawLiquid.translateSave();
22222
+ drawLiquid.translate(tableLeft, tableTop);
22223
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) {
22224
+ const { x, y } = drawLiquid;
22225
+ ctx.save();
22226
+ ctx.beginPath();
22227
+ ctx.rectByPrecision(x + page.marginLeft - TABLE_VIEWPORT_BORDER_CLIP_PADDING, y + page.marginTop - TABLE_VIEWPORT_BORDER_CLIP_PADDING, viewport.viewportWidth + TABLE_VIEWPORT_BORDER_CLIP_PADDING * 2, tableSkeleton.height + TABLE_VIEWPORT_BORDER_CLIP_PADDING * 2);
22228
+ ctx.closePath();
22229
+ ctx.clip();
22230
+ drawLiquid.translate(-viewport.scrollLeft, 0);
22231
+ }
21734
22232
  for (const row of rows) {
21735
- var _this$_drawLiquid3, _this$_drawLiquid4, _this$_drawLiquid8;
21736
22233
  const { top: rowTop, cells } = row;
21737
- (_this$_drawLiquid3 = this._drawLiquid) === null || _this$_drawLiquid3 === void 0 || _this$_drawLiquid3.translateSave();
21738
- (_this$_drawLiquid4 = this._drawLiquid) === null || _this$_drawLiquid4 === void 0 || _this$_drawLiquid4.translate(0, rowTop);
22234
+ drawLiquid.translateSave();
22235
+ drawLiquid.translate(0, rowTop);
21739
22236
  for (const cell of cells) {
21740
- var _this$_drawLiquid5, _this$_drawLiquid6, _this$_drawLiquid7;
22237
+ if (cell.isMergedCellCovered) continue;
21741
22238
  const { left: cellLeft } = cell;
21742
- (_this$_drawLiquid5 = this._drawLiquid) === null || _this$_drawLiquid5 === void 0 || _this$_drawLiquid5.translateSave();
21743
- (_this$_drawLiquid6 = this._drawLiquid) === null || _this$_drawLiquid6 === void 0 || _this$_drawLiquid6.translate(cellLeft, 0);
22239
+ drawLiquid.translateSave();
22240
+ drawLiquid.translate(cellLeft, 0);
21744
22241
  this._drawTableCell(ctx, page, cell, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale);
21745
- (_this$_drawLiquid7 = this._drawLiquid) === null || _this$_drawLiquid7 === void 0 || _this$_drawLiquid7.translateRestore();
22242
+ drawLiquid.translateRestore();
21746
22243
  }
21747
- (_this$_drawLiquid8 = this._drawLiquid) === null || _this$_drawLiquid8 === void 0 || _this$_drawLiquid8.translateRestore();
22244
+ drawLiquid.translateRestore();
21748
22245
  }
21749
- (_this$_drawLiquid9 = this._drawLiquid) === null || _this$_drawLiquid9 === void 0 || _this$_drawLiquid9.translateRestore();
22246
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) ctx.restore();
22247
+ drawLiquid.translateRestore();
21750
22248
  }
21751
22249
  }
22250
+ _getTableViewport(page, tableSkeleton, unitId, tableId) {
22251
+ const viewport = getDocsTableRenderViewport(unitId, tableId);
22252
+ if (viewport) return viewport;
22253
+ const { pageWidth, marginLeft = 0, marginRight = 0 } = page;
22254
+ if (!Number.isFinite(pageWidth)) return null;
22255
+ const viewportWidth = Math.max(0, pageWidth - marginLeft - marginRight - tableSkeleton.left);
22256
+ if (viewportWidth <= 0 || tableSkeleton.width <= viewportWidth) return null;
22257
+ return {
22258
+ contentWidth: tableSkeleton.width,
22259
+ scrollLeft: 0,
22260
+ viewportWidth
22261
+ };
22262
+ }
22263
+ _getRenderUnitId() {
22264
+ var _skeleton$getViewMode, _viewModel$getDataMod, _dataModel$getUnitId, _dataModel$getUnitId2;
22265
+ const skeleton = this.getSkeleton();
22266
+ const viewModel = skeleton === null || skeleton === void 0 || (_skeleton$getViewMode = skeleton.getViewModel) === null || _skeleton$getViewMode === void 0 ? void 0 : _skeleton$getViewMode.call(skeleton);
22267
+ const dataModel = viewModel === null || viewModel === void 0 || (_viewModel$getDataMod = viewModel.getDataModel) === null || _viewModel$getDataMod === void 0 ? void 0 : _viewModel$getDataMod.call(viewModel);
22268
+ return (_dataModel$getUnitId = dataModel === null || dataModel === void 0 || (_dataModel$getUnitId2 = dataModel.getUnitId) === null || _dataModel$getUnitId2 === void 0 ? void 0 : _dataModel$getUnitId2.call(dataModel)) !== null && _dataModel$getUnitId !== void 0 ? _dataModel$getUnitId : this.oKey;
22269
+ }
21752
22270
  _drawBorderBottom(ctx, page, line, left = 0, top = 0) {
21753
22271
  var _line$borderBottom$pa, _line$borderBottom, _line$borderBottom$co, _line$borderBottom2;
21754
22272
  if (this._drawLiquid == null) return;
@@ -21858,60 +22376,68 @@ var Documents = class Documents extends DocComponent {
21858
22376
  ctx.restore();
21859
22377
  }
21860
22378
  _drawTableCellBordersAndBg(ctx, page, cell) {
21861
- var _borderLeft$color$rgb, _borderTop$color$rgb, _borderRight$color$rg, _borderBottom$color$r;
22379
+ var _rowSke$index, _cellSource$backgroun;
21862
22380
  const { marginLeft, marginTop } = page;
21863
22381
  const { pageWidth, pageHeight } = cell;
21864
22382
  const rowSke = cell.parent;
21865
22383
  const index = rowSke.cells.indexOf(cell);
21866
- const { borderTop = DEFAULT_BORDER_COLOR, borderBottom = DEFAULT_BORDER_COLOR, borderLeft = DEFAULT_BORDER_COLOR, borderRight = DEFAULT_BORDER_COLOR, backgroundColor } = rowSke.rowSource.tableCells[index];
22384
+ if (index < 0) return;
22385
+ const cellSource = rowSke.rowSource.tableCells[index];
22386
+ const tableSke = rowSke.parent;
22387
+ const rowIndexInTable = tableSke === null || tableSke === void 0 ? void 0 : tableSke.rows.indexOf(rowSke);
22388
+ const rowIndex = rowIndexInTable == null || rowIndexInTable < 0 ? (_rowSke$index = rowSke.index) !== null && _rowSke$index !== void 0 ? _rowSke$index : 0 : rowIndexInTable;
22389
+ if (!cellSource || cellSource.rowSpan === 0 || cellSource.columnSpan === 0) return;
21867
22390
  if (this._drawLiquid == null) return;
21868
22391
  let { x, y } = this._drawLiquid;
21869
22392
  x += marginLeft;
21870
22393
  y += marginTop;
21871
- if (backgroundColor && backgroundColor.rgb) {
22394
+ if ((_cellSource$backgroun = cellSource.backgroundColor) === null || _cellSource$backgroun === void 0 ? void 0 : _cellSource$backgroun.rgb) {
21872
22395
  ctx.save();
21873
- ctx.fillStyle = backgroundColor.rgb;
22396
+ ctx.fillStyle = cellSource.backgroundColor.rgb;
21874
22397
  ctx.fillRectByPrecision(x, y, pageWidth, pageHeight);
21875
22398
  ctx.restore();
21876
22399
  }
21877
- ctx.save();
21878
- ctx.setLineWidthByPrecision(1);
21879
- ctx.save();
21880
- ctx.strokeStyle = (_borderLeft$color$rgb = borderLeft.color.rgb) !== null && _borderLeft$color$rgb !== void 0 ? _borderLeft$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
21881
- drawLineByBorderType(ctx, "l", 0, {
21882
- startX: x,
21883
- startY: y,
21884
- endX: x + pageWidth,
21885
- endY: y + pageHeight
21886
- });
21887
- ctx.restore();
21888
- ctx.save();
21889
- ctx.strokeStyle = (_borderTop$color$rgb = borderTop.color.rgb) !== null && _borderTop$color$rgb !== void 0 ? _borderTop$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
21890
- drawLineByBorderType(ctx, "t", 0, {
21891
- startX: x,
21892
- startY: y,
21893
- endX: x + pageWidth,
21894
- endY: y + pageHeight
21895
- });
21896
- ctx.restore();
21897
- ctx.save();
21898
- ctx.strokeStyle = (_borderRight$color$rg = borderRight.color.rgb) !== null && _borderRight$color$rg !== void 0 ? _borderRight$color$rg : DEFAULT_BORDER_COLOR.color.rgb;
21899
- drawLineByBorderType(ctx, "r", 0, {
22400
+ const position = {
21900
22401
  startX: x,
21901
22402
  startY: y,
21902
22403
  endX: x + pageWidth,
21903
22404
  endY: y + pageHeight
21904
- });
21905
- ctx.restore();
22405
+ };
22406
+ const rightCellSource = this._getTableCellSource(rowSke, index + 1);
22407
+ const bottomCellSource = tableSke ? this._getTableCellSource(tableSke.rows[rowIndex + 1], index) : void 0;
22408
+ this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderRight, rightCellSource === null || rightCellSource === void 0 ? void 0 : rightCellSource.borderLeft), "r", position);
22409
+ this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderBottom, bottomCellSource === null || bottomCellSource === void 0 ? void 0 : bottomCellSource.borderTop), "b", position);
22410
+ if (rowIndex <= 0) this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderTop), "t", position);
22411
+ if (index <= 0) this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderLeft), "l", position);
22412
+ }
22413
+ _getTableCellSource(row, column) {
22414
+ var _row$rowSource$tableC;
22415
+ return (_row$rowSource$tableC = row === null || row === void 0 ? void 0 : row.rowSource.tableCells[column]) !== null && _row$rowSource$tableC !== void 0 ? _row$rowSource$tableC : null;
22416
+ }
22417
+ _resolveTableCellBorder(primary, secondary) {
22418
+ if (this._isDrawableTableCellBorder(primary)) return primary;
22419
+ if (this._isDrawableTableCellBorder(secondary)) return secondary;
22420
+ if (primary || secondary) return null;
22421
+ return DEFAULT_BORDER_COLOR;
22422
+ }
22423
+ _isDrawableTableCellBorder(border) {
22424
+ var _border$width$v, _border$width, _border$color$rgb, _border$color;
22425
+ if (!border) return false;
22426
+ const lineWidth = (_border$width$v = (_border$width = border.width) === null || _border$width === void 0 ? void 0 : _border$width.v) !== null && _border$width$v !== void 0 ? _border$width$v : 1;
22427
+ const color = (_border$color$rgb = (_border$color = border.color) === null || _border$color === void 0 ? void 0 : _border$color.rgb) !== null && _border$color$rgb !== void 0 ? _border$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
22428
+ return lineWidth > 0 && color !== "transparent";
22429
+ }
22430
+ _drawTableCellBorder(ctx, border, type, position) {
22431
+ var _border$width$v2, _border$width2, _border$color$rgb2, _border$color2;
22432
+ if (!border) return;
22433
+ const lineWidth = (_border$width$v2 = (_border$width2 = border.width) === null || _border$width2 === void 0 ? void 0 : _border$width2.v) !== null && _border$width$v2 !== void 0 ? _border$width$v2 : 1;
22434
+ const color = (_border$color$rgb2 = (_border$color2 = border.color) === null || _border$color2 === void 0 ? void 0 : _border$color2.rgb) !== null && _border$color$rgb2 !== void 0 ? _border$color$rgb2 : DEFAULT_BORDER_COLOR.color.rgb;
22435
+ if (lineWidth <= 0 || color === "transparent") return;
21906
22436
  ctx.save();
21907
- ctx.strokeStyle = (_borderBottom$color$r = borderBottom.color.rgb) !== null && _borderBottom$color$r !== void 0 ? _borderBottom$color$r : DEFAULT_BORDER_COLOR.color.rgb;
21908
- drawLineByBorderType(ctx, "b", 0, {
21909
- startX: x,
21910
- startY: y,
21911
- endX: x + pageWidth,
21912
- endY: y + pageHeight
21913
- });
21914
- ctx.restore();
22437
+ ctx.setLineWidthByPrecision(lineWidth);
22438
+ setTableCellBorderDash(ctx, border.dashStyle);
22439
+ ctx.strokeStyle = color;
22440
+ drawLineByBorderType(ctx, type, 0, position);
21915
22441
  ctx.restore();
21916
22442
  }
21917
22443
  _drawHeaderFooter(page, ctx, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale, parentPage, isHeader = true) {
@@ -22042,6 +22568,17 @@ var Documents = class Documents extends DocComponent {
22042
22568
  });
22043
22569
  }
22044
22570
  };
22571
+ function setTableCellBorderDash(ctx, dashStyle) {
22572
+ if (dashStyle === _univerjs_core.DashStyleType.DOT) {
22573
+ ctx.setLineDash([2]);
22574
+ return;
22575
+ }
22576
+ if (dashStyle === _univerjs_core.DashStyleType.DASH) {
22577
+ ctx.setLineDash([6]);
22578
+ return;
22579
+ }
22580
+ ctx.setLineDash([0]);
22581
+ }
22045
22582
 
22046
22583
  //#endregion
22047
22584
  //#region src/components/sheets/spreadsheet.ts
@@ -22225,8 +22762,10 @@ var Spreadsheet = class extends SheetComponent {
22225
22762
  cacheCtx.save();
22226
22763
  const isForceDirty = isViewportForceDirty || this.isForceDirty();
22227
22764
  const isDirty = isViewportDirty || this.isDirty();
22228
- if (diffBounds.length === 0 || diffX === 0 && diffY === 0 || isForceDirty || isDirty) {
22229
- if (isDirty || isForceDirty) {
22765
+ const isScrollJumpOutsideCache = Math.abs(diffX) * scaleX >= cacheCanvas.getWidth() || Math.abs(diffY) * scaleY >= cacheCanvas.getHeight();
22766
+ const shouldRefreshCache = isDirty || isForceDirty || isScrollJumpOutsideCache;
22767
+ if (diffBounds.length === 0 || diffX === 0 && diffY === 0 || shouldRefreshCache) {
22768
+ if (shouldRefreshCache) {
22230
22769
  this.addRenderTagToScene("scrolling", false);
22231
22770
  this.refreshCacheCanvas(viewportInfo, {
22232
22771
  cacheCanvas,
@@ -23242,29 +23781,49 @@ var Slide = class extends SceneViewer {
23242
23781
  //#region src/components/docs/doc-background.ts
23243
23782
  const PAGE_STROKE_COLOR = "rgba(198, 198, 198, 1)";
23244
23783
  const PAGE_FILL_COLOR = "rgba(255, 255, 255, 1)";
23784
+ const DOCS_WORKSPACE_FILL_COLOR = "#fafafa";
23245
23785
  const MARGIN_STROKE_COLOR = "rgba(158, 158, 158, 1)";
23246
23786
  var DocBackground = class DocBackground extends DocComponent {
23247
23787
  constructor(oKey, documentSkeleton, config) {
23248
23788
  super(oKey, documentSkeleton, config);
23249
23789
  _defineProperty(this, "_drawLiquid", void 0);
23790
+ _defineProperty(this, "_backgroundFillColor", void 0);
23791
+ _defineProperty(this, "_pageFillColor", void 0);
23792
+ _defineProperty(this, "_pageStrokeColor", void 0);
23793
+ _defineProperty(this, "_marginStrokeColor", void 0);
23250
23794
  this._drawLiquid = new Liquid();
23795
+ this._backgroundFillColor = config === null || config === void 0 ? void 0 : config.backgroundFillColor;
23796
+ this._pageFillColor = config === null || config === void 0 ? void 0 : config.pageFillColor;
23797
+ this._pageStrokeColor = config === null || config === void 0 ? void 0 : config.pageStrokeColor;
23798
+ this._marginStrokeColor = config === null || config === void 0 ? void 0 : config.marginStrokeColor;
23251
23799
  this.makeDirty(true);
23252
23800
  }
23253
23801
  static create(oKey, documentSkeleton, config) {
23254
23802
  return new DocBackground(oKey, documentSkeleton, config);
23255
23803
  }
23804
+ setFillColors(backgroundFillColor, pageFillColor, pageStrokeColor, marginStrokeColor) {
23805
+ if (this._backgroundFillColor === backgroundFillColor && this._pageFillColor === pageFillColor && this._pageStrokeColor === pageStrokeColor && this._marginStrokeColor === marginStrokeColor) return;
23806
+ this._backgroundFillColor = backgroundFillColor;
23807
+ this._pageFillColor = pageFillColor;
23808
+ this._pageStrokeColor = pageStrokeColor;
23809
+ this._marginStrokeColor = marginStrokeColor;
23810
+ this.makeDirty(true);
23811
+ }
23256
23812
  draw(ctx, bounds) {
23257
- var _this$getSkeleton, _this$getSkeleton2;
23813
+ var _this$getSkeleton, _this$getSkeleton2, _this$_backgroundFill;
23258
23814
  const skeletonData = (_this$getSkeleton = this.getSkeleton()) === null || _this$getSkeleton === void 0 ? void 0 : _this$getSkeleton.getSkeletonData();
23259
23815
  const docDataModel = (_this$getSkeleton2 = this.getSkeleton()) === null || _this$getSkeleton2 === void 0 ? void 0 : _this$getSkeleton2.getViewModel().getDataModel();
23260
23816
  if (skeletonData == null || docDataModel == null) return;
23261
23817
  const { documentFlavor } = docDataModel.getSnapshot().documentStyle;
23262
- if (documentFlavor !== _univerjs_core.DocumentFlavor.TRADITIONAL) return;
23818
+ const workspaceFill = (_this$_backgroundFill = this._backgroundFillColor) !== null && _this$_backgroundFill !== void 0 ? _this$_backgroundFill : documentFlavor === _univerjs_core.DocumentFlavor.MODERN ? PAGE_FILL_COLOR : DOCS_WORKSPACE_FILL_COLOR;
23819
+ this._drawWorkspaceBackground(ctx, workspaceFill, bounds);
23820
+ if (documentFlavor === _univerjs_core.DocumentFlavor.MODERN) return;
23263
23821
  this._drawLiquid.reset();
23264
23822
  const { pages } = skeletonData;
23265
23823
  let pageTop = 0;
23266
23824
  let pageLeft = 0;
23267
23825
  for (let i = 0, len = pages.length; i < len; i++) {
23826
+ var _this$_pageStrokeColo, _this$_pageFillColor, _this$_marginStrokeCo;
23268
23827
  const page = pages[i];
23269
23828
  if (this.isSkipByDiffBounds(page, pageTop, pageLeft, bounds)) {
23270
23829
  const { x, y } = this._drawLiquid.translatePage(page, this.pageLayoutType, this.pageMarginLeft, this.pageMarginTop);
@@ -23279,8 +23838,8 @@ var DocBackground = class DocBackground extends DocComponent {
23279
23838
  width: pageWidth !== null && pageWidth !== void 0 ? pageWidth : width,
23280
23839
  height: pageHeight !== null && pageHeight !== void 0 ? pageHeight : height,
23281
23840
  strokeWidth: 1,
23282
- stroke: PAGE_STROKE_COLOR,
23283
- fill: PAGE_FILL_COLOR,
23841
+ stroke: (_this$_pageStrokeColo = this._pageStrokeColor) !== null && _this$_pageStrokeColo !== void 0 ? _this$_pageStrokeColo : PAGE_STROKE_COLOR,
23842
+ fill: (_this$_pageFillColor = this._pageFillColor) !== null && _this$_pageFillColor !== void 0 ? _this$_pageFillColor : PAGE_FILL_COLOR,
23284
23843
  zIndex: 3
23285
23844
  };
23286
23845
  Rect.drawWith(ctx, backgroundOptions);
@@ -23337,7 +23896,7 @@ var DocBackground = class DocBackground extends DocComponent {
23337
23896
  }
23338
23897
  ],
23339
23898
  strokeWidth: 1.5,
23340
- stroke: MARGIN_STROKE_COLOR
23899
+ stroke: (_this$_marginStrokeCo = this._marginStrokeColor) !== null && _this$_marginStrokeCo !== void 0 ? _this$_marginStrokeCo : MARGIN_STROKE_COLOR
23341
23900
  };
23342
23901
  Path.drawWith(ctx, marginIdentification);
23343
23902
  ctx.restore();
@@ -23346,6 +23905,24 @@ var DocBackground = class DocBackground extends DocComponent {
23346
23905
  pageTop += y;
23347
23906
  }
23348
23907
  }
23908
+ _drawWorkspaceBackground(ctx, fill, bounds) {
23909
+ var _bounds$cacheBound, _visibleBound$left, _visibleBound$top;
23910
+ const visibleBound = (_bounds$cacheBound = bounds === null || bounds === void 0 ? void 0 : bounds.cacheBound) !== null && _bounds$cacheBound !== void 0 ? _bounds$cacheBound : bounds === null || bounds === void 0 ? void 0 : bounds.viewBound;
23911
+ const left = (_visibleBound$left = visibleBound === null || visibleBound === void 0 ? void 0 : visibleBound.left) !== null && _visibleBound$left !== void 0 ? _visibleBound$left : 0;
23912
+ const top = (_visibleBound$top = visibleBound === null || visibleBound === void 0 ? void 0 : visibleBound.top) !== null && _visibleBound$top !== void 0 ? _visibleBound$top : 0;
23913
+ const width = visibleBound == null ? this.width : visibleBound.right - visibleBound.left;
23914
+ const height = visibleBound == null ? this.height : visibleBound.bottom - visibleBound.top;
23915
+ if (width <= 0 || height <= 0) return;
23916
+ ctx.save();
23917
+ ctx.translate(left, top);
23918
+ Rect.drawWith(ctx, {
23919
+ width,
23920
+ height,
23921
+ fill,
23922
+ zIndex: 0
23923
+ });
23924
+ ctx.restore();
23925
+ }
23349
23926
  changeSkeleton(newSkeleton) {
23350
23927
  this.setSkeleton(newSkeleton);
23351
23928
  return this;
@@ -23863,7 +24440,10 @@ let Engine = class Engine extends _univerjs_core.Disposable {
23863
24440
  sub.unsubscribe();
23864
24441
  this._rect$ = null;
23865
24442
  };
23866
- })).pipe((0, rxjs.shareReplay)(1));
24443
+ })).pipe((0, rxjs.shareReplay)({
24444
+ bufferSize: 1,
24445
+ refCount: true
24446
+ }));
23867
24447
  }
23868
24448
  get unitId() {
23869
24449
  return this._unitId;
@@ -24495,7 +25075,7 @@ Engine = __decorate([__decorateParam(2, ICanvasColorService)], Engine);
24495
25075
  //#endregion
24496
25076
  //#region package.json
24497
25077
  var name = "@univerjs/engine-render";
24498
- var version = "0.24.0";
25078
+ var version = "0.25.0-insiders.20260604-29ebbff";
24499
25079
 
24500
25080
  //#endregion
24501
25081
  //#region src/config/config.ts
@@ -24968,6 +25548,46 @@ const MINI_WIDTH_LIMIT = 20;
24968
25548
  const MINI_HEIGHT_LIMIT = 20;
24969
25549
  const DEFAULT_CONTROL_PLUS_INDEX = 5e3;
24970
25550
  const SINGLE_ACTIVE_OBJECT_TYPE_MAP = new Set([6]);
25551
+ const ROTATE_ICON_SIZE = 14;
25552
+ var TransformerRotateIcon = class extends Rect {
25553
+ _draw(ctx) {
25554
+ const iconWidth = this.width || ROTATE_ICON_SIZE;
25555
+ const iconHeight = this.height || ROTATE_ICON_SIZE;
25556
+ const scaleX = iconWidth / 24;
25557
+ const scaleY = iconHeight / 24;
25558
+ ctx.save();
25559
+ ctx.scale(scaleX, scaleY);
25560
+ ctx.beginPath();
25561
+ ctx.lineWidth = (this.strokeWidth || 2) / Math.max(scaleX, scaleY);
25562
+ ctx.lineCap = "round";
25563
+ ctx.lineJoin = "round";
25564
+ ctx.strokeStyle = this.stroke || "currentColor";
25565
+ ctx.moveTo(21, 12);
25566
+ ctx.arc(12, 12, 9, 0, Math.PI * 1.5, false);
25567
+ ctx.bezierCurveTo(14.52, 3, 16.93, 4, 18.74, 5.74);
25568
+ ctx.lineTo(21, 8);
25569
+ ctx.moveTo(21, 3);
25570
+ ctx.lineTo(21, 8);
25571
+ ctx.lineTo(16, 8);
25572
+ ctx.stroke();
25573
+ ctx.restore();
25574
+ }
25575
+ };
25576
+ var TransformerAnchor = class extends Rect {
25577
+ _draw(ctx) {
25578
+ if (!this.shadowColor || !this.shadowBlur && !this.shadowOffsetX && !this.shadowOffsetY) {
25579
+ Rect.drawWith(ctx, this);
25580
+ return;
25581
+ }
25582
+ ctx.save();
25583
+ ctx.shadowColor = this.shadowColor;
25584
+ ctx.shadowBlur = this.shadowBlur;
25585
+ ctx.shadowOffsetX = this.shadowOffsetX;
25586
+ ctx.shadowOffsetY = this.shadowOffsetY;
25587
+ Rect.drawWith(ctx, this);
25588
+ ctx.restore();
25589
+ }
25590
+ };
24971
25591
  /**
24972
25592
  * Transformer constructor. Transformer is a special type of group that allow you transform
24973
25593
  * primitives and shapes. Transforming tool is not changing `width` and `height` properties of nodes
@@ -24986,8 +25606,16 @@ var Transformer = class extends _univerjs_core.Disposable {
24986
25606
  _defineProperty(this, "rotationSnaps", []);
24987
25607
  _defineProperty(this, "rotationSnapTolerance", 5);
24988
25608
  _defineProperty(this, "rotateAnchorOffset", 50);
25609
+ _defineProperty(this, "rotateAnchorPosition", "top");
25610
+ _defineProperty(this, "rotateLineEnabled", true);
24989
25611
  _defineProperty(this, "rotateSize", 10);
24990
25612
  _defineProperty(this, "rotateCornerRadius", 10);
25613
+ _defineProperty(this, "rotateFill", void 0);
25614
+ _defineProperty(this, "rotateStroke", void 0);
25615
+ _defineProperty(this, "rotateStrokeWidth", void 0);
25616
+ _defineProperty(this, "rotateIconEnabled", false);
25617
+ _defineProperty(this, "rotateIconStroke", void 0);
25618
+ _defineProperty(this, "rotateIconStrokeWidth", 1.5);
24991
25619
  _defineProperty(this, "borderEnabled", true);
24992
25620
  _defineProperty(this, "borderStroke", "rgb(97, 97, 97)");
24993
25621
  _defineProperty(this, "borderStrokeWidth", 1);
@@ -24998,10 +25626,19 @@ var Transformer = class extends _univerjs_core.Disposable {
24998
25626
  _defineProperty(this, "anchorStrokeWidth", 1);
24999
25627
  _defineProperty(this, "anchorSize", 10);
25000
25628
  _defineProperty(this, "anchorCornerRadius", 10);
25629
+ _defineProperty(this, "anchorStyle", "default");
25630
+ _defineProperty(this, "anchorSideLongSize", 16);
25631
+ _defineProperty(this, "anchorSideShortSize", 5);
25632
+ _defineProperty(this, "anchorSideCornerRadius", 2.5);
25633
+ _defineProperty(this, "anchorShadowColor", void 0);
25634
+ _defineProperty(this, "anchorShadowBlur", 0);
25635
+ _defineProperty(this, "anchorShadowOffsetX", 0);
25636
+ _defineProperty(this, "anchorShadowOffsetY", 0);
25001
25637
  _defineProperty(this, "keepRatio", true);
25002
25638
  _defineProperty(this, "centeredScaling", false);
25003
25639
  _defineProperty(this, "zeroLeft", 0);
25004
25640
  _defineProperty(this, "zeroTop", 0);
25641
+ _defineProperty(this, "moveBoundaryEnabled", true);
25005
25642
  _defineProperty(
25006
25643
  this,
25007
25644
  /**
@@ -25115,9 +25752,9 @@ var Transformer = class extends _univerjs_core.Disposable {
25115
25752
  }
25116
25753
  _getConfig(applyObject) {
25117
25754
  const objectTransformerConfig = applyObject.transformerConfig;
25118
- let { isCropper, hoverEnabled, hoverEnterFunc, hoverLeaveFunc, resizeEnabled, rotateEnabled, rotationSnaps, rotationSnapTolerance, rotateAnchorOffset, rotateSize, rotateCornerRadius, borderEnabled, borderStroke, borderStrokeWidth, borderDash, borderSpacing, anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorCornerRadius, keepRatio, centeredScaling, enabledAnchors, flipEnabled, ignoreStroke, boundBoxFunc, useSingleNodeRotation, shouldOverdrawWholeArea } = this;
25755
+ let { isCropper, hoverEnabled, hoverEnterFunc, hoverLeaveFunc, resizeEnabled, rotateEnabled, rotationSnaps, rotationSnapTolerance, rotateAnchorOffset, rotateAnchorPosition, rotateLineEnabled, rotateSize, rotateCornerRadius, rotateFill, rotateStroke, rotateStrokeWidth, rotateIconEnabled, rotateIconStroke, rotateIconStrokeWidth, borderEnabled, borderStroke, borderStrokeWidth, borderDash, borderSpacing, anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorCornerRadius, anchorStyle, anchorSideLongSize, anchorSideShortSize, anchorSideCornerRadius, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY, keepRatio, centeredScaling, enabledAnchors, flipEnabled, ignoreStroke, boundBoxFunc, useSingleNodeRotation, shouldOverdrawWholeArea, moveBoundaryEnabled } = this;
25119
25756
  if (objectTransformerConfig != null) {
25120
- var _objectTransformerCon, _objectTransformerCon2, _objectTransformerCon3, _objectTransformerCon4, _objectTransformerCon5, _objectTransformerCon6, _objectTransformerCon7, _objectTransformerCon8, _objectTransformerCon9, _objectTransformerCon10, _objectTransformerCon11, _objectTransformerCon12, _objectTransformerCon13, _objectTransformerCon14, _objectTransformerCon15, _objectTransformerCon16, _objectTransformerCon17, _objectTransformerCon18, _objectTransformerCon19, _objectTransformerCon20, _objectTransformerCon21, _objectTransformerCon22, _objectTransformerCon23, _objectTransformerCon24, _objectTransformerCon25, _objectTransformerCon26, _objectTransformerCon27, _objectTransformerCon28, _objectTransformerCon29;
25757
+ var _objectTransformerCon, _objectTransformerCon2, _objectTransformerCon3, _objectTransformerCon4, _objectTransformerCon5, _objectTransformerCon6, _objectTransformerCon7, _objectTransformerCon8, _objectTransformerCon9, _objectTransformerCon10, _objectTransformerCon11, _objectTransformerCon12, _objectTransformerCon13, _objectTransformerCon14, _objectTransformerCon15, _objectTransformerCon16, _objectTransformerCon17, _objectTransformerCon18, _objectTransformerCon19, _objectTransformerCon20, _objectTransformerCon21, _objectTransformerCon22, _objectTransformerCon23, _objectTransformerCon24, _objectTransformerCon25, _objectTransformerCon26, _objectTransformerCon27, _objectTransformerCon28, _objectTransformerCon29, _objectTransformerCon30, _objectTransformerCon31, _objectTransformerCon32, _objectTransformerCon33, _objectTransformerCon34, _objectTransformerCon35, _objectTransformerCon36, _objectTransformerCon37, _objectTransformerCon38, _objectTransformerCon39, _objectTransformerCon40, _objectTransformerCon41, _objectTransformerCon42, _objectTransformerCon43, _objectTransformerCon44, _objectTransformerCon45, _objectTransformerCon46;
25121
25758
  isCropper = (_objectTransformerCon = objectTransformerConfig.isCropper) !== null && _objectTransformerCon !== void 0 ? _objectTransformerCon : isCropper;
25122
25759
  hoverEnabled = (_objectTransformerCon2 = objectTransformerConfig.hoverEnabled) !== null && _objectTransformerCon2 !== void 0 ? _objectTransformerCon2 : hoverEnabled;
25123
25760
  hoverEnterFunc = (_objectTransformerCon3 = objectTransformerConfig.hoverEnterFunc) !== null && _objectTransformerCon3 !== void 0 ? _objectTransformerCon3 : hoverEnterFunc;
@@ -25127,26 +25764,43 @@ var Transformer = class extends _univerjs_core.Disposable {
25127
25764
  rotationSnaps = (_objectTransformerCon7 = objectTransformerConfig.rotationSnaps) !== null && _objectTransformerCon7 !== void 0 ? _objectTransformerCon7 : rotationSnaps;
25128
25765
  rotationSnapTolerance = (_objectTransformerCon8 = objectTransformerConfig.rotationSnapTolerance) !== null && _objectTransformerCon8 !== void 0 ? _objectTransformerCon8 : rotationSnapTolerance;
25129
25766
  rotateAnchorOffset = (_objectTransformerCon9 = objectTransformerConfig.rotateAnchorOffset) !== null && _objectTransformerCon9 !== void 0 ? _objectTransformerCon9 : rotateAnchorOffset;
25130
- rotateSize = (_objectTransformerCon10 = objectTransformerConfig.rotateSize) !== null && _objectTransformerCon10 !== void 0 ? _objectTransformerCon10 : rotateSize;
25131
- rotateCornerRadius = (_objectTransformerCon11 = objectTransformerConfig.rotateCornerRadius) !== null && _objectTransformerCon11 !== void 0 ? _objectTransformerCon11 : rotateCornerRadius;
25132
- borderEnabled = (_objectTransformerCon12 = objectTransformerConfig.borderEnabled) !== null && _objectTransformerCon12 !== void 0 ? _objectTransformerCon12 : borderEnabled;
25133
- borderStroke = (_objectTransformerCon13 = objectTransformerConfig.borderStroke) !== null && _objectTransformerCon13 !== void 0 ? _objectTransformerCon13 : borderStroke;
25134
- borderStrokeWidth = (_objectTransformerCon14 = objectTransformerConfig.borderStrokeWidth) !== null && _objectTransformerCon14 !== void 0 ? _objectTransformerCon14 : borderStrokeWidth;
25135
- borderDash = (_objectTransformerCon15 = objectTransformerConfig.borderDash) !== null && _objectTransformerCon15 !== void 0 ? _objectTransformerCon15 : borderDash;
25136
- borderSpacing = (_objectTransformerCon16 = objectTransformerConfig.borderSpacing) !== null && _objectTransformerCon16 !== void 0 ? _objectTransformerCon16 : borderSpacing;
25137
- anchorFill = (_objectTransformerCon17 = objectTransformerConfig.anchorFill) !== null && _objectTransformerCon17 !== void 0 ? _objectTransformerCon17 : anchorFill;
25138
- anchorStroke = (_objectTransformerCon18 = objectTransformerConfig.anchorStroke) !== null && _objectTransformerCon18 !== void 0 ? _objectTransformerCon18 : anchorStroke;
25139
- anchorStrokeWidth = (_objectTransformerCon19 = objectTransformerConfig.anchorStrokeWidth) !== null && _objectTransformerCon19 !== void 0 ? _objectTransformerCon19 : anchorStrokeWidth;
25140
- anchorSize = (_objectTransformerCon20 = objectTransformerConfig.anchorSize) !== null && _objectTransformerCon20 !== void 0 ? _objectTransformerCon20 : anchorSize;
25141
- anchorCornerRadius = (_objectTransformerCon21 = objectTransformerConfig.anchorCornerRadius) !== null && _objectTransformerCon21 !== void 0 ? _objectTransformerCon21 : anchorCornerRadius;
25142
- keepRatio = (_objectTransformerCon22 = objectTransformerConfig.keepRatio) !== null && _objectTransformerCon22 !== void 0 ? _objectTransformerCon22 : keepRatio;
25143
- centeredScaling = (_objectTransformerCon23 = objectTransformerConfig.centeredScaling) !== null && _objectTransformerCon23 !== void 0 ? _objectTransformerCon23 : centeredScaling;
25144
- enabledAnchors = (_objectTransformerCon24 = objectTransformerConfig.enabledAnchors) !== null && _objectTransformerCon24 !== void 0 ? _objectTransformerCon24 : enabledAnchors;
25145
- flipEnabled = (_objectTransformerCon25 = objectTransformerConfig.flipEnabled) !== null && _objectTransformerCon25 !== void 0 ? _objectTransformerCon25 : flipEnabled;
25146
- ignoreStroke = (_objectTransformerCon26 = objectTransformerConfig.ignoreStroke) !== null && _objectTransformerCon26 !== void 0 ? _objectTransformerCon26 : ignoreStroke;
25147
- boundBoxFunc = (_objectTransformerCon27 = objectTransformerConfig.boundBoxFunc) !== null && _objectTransformerCon27 !== void 0 ? _objectTransformerCon27 : boundBoxFunc;
25148
- useSingleNodeRotation = (_objectTransformerCon28 = objectTransformerConfig.useSingleNodeRotation) !== null && _objectTransformerCon28 !== void 0 ? _objectTransformerCon28 : useSingleNodeRotation;
25149
- shouldOverdrawWholeArea = (_objectTransformerCon29 = objectTransformerConfig.shouldOverdrawWholeArea) !== null && _objectTransformerCon29 !== void 0 ? _objectTransformerCon29 : shouldOverdrawWholeArea;
25767
+ rotateAnchorPosition = (_objectTransformerCon10 = objectTransformerConfig.rotateAnchorPosition) !== null && _objectTransformerCon10 !== void 0 ? _objectTransformerCon10 : rotateAnchorPosition;
25768
+ rotateLineEnabled = (_objectTransformerCon11 = objectTransformerConfig.rotateLineEnabled) !== null && _objectTransformerCon11 !== void 0 ? _objectTransformerCon11 : rotateLineEnabled;
25769
+ rotateSize = (_objectTransformerCon12 = objectTransformerConfig.rotateSize) !== null && _objectTransformerCon12 !== void 0 ? _objectTransformerCon12 : rotateSize;
25770
+ rotateCornerRadius = (_objectTransformerCon13 = objectTransformerConfig.rotateCornerRadius) !== null && _objectTransformerCon13 !== void 0 ? _objectTransformerCon13 : rotateCornerRadius;
25771
+ rotateFill = (_objectTransformerCon14 = objectTransformerConfig.rotateFill) !== null && _objectTransformerCon14 !== void 0 ? _objectTransformerCon14 : rotateFill;
25772
+ rotateStroke = (_objectTransformerCon15 = objectTransformerConfig.rotateStroke) !== null && _objectTransformerCon15 !== void 0 ? _objectTransformerCon15 : rotateStroke;
25773
+ rotateStrokeWidth = (_objectTransformerCon16 = objectTransformerConfig.rotateStrokeWidth) !== null && _objectTransformerCon16 !== void 0 ? _objectTransformerCon16 : rotateStrokeWidth;
25774
+ rotateIconEnabled = (_objectTransformerCon17 = objectTransformerConfig.rotateIconEnabled) !== null && _objectTransformerCon17 !== void 0 ? _objectTransformerCon17 : rotateIconEnabled;
25775
+ rotateIconStroke = (_objectTransformerCon18 = objectTransformerConfig.rotateIconStroke) !== null && _objectTransformerCon18 !== void 0 ? _objectTransformerCon18 : rotateIconStroke;
25776
+ rotateIconStrokeWidth = (_objectTransformerCon19 = objectTransformerConfig.rotateIconStrokeWidth) !== null && _objectTransformerCon19 !== void 0 ? _objectTransformerCon19 : rotateIconStrokeWidth;
25777
+ borderEnabled = (_objectTransformerCon20 = objectTransformerConfig.borderEnabled) !== null && _objectTransformerCon20 !== void 0 ? _objectTransformerCon20 : borderEnabled;
25778
+ borderStroke = (_objectTransformerCon21 = objectTransformerConfig.borderStroke) !== null && _objectTransformerCon21 !== void 0 ? _objectTransformerCon21 : borderStroke;
25779
+ borderStrokeWidth = (_objectTransformerCon22 = objectTransformerConfig.borderStrokeWidth) !== null && _objectTransformerCon22 !== void 0 ? _objectTransformerCon22 : borderStrokeWidth;
25780
+ borderDash = (_objectTransformerCon23 = objectTransformerConfig.borderDash) !== null && _objectTransformerCon23 !== void 0 ? _objectTransformerCon23 : borderDash;
25781
+ borderSpacing = (_objectTransformerCon24 = objectTransformerConfig.borderSpacing) !== null && _objectTransformerCon24 !== void 0 ? _objectTransformerCon24 : borderSpacing;
25782
+ anchorFill = (_objectTransformerCon25 = objectTransformerConfig.anchorFill) !== null && _objectTransformerCon25 !== void 0 ? _objectTransformerCon25 : anchorFill;
25783
+ anchorStroke = (_objectTransformerCon26 = objectTransformerConfig.anchorStroke) !== null && _objectTransformerCon26 !== void 0 ? _objectTransformerCon26 : anchorStroke;
25784
+ anchorStrokeWidth = (_objectTransformerCon27 = objectTransformerConfig.anchorStrokeWidth) !== null && _objectTransformerCon27 !== void 0 ? _objectTransformerCon27 : anchorStrokeWidth;
25785
+ anchorSize = (_objectTransformerCon28 = objectTransformerConfig.anchorSize) !== null && _objectTransformerCon28 !== void 0 ? _objectTransformerCon28 : anchorSize;
25786
+ anchorCornerRadius = (_objectTransformerCon29 = objectTransformerConfig.anchorCornerRadius) !== null && _objectTransformerCon29 !== void 0 ? _objectTransformerCon29 : anchorCornerRadius;
25787
+ anchorStyle = (_objectTransformerCon30 = objectTransformerConfig.anchorStyle) !== null && _objectTransformerCon30 !== void 0 ? _objectTransformerCon30 : anchorStyle;
25788
+ anchorSideLongSize = (_objectTransformerCon31 = objectTransformerConfig.anchorSideLongSize) !== null && _objectTransformerCon31 !== void 0 ? _objectTransformerCon31 : anchorSideLongSize;
25789
+ anchorSideShortSize = (_objectTransformerCon32 = objectTransformerConfig.anchorSideShortSize) !== null && _objectTransformerCon32 !== void 0 ? _objectTransformerCon32 : anchorSideShortSize;
25790
+ anchorSideCornerRadius = (_objectTransformerCon33 = objectTransformerConfig.anchorSideCornerRadius) !== null && _objectTransformerCon33 !== void 0 ? _objectTransformerCon33 : anchorSideCornerRadius;
25791
+ anchorShadowColor = (_objectTransformerCon34 = objectTransformerConfig.anchorShadowColor) !== null && _objectTransformerCon34 !== void 0 ? _objectTransformerCon34 : anchorShadowColor;
25792
+ anchorShadowBlur = (_objectTransformerCon35 = objectTransformerConfig.anchorShadowBlur) !== null && _objectTransformerCon35 !== void 0 ? _objectTransformerCon35 : anchorShadowBlur;
25793
+ anchorShadowOffsetX = (_objectTransformerCon36 = objectTransformerConfig.anchorShadowOffsetX) !== null && _objectTransformerCon36 !== void 0 ? _objectTransformerCon36 : anchorShadowOffsetX;
25794
+ anchorShadowOffsetY = (_objectTransformerCon37 = objectTransformerConfig.anchorShadowOffsetY) !== null && _objectTransformerCon37 !== void 0 ? _objectTransformerCon37 : anchorShadowOffsetY;
25795
+ keepRatio = (_objectTransformerCon38 = objectTransformerConfig.keepRatio) !== null && _objectTransformerCon38 !== void 0 ? _objectTransformerCon38 : keepRatio;
25796
+ centeredScaling = (_objectTransformerCon39 = objectTransformerConfig.centeredScaling) !== null && _objectTransformerCon39 !== void 0 ? _objectTransformerCon39 : centeredScaling;
25797
+ enabledAnchors = (_objectTransformerCon40 = objectTransformerConfig.enabledAnchors) !== null && _objectTransformerCon40 !== void 0 ? _objectTransformerCon40 : enabledAnchors;
25798
+ flipEnabled = (_objectTransformerCon41 = objectTransformerConfig.flipEnabled) !== null && _objectTransformerCon41 !== void 0 ? _objectTransformerCon41 : flipEnabled;
25799
+ ignoreStroke = (_objectTransformerCon42 = objectTransformerConfig.ignoreStroke) !== null && _objectTransformerCon42 !== void 0 ? _objectTransformerCon42 : ignoreStroke;
25800
+ boundBoxFunc = (_objectTransformerCon43 = objectTransformerConfig.boundBoxFunc) !== null && _objectTransformerCon43 !== void 0 ? _objectTransformerCon43 : boundBoxFunc;
25801
+ useSingleNodeRotation = (_objectTransformerCon44 = objectTransformerConfig.useSingleNodeRotation) !== null && _objectTransformerCon44 !== void 0 ? _objectTransformerCon44 : useSingleNodeRotation;
25802
+ shouldOverdrawWholeArea = (_objectTransformerCon45 = objectTransformerConfig.shouldOverdrawWholeArea) !== null && _objectTransformerCon45 !== void 0 ? _objectTransformerCon45 : shouldOverdrawWholeArea;
25803
+ moveBoundaryEnabled = (_objectTransformerCon46 = objectTransformerConfig.moveBoundaryEnabled) !== null && _objectTransformerCon46 !== void 0 ? _objectTransformerCon46 : moveBoundaryEnabled;
25150
25804
  }
25151
25805
  return {
25152
25806
  isCropper,
@@ -25158,8 +25812,16 @@ var Transformer = class extends _univerjs_core.Disposable {
25158
25812
  rotationSnaps,
25159
25813
  rotationSnapTolerance,
25160
25814
  rotateAnchorOffset,
25815
+ rotateAnchorPosition,
25816
+ rotateLineEnabled,
25161
25817
  rotateSize,
25162
25818
  rotateCornerRadius,
25819
+ rotateFill,
25820
+ rotateStroke,
25821
+ rotateStrokeWidth,
25822
+ rotateIconEnabled,
25823
+ rotateIconStroke,
25824
+ rotateIconStrokeWidth,
25163
25825
  borderEnabled,
25164
25826
  borderStroke,
25165
25827
  borderStrokeWidth,
@@ -25170,6 +25832,14 @@ var Transformer = class extends _univerjs_core.Disposable {
25170
25832
  anchorStrokeWidth,
25171
25833
  anchorSize,
25172
25834
  anchorCornerRadius,
25835
+ anchorStyle,
25836
+ anchorSideLongSize,
25837
+ anchorSideShortSize,
25838
+ anchorSideCornerRadius,
25839
+ anchorShadowColor,
25840
+ anchorShadowBlur,
25841
+ anchorShadowOffsetX,
25842
+ anchorShadowOffsetY,
25173
25843
  keepRatio,
25174
25844
  centeredScaling,
25175
25845
  enabledAnchors,
@@ -25177,7 +25847,8 @@ var Transformer = class extends _univerjs_core.Disposable {
25177
25847
  ignoreStroke,
25178
25848
  boundBoxFunc,
25179
25849
  useSingleNodeRotation,
25180
- shouldOverdrawWholeArea
25850
+ shouldOverdrawWholeArea,
25851
+ moveBoundaryEnabled
25181
25852
  };
25182
25853
  }
25183
25854
  attachTo(applyObject) {
@@ -25286,6 +25957,10 @@ var Transformer = class extends _univerjs_core.Disposable {
25286
25957
  });
25287
25958
  }
25288
25959
  _checkMoveBoundary(moveObject, moveLeft, moveTop, ancestorLeft, ancestorTop, topSceneWidth, topSceneHeight) {
25960
+ if (this._getConfig(moveObject).moveBoundaryEnabled === false) return {
25961
+ moveLeft,
25962
+ moveTop
25963
+ };
25289
25964
  const { left, top, width, height } = moveObject;
25290
25965
  let resultMoveLeft = moveLeft;
25291
25966
  let resultMoveTop = moveTop;
@@ -25733,7 +26408,11 @@ var Transformer = class extends _univerjs_core.Disposable {
25733
26408
  _rotateMoving(moveOffsetX, moveOffsetY, centerX, centerY, agentOrigin) {
25734
26409
  const { ancestorScaleX, ancestorScaleY } = this._scene;
25735
26410
  if (this._moveBufferBlocker(moveOffsetX, moveOffsetY)) return;
25736
- let angle = agentOrigin + radToDeg(Math.atan2((moveOffsetY - centerY) / ancestorScaleY + this._viewportScrollY, (moveOffsetX - centerX) / ancestorScaleX + this._viewportScrollX) - Math.atan2((this._startOffsetY - centerY) / ancestorScaleY + this._viewportScrollY, (this._startOffsetX - centerX) / ancestorScaleX + this._viewportScrollX));
26411
+ const moveSceneX = moveOffsetX / ancestorScaleX + this._viewportScrollX;
26412
+ const moveSceneY = moveOffsetY / ancestorScaleY + this._viewportScrollY;
26413
+ const startSceneX = this._startOffsetX / ancestorScaleX + this._viewportScrollX;
26414
+ const startSceneY = this._startOffsetY / ancestorScaleY + this._viewportScrollY;
26415
+ let angle = agentOrigin + radToDeg(Math.atan2(moveSceneY - centerY, moveSceneX - centerX) - Math.atan2(startSceneY - centerY, startSceneX - centerX));
25737
26416
  if (angle < 0) angle = 360 + angle;
25738
26417
  angle %= 360;
25739
26418
  angle = this._smoothAccuracy(angle);
@@ -25790,6 +26469,23 @@ var Transformer = class extends _univerjs_core.Disposable {
25790
26469
  }
25791
26470
  return cursor;
25792
26471
  }
26472
+ _createRotateIcon(applyObject, zIndex, left, top) {
26473
+ const { rotateSize, rotateIconStroke, rotateIconStrokeWidth, borderStroke } = this._getConfig(applyObject);
26474
+ const iconOffset = (rotateSize - ROTATE_ICON_SIZE) / 2;
26475
+ return new TransformerRotateIcon(`__SpreadsheetTransformerRotate___ICON_${zIndex}`, {
26476
+ zIndex,
26477
+ evented: false,
26478
+ left: left + iconOffset,
26479
+ top: top + iconOffset,
26480
+ width: ROTATE_ICON_SIZE,
26481
+ height: ROTATE_ICON_SIZE,
26482
+ fill: null,
26483
+ stroke: rotateIconStroke !== null && rotateIconStroke !== void 0 ? rotateIconStroke : borderStroke,
26484
+ strokeWidth: rotateIconStrokeWidth,
26485
+ strokeLineCap: "round",
26486
+ strokeLineJoin: "round"
26487
+ });
26488
+ }
25793
26489
  _getCopperAnchorPosition(type, height, width, applyObject) {
25794
26490
  const { borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
25795
26491
  let left = 0;
@@ -25836,17 +26532,18 @@ var Transformer = class extends _univerjs_core.Disposable {
25836
26532
  };
25837
26533
  }
25838
26534
  _getRotateAnchorPosition(type, height, width, applyObject) {
25839
- const { rotateAnchorOffset, rotateSize, borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
26535
+ const { rotateAnchorOffset, rotateAnchorPosition, rotateSize, borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
26536
+ const isBottomRotateAnchor = rotateAnchorPosition === "bottom";
25840
26537
  let left = -anchorSize / 2;
25841
26538
  let top = -anchorSize / 2;
25842
26539
  switch (type) {
25843
26540
  case "__SpreadsheetTransformerRotate__":
25844
26541
  left = width / 2 - rotateSize / 2;
25845
- top = -rotateAnchorOffset - borderSpacing - borderStrokeWidth * 2 - rotateSize;
26542
+ top = isBottomRotateAnchor ? height + rotateAnchorOffset + borderSpacing + borderStrokeWidth * 2 : -rotateAnchorOffset - borderSpacing - borderStrokeWidth * 2 - rotateSize;
25846
26543
  break;
25847
26544
  case "__SpreadsheetTransformerRotateLine__":
25848
26545
  left = width / 2;
25849
- top = -rotateAnchorOffset - borderSpacing - borderStrokeWidth;
26546
+ top = isBottomRotateAnchor ? height + borderSpacing + borderStrokeWidth : -rotateAnchorOffset - borderSpacing - borderStrokeWidth;
25850
26547
  break;
25851
26548
  case "__SpreadsheetTransformerResizeLT__":
25852
26549
  left += -borderSpacing - borderStrokeWidth;
@@ -25886,21 +26583,43 @@ var Transformer = class extends _univerjs_core.Disposable {
25886
26583
  top
25887
26584
  };
25888
26585
  }
26586
+ _isMiddleAnchor(type) {
26587
+ return type === "__SpreadsheetTransformerResizeCT__" || type === "__SpreadsheetTransformerResizeLM__" || type === "__SpreadsheetTransformerResizeRM__" || type === "__SpreadsheetTransformerResizeCB__";
26588
+ }
26589
+ _getResizeAnchorProps(type, applyObject) {
26590
+ const { anchorSize, anchorCornerRadius, anchorStyle, anchorSideLongSize, anchorSideShortSize, anchorSideCornerRadius } = this._getConfig(applyObject);
26591
+ if (anchorStyle !== "canva" || !this._isMiddleAnchor(type)) return {
26592
+ width: anchorSize,
26593
+ height: anchorSize,
26594
+ radius: anchorStyle === "canva" ? anchorSize / 2 : anchorCornerRadius
26595
+ };
26596
+ const isHorizontal = type === "__SpreadsheetTransformerResizeCT__" || type === "__SpreadsheetTransformerResizeCB__";
26597
+ return {
26598
+ width: isHorizontal ? anchorSideLongSize : anchorSideShortSize,
26599
+ height: isHorizontal ? anchorSideShortSize : anchorSideLongSize,
26600
+ radius: anchorSideCornerRadius
26601
+ };
26602
+ }
25889
26603
  _createResizeAnchor(type, applyObject, zIndex) {
25890
26604
  const { height = 0, width = 0, scaleX = 1, scaleY = 1 } = applyObject.getState();
25891
- const { anchorFill, anchorStroke, anchorStrokeWidth, anchorCornerRadius, anchorSize } = this._getConfig(applyObject);
26605
+ const { anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY } = this._getConfig(applyObject);
25892
26606
  const { left, top } = this._getRotateAnchorPosition(type, height, width, applyObject);
26607
+ const anchorProps = this._getResizeAnchorProps(type, applyObject);
25893
26608
  const cursor = this._getRotateAnchorCursor(type);
25894
- const anchor = new Rect(`${type}_${zIndex}`, {
26609
+ const anchor = new TransformerAnchor(`${type}_${zIndex}`, {
25895
26610
  zIndex: zIndex - 1,
25896
26611
  fill: anchorFill,
25897
26612
  stroke: anchorStroke,
25898
26613
  strokeWidth: anchorStrokeWidth,
25899
- width: anchorSize,
25900
- height: anchorSize,
25901
- radius: anchorCornerRadius,
25902
- left,
25903
- top
26614
+ width: anchorProps.width,
26615
+ height: anchorProps.height,
26616
+ radius: anchorProps.radius,
26617
+ left: left + (anchorSize - anchorProps.width) / 2,
26618
+ top: top + (anchorSize - anchorProps.height) / 2,
26619
+ shadowColor: anchorShadowColor,
26620
+ shadowBlur: anchorShadowBlur,
26621
+ shadowOffsetX: anchorShadowOffsetX,
26622
+ shadowOffsetY: anchorShadowOffsetY
25904
26623
  });
25905
26624
  this._attachHover(anchor, cursor, "default");
25906
26625
  return anchor;
@@ -26148,7 +26867,7 @@ var Transformer = class extends _univerjs_core.Disposable {
26148
26867
  _createControl(applyObject, isSkipOnCropper = true) {
26149
26868
  const { left = 0, top = 0, height = 0, width = 0 } = applyObject.getState();
26150
26869
  const angle = applyObject.angle;
26151
- const { isCropper, resizeEnabled, rotateEnabled, rotateAnchorOffset, rotateSize, rotateCornerRadius, borderEnabled, borderStroke, borderStrokeWidth, borderSpacing, enabledAnchors } = this._getConfig(applyObject);
26870
+ const { isCropper, resizeEnabled, rotateEnabled, rotateAnchorOffset, rotateLineEnabled, rotateSize, rotateCornerRadius, rotateFill, rotateStroke, rotateStrokeWidth, rotateIconEnabled, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY, borderEnabled, borderStroke, borderStrokeWidth, borderSpacing, enabledAnchors } = this._getConfig(applyObject);
26152
26871
  if (isSkipOnCropper && isCropper) return;
26153
26872
  const oKey = applyObject.oKey;
26154
26873
  const zIndex = this._selectedObjectMap.size + applyObject.maxZIndex + DEFAULT_CONTROL_PLUS_INDEX;
@@ -26179,19 +26898,26 @@ var Transformer = class extends _univerjs_core.Disposable {
26179
26898
  });
26180
26899
  const { left: rotateLeft, top: rotateTop } = this._getRotateAnchorPosition("__SpreadsheetTransformerRotate__", height, width, applyObject);
26181
26900
  const cursor = this._getRotateAnchorCursor("__SpreadsheetTransformerRotate__");
26182
- const rotate = new Rect(`__SpreadsheetTransformerRotate___${zIndex}`, {
26901
+ const rotate = new TransformerAnchor(`__SpreadsheetTransformerRotate___${zIndex}`, {
26183
26902
  zIndex: zIndex - 1,
26184
26903
  left: rotateLeft,
26185
26904
  top: rotateTop,
26186
26905
  height: rotateSize,
26187
26906
  width: rotateSize,
26188
26907
  radius: rotateCornerRadius,
26189
- strokeWidth: borderStrokeWidth * 2,
26190
- stroke: borderStroke
26908
+ fill: rotateFill,
26909
+ strokeWidth: rotateStrokeWidth !== null && rotateStrokeWidth !== void 0 ? rotateStrokeWidth : borderStrokeWidth * 2,
26910
+ stroke: rotateStroke !== null && rotateStroke !== void 0 ? rotateStroke : borderStroke,
26911
+ shadowColor: anchorShadowColor,
26912
+ shadowBlur: anchorShadowBlur,
26913
+ shadowOffsetX: anchorShadowOffsetX,
26914
+ shadowOffsetY: anchorShadowOffsetY
26191
26915
  });
26192
26916
  this._attachEventToRotate(rotate, applyObject);
26193
26917
  this._attachHover(rotate, cursor, "default");
26194
- groupElements.push(rotateLine, rotate);
26918
+ if (rotateLineEnabled) groupElements.push(rotateLine);
26919
+ groupElements.push(rotate);
26920
+ if (rotateIconEnabled) groupElements.push(this._createRotateIcon(applyObject, zIndex, rotateLeft, rotateTop));
26195
26921
  }
26196
26922
  }
26197
26923
  if (resizeEnabled) for (let i = 0, len = enabledAnchors.length; i < len; i++) {
@@ -27234,6 +27960,9 @@ let RenderUnit = class RenderUnit extends _univerjs_core.Disposable {
27234
27960
  this._renderContext.unit = null;
27235
27961
  this._renderContext.components.clear();
27236
27962
  }
27963
+ isDisposed() {
27964
+ return this._disposed;
27965
+ }
27237
27966
  /**
27238
27967
  * Get a dependency from the RenderUnit's injector.
27239
27968
  */
@@ -27579,6 +28308,7 @@ function subtractViewportRange(range1, range2) {
27579
28308
  //#endregion
27580
28309
  //#region src/viewport.ts
27581
28310
  const MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR = 3;
28311
+ const WHEEL_CROSS_AXIS_LOCK_RATIO = 2;
27582
28312
  var Viewport = class {
27583
28313
  constructor(viewportKey, scene, props) {
27584
28314
  var _this$scene$getEngine;
@@ -28222,11 +28952,22 @@ var Viewport = class {
28222
28952
  let offsetX = 0;
28223
28953
  let offsetY = 0;
28224
28954
  const allWidth = this._scene.width;
28225
- offsetX = (this.width || 1) / allWidth * evt.deltaX;
28955
+ const viewWidth = this.width || 1;
28956
+ const scaleX = Math.abs(this._scene.scaleX) || 1;
28957
+ const scaleY = Math.abs(this._scene.scaleY) || 1;
28958
+ const rawOffsetX = evt.deltaX / scaleX;
28959
+ const rawOffsetY = evt.deltaY / scaleY;
28960
+ offsetX = viewWidth / allWidth * rawOffsetX;
28226
28961
  const allHeight = this._scene.height;
28227
28962
  const viewHeight = this.height || 1;
28228
- if (evt.shiftKey) offsetX = viewHeight / allHeight * evt.deltaY * MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR;
28229
- else offsetY = viewHeight / allHeight * evt.deltaY;
28963
+ if (evt.shiftKey) offsetX = viewHeight / allHeight * evt.deltaY * MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR / scaleX;
28964
+ else {
28965
+ offsetY = viewHeight / allHeight * rawOffsetY;
28966
+ const absOffsetX = Math.abs(rawOffsetX);
28967
+ const absOffsetY = Math.abs(rawOffsetY);
28968
+ if (absOffsetY >= absOffsetX * WHEEL_CROSS_AXIS_LOCK_RATIO) offsetX = 0;
28969
+ else if (absOffsetX >= absOffsetY * WHEEL_CROSS_AXIS_LOCK_RATIO) offsetY = 0;
28970
+ }
28230
28971
  const isLimitedStore = this.scrollByBarDeltaValue({
28231
28972
  x: offsetX,
28232
28973
  y: offsetY
@@ -28553,6 +29294,7 @@ var Viewport = class {
28553
29294
  }
28554
29295
  _calcDiffCacheBound(prevBound, currBound) {
28555
29296
  if (!prevBound) return [currBound];
29297
+ if (prevBound.right <= currBound.left || currBound.right <= prevBound.left || prevBound.bottom <= currBound.top || currBound.bottom <= prevBound.top) return [currBound];
28556
29298
  const additionalAreas = [];
28557
29299
  if (currBound.left < prevBound.left) additionalAreas.push({
28558
29300
  top: currBound.top,
@@ -28809,6 +29551,7 @@ exports.getCurrentTypeOfRenderer = getCurrentTypeOfRenderer;
28809
29551
  exports.getDPI = getDPI;
28810
29552
  exports.getDevicePixelRatio = getDevicePixelRatio;
28811
29553
  exports.getDocsSkeletonPageSize = getDocsSkeletonPageSize;
29554
+ exports.getDocsTableRenderViewport = getDocsTableRenderViewport;
28812
29555
  exports.getDrawingGroupState = getDrawingGroupState;
28813
29556
  exports.getFirstGrapheme = getFirstGrapheme;
28814
29557
  exports.getFontStyleString = getFontStyleString;
@@ -28818,6 +29561,7 @@ exports.getLastLine = getLastLine;
28818
29561
  exports.getLineOffset = getLineOffset;
28819
29562
  exports.getLineWidth = getLineWidth;
28820
29563
  exports.getLineWith = getLineWith;
29564
+ exports.getNextWheelZoomRatio = getNextWheelZoomRatio;
28821
29565
  exports.getNumberUnitValue = getNumberUnitValue;
28822
29566
  exports.getOffsetRectForDom = getOffsetRectForDom;
28823
29567
  exports.getPageFromPath = getPageFromPath;
@@ -28845,6 +29589,7 @@ exports.hasLatinExtendedB = hasLatinExtendedB;
28845
29589
  exports.hasLatinOneSupplement = hasLatinOneSupplement;
28846
29590
  exports.hasListGlyph = hasListGlyph;
28847
29591
  exports.hasSpace = hasSpace;
29592
+ exports.hasThai = hasThai;
28848
29593
  exports.hasTibetan = hasTibetan;
28849
29594
  exports.hasUnMergedCellInRow = hasUnMergedCellInRow;
28850
29595
  exports.inViewRanges = inViewRanges;
@@ -28883,6 +29628,7 @@ exports.renderTextWatermark = renderTextWatermark;
28883
29628
  exports.renderUserInfoWatermark = renderUserInfoWatermark;
28884
29629
  exports.renderWatermark = renderWatermark;
28885
29630
  exports.requestNewFrame = requestNewFrame;
29631
+ exports.setDocsTableRenderViewportProvider = setDocsTableRenderViewportProvider;
28886
29632
  exports.setLineType = setLineType;
28887
29633
  exports.sheetContentViewportKeys = sheetContentViewportKeys;
28888
29634
  exports.sheetHeaderViewportKeys = sheetHeaderViewportKeys;