liyu-pc-base 1.0.506 → 1.0.508

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.
@@ -97245,7 +97245,7 @@ var iQ = function(e, t, n, r) {
97245
97245
  }), t;
97246
97246
  }, a = { ...r.config.query_params || {} };
97247
97247
  if (e === "list") {
97248
- let e = i(Xe.value || []);
97248
+ let e = i(Ze.value || []);
97249
97249
  r.config.base_column_fields && e.push(...r.config.base_column_fields), a.current = 1, a.pageSize = n, a.column_fields = e;
97250
97250
  }
97251
97251
  if (he.value === "advanced") if (E.value) {
@@ -97269,16 +97269,19 @@ var iQ = function(e, t, n, r) {
97269
97269
  });
97270
97270
  t && Object.assign(a, t);
97271
97271
  }
97272
- let o = ut();
97272
+ let o = dt();
97273
97273
  return o && (a.required_condition = o), r.config.get_db_alias && (a.db_alias = r.config.get_db_alias()), a;
97274
- }, [xe, Se, { setFull: Ce, exitFull: we }] = de(), Te = async () => {
97274
+ }, [xe, Se, { setFull: Ce, exitFull: we }] = de(), Te = {}, Ee = async () => {
97275
97275
  if (!r.config.list_url || O) return;
97276
97276
  O = !0;
97277
97277
  let e = Symbol();
97278
97278
  D = e;
97279
97279
  try {
97280
- x.value = !0, v.value = [], S.value = 0;
97281
- let t = be({ type: "list" }), n;
97280
+ x.value = !0, S.value = 0;
97281
+ let t = be({ type: "list" });
97282
+ if ((0, Cn.isEqual)(t, Te)) return;
97283
+ Te = t, v.value = [];
97284
+ let n;
97282
97285
  if (n = r.config.query_data_func ? await r.config.query_data_func(t) : await g(t, r.config.list_url.replace("__tree", ""), r.config.list_url.includes("__tree"), { api_log: `pivotTable ${r.config.key} ${r.config.title}` }), D !== e) return;
97283
97286
  let a = n.total || 0, o = me.pageSize, s = [...n.data || []], c = s.length;
97284
97287
  if (a > o) {
@@ -97305,46 +97308,46 @@ var iQ = function(e, t, n, r) {
97305
97308
  if (O = !1, D !== e) return;
97306
97309
  x.value = !1, S.value = 0;
97307
97310
  }
97308
- }, Ee = (0, Cn.debounce)(Te, 500), De = ve(() => se.value.rows.length > 0 || se.value.columns.length > 0 || se.value.values.length > 0), Oe = [{
97311
+ }, De = (0, Cn.debounce)(Ee, 500), Oe = ve(() => se.value.rows.length > 0 || se.value.columns.length > 0 || se.value.values.length > 0), ke = [{
97309
97312
  text: "复制",
97310
97313
  menuKey: "copy"
97311
- }], ke = (e) => e.map((e) => Number(e)).filter((e) => !isNaN(e)), Ae = (e) => e.length === 0 ? 0 : e.reduce((e, t) => e + t, 0) / e.length, je = (e, t) => {
97314
+ }], Ae = (e) => e.map((e) => Number(e)).filter((e) => !isNaN(e)), je = (e) => e.length === 0 ? 0 : e.reduce((e, t) => e + t, 0) / e.length, Ne = (e, t) => {
97312
97315
  if (e.length === 0 || e.length === 1) return 0;
97313
- let n = Ae(e);
97316
+ let n = je(e);
97314
97317
  return e.map((e) => (e - n) ** 2).reduce((e, t) => e + t, 0) / (t ? e.length : e.length - 1);
97315
- }, Ne = (e, t) => Math.sqrt(je(e, t)), Pe = (e) => {
97318
+ }, Pe = (e, t) => Math.sqrt(Ne(e, t)), Fe = (e) => {
97316
97319
  switch (e) {
97317
97320
  case "PRODUCT": return {
97318
97321
  aggregationType: "CUSTOM",
97319
- aggregationFun: (e) => ke(e).reduce((e, t) => e * t, 1)
97322
+ aggregationFun: (e) => Ae(e).reduce((e, t) => e * t, 1)
97320
97323
  };
97321
97324
  case "COUNTNUM": return {
97322
97325
  aggregationType: "CUSTOM",
97323
- aggregationFun: (e) => ke(e).length
97326
+ aggregationFun: (e) => Ae(e).length
97324
97327
  };
97325
97328
  case "VAR": return {
97326
97329
  aggregationType: "CUSTOM",
97327
- aggregationFun: (e) => je(ke(e), !1)
97330
+ aggregationFun: (e) => Ne(Ae(e), !1)
97328
97331
  };
97329
97332
  case "VARP": return {
97330
97333
  aggregationType: "CUSTOM",
97331
- aggregationFun: (e) => je(ke(e), !0)
97334
+ aggregationFun: (e) => Ne(Ae(e), !0)
97332
97335
  };
97333
97336
  case "STD": return {
97334
97337
  aggregationType: "CUSTOM",
97335
- aggregationFun: (e) => Ne(ke(e), !1)
97338
+ aggregationFun: (e) => Pe(Ae(e), !1)
97336
97339
  };
97337
97340
  case "STDP": return {
97338
97341
  aggregationType: "CUSTOM",
97339
- aggregationFun: (e) => Ne(ke(e), !0)
97342
+ aggregationFun: (e) => Pe(Ae(e), !0)
97340
97343
  };
97341
97344
  default: return { aggregationType: e };
97342
97345
  }
97343
- }, Fe = ve(() => {
97346
+ }, Ie = ve(() => {
97344
97347
  let e = se.value.values.map((e) => ({
97345
97348
  indicatorKey: e.id,
97346
97349
  field: e.field,
97347
- ...Pe(e.aggregationType)
97350
+ ...Fe(e.aggregationType)
97348
97351
  }));
97349
97352
  return {
97350
97353
  rowHierarchyType: se.value.rowHierarchyType || "grid",
@@ -97421,7 +97424,7 @@ var iQ = function(e, t, n, r) {
97421
97424
  plugins: [ue],
97422
97425
  emptyTip: { text: "暂无数据" }
97423
97426
  };
97424
- }), Ie = (e, t) => e == null ? "" : t.formatFun ? Ve(e, t.formatFun) : String(e), Ve = (e, t) => {
97427
+ }), Ve = (e, t) => e == null ? "" : t.formatFun ? Ge(e, t.formatFun) : String(e), Ge = (e, t) => {
97425
97428
  if (typeof e != "number") return String(e);
97426
97429
  switch (t) {
97427
97430
  case "0.00": return e.toFixed(2);
@@ -97433,17 +97436,17 @@ var iQ = function(e, t, n, r) {
97433
97436
  });
97434
97437
  default: return String(e);
97435
97438
  }
97436
- }, Ge = (e) => {
97439
+ }, qe = (e) => {
97437
97440
  if (e.menuKey === "copy") {
97438
97441
  let e = P.value?.vTableInstance;
97439
97442
  if (e) {
97440
97443
  let t = e.getCopyValue();
97441
97444
  t && (navigator.clipboard && navigator.clipboard.writeText ? navigator.clipboard.writeText(t).catch(() => {
97442
- qe(t);
97443
- }) : qe(t));
97445
+ Ye(t);
97446
+ }) : Ye(t));
97444
97447
  }
97445
97448
  }
97446
- }, qe = (e) => {
97449
+ }, Ye = (e) => {
97447
97450
  let t = document.createElement("textarea");
97448
97451
  t.value = e, t.style.position = "fixed", t.style.opacity = "0", document.body.appendChild(t), t.select();
97449
97452
  try {
@@ -97452,11 +97455,11 @@ var iQ = function(e, t, n, r) {
97452
97455
  console.error("[pivotTable] copy failed:", e);
97453
97456
  }
97454
97457
  document.body.removeChild(t);
97455
- }, Ye = ve(() => {
97458
+ }, Xe = ve(() => {
97456
97459
  if (!A.value) return 400;
97457
97460
  let e = A.value - M.value - N.value - 4;
97458
97461
  return e < 200 && (e = 200), e;
97459
- }), Xe = ve(() => {
97462
+ }), Ze = ve(() => {
97460
97463
  let e = [...r.config.columns || []];
97461
97464
  return !e.some((e) => e.dataIndex === "index") && !r.config.hide_index_column && e.unshift({
97462
97465
  title: "#",
@@ -97467,19 +97470,19 @@ var iQ = function(e, t, n, r) {
97467
97470
  checked: !0,
97468
97471
  autoHeight: !0
97469
97472
  }), e;
97470
- }), Ze = G({}), $e = G([]), et = G(null), tt = G(!1), nt = (e) => {
97471
- se.value = e, tt.value = !0;
97472
- }, rt = (e) => {
97473
- ne.value = e, tt.value = !0;
97474
- }, it = () => {
97475
- tt.value = !0;
97473
+ }), $e = G({}), et = G([]), tt = G(null), nt = G(!1), rt = (e) => {
97474
+ se.value = e, nt.value = !0;
97475
+ }, it = (e) => {
97476
+ ne.value = e, nt.value = !0;
97476
97477
  }, ot = () => {
97477
- tt.value = !0;
97478
- }, st = (e) => {
97479
- _e.value = e, tt.value = !0;
97480
- }, ct = async () => {
97481
- await Te();
97482
- }, lt = async () => {}, ut = () => {
97478
+ nt.value = !0;
97479
+ }, st = () => {
97480
+ nt.value = !0;
97481
+ }, ct = (e) => {
97482
+ _e.value = e, nt.value = !0;
97483
+ }, lt = async () => {
97484
+ await Ee();
97485
+ }, ut = async () => {}, dt = () => {
97483
97486
  let e = r.config.required_condition;
97484
97487
  if (e) {
97485
97488
  let t = {};
@@ -97488,7 +97491,7 @@ var iQ = function(e, t, n, r) {
97488
97491
  n != null && (t[e.field_name] = n);
97489
97492
  }), t;
97490
97493
  } else return null;
97491
- }, dt = async () => {
97494
+ }, ft = async () => {
97492
97495
  let e = [];
97493
97496
  if (r.config?.search_config && r.config.search_config.forEach((t) => {
97494
97497
  if (t.default_value) {
@@ -97505,38 +97508,38 @@ var iQ = function(e, t, n, r) {
97505
97508
  id: b(),
97506
97509
  conditions: [...e],
97507
97510
  viewSearchConfig: {}
97508
- }], w.value = []), ge.value && et.value?.id !== "no-view") {
97509
- if (et.value = null, await gt(), r.config?.view_uid) {
97510
- let e = $e.value.find((e) => e.uid == r.config?.view_uid);
97511
- if (e) ht(e.data), et.value = e;
97511
+ }], w.value = []), ge.value && tt.value?.id !== "no-view") {
97512
+ if (tt.value = null, await _t(), r.config?.view_uid) {
97513
+ let e = et.value.find((e) => e.uid == r.config?.view_uid);
97514
+ if (e) gt(e.data), tt.value = e;
97512
97515
  else {
97513
97516
  let e = await ae({
97514
97517
  org_id: m.id,
97515
97518
  is_active: !0,
97516
97519
  uid: r.config?.view_uid
97517
97520
  });
97518
- e?.length && (et.value = {
97521
+ e?.length && (tt.value = {
97519
97522
  ...e[0],
97520
97523
  is_other_user_view: !0
97521
97524
  });
97522
97525
  }
97523
97526
  }
97524
- if (!et.value && $e.value?.length) {
97525
- let e = [...$e.value], t = (e) => {
97527
+ if (!tt.value && et.value?.length) {
97528
+ let e = [...et.value], t = (e) => {
97526
97529
  let t = e.sort || 0;
97527
- return e.id !== et.value?.id && (t *= 1e6), e.is_default || (t *= 1e4), e.user_id || (t *= 1e3), t;
97530
+ return e.id !== tt.value?.id && (t *= 1e6), e.is_default || (t *= 1e4), e.user_id || (t *= 1e3), t;
97528
97531
  };
97529
- e.sort((e, n) => t(e) - t(n)), ht(e[0].data), et.value = e[0];
97532
+ e.sort((e, n) => t(e) - t(n)), gt(e[0].data), tt.value = e[0];
97530
97533
  }
97531
97534
  }
97532
- await Te();
97533
- }, ft = async () => {
97534
- tt.value = !1, await dt();
97535
+ await Ee();
97535
97536
  }, pt = async () => {
97536
- await Te();
97537
- }, mt = () => {
97537
+ nt.value = !1, await ft();
97538
+ }, mt = async () => {
97539
+ await Ee();
97540
+ }, ht = () => {
97538
97541
  let e = {
97539
- columns: Ze.value,
97542
+ columns: $e.value,
97540
97543
  searchConditions: w.value,
97541
97544
  tableSize: me.tableSize,
97542
97545
  refreshType: ne.value,
@@ -97548,12 +97551,12 @@ var iQ = function(e, t, n, r) {
97548
97551
  t && Object.assign(e, t);
97549
97552
  }
97550
97553
  return e;
97551
- }, ht = async (e) => {
97554
+ }, gt = async (e) => {
97552
97555
  if (e === null) {
97553
- await dt(), tt.value = !1;
97556
+ await ft(), nt.value = !1;
97554
97557
  return;
97555
97558
  }
97556
- e.columns && (Ze.value = e.columns), E.value ? (e.searchGroups && e.searchGroups.length > 0 ? T.value = e.searchGroups : e.searchConditions && (T.value = [{
97559
+ e.columns && ($e.value = e.columns), E.value ? (e.searchGroups && e.searchGroups.length > 0 ? T.value = e.searchGroups : e.searchConditions && (T.value = [{
97557
97560
  id: b(),
97558
97561
  conditions: e.searchConditions,
97559
97562
  viewSearchConfig: e.searchConfig || {}
@@ -97561,53 +97564,53 @@ var iQ = function(e, t, n, r) {
97561
97564
  id: b(),
97562
97565
  conditions: [],
97563
97566
  viewSearchConfig: {}
97564
- }]), w.value = []) : (e.searchConfig && (_e.value = e.searchConfig), e.searchConditions && (w.value = e.searchConditions)), e.tableSize && (me.tableSize = e.tableSize), e.refreshType && (ne.value = e.refreshType), e.pivotConfig && (se.value = e.pivotConfig), r.config.set_view_callback && r.config.set_view_callback({ viewData: e }), await ct(), tt.value = !1;
97565
- }, gt = async () => {
97566
- $e.value = await le(pe.value, be, r.config.count_url, r.config);
97567
- }, { saveView: _t, addView: vt } = re({
97568
- currentView: et,
97569
- getViewData: mt,
97570
- isViewChange: tt,
97567
+ }]), w.value = []) : (e.searchConfig && (_e.value = e.searchConfig), e.searchConditions && (w.value = e.searchConditions)), e.tableSize && (me.tableSize = e.tableSize), e.refreshType && (ne.value = e.refreshType), e.pivotConfig && (se.value = e.pivotConfig), r.config.set_view_callback && r.config.set_view_callback({ viewData: e }), await lt(), nt.value = !1;
97568
+ }, _t = async () => {
97569
+ et.value = await le(pe.value, be, r.config.count_url, r.config);
97570
+ }, { saveView: vt, addView: Ct } = re({
97571
+ currentView: tt,
97572
+ getViewData: ht,
97573
+ isViewChange: nt,
97571
97574
  userid: p,
97572
97575
  view_project__flag: u.VITE_APP_VIEW_PROJECT_FLAG,
97573
97576
  view_menu__flag: pe.value,
97574
97577
  view_menu__name: r.config.title,
97575
- fetchViews: gt,
97578
+ fetchViews: _t,
97576
97579
  is_auth: h,
97577
97580
  t: s
97578
97581
  });
97579
97582
  ze(ie, {
97580
- setViewData: ht,
97581
- getViewData: mt,
97582
- fetchViews: gt,
97583
- viewDataList: $e,
97584
- currentView: et,
97585
- isViewChange: tt,
97583
+ setViewData: gt,
97584
+ getViewData: ht,
97585
+ fetchViews: _t,
97586
+ viewDataList: et,
97587
+ currentView: tt,
97588
+ isViewChange: nt,
97586
97589
  config: r.config
97587
97590
  }), Le(async () => {
97588
- r.config.key || console.error("pivotTable config 未配置 key"), r.config.title || console.error("pivotTable config 未配置 title"), c().on("change", Ct), C.on("refresh", ct), C.on("local_refresh", lt), C.on("reinit", ft), C.on("saveView", _t), C.on("saveNewView", vt), r.eventBus && (r.eventBus.on("reinit", ft), r.eventBus.on("refresh", ct), r.eventBus.on("local_refresh", lt), r.eventBus.on("reload_table", pt)), r.config.tableSize && (me.tableSize = r.config.tableSize), await dt();
97591
+ r.config.key || console.error("pivotTable config 未配置 key"), r.config.title || console.error("pivotTable config 未配置 title"), c().on("change", wt), C.on("refresh", lt), C.on("local_refresh", ut), C.on("reinit", pt), C.on("saveView", vt), C.on("saveNewView", Ct), r.eventBus && (r.eventBus.on("reinit", pt), r.eventBus.on("refresh", lt), r.eventBus.on("local_refresh", ut), r.eventBus.on("reload_table", mt)), r.config.tableSize && (me.tableSize = r.config.tableSize), await ft();
97589
97592
  });
97590
- let Ct = (e) => {
97591
- r.config.required_condition && r.config.required_condition.find((t) => t.key === e) && Te();
97593
+ let wt = (e) => {
97594
+ r.config.required_condition && r.config.required_condition.find((t) => t.key === e) && Ee();
97592
97595
  };
97593
97596
  return Re(() => {
97594
- C.off("refresh", ct), C.off("local_refresh", lt), C.off("reinit", ft), C.off("saveView", _t), C.off("saveNewView", vt), r.eventBus && (r.eventBus.off("reinit", ft), r.eventBus.off("refresh", ct), r.eventBus.off("local_refresh", lt), r.eventBus.off("reload_table", pt));
97597
+ C.off("refresh", lt), C.off("local_refresh", ut), C.off("reinit", pt), C.off("saveView", vt), C.off("saveNewView", Ct), r.eventBus && (r.eventBus.off("reinit", pt), r.eventBus.off("refresh", lt), r.eventBus.off("local_refresh", ut), r.eventBus.off("reload_table", mt));
97595
97598
  }), Qe(() => r.config.query_params, () => {
97596
- Ee();
97599
+ De();
97597
97600
  }, { deep: !0 }), Qe(() => r.config.base_conditions, () => {
97598
- Ee();
97601
+ De();
97599
97602
  }, { deep: !0 }), t({
97600
- getViewData: mt,
97601
- setViewData: ht,
97603
+ getViewData: ht,
97604
+ setViewData: gt,
97602
97605
  config: r.config,
97603
- columns: Xe,
97604
- fetchViews: gt,
97605
- viewDataList: $e,
97606
- currentView: et,
97607
- isViewChange: tt,
97606
+ columns: Ze,
97607
+ fetchViews: _t,
97608
+ viewDataList: et,
97609
+ currentView: tt,
97610
+ isViewChange: nt,
97608
97611
  pivotConfig: se,
97609
- refresh: ct,
97610
- init: dt,
97612
+ refresh: lt,
97613
+ init: ft,
97611
97614
  dataSource: v,
97612
97615
  get vTableInstance() {
97613
97616
  return P.value?.vTableInstance || null;
@@ -97633,8 +97636,8 @@ var iQ = function(e, t, n, r) {
97633
97636
  searchColumnCount: e.config?.search_column_count,
97634
97637
  viewSearchConfig: _e.value,
97635
97638
  disabledShowSearchGroupName: e.config?.disabledShowSearchGroupName,
97636
- onViewSearchConfigChange: st,
97637
- onChange: ot
97639
+ onViewSearchConfigChange: ct,
97640
+ onChange: st
97638
97641
  }, null, 8, [
97639
97642
  "searchConfig",
97640
97643
  "autoRefreshOnSearchChange",
@@ -97656,7 +97659,7 @@ var iQ = function(e, t, n, r) {
97656
97659
  searchDisplayType: e.config?.search_display_type,
97657
97660
  searchColumnCount: e.config?.search_column_count,
97658
97661
  disabledShowSearchGroupName: e.config?.disabledShowSearchGroupName,
97659
- onChange: ot
97662
+ onChange: st
97660
97663
  }, null, 8, [
97661
97664
  "searchConfig",
97662
97665
  "autoRefreshOnSearchChange",
@@ -97683,21 +97686,21 @@ var iQ = function(e, t, n, r) {
97683
97686
  screenState: Je(Se),
97684
97687
  tableSize: me.tableSize,
97685
97688
  "onUpdate:tableSize": n[2] ||= (e) => me.tableSize = e,
97686
- columns: Xe.value,
97689
+ columns: Ze.value,
97687
97690
  view_key: pe.value,
97688
97691
  view_flag_name: e.config.title,
97689
97692
  is_view: ge.value,
97690
97693
  refreshType: ne.value,
97691
97694
  pivotConfig: se.value,
97692
97695
  component_type: "pivot_table",
97693
- onRefresh: ct,
97696
+ onRefresh: lt,
97694
97697
  onExport: fe,
97695
97698
  onSetFull: Je(Ce),
97696
97699
  onExitFull: Je(we),
97697
- onPivotConfigChange: nt,
97700
+ onPivotConfigChange: rt,
97698
97701
  onHeightChange: n[3] ||= (e) => N.value = e,
97699
- onRefreshTypeChange: rt,
97700
- onTableSizeChange: it
97702
+ onRefreshTypeChange: it,
97703
+ onTableSizeChange: ot
97701
97704
  }, {
97702
97705
  header_bar_before_title: K(() => [Ue(t.$slots, "header_bar_before_title", {}, void 0, !0)]),
97703
97706
  header_bar_after_title: K(() => [Ue(t.$slots, "header_bar_after_title", {}, void 0, !0)]),
@@ -97727,18 +97730,18 @@ var iQ = function(e, t, n, r) {
97727
97730
  class: "pivot-vtable-container",
97728
97731
  ref_key: "vtableContainerRef",
97729
97732
  ref: ee,
97730
- style: Me({ height: Ye.value + "px" })
97733
+ style: Me({ height: Xe.value + "px" })
97731
97734
  }, [x.value && !e.config?.disabled_table_loading ? (W(), ye("div", oQ, [U(r), S.value > 0 ? (W(), ye("div", sQ, [U(i, {
97732
97735
  percent: S.value,
97733
97736
  size: [80, 14],
97734
97737
  "stroke-color": "#1677ff"
97735
- }, null, 8, ["percent"])])) : V("", !0)])) : V("", !0), De.value ? (W(), ye(z, { key: 1 }, [v.value?.length > 0 || !x.value ? (W(), B(Je(hZ), {
97738
+ }, null, 8, ["percent"])])) : V("", !0)])) : V("", !0), Oe.value ? (W(), ye(z, { key: 1 }, [v.value?.length > 0 || !x.value ? (W(), B(Je(hZ), {
97736
97739
  key: 0,
97737
97740
  ref_key: "pivotTableRef",
97738
97741
  ref: P,
97739
- options: Fe.value,
97742
+ options: Ie.value,
97740
97743
  records: v.value,
97741
- onOnDropdownMenuClick: Ge
97744
+ onOnDropdownMenuClick: qe
97742
97745
  }, {
97743
97746
  default: K(() => [
97744
97747
  (W(!0), ye(z, null, He(se.value.columns, (e, t) => (W(), B(Je(gZ), {
@@ -97757,7 +97760,7 @@ var iQ = function(e, t, n, r) {
97757
97760
  title: e.title || e.label,
97758
97761
  width: 120,
97759
97762
  minWidth: 100,
97760
- format: (t) => Ie(t, e)
97763
+ format: (t) => Ve(t, e)
97761
97764
  }, null, 8, [
97762
97765
  "indicatorKey",
97763
97766
  "title",
@@ -97765,7 +97768,7 @@ var iQ = function(e, t, n, r) {
97765
97768
  ]))), 128)),
97766
97769
  U(Je(yZ), { titleOnDimension: "row" }),
97767
97770
  U(Je(bZ), {
97768
- contextMenuItems: Oe,
97771
+ contextMenuItems: ke,
97769
97772
  renderMode: "html"
97770
97773
  })
97771
97774
  ]),
@@ -97775,7 +97778,7 @@ var iQ = function(e, t, n, r) {
97775
97778
  }, 512)], 512);
97776
97779
  };
97777
97780
  }
97778
- }), [["__scopeId", "data-v-4ed03901"]]), dQ = {
97781
+ }), [["__scopeId", "data-v-d3f14b28"]]), dQ = {
97779
97782
  key: 0,
97780
97783
  class: "pivot-echarts-loading"
97781
97784
  }, fQ = {