dspx 1.1.4 → 1.1.5

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.
@@ -1038,46 +1038,53 @@ declare class DspProcessor {
1038
1038
  * Transforms time-domain signal to frequency domain or vice versa.
1039
1039
  * Supports both fast (radix-2) and direct (any size) transforms.
1040
1040
  *
1041
+ * **Two Processing Modes:**
1042
+ * 1. **Batch mode** (default): Stateless FFT over entire input buffer
1043
+ * 2. **Moving mode**: Stateful sliding-window FFT (STFT) with overlap
1044
+ *
1041
1045
  * **Transform Types:**
1042
- * - `fft`: Complex FFT (O(N log N), requires power-of-2 size)
1046
+ * - `rfft`: Real FFT (O(N log N), requires power-of-2 size) [MOST COMMON]
1047
+ * - `fft`: Complex FFT (O(N log N), requires power-of-2)
1048
+ * - `rdft`: Real DFT (O(N²), works with any size)
1043
1049
  * - `dft`: Complex DFT (O(N²), works with any size)
1044
- * - `rfft`: Real FFT for real signals (O(N log N), outputs N/2+1 bins)
1045
- * - `rdft`: Real DFT for real signals (O(N²), outputs N/2+1 bins)
1046
1050
  *
1047
1051
  * **Output Formats:**
1048
- * - `complex`: Returns interleaved [real0, imag0, real1, imag1, ...]
1049
- * - `magnitude`: Returns |X[k]| = sqrt(real² + imag²)
1050
- * - `power`: Returns |X[k] = real² + imag²
1051
- * - `phase`: Returns ∠X[k] = atan2(imag, real)
1052
+ * - `magnitude`: |X[k]| = sqrt(real² + imag²) [DEFAULT]
1053
+ * - `power`: |X[k] = real² + imag²
1054
+ * - `phase`: X[k] = atan2(imag, real)
1055
+ * - `complex`: Interleaved [real0, imag0, real1, imag1, ...]
1056
+ *
1057
+ * **Moving Mode Details:**
1058
+ * - Internally delegates to `stft()` with Hann windowing
1059
+ * - Uses CircularBufferArray for efficient buffering
1060
+ * - Default hopSize = size/2 (50% overlap)
1061
+ * - Better for time-varying signals (audio, EEG)
1052
1062
  *
1053
1063
  * @param params - FFT configuration
1064
+ * @param params.mode - 'batch' (stateless) or 'moving' (sliding window) [default: 'batch']
1054
1065
  * @param params.size - FFT size (power of 2 for FFT/RFFT, any size for DFT/RDFT)
1055
- * @param params.type - Transform type (default: 'rfft' for real signals)
1056
- * @param params.forward - Forward (time→freq) or inverse (freq→time) (default: true)
1057
- * @param params.output - Output format (default: 'magnitude')
1066
+ * @param params.hopSize - Window stride for 'moving' mode [default: size/2]
1067
+ * @param params.type - Transform type [default: 'rfft']
1068
+ * @param params.forward - Forward (time→freq) or inverse (freq→time) [default: true]
1069
+ * @param params.output - Output format [default: 'magnitude']
1058
1070
  * @returns this instance for method chaining
1059
1071
  *
1060
1072
  * @example
1061
- * // Spectral analysis with magnitude output
1073
+ * // Batch mode: Single FFT of entire buffer
1062
1074
  * pipeline.fft({
1075
+ * mode: 'batch',
1063
1076
  * size: 1024,
1064
1077
  * type: 'rfft',
1065
1078
  * output: 'magnitude'
1066
1079
  * });
1067
1080
  *
1068
1081
  * @example
1069
- * // Power spectrum for energy analysis
1070
- * pipeline.fft({
1071
- * size: 2048,
1072
- * output: 'power'
1073
- * });
1074
- *
1075
- * @example
1076
- * // Complex FFT for phase information
1082
+ * // Moving mode: STFT with 50% overlap
1077
1083
  * pipeline.fft({
1084
+ * mode: 'moving',
1078
1085
  * size: 512,
1079
- * type: 'fft',
1080
- * output: 'complex'
1086
+ * hopSize: 256, // 50% overlap
1087
+ * output: 'power'
1081
1088
  * });
1082
1089
  *
1083
1090
  * @example
@@ -1087,6 +1094,14 @@ declare class DspProcessor {
1087
1094
  * type: 'rdft',
1088
1095
  * output: 'magnitude'
1089
1096
  * });
1097
+ *
1098
+ * @example
1099
+ * // Complex FFT for phase analysis
1100
+ * pipeline.fft({
1101
+ * size: 512,
1102
+ * type: 'fft',
1103
+ * output: 'complex'
1104
+ * });
1090
1105
  */
1091
1106
  fft(params: fftParams): this;
1092
1107
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/ts/bindings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/ts/bindings.ts"],"names":[],"mappings":"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"}
package/dist/bindings.js CHANGED
@@ -1643,46 +1643,53 @@ class DspProcessor {
1643
1643
  * Transforms time-domain signal to frequency domain or vice versa.
1644
1644
  * Supports both fast (radix-2) and direct (any size) transforms.
1645
1645
  *
1646
+ * **Two Processing Modes:**
1647
+ * 1. **Batch mode** (default): Stateless FFT over entire input buffer
1648
+ * 2. **Moving mode**: Stateful sliding-window FFT (STFT) with overlap
1649
+ *
1646
1650
  * **Transform Types:**
1647
- * - `fft`: Complex FFT (O(N log N), requires power-of-2 size)
1651
+ * - `rfft`: Real FFT (O(N log N), requires power-of-2 size) [MOST COMMON]
1652
+ * - `fft`: Complex FFT (O(N log N), requires power-of-2)
1653
+ * - `rdft`: Real DFT (O(N²), works with any size)
1648
1654
  * - `dft`: Complex DFT (O(N²), works with any size)
1649
- * - `rfft`: Real FFT for real signals (O(N log N), outputs N/2+1 bins)
1650
- * - `rdft`: Real DFT for real signals (O(N²), outputs N/2+1 bins)
1651
1655
  *
1652
1656
  * **Output Formats:**
1653
- * - `complex`: Returns interleaved [real0, imag0, real1, imag1, ...]
1654
- * - `magnitude`: Returns |X[k]| = sqrt(real² + imag²)
1655
- * - `power`: Returns |X[k] = real² + imag²
1656
- * - `phase`: Returns ∠X[k] = atan2(imag, real)
1657
+ * - `magnitude`: |X[k]| = sqrt(real² + imag²) [DEFAULT]
1658
+ * - `power`: |X[k] = real² + imag²
1659
+ * - `phase`: X[k] = atan2(imag, real)
1660
+ * - `complex`: Interleaved [real0, imag0, real1, imag1, ...]
1661
+ *
1662
+ * **Moving Mode Details:**
1663
+ * - Internally delegates to `stft()` with Hann windowing
1664
+ * - Uses CircularBufferArray for efficient buffering
1665
+ * - Default hopSize = size/2 (50% overlap)
1666
+ * - Better for time-varying signals (audio, EEG)
1657
1667
  *
1658
1668
  * @param params - FFT configuration
1669
+ * @param params.mode - 'batch' (stateless) or 'moving' (sliding window) [default: 'batch']
1659
1670
  * @param params.size - FFT size (power of 2 for FFT/RFFT, any size for DFT/RDFT)
1660
- * @param params.type - Transform type (default: 'rfft' for real signals)
1661
- * @param params.forward - Forward (time→freq) or inverse (freq→time) (default: true)
1662
- * @param params.output - Output format (default: 'magnitude')
1671
+ * @param params.hopSize - Window stride for 'moving' mode [default: size/2]
1672
+ * @param params.type - Transform type [default: 'rfft']
1673
+ * @param params.forward - Forward (time→freq) or inverse (freq→time) [default: true]
1674
+ * @param params.output - Output format [default: 'magnitude']
1663
1675
  * @returns this instance for method chaining
1664
1676
  *
1665
1677
  * @example
1666
- * // Spectral analysis with magnitude output
1678
+ * // Batch mode: Single FFT of entire buffer
1667
1679
  * pipeline.fft({
1680
+ * mode: 'batch',
1668
1681
  * size: 1024,
1669
1682
  * type: 'rfft',
1670
1683
  * output: 'magnitude'
1671
1684
  * });
1672
1685
  *
1673
1686
  * @example
1674
- * // Power spectrum for energy analysis
1675
- * pipeline.fft({
1676
- * size: 2048,
1677
- * output: 'power'
1678
- * });
1679
- *
1680
- * @example
1681
- * // Complex FFT for phase information
1687
+ * // Moving mode: STFT with 50% overlap
1682
1688
  * pipeline.fft({
1689
+ * mode: 'moving',
1683
1690
  * size: 512,
1684
- * type: 'fft',
1685
- * output: 'complex'
1691
+ * hopSize: 256, // 50% overlap
1692
+ * output: 'power'
1686
1693
  * });
1687
1694
  *
1688
1695
  * @example
@@ -1692,14 +1699,37 @@ class DspProcessor {
1692
1699
  * type: 'rdft',
1693
1700
  * output: 'magnitude'
1694
1701
  * });
1702
+ *
1703
+ * @example
1704
+ * // Complex FFT for phase analysis
1705
+ * pipeline.fft({
1706
+ * size: 512,
1707
+ * type: 'fft',
1708
+ * output: 'complex'
1709
+ * });
1695
1710
  */
1696
1711
  fft(params) {
1697
1712
  if (!params.size || params.size <= 0 || !Number.isInteger(params.size)) {
1698
1713
  throw new TypeError(`Fft: size must be a positive integer, got ${params.size}`);
1699
1714
  }
1715
+ const mode = params.mode || "batch";
1700
1716
  const type = params.type || "rfft";
1701
1717
  const forward = params.forward ?? true;
1702
1718
  const output = params.output || "magnitude";
1719
+ const hopSize = params.hopSize ?? Math.floor(params.size / 2);
1720
+ // Validate mode
1721
+ if (mode !== "batch" && mode !== "moving") {
1722
+ throw new TypeError(`Fft: mode must be 'batch' or 'moving', got '${mode}'`);
1723
+ }
1724
+ // Validate hopSize for moving mode
1725
+ if (mode === "moving") {
1726
+ if (hopSize <= 0 || !Number.isInteger(hopSize)) {
1727
+ throw new TypeError(`Fft: hopSize must be a positive integer, got ${hopSize}`);
1728
+ }
1729
+ if (hopSize > params.size) {
1730
+ throw new TypeError(`Fft: hopSize (${hopSize}) cannot exceed size (${params.size})`);
1731
+ }
1732
+ }
1703
1733
  // Validate type
1704
1734
  const validTypes = ["fft", "dft", "rfft", "rdft"];
1705
1735
  if (!validTypes.includes(type)) {
@@ -1715,14 +1745,32 @@ class DspProcessor {
1715
1745
  !this.isPowerOfTwo(params.size)) {
1716
1746
  throw new TypeError(`Fft: ${type} requires power-of-2 size. Got ${params.size}. Use 'dft' or 'rdft' for arbitrary sizes.`);
1717
1747
  }
1748
+ // MOVING MODE: Delegate to STFT (which uses MovingFftFilter internally)
1749
+ if (mode === "moving") {
1750
+ // Map FFT parameters to STFT parameters
1751
+ const stftMethod = type === "fft" || type === "rfft" ? "fft" : "dft";
1752
+ const stftType = type.includes("r") ? "real" : "complex";
1753
+ return this.stft({
1754
+ windowSize: params.size,
1755
+ hopSize: hopSize,
1756
+ method: stftMethod,
1757
+ type: stftType,
1758
+ forward: forward,
1759
+ output: output,
1760
+ window: "hann", // Default window for moving mode (better spectral leakage control)
1761
+ });
1762
+ }
1763
+ // BATCH MODE: Use stateless FftStage
1718
1764
  this.nativeInstance.addStage("fft", {
1765
+ mode,
1719
1766
  size: params.size,
1767
+ hopSize,
1720
1768
  type,
1721
1769
  forward,
1722
1770
  output,
1723
1771
  });
1724
1772
  const direction = forward ? "forward" : "inverse";
1725
- this.stages.push(`fft:${type}:${params.size}:${direction}:${output}`);
1773
+ this.stages.push(`fft:${type}:${params.size}:batch:${direction}:${output}`);
1726
1774
  return this;
1727
1775
  }
1728
1776
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../src/ts/bindings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../src/ts/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA0C1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,SAAS,EACT,SAAS,GAIV,MAAM,cAAc,CAAC;AAEtB,wCAAwC;AACxC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,IAAI,QAAa,CAAC,CAAC,cAAc;AACjC,sCAAsC;AACtC,IAAI,CAAC;IACH,gDAAgD;IAChD,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,IAAI,CAAC;QACH,oEAAoE;QACpE,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,+CAA+C;QAC/C,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CACX,uCAAuC,EACtC,CAAW,CAAC,OAAO,CACrB,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,4EAA4E,IAAI,CAC9E,SAAS,EACT,IAAI,CACL,QAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CACvC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,YAAY;IAQhB,YAAoB,cAAmB;QAAnB,mBAAc,GAAd,cAAc,CAAK;QAP/B,WAAM,GAAa,EAAE,CAAC;QAGtB,iBAAY,GAClB,EAAE,CAAC;QACG,kBAAa,GAAyB,IAAI,CAAC;QAGjD,kEAAkE;QAClE,wDAAwD;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,KAA0C,EAC1C,OAAa;QAEb,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAE5C,IAAI,KAAK,EAAE,CAAC;YACV,8DAA8D;YAC9D,OAAO,kBAAkB,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,OAAO,YAAY,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,KAAa;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,CAAC,wBAAwB;QACvC,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAE1D,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,oCAAoC;YACpC,+CAA+C;YAC/C,+CAA+C;YAC/C,MAAM,YAAY,GAAG,OAAO;iBACzB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;iBACrB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;YAE9C,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH;;;OAGG;IACK,kBAAkB,CACxB,KAA0C;QAE1C,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,OAAO,CAAC,CAAC;YACX,KAAK,MAAM;gBACT,OAAO,CAAC,CAAC;YACX,KAAK,MAAM;gBACT,OAAO,CAAC,CAAC;YACX,KAAK,OAAO;gBACV,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACK,OAAO,CACb,KAA0C,EAC1C,OAAe,EACf,OAAa;QAEb,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEpD,sFAAsF;QACtF,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAClB,KAAK;gBACL,KAAK;gBACL,OAAO;gBACP,OAAO;gBACP,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;gBAC5B,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;QAED,gGAAgG;QAChG,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CAAC,MAA2B;QACvC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,MAAM,CAAC,cAAc,KAAK,SAAS,EACnC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,wFAAwF,CACzF,CAAC;YACJ,CAAC;YACD,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAChE,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,+EAA+E,MAAM,CAAC,UAAU,EAAE,CACnG,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,SAAS,CACjB,uDAAuD,MAAM,CAAC,cAAc,EAAE,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,GAAG,CAAC,MAAiB;QACnB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,MAAM,CAAC,cAAc,KAAK,SAAS,EACnC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,8EAA8E,CAC/E,CAAC;YACJ,CAAC;YACD,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAChE,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,qEAAqE,MAAM,CAAC,UAAU,EAAE,CACzF,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,SAAS,CACjB,6CAA6C,MAAM,CAAC,cAAc,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAsB;QAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,MAAsB;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,MAAM,CAAC,cAAc,KAAK,SAAS,EACnC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,mFAAmF,CACpF,CAAC;YACJ,CAAC;YACD,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAChE,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,0EAA0E,MAAM,CAAC,UAAU,EAAE,CAC9F,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,SAAS,CACjB,kDAAkD,MAAM,CAAC,cAAc,EAAE,CAC1E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,eAAe,CAAC,MAA6B;QAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,MAAM,CAAC,cAAc,KAAK,SAAS,EACnC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,4FAA4F,CAC7F,CAAC;YACJ,CAAC;YACD,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAChE,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,mFAAmF,MAAM,CAAC,UAAU,EAAE,CACvG,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,SAAS,CACjB,2DAA2D,MAAM,CAAC,cAAc,EAAE,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,MAA+B;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,MAAM,CAAC,cAAc,KAAK,SAAS,EACnC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,8FAA8F,CAC/F,CAAC;YACJ,CAAC;YACD,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAChE,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,qFAAqF,MAAM,CAAC,UAAU,EAAE,CACzG,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,SAAS,CACjB,6DAA6D,MAAM,CAAC,cAAc,EAAE,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,MAA4B;QACzC,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CACjB,8DAA8D,MAAM,CAAC,UAAU,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,eAAe,CAAC,MAA6B;QAC3C,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CACjB,+DAA+D,MAAM,CAAC,UAAU,EAAE,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,SAAS,CACjB,wDAAwD,MAAM,CAAC,SAAS,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,iBAAiB,CAAC,MAA+B;QAC/C,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CACjB,iEAAiE,MAAM,CAAC,UAAU,EAAE,CACrF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,SAAS,CACjB,0DAA0D,MAAM,CAAC,SAAS,EAAE,CAC7E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,MAAyB;QACnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,SAAS,CACjB,oDAAoD,MAAM,CAAC,MAAM,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CACjB,iDAAiD,MAAM,CAAC,UAAU,EAAE,CACrE,CAAC;QACJ,CAAC;QACD,IACE,MAAM,CAAC,KAAK,KAAK,SAAS;YAC1B,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAC5C,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,gDAAgD,MAAM,CAAC,KAAK,EAAE,CAC/D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,MAAsB;QAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,SAAS,CACjB,iDAAiD,MAAM,CAAC,MAAM,EAAE,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CACjB,8CAA8C,MAAM,CAAC,UAAU,EAAE,CAClE,CAAC;QACJ,CAAC;QACD,IACE,MAAM,CAAC,KAAK,KAAK,SAAS;YAC1B,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAC5C,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,6CAA6C,MAAM,CAAC,KAAK,EAAE,CAC5D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,MAAsB;QAC7B,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,SAAS,CACjB,sDAAsD,MAAM,CAAC,QAAQ,EAAE,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,SAAS,CACjB,wDAAwD,MAAM,CAAC,UAAU,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CACjB,8CAA8C,MAAM,CAAC,UAAU,EAAE,CAClE,CAAC;QACJ,CAAC;QACD,IACE,MAAM,CAAC,KAAK,KAAK,SAAS;YAC1B,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAC5C,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,6CAA6C,MAAM,CAAC,KAAK,EAAE,CAC5D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,WAAW,CAAC,MAAyB;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,SAAS,CACjB,qDAAqD,CACtD,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,MAAM,GACV,MAAM,CAAC,MAAM,YAAY,YAAY;YACnC,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;QAEvC,0EAA0E;QAC1E,IACE,IAAI,KAAK,QAAQ;YACjB,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EACpD,CAAC;YACD,oCAAoC;YACpC,IAAI,CAAE,UAAkB,CAAC,6BAA6B,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CACV,4EAA4E;oBAC1E,uFAAuF;oBACvF,iEAAiE,CACpE,CAAC;gBACD,UAAkB,CAAC,6BAA6B,GAAG,IAAI,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,SAAS,CACjB,uDAAuD,IAAI,GAAG,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACjE,MAAM,IAAI,SAAS,CACjB,gEAAgE,MAAM,GAAG,CAC1E,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAA4B;YAC3C,MAAM;YACN,IAAI;YACJ,MAAM;SACP,CAAC;QAEF,+CAA+C;QAC/C,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACvC,WAAW,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QACnD,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,gBAAgB,CAAC,MAA8B;QAC7C,uBAAuB;QACvB,IACE,MAAM,CAAC,UAAU,KAAK,SAAS;YAC/B,MAAM,CAAC,UAAU,IAAI,CAAC;YACtB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EACpC,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,gEAAgE,MAAM,CAAC,UAAU,EAAE,CACpF,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,MAAM,YAAY,GAA4C;YAC5D,OAAO;YACP,WAAW;YACX,WAAW;YACX,aAAa;SACd,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,SAAS,CACjB,2CAA2C,YAAY,CAAC,IAAI,CAC1D,IAAI,CACL,UAAU,MAAM,CAAC,MAAM,GAAG,CAC5B,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,YAAY,GAAG;YACnB,KAAK,EAAE,uBAAuB;YAC9B,SAAS,EAAE,2BAA2B;YACtC,SAAS,EAAE,2BAA2B;YACtC,WAAW,EAAE,6BAA6B;SAC3C,CAAC;QAEF,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+EG;IACH,SAAS,CAAC,MAAuB;QAC/B,mBAAmB;QACnB,IACE,MAAM,CAAC,OAAO,KAAK,SAAS;YAC5B,MAAM,CAAC,OAAO,IAAI,CAAC;YACnB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EACjC,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,sDAAsD,MAAM,CAAC,OAAO,EAAE,CACvE,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC;QAC9D,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;YAC5C,MAAM,IAAI,UAAU,CAClB,uDAAuD,YAAY,EAAE,CACtE,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC;QAEpC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAChC,MAAM,IAAI,UAAU,CAClB,4CAA4C,MAAM,EAAE,CACrD,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE;YACxC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,SAAS,CAAC,MAAuB;QAC/B,mBAAmB;QACnB,IACE,MAAM,CAAC,OAAO,KAAK,SAAS;YAC5B,MAAM,CAAC,OAAO,IAAI,CAAC;YACnB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EACjC,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,sDAAsD,MAAM,CAAC,OAAO,EAAE,CACvE,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC9C,MAAM,IAAI,UAAU,CAClB,4CAA4C,MAAM,CAAC,MAAM,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QACnC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE;YACxC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACH,YAAY,CAAC,MAA0B;QACrC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CACjB,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,IAAI,UAAU,CAClB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,gBAAgB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,aAAa,EAAE,CAC7D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,YAAY,CAAC,MAA0B;QACrC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CACjB,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,kBAAkB,CAAC,MAAgC;QACjD,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,YAAY,YAAY,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,SAAS,CACjB,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CACjB,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,SAAS,CACjB,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8DG;IACH,eAAe,CAAC,MAA6B;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,YAAY,YAAY,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,SAAS,CACjB,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,YAAY,YAAY,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,4CAA4C,MAAM,CAAC,eAAe,CAAC,MAAM,IAAI;gBAC3E,2BAA2B,MAAM,CAAC,WAAW,GAAG,CACnD,CAAC;QACJ,CAAC;QACD,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,2CAA2C,MAAM,CAAC,cAAc,CAAC,MAAM,IAAI;gBACzE,6CAA6C,oBAAoB,GAAG,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,WAAW,QAAQ,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CAAC,MAA6B;QAC3C,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC1C,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAC5B,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QACD,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC3C,MAAM,CAAC,iBAAiB,IAAI,CAAC;YAC7B,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,EAClD,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,2DAA2D,MAAM,CAAC,gBAAgB,UAAU,MAAM,CAAC,iBAAiB,EAAE,CACvH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,mBAAmB,MAAM,CAAC,gBAAgB,MAAM,MAAM,CAAC,iBAAiB,IAAI,CAC7E,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,aAAa,CAAC,MAA2B;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC1C,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAC5B,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9B,IACE,OAAO,EAAE,KAAK,QAAQ;gBACtB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrB,EAAE,GAAG,CAAC;gBACN,EAAE,IAAI,MAAM,CAAC,gBAAgB,EAC7B,CAAC;gBACD,MAAM,IAAI,UAAU,CAClB,gCAAgC,EAAE,qBAChC,MAAM,CAAC,gBAAgB,GAAG,CAC5B,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,YAAY,CAAC,MAA0B;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC1C,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAC5B,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,IACE,OAAO,EAAE,KAAK,QAAQ;gBACtB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrB,EAAE,GAAG,CAAC;gBACN,EAAE,IAAI,MAAM,CAAC,gBAAgB,EAC7B,CAAC;gBACD,MAAM,IAAI,UAAU,CAClB,+BAA+B,EAAE,qBAC/B,MAAM,CAAC,gBAAgB,GAAG,CAC5B,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,gBAAgB,MAAM,CAAC,gBAAgB,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CACvE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,CAAC,MAA2B;QACvC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,aAAa,CAAC,MAA2B;QACvC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,cAAc;QACZ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,UAAU,CAAC,SAA6B,EAAE;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC;QAEnC,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CACjB,kDAAkD,KAAK,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,GAAG,CAAC,MAA8B;QAChC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,SAAS,CACjB,+CAA+C,MAAM,CAAC,UAAU,EAAE,CACnE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6EG;IACH,YAAY,CAAC,MAA0B;QACrC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,YAAY,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,YAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CACjB,sDAAsD,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CACjB,qDAAqD,CACtD,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,IAAI,UAAU,CAClB,oDAAoD,CACrD,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,CAAC,IAAI,CAAC,MAAM,6BAA6B,MAAM,CAAC,WAAW,GAAG,CACnG,CAAC;QACJ,CAAC;QACD,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAClE,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,mCAAmC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI;gBAC5D,wCAAwC,kBAAkB,GAAG,CAChE,CAAC;QACJ,CAAC;QAED,2DAA2D;QAC3D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,EAAE;YAC3C,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,kCAAkC;YAC/D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,MAAM,CAAC,UAAU;SACjC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,gBAAgB,CAAC,MAA8B;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,aAAa,GAAG;YACpB,MAAM;YACN,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,MAAM;SACP,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,SAAS,CACjB,2CACE,MAAM,CAAC,OACT,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,MAA6B;QAC3C,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAClE,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CACjB,2EAA2E,MAAM,CAAC,UAAU,EAAE,CAC/F,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,IACE,MAAM,CAAC,OAAO,GAAG,CAAC;gBAClB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU;gBAClC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EACjC,CAAC;gBACD,MAAM,IAAI,SAAS,CACjB,gEAAgE,MAAM,CAAC,UAAU,UAAU,MAAM,CAAC,OAAO,EAAE,CAC5G,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,UAAU,OAAO,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsEG;IACH,GAAG,CAAC,MAAiB;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,SAAS,CACjB,6CAA6C,MAAM,CAAC,IAAI,EAAE,CAC3D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAE9D,gBAAgB;QAChB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,SAAS,CACjB,+CAA+C,IAAI,GAAG,CACvD,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,SAAS,CACjB,gDAAgD,OAAO,EAAE,CAC1D,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CACjB,iBAAiB,OAAO,yBAAyB,MAAM,CAAC,IAAI,GAAG,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,4BAA4B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CACnE,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CACjB,8BAA8B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,GAAG,CACzE,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,IACE,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC;YACnC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAC/B,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,QAAQ,IAAI,kCAAkC,MAAM,CAAC,IAAI,4CAA4C,CACtG,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,wCAAwC;YACxC,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzD,OAAO,IAAI,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,UAAU;gBAClB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM,EAAE,mEAAmE;aACpF,CAAC,CAAC;QACL,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE;YAClC,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO;YACP,IAAI;YACJ,OAAO;YACP,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,MAAM,CAAC,IAAI,UAAU,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,CAAS;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuEG;IACH,IAAI,CAAC,MAAkB;QACrB,sBAAsB;QACtB,IACE,CAAC,MAAM,CAAC,UAAU;YAClB,MAAM,CAAC,UAAU,IAAI,CAAC;YACtB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EACpC,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,oDAAoD,MAAM,CAAC,UAAU,EAAE,CACxE,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACpE,IACE,OAAO,IAAI,CAAC;YACZ,OAAO,GAAG,MAAM,CAAC,UAAU;YAC3B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAC1B,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,2DAA2D,MAAM,CAAC,UAAU,UAAU,OAAO,EAAE,CAChG,CAAC;QACJ,CAAC;QAED,0DAA0D;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;QAE3C,kBAAkB;QAClB,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CACjB,+BAA+B,YAAY,CAAC,IAAI,CAC9C,IAAI,CACL,UAAU,MAAM,GAAG,CACrB,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,SAAS,CACjB,6BAA6B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CACpE,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,SAAS,CACjB,+BAA+B,YAAY,CAAC,IAAI,CAC9C,IAAI,CACL,UAAU,MAAM,GAAG,CACrB,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,SAAS,CACjB,+BAA+B,YAAY,CAAC,IAAI,CAC9C,IAAI,CACL,UAAU,UAAU,GAAG,CACzB,CAAC;QACJ,CAAC;QAED,uCAAuC;QACvC,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,SAAS,CACjB,wDAAwD,MAAM,CAAC,UAAU,0CAA0C,CACpH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE;YACnC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO;YACP,MAAM;YACN,IAAI;YACJ,OAAO;YACP,MAAM;YACN,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAC1D,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,QAAQ,MAAM,OAAO,MAAM,CAAC,UAAU,OAAO,OAAO,IAAI,UAAU,MAAM,UAAU,IAAI,SAAS,IAAI,MAAM,EAAE,CAC5G,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACH,cAAc,CAAC,MAA4B;QACzC,+BAA+B;QAC/B,IACE,CAAC,MAAM,CAAC,gBAAgB;YACxB,CAAC,CAAC,MAAM,CAAC,gBAAgB,YAAY,YAAY,CAAC,EAClD,CAAC;YACD,MAAM,IAAI,SAAS,CACjB,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QACzD,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACpD,MAAM,IAAI,UAAU,CAClB,4CAA4C,MAAM,CAAC,gBAAgB,CAAC,MAAM,uCAAuC,YAAY,GAAG,CACjI,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC7C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,kBAAkB,MAAM,CAAC,OAAO,QAAQ,MAAM,CAAC,WAAW,MAAM,CACjE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6EG;IACH,IAAI,CAAC,MAAkB;QACrB,+BAA+B;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;QACtE,CAAC;QAED,iBAAiB;QACjB,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAExD,+BAA+B;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,eAAe,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,IAAI,UAAU,CAClB,0BAA0B,eAAe,4BAA4B,MAAM,CAAC,WAAW,GAAG,CAC3F,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CACjB,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe;YACf,YAAY;YACZ,iBAAiB;SAClB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,QAAQ,MAAM,CAAC,WAAW,QAAQ,eAAe,SAAS,MAAM,GAAG,SAAS,EAAE,CAC/E,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,GAAG,CAAC,QAAqB;QACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACH,MAAM,CAAC,OAAsB;QAC3B,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,iIAAiI,CAClI,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,IACE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;YACpE,CAAC,OAAO,CAAC,UAAU,EACnB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,IAAI,yJAAyJ,CACtL,CAAC;QACJ,CAAC;QAED,8CAA8C;QAC9C,IAAI,cAAqC,CAAC;QAE1C,IAAI,CAAC;YACH,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,KAAK;oBACR,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;oBAC/C,MAAM;gBAER,KAAK,aAAa;oBAChB,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;oBACvD,MAAM;gBAER,KAAK,WAAW;oBACd,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM;gBAER,KAAK,QAAQ;oBACX,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM;gBAER,KAAK,KAAK,CAAC;gBACX;oBACE,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,IAAI,qFAAqF,CAClH,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uDAAuD;YACvD,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,CAAC,IAAI,kBAAkB,OAAO,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI;gBACjF,wGAAwG,CAC3G,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,wCAAwC;QACxC,IAAI,OAAqB,CAAC;QAC1B,IAAI,OAAqB,CAAC;QAE1B,IAAI,CAAC;YACH,IAAI,cAAc,YAAY,SAAS,EAAE,CAAC;gBACxC,2CAA2C;gBAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,eAAe,EAAE,CAAC;gBAChD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC5D,CAAC;gBACD,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;gBACnC,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,cAAc,YAAY,SAAS,EAAE,CAAC;gBAC/C,wCAAwC;gBACxC,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBACpD,MAAM,SAAS,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC;gBACpD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;gBACD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,CAAC;gBACD,OAAO,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;gBACtC,OAAO,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAwC;QAC9D,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GACtE,OAAO,CAAC;QAEV,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,SAAS,CAAC,aAAa,CAAC,OAAc,CAAC,CAAC;YAEjD,KAAK,UAAU;gBACb,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;gBACD,OAAO,SAAS,CAAC,cAAc,CAAC,OAAc,CAAC,CAAC;YAElD,KAAK,UAAU;gBACb,IAAI,CAAC,kBAAkB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAChD,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;gBACJ,CAAC;gBACD,OAAO,SAAS,CAAC,cAAc,CAAC,OAAc,CAAC,CAAC;YAElD,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO;gBACV,IAAI,CAAC,kBAAkB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAChD,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;gBACJ,CAAC;gBACD,OAAO,SAAS,CAAC,cAAc,CAAC,OAAc,CAAC,CAAC;YAElD;gBACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,OAAgD;QAEhD,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GACtE,OAAO,CAAC;QAEV,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,SAAS,CAAC,wBAAwB,CAAC,OAAc,CAAC,CAAC;YAE5D,KAAK,UAAU;gBACb,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;gBACD,OAAO,SAAS,CAAC,yBAAyB,CAAC,OAAc,CAAC,CAAC;YAE7D,KAAK,UAAU;gBACb,IAAI,CAAC,kBAAkB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAChD,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;gBACJ,CAAC;gBACD,OAAO,SAAS,CAAC,yBAAyB,CAAC,OAAc,CAAC,CAAC;YAE7D;gBACE,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB,CAC3B,OAA8C;QAE9C,MAAM,EACJ,IAAI,EACJ,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,GAAG,GAAG,GACb,GAAG,OAAc,CAAC;QAEnB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,SAAS,CAAC,sBAAsB,CAAC;oBACtC,eAAe;oBACf,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;YAEL,KAAK,UAAU;gBACb,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;gBACD,OAAO,SAAS,CAAC,uBAAuB,CAAC;oBACvC,eAAe;oBACf,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;YAEL,KAAK,UAAU;gBACb,IAAI,CAAC,kBAAkB,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAChD,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;gBACJ,CAAC;gBACD,OAAO,SAAS,CAAC,uBAAuB,CAAC;oBACvC,kBAAkB;oBAClB,mBAAmB;oBACnB,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;YAEL;gBACE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,OAA2C;QAE3C,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,OAAc,CAAC;QACtE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAE/B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,SAAS,CAAC,eAAe,CAAC;oBAC/B,eAAe,EAAE,eAAe;oBAChC,UAAU;oBACV,CAAC,EAAE,CAAC;oBACJ,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YAEL,KAAK,UAAU;gBACb,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACnE,CAAC;gBACD,OAAO,SAAS,CAAC,cAAc,CAAC;oBAC9B,eAAe;oBACf,UAAU;oBACV,MAAM,EAAE,IAAI;oBACZ,CAAC,EAAE,CAAC;iBACL,CAAC,CAAC;YAEL,KAAK,WAAW;gBACd,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBACpE,CAAC;gBACD,OAAO,SAAS,CAAC,eAAe,CAAC;oBAC/B,eAAe;oBACf,UAAU;oBACV,MAAM,EAAE,IAAI;oBACZ,CAAC,EAAE,CAAC;iBACL,CAAC,CAAC;YAEL,KAAK,SAAS;gBACZ,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC9C,CAAC;gBACD,iDAAiD;gBACjD,OAAO,SAAS,CAAC,wBAAwB,CAAC;oBACxC,eAAe;oBACf,UAAU;oBACV,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YAEL,KAAK,UAAU;gBACb,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC9C,CAAC;gBACD,kDAAkD;gBAClD,OAAO,SAAS,CAAC,yBAAyB,CAAC;oBACzC,eAAe;oBACf,UAAU;oBACV,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;YAEL,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO;gBACV,MAAM,IAAI,KAAK,CACb,UAAU,IAAI,6EAA6E,CAC5F,CAAC;YAEJ;gBACE,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,SAA4B;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,OAAO,CACX,KAAmB,EACnB,mBAAkD,EAClD,mBAAoC;QAEpC,IAAI,UAAoC,CAAC;QACzC,IAAI,OAAuB,CAAC;QAE5B,mCAAmC;QACnC,IAAI,mBAAmB,YAAY,YAAY,EAAE,CAAC;YAChD,yDAAyD;YACzD,UAAU,GAAG,mBAAmB,CAAC;YACjC,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,mBAAmB,EAAE,CAAC;YAElD,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,sBAAsB,UAAU,CAAC,MAAM,gCAAgC,KAAK,CAAC,MAAM,GAAG,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,mBAAmB,EAAE,CAAC;YAElD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,qEAAqE;gBACrE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,0BAA0B;gBAChE,UAAU,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,qDAAqD;gBACrD,UAAU,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,wCAAwC;QACxC,IAAI,OAAO,CAAC,oBAAoB,IAAI,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACrE,IACE,CAAC,IAAI,CAAC,aAAa;gBACnB,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,KAAK,OAAO,CAAC,UAAU,EACjE,CAAC;gBACD,iEAAiE;gBACjE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;oBACrC,kBAAkB,EAAE,OAAO,CAAC,UAAU;oBACtC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;oBAC5C,eAAe,EAAE,OAAO,CAAC,eAAe;iBACzC,CAAC,CAAC;YACL,CAAC;YACD,qCAAqC;YACrC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,qBAAqB;YACrB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,8BAA8B,EAAE;gBACpD,WAAW,EAAE,KAAK,CAAC,MAAM;gBACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY;aACzD,CAAC,CAAC;YAEH,sCAAsC;YACtC,wEAAwE;YACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC9C,KAAK,EACL,UAAU,EACV,OAAO,CACR,CAAC;YAEF,iDAAiD;YACjD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,KAAK,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACxD,IAAI,CAAC;wBACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;oBAC9B,CAAC;oBAAC,OAAO,QAAQ,EAAE,CAAC;wBAClB,0CAA0C;wBAC1C,OAAO,CAAC,KAAK,CAAC,yBAAyB,SAAS,GAAG,EAAE,QAAQ,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;gBACxD,MAAM,KAAK,GAAgB;oBACzB,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,CAAC;oBACb,KAAK,EAAE,MAAM,CAAC,MAAM;iBACrB,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,8DAA8D;YAC9D,mDAAmD;YACnD,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;gBACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,mCAAmC;YACnC,IAAI,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;gBAC3D,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzD,CAAC;YAED,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,+BAA+B,EAAE;gBACpD,UAAU,EAAE,QAAQ;gBACpB,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B,CAAC,CAAC;YAEH,mCAAmC;YACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAE3B,2BAA2B;YAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;gBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC;gBAC3D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;YAED,qBAAqB;YACrB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,4BAA4B,EAAE;gBAClD,KAAK,EAAE,GAAG,CAAC,OAAO;gBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CAAC;YAEH,2BAA2B;YAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,WAAW,CACf,KAAmB,EACnB,mBAAkD,EAClD,mBAAoC;QAEpC,yCAAyC;QACzC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;QAErC,+DAA+D;QAC/D,IAAI,mBAAmB,YAAY,YAAY,EAAE,CAAC;YAChD,yDAAyD;YACzD,MAAM,cAAc,GAAG,IAAI,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAC7D,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,mBAAoB,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;OAMG;IACH,UAAU;QACR,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC;AAC1C,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AAexB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAM,UAAU,YAAY,CAC1B,eAA6B,EAC7B,WAAmB;IAEnB,IAAI,CAAC,CAAC,eAAe,YAAY,YAAY,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,MAAM,UAAU,kBAAkB,CAChC,eAA6B,EAC7B,WAAmB,EACnB,iBAAyB,IAAI;IAE7B,IAAI,CAAC,CAAC,eAAe,YAAY,YAAY,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,SAAS,CACjB,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,SAAS,CACjB,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,qDAAqD,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,QAAQ,CAAC,kBAAkB,CAChC,eAAe,EACf,WAAW,EACX,cAAc,CACf,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,MAAM,UAAU,YAAY,CAC1B,eAA6B,EAC7B,WAAmB,EACnB,gBAAwB,GAAG,EAC3B,YAAoB,IAAI;IAExB,IAAI,CAAC,CAAC,eAAe,YAAY,YAAY,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,SAAS,CACjB,wDAAwD,CACzD,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,QAAQ,CAAC,YAAY,CAC1B,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,MAAM,UAAU,0BAA0B,CACxC,WAAmB,EACnB,aAA+C,EAC/C,cAAsB,EACtB,iBAAyB,GAAG;IAE5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAClB,sDAAsD,CACvD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,SAAS,CACjB,qFAAqF,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,SAAS,CACjB,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,UAAU,CAClB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,0BAA0B,CACxC,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,CACf,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,UAAwB,EACxB,UAAwB,EACxB,WAAmB,EACnB,UAAmB;IAEnB,IAAI,CAAC,CAAC,UAAU,YAAY,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,SAAS,CACjB,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,YAAY,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,SAAS,CACjB,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,SAAS,CACjB,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,IACE,UAAU,KAAK,SAAS;QACxB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;YAC5B,UAAU,IAAI,CAAC;YACf,UAAU,GAAG,WAAW,CAAC,EAC3B,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC,8BAA8B,CAC5C,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,CACX,CAAC;AACJ,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1094,8 +1094,22 @@ export interface CrossCorrelationOptions {
1094
1094
  * Parameters for FFT processing in pipeline
1095
1095
  */
1096
1096
  export interface fftParams {
1097
+ /**
1098
+ * Processing mode
1099
+ * - 'batch': Stateless FFT (entire input → single FFT output)
1100
+ * - 'moving': Stateful sliding window FFT (overlapping windows, STFT-style)
1101
+ * Default: 'batch'
1102
+ */
1103
+ mode?: "batch" | "moving";
1097
1104
  /** FFT size (must be power of 2 for FFT, any size for DFT) */
1098
1105
  size: number;
1106
+ /**
1107
+ * Hop size (stride) between windows in 'moving' mode
1108
+ * - Must be positive integer <= size
1109
+ * - Default: size/2 (50% overlap)
1110
+ * - Only used in 'moving' mode
1111
+ */
1112
+ hopSize?: number;
1099
1113
  /**
1100
1114
  * Transform type
1101
1115
  * - 'fft': Fast Fourier Transform (O(N log N), requires power of 2)
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/ts/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/ts/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dspx",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "High-performance DSP library with native C++ acceleration and Redis state persistence",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
Binary file
@@ -158,6 +158,9 @@ namespace dsp
158
158
 
159
159
  outputSize = numFrames * outputSizePerFrame * numChannels;
160
160
 
161
+ // OPTIMIZATION: Process all frames and channels with minimal memory operations
162
+ // Use pre-allocated member buffers to avoid repeated allocations
163
+
161
164
  for (size_t frame = 0; frame < numFrames; ++frame)
162
165
  {
163
166
  for (size_t ch = 0; ch < static_cast<size_t>(numChannels); ++ch)
@@ -165,43 +168,134 @@ namespace dsp
165
168
  const float *frameInput = inputBuffer + (frame * inputSizePerFrame * numChannels) + ch;
166
169
  float *frameOutput = outputBuffer + (frame * outputSizePerFrame * numChannels) + ch;
167
170
 
168
- // Load input based on transform direction
171
+ // OPTIMIZATION 1: Minimize conditional branches - process by transform type
172
+ // OPTIMIZATION 2: Use member buffers (already allocated in constructor)
173
+
174
+ // Load input data (OPTIMIZED: Loop unrolling + better ILP)
169
175
  if (isInverseComplex)
170
176
  {
171
- // Input is complex interleaved: [real0, imag0, real1, imag1, ...]
172
- for (size_t i = 0; i < m_fftSize; ++i)
177
+ // Complex input: deinterleave directly into complex buffer
178
+ // OPTIMIZATION: Unroll by 4 for better instruction-level parallelism
179
+ size_t i = 0;
180
+ const size_t stride = numChannels;
181
+ const size_t stride2 = 2 * stride;
182
+
183
+ // Process 4 complex numbers at a time
184
+ for (; i + 3 < m_fftSize; i += 4)
185
+ {
186
+ size_t idx0 = (i * 2) * stride;
187
+ size_t idx1 = ((i + 1) * 2) * stride;
188
+ size_t idx2 = ((i + 2) * 2) * stride;
189
+ size_t idx3 = ((i + 3) * 2) * stride;
190
+
191
+ m_complexBuffer[i] = std::complex<float>(frameInput[idx0], frameInput[idx0 + stride]);
192
+ m_complexBuffer[i + 1] = std::complex<float>(frameInput[idx1], frameInput[idx1 + stride]);
193
+ m_complexBuffer[i + 2] = std::complex<float>(frameInput[idx2], frameInput[idx2 + stride]);
194
+ m_complexBuffer[i + 3] = std::complex<float>(frameInput[idx3], frameInput[idx3 + stride]);
195
+ }
196
+
197
+ // Handle remainder
198
+ for (; i < m_fftSize; ++i)
173
199
  {
174
- m_complexBuffer[i] = std::complex<float>(
175
- frameInput[(i * 2) * numChannels], // real part
176
- frameInput[(i * 2 + 1) * numChannels]); // imag part
200
+ size_t idx = (i * 2) * stride;
201
+ m_complexBuffer[i] = std::complex<float>(frameInput[idx], frameInput[idx + stride]);
177
202
  }
178
203
  }
179
204
  else if (isInverseReal)
180
205
  {
181
- // Input is half-spectrum complex
206
+ // Half-spectrum complex input: deinterleave with loop unrolling
182
207
  size_t halfSize = m_engine->getHalfSize();
183
- for (size_t i = 0; i < halfSize; ++i)
208
+ size_t i = 0;
209
+ const size_t stride = numChannels;
210
+
211
+ // Unroll by 4
212
+ for (; i + 3 < halfSize; i += 4)
184
213
  {
185
- m_complexBuffer[i] = std::complex<float>(
186
- frameInput[(i * 2) * numChannels],
187
- frameInput[(i * 2 + 1) * numChannels]);
214
+ size_t idx0 = (i * 2) * stride;
215
+ size_t idx1 = ((i + 1) * 2) * stride;
216
+ size_t idx2 = ((i + 2) * 2) * stride;
217
+ size_t idx3 = ((i + 3) * 2) * stride;
218
+
219
+ m_complexBuffer[i] = std::complex<float>(frameInput[idx0], frameInput[idx0 + stride]);
220
+ m_complexBuffer[i + 1] = std::complex<float>(frameInput[idx1], frameInput[idx1 + stride]);
221
+ m_complexBuffer[i + 2] = std::complex<float>(frameInput[idx2], frameInput[idx2 + stride]);
222
+ m_complexBuffer[i + 3] = std::complex<float>(frameInput[idx3], frameInput[idx3 + stride]);
223
+ }
224
+
225
+ // Handle remainder
226
+ for (; i < halfSize; ++i)
227
+ {
228
+ size_t idx = (i * 2) * stride;
229
+ m_complexBuffer[i] = std::complex<float>(frameInput[idx], frameInput[idx + stride]);
188
230
  }
189
231
  }
190
232
  else
191
233
  {
192
- // Deinterleave real channel data
193
- for (size_t i = 0; i < m_fftSize; ++i)
234
+ // Real input: deinterleave with loop unrolling
235
+ // OPTIMIZATION: Special case for numChannels == 1 (no deinterleaving needed)
236
+ if (numChannels == 1)
237
+ {
238
+ // Direct memcpy when no deinterleaving needed
239
+ std::memcpy(m_realBuffer.data(), frameInput, m_fftSize * sizeof(float));
240
+ }
241
+ else
194
242
  {
195
- m_realBuffer[i] = frameInput[i * numChannels];
243
+ // Deinterleave with unrolling by 8 for better ILP
244
+ size_t i = 0;
245
+ const size_t stride = numChannels;
246
+
247
+ for (; i + 7 < m_fftSize; i += 8)
248
+ {
249
+ m_realBuffer[i] = frameInput[i * stride];
250
+ m_realBuffer[i + 1] = frameInput[(i + 1) * stride];
251
+ m_realBuffer[i + 2] = frameInput[(i + 2) * stride];
252
+ m_realBuffer[i + 3] = frameInput[(i + 3) * stride];
253
+ m_realBuffer[i + 4] = frameInput[(i + 4) * stride];
254
+ m_realBuffer[i + 5] = frameInput[(i + 5) * stride];
255
+ m_realBuffer[i + 6] = frameInput[(i + 6) * stride];
256
+ m_realBuffer[i + 7] = frameInput[(i + 7) * stride];
257
+ }
258
+
259
+ // Handle remainder
260
+ for (; i < m_fftSize; ++i)
261
+ {
262
+ m_realBuffer[i] = frameInput[i * stride];
263
+ }
196
264
  }
197
265
  }
198
266
 
199
- // Perform transform based on type and direction
200
- switch (m_type)
267
+ // Perform transform (OPTIMIZED: Reduced switch cases, grouped by category)
268
+ if (isInverseComplex)
201
269
  {
202
- case TransformType::FFT:
270
+ // All complex inverse transforms
271
+ if (m_type == TransformType::IFFT || (m_type == TransformType::FFT && !m_forward))
272
+ {
273
+ m_engine->ifft(m_complexBuffer.data(), m_complexBuffer.data());
274
+ }
275
+ else // IDFT or (DFT && !forward)
276
+ {
277
+ m_engine->idft(m_complexBuffer.data(), m_tempComplexBuffer.data());
278
+ // OPTIMIZATION: Use memcpy instead of std::copy for POD types
279
+ std::memcpy(m_complexBuffer.data(), m_tempComplexBuffer.data(),
280
+ m_fftSize * sizeof(std::complex<float>));
281
+ }
282
+ }
283
+ else if (isInverseReal)
284
+ {
285
+ // All real inverse transforms
286
+ if (m_type == TransformType::IRFFT || (m_type == TransformType::RFFT && !m_forward))
287
+ {
288
+ m_engine->irfft(m_complexBuffer.data(), m_realBuffer.data());
289
+ }
290
+ else // IRDFT or (RDFT && !forward)
291
+ {
292
+ m_engine->irdft(m_complexBuffer.data(), m_realBuffer.data());
293
+ }
294
+ }
295
+ else
203
296
  {
204
- if (m_forward)
297
+ // Forward transforms
298
+ if (m_type == TransformType::FFT)
205
299
  {
206
300
  // Forward FFT: real to complex
207
301
  for (size_t i = 0; i < m_fftSize; ++i)
@@ -210,22 +304,7 @@ namespace dsp
210
304
  }
211
305
  m_engine->fft(m_complexBuffer.data(), m_complexBuffer.data());
212
306
  }
213
- else
214
- {
215
- // Inverse FFT: complex input already loaded
216
- m_engine->ifft(m_complexBuffer.data(), m_complexBuffer.data());
217
- }
218
- break;
219
- }
220
- case TransformType::IFFT:
221
- {
222
- // Complex input already loaded into m_complexBuffer
223
- m_engine->ifft(m_complexBuffer.data(), m_complexBuffer.data());
224
- break;
225
- }
226
- case TransformType::DFT:
227
- {
228
- if (m_forward)
307
+ else if (m_type == TransformType::DFT)
229
308
  {
230
309
  // Forward DFT: real to complex
231
310
  for (size_t i = 0; i < m_fftSize; ++i)
@@ -233,138 +312,183 @@ namespace dsp
233
312
  m_complexBuffer[i] = std::complex<float>(m_realBuffer[i], 0.0f);
234
313
  }
235
314
  m_engine->dft(m_complexBuffer.data(), m_tempComplexBuffer.data());
236
- std::copy(m_tempComplexBuffer.begin(), m_tempComplexBuffer.end(), m_complexBuffer.begin());
315
+ // OPTIMIZATION: Use memcpy instead of std::copy
316
+ std::memcpy(m_complexBuffer.data(), m_tempComplexBuffer.data(),
317
+ m_fftSize * sizeof(std::complex<float>));
237
318
  }
238
- else
239
- {
240
- // Inverse DFT: complex input already loaded
241
- m_engine->idft(m_complexBuffer.data(), m_tempComplexBuffer.data());
242
- std::copy(m_tempComplexBuffer.begin(), m_tempComplexBuffer.end(), m_complexBuffer.begin());
243
- }
244
- break;
245
- }
246
- case TransformType::IDFT:
247
- {
248
- // Complex input already loaded into m_complexBuffer
249
- m_engine->idft(m_complexBuffer.data(), m_tempComplexBuffer.data());
250
- std::copy(m_tempComplexBuffer.begin(), m_tempComplexBuffer.end(), m_complexBuffer.begin());
251
- break;
252
- }
253
- case TransformType::RFFT:
254
- {
255
- if (m_forward)
319
+ else if (m_type == TransformType::RFFT)
256
320
  {
257
321
  m_engine->rfft(m_realBuffer.data(), m_complexBuffer.data());
258
322
  }
259
- else
260
- {
261
- // Inverse RFFT: half-spectrum complex input already loaded
262
- m_engine->irfft(m_complexBuffer.data(), m_realBuffer.data());
263
- }
264
- break;
265
- }
266
- case TransformType::IRFFT:
267
- {
268
- // Half-spectrum complex input already loaded into m_complexBuffer
269
- m_engine->irfft(m_complexBuffer.data(), m_realBuffer.data());
270
- break;
271
- }
272
- case TransformType::RDFT:
273
- {
274
- if (m_forward)
323
+ else // RDFT
275
324
  {
276
325
  m_engine->rdft(m_realBuffer.data(), m_complexBuffer.data());
277
326
  }
278
- else
279
- {
280
- // Inverse RDFT: half-spectrum complex input already loaded
281
- m_engine->irdft(m_complexBuffer.data(), m_realBuffer.data());
282
- }
283
- break;
284
- }
285
- case TransformType::IRDFT:
286
- {
287
- // Half-spectrum complex input already loaded into m_complexBuffer
288
- m_engine->irdft(m_complexBuffer.data(), m_realBuffer.data());
289
- break;
290
- }
291
327
  }
292
328
 
293
- // Convert to output format
329
+ // Write output (OPTIMIZED: Loop unrolling for interleaving)
294
330
  if (isInverseReal || isInverseComplex)
295
331
  {
296
332
  // ALL inverse transforms output real time-domain values
297
- if (isInverseReal)
333
+ const float *sourceData = isInverseReal ? m_realBuffer.data() : nullptr;
334
+
335
+ // OPTIMIZATION: Special case for single channel (no interleaving)
336
+ if (numChannels == 1)
298
337
  {
299
- // Real inverse transforms: use m_realBuffer directly
300
- for (size_t i = 0; i < m_fftSize; ++i)
338
+ if (isInverseReal)
301
339
  {
302
- frameOutput[i * numChannels] = m_realBuffer[i];
340
+ std::memcpy(frameOutput, m_realBuffer.data(), m_fftSize * sizeof(float));
341
+ }
342
+ else
343
+ {
344
+ // Extract real parts - unroll by 8
345
+ size_t i = 0;
346
+ for (; i + 7 < m_fftSize; i += 8)
347
+ {
348
+ frameOutput[i] = m_complexBuffer[i].real();
349
+ frameOutput[i + 1] = m_complexBuffer[i + 1].real();
350
+ frameOutput[i + 2] = m_complexBuffer[i + 2].real();
351
+ frameOutput[i + 3] = m_complexBuffer[i + 3].real();
352
+ frameOutput[i + 4] = m_complexBuffer[i + 4].real();
353
+ frameOutput[i + 5] = m_complexBuffer[i + 5].real();
354
+ frameOutput[i + 6] = m_complexBuffer[i + 6].real();
355
+ frameOutput[i + 7] = m_complexBuffer[i + 7].real();
356
+ }
357
+ for (; i < m_fftSize; ++i)
358
+ {
359
+ frameOutput[i] = m_complexBuffer[i].real();
360
+ }
303
361
  }
304
362
  }
305
363
  else
306
364
  {
307
- // IFFT/IDFT: extract real parts from complex result
308
- for (size_t i = 0; i < m_fftSize; ++i)
365
+ // Interleave with loop unrolling by 4
366
+ size_t i = 0;
367
+ const size_t stride = numChannels;
368
+
369
+ for (; i + 3 < m_fftSize; i += 4)
309
370
  {
310
- frameOutput[i * numChannels] = m_complexBuffer[i].real();
371
+ if (isInverseReal)
372
+ {
373
+ frameOutput[i * stride] = m_realBuffer[i];
374
+ frameOutput[(i + 1) * stride] = m_realBuffer[i + 1];
375
+ frameOutput[(i + 2) * stride] = m_realBuffer[i + 2];
376
+ frameOutput[(i + 3) * stride] = m_realBuffer[i + 3];
377
+ }
378
+ else
379
+ {
380
+ frameOutput[i * stride] = m_complexBuffer[i].real();
381
+ frameOutput[(i + 1) * stride] = m_complexBuffer[i + 1].real();
382
+ frameOutput[(i + 2) * stride] = m_complexBuffer[i + 2].real();
383
+ frameOutput[(i + 3) * stride] = m_complexBuffer[i + 3].real();
384
+ }
385
+ }
386
+
387
+ // Handle remainder
388
+ for (; i < m_fftSize; ++i)
389
+ {
390
+ frameOutput[i * stride] = isInverseReal
391
+ ? m_realBuffer[i]
392
+ : m_complexBuffer[i].real();
311
393
  }
312
394
  }
313
395
  }
314
396
  else
315
397
  {
316
- // Forward transforms only
398
+ // Forward transforms - write output based on format
317
399
  switch (m_format)
318
400
  {
319
401
  case OutputFormat::COMPLEX:
320
402
  {
321
- // Interleave real/imag
403
+ // OPTIMIZATION: Calculate numBins once, interleave with loop unrolling
322
404
  size_t numBins = (m_type == TransformType::RFFT || m_type == TransformType::RDFT)
323
405
  ? m_engine->getHalfSize()
324
406
  : m_fftSize;
325
- for (size_t i = 0; i < numBins; ++i)
407
+
408
+ // OPTIMIZATION: Unroll complex interleaving by 4
409
+ size_t i = 0;
410
+ const size_t stride = numChannels;
411
+
412
+ for (; i + 3 < numBins; i += 4)
326
413
  {
327
- frameOutput[(i * 2) * numChannels] = m_complexBuffer[i].real();
328
- frameOutput[(i * 2 + 1) * numChannels] = m_complexBuffer[i].imag();
414
+ size_t outIdx0 = (i * 2) * stride;
415
+ size_t outIdx1 = ((i + 1) * 2) * stride;
416
+ size_t outIdx2 = ((i + 2) * 2) * stride;
417
+ size_t outIdx3 = ((i + 3) * 2) * stride;
418
+
419
+ frameOutput[outIdx0] = m_complexBuffer[i].real();
420
+ frameOutput[outIdx0 + stride] = m_complexBuffer[i].imag();
421
+ frameOutput[outIdx1] = m_complexBuffer[i + 1].real();
422
+ frameOutput[outIdx1 + stride] = m_complexBuffer[i + 1].imag();
423
+ frameOutput[outIdx2] = m_complexBuffer[i + 2].real();
424
+ frameOutput[outIdx2 + stride] = m_complexBuffer[i + 2].imag();
425
+ frameOutput[outIdx3] = m_complexBuffer[i + 3].real();
426
+ frameOutput[outIdx3 + stride] = m_complexBuffer[i + 3].imag();
329
427
  }
330
- break;
331
- }
332
- case OutputFormat::MAGNITUDE:
333
- {
334
- size_t numBins = (m_type == TransformType::RFFT || m_type == TransformType::RDFT)
335
- ? m_engine->getHalfSize()
336
- : m_fftSize;
337
- std::vector<float> magnitudes(numBins);
338
- m_engine->getMagnitude(m_complexBuffer.data(), magnitudes.data(), numBins);
339
- for (size_t i = 0; i < numBins; ++i)
428
+
429
+ // Handle remainder
430
+ for (; i < numBins; ++i)
340
431
  {
341
- frameOutput[i * numChannels] = magnitudes[i];
432
+ size_t outIdx = (i * 2) * stride;
433
+ frameOutput[outIdx] = m_complexBuffer[i].real();
434
+ frameOutput[outIdx + stride] = m_complexBuffer[i].imag();
342
435
  }
343
436
  break;
344
437
  }
438
+ case OutputFormat::MAGNITUDE:
345
439
  case OutputFormat::POWER:
440
+ case OutputFormat::PHASE:
346
441
  {
442
+ // OPTIMIZATION: Use stack buffer for small sizes, avoid heap allocation
347
443
  size_t numBins = (m_type == TransformType::RFFT || m_type == TransformType::RDFT)
348
444
  ? m_engine->getHalfSize()
349
445
  : m_fftSize;
350
- std::vector<float> power(numBins);
351
- m_engine->getPower(m_complexBuffer.data(), power.data(), numBins);
352
- for (size_t i = 0; i < numBins; ++i)
446
+
447
+ // Use member realBuffer for temporary storage (already allocated)
448
+ float *tempOutput = m_realBuffer.data(); // Reuse buffer
449
+
450
+ if (m_format == OutputFormat::MAGNITUDE)
353
451
  {
354
- frameOutput[i * numChannels] = power[i];
452
+ m_engine->getMagnitude(m_complexBuffer.data(), tempOutput, numBins);
355
453
  }
356
- break;
357
- }
358
- case OutputFormat::PHASE:
359
- {
360
- size_t numBins = (m_type == TransformType::RFFT || m_type == TransformType::RDFT)
361
- ? m_engine->getHalfSize()
362
- : m_fftSize;
363
- std::vector<float> phases(numBins);
364
- m_engine->getPhase(m_complexBuffer.data(), phases.data(), numBins);
365
- for (size_t i = 0; i < numBins; ++i)
454
+ else if (m_format == OutputFormat::POWER)
366
455
  {
367
- frameOutput[i * numChannels] = phases[i];
456
+ m_engine->getPower(m_complexBuffer.data(), tempOutput, numBins);
457
+ }
458
+ else // PHASE
459
+ {
460
+ m_engine->getPhase(m_complexBuffer.data(), tempOutput, numBins);
461
+ }
462
+
463
+ // Write to output with stride (OPTIMIZED: Loop unrolling + special case)
464
+ if (numChannels == 1)
465
+ {
466
+ // Direct memcpy for single channel
467
+ std::memcpy(frameOutput, tempOutput, numBins * sizeof(float));
468
+ }
469
+ else
470
+ {
471
+ // Interleave with loop unrolling by 8
472
+ size_t i = 0;
473
+ const size_t stride = numChannels;
474
+
475
+ for (; i + 7 < numBins; i += 8)
476
+ {
477
+ frameOutput[i * stride] = tempOutput[i];
478
+ frameOutput[(i + 1) * stride] = tempOutput[i + 1];
479
+ frameOutput[(i + 2) * stride] = tempOutput[i + 2];
480
+ frameOutput[(i + 3) * stride] = tempOutput[i + 3];
481
+ frameOutput[(i + 4) * stride] = tempOutput[i + 4];
482
+ frameOutput[(i + 5) * stride] = tempOutput[i + 5];
483
+ frameOutput[(i + 6) * stride] = tempOutput[i + 6];
484
+ frameOutput[(i + 7) * stride] = tempOutput[i + 7];
485
+ }
486
+
487
+ // Handle remainder
488
+ for (; i < numBins; ++i)
489
+ {
490
+ frameOutput[i * stride] = tempOutput[i];
491
+ }
368
492
  }
369
493
  break;
370
494
  }
@@ -51,7 +51,7 @@ namespace dsp
51
51
  // ========== Public Transform Methods ==========
52
52
 
53
53
  template <typename T>
54
- void FftpackContext<T>::rfft(const T *input, std::complex<T> *output)
54
+ void FftpackContext<T>::rfft(const T *__restrict input, std::complex<T> *__restrict output)
55
55
  {
56
56
  if (m_n == 1)
57
57
  {
@@ -59,15 +59,15 @@ namespace dsp
59
59
  return;
60
60
  }
61
61
 
62
- // Copy input to work buffer
63
- std::copy(input, input + m_n, m_workBuffer.data());
62
+ // OPTIMIZATION: Use memcpy for bulk copy (faster than std::copy for POD types)
63
+ std::memcpy(m_workBuffer.data(), input, m_n * sizeof(T));
64
64
 
65
65
  // Perform forward real FFT
66
66
  drftf1(m_n, m_workBuffer.data(), m_wsave.data(), m_wsave.data() + m_n, m_ifac.data());
67
67
 
68
+ // OPTIMIZATION: Improved format conversion with better cache locality
68
69
  // Convert FFTPACK halfcomplex format to standard complex format
69
70
  // FFTPACK stores: [DC, re1, re2, ..., reN/2-1, Nyquist, im1, im2, ..., imN/2-1]
70
- // (for even N)
71
71
 
72
72
  size_t halfSize = (m_n / 2) + 1;
73
73
 
@@ -76,17 +76,37 @@ namespace dsp
76
76
 
77
77
  if (m_n % 2 == 0)
78
78
  {
79
- // Even N: Nyquist is at position m_n/2
80
- for (size_t i = 1; i < m_n / 2; ++i)
79
+ // OPTIMIZATION: Even N - process in order for better cache locality
80
+ size_t half = m_n / 2;
81
+
82
+ // Process middle frequencies (unrolled by 2 for better ILP)
83
+ size_t i = 1;
84
+ for (; i + 1 < half; i += 2)
85
+ {
86
+ // First pair
87
+ output[i] = std::complex<T>(m_workBuffer[2 * i - 1], m_workBuffer[2 * i]);
88
+ // Second pair
89
+ output[i + 1] = std::complex<T>(m_workBuffer[2 * (i + 1) - 1], m_workBuffer[2 * (i + 1)]);
90
+ }
91
+ // Handle remainder
92
+ for (; i < half; ++i)
81
93
  {
82
94
  output[i] = std::complex<T>(m_workBuffer[2 * i - 1], m_workBuffer[2 * i]);
83
95
  }
84
- output[m_n / 2] = std::complex<T>(m_workBuffer[m_n - 1], 0);
96
+
97
+ // Nyquist component (real)
98
+ output[half] = std::complex<T>(m_workBuffer[m_n - 1], 0);
85
99
  }
86
100
  else
87
101
  {
88
- // Odd N: no separate Nyquist
89
- for (size_t i = 1; i < halfSize; ++i)
102
+ // OPTIMIZATION: Odd N - unrolled loop
103
+ size_t i = 1;
104
+ for (; i + 1 < halfSize; i += 2)
105
+ {
106
+ output[i] = std::complex<T>(m_workBuffer[2 * i - 1], m_workBuffer[2 * i]);
107
+ output[i + 1] = std::complex<T>(m_workBuffer[2 * (i + 1) - 1], m_workBuffer[2 * (i + 1)]);
108
+ }
109
+ for (; i < halfSize; ++i)
90
110
  {
91
111
  output[i] = std::complex<T>(m_workBuffer[2 * i - 1], m_workBuffer[2 * i]);
92
112
  }
@@ -94,7 +114,7 @@ namespace dsp
94
114
  }
95
115
 
96
116
  template <typename T>
97
- void FftpackContext<T>::irfft(const std::complex<T> *input, T *output)
117
+ void FftpackContext<T>::irfft(const std::complex<T> *__restrict input, T *__restrict output)
98
118
  {
99
119
  if (m_n == 1)
100
120
  {
@@ -102,24 +122,46 @@ namespace dsp
102
122
  return;
103
123
  }
104
124
 
125
+ // OPTIMIZATION: Improved format conversion with loop unrolling
105
126
  // Convert standard complex format to FFTPACK halfcomplex format
106
127
  m_workBuffer[0] = input[0].real(); // DC
107
128
 
108
129
  if (m_n % 2 == 0)
109
130
  {
110
- // Even N
111
- for (size_t i = 1; i < m_n / 2; ++i)
131
+ // OPTIMIZATION: Even N - unrolled conversion
132
+ size_t half = m_n / 2;
133
+ size_t i = 1;
134
+
135
+ // Unroll by 2
136
+ for (; i + 1 < half; i += 2)
112
137
  {
113
138
  m_workBuffer[2 * i - 1] = input[i].real();
114
139
  m_workBuffer[2 * i] = input[i].imag();
140
+ m_workBuffer[2 * (i + 1) - 1] = input[i + 1].real();
141
+ m_workBuffer[2 * (i + 1)] = input[i + 1].imag();
115
142
  }
116
- m_workBuffer[m_n - 1] = input[m_n / 2].real(); // Nyquist
143
+ for (; i < half; ++i)
144
+ {
145
+ m_workBuffer[2 * i - 1] = input[i].real();
146
+ m_workBuffer[2 * i] = input[i].imag();
147
+ }
148
+ m_workBuffer[m_n - 1] = input[half].real(); // Nyquist
117
149
  }
118
150
  else
119
151
  {
120
- // Odd N
152
+ // OPTIMIZATION: Odd N - unrolled conversion
121
153
  size_t halfSize = (m_n / 2) + 1;
122
- for (size_t i = 1; i < halfSize; ++i)
154
+ size_t i = 1;
155
+
156
+ // Unroll by 2
157
+ for (; i + 1 < halfSize; i += 2)
158
+ {
159
+ m_workBuffer[2 * i - 1] = input[i].real();
160
+ m_workBuffer[2 * i] = input[i].imag();
161
+ m_workBuffer[2 * (i + 1) - 1] = input[i + 1].real();
162
+ m_workBuffer[2 * (i + 1)] = input[i + 1].imag();
163
+ }
164
+ for (; i < halfSize; ++i)
123
165
  {
124
166
  m_workBuffer[2 * i - 1] = input[i].real();
125
167
  m_workBuffer[2 * i] = input[i].imag();
@@ -129,8 +171,8 @@ namespace dsp
129
171
  // Perform inverse real FFT
130
172
  drftb1(m_n, m_workBuffer.data(), m_wsave.data(), m_wsave.data() + m_n, m_ifac.data());
131
173
 
132
- // Copy result (FFTPACK doesn't normalize)
133
- std::copy(m_workBuffer.begin(), m_workBuffer.end(), output);
174
+ // OPTIMIZATION: Use memcpy for bulk copy
175
+ std::memcpy(output, m_workBuffer.data(), m_n * sizeof(T));
134
176
  }
135
177
 
136
178
  // ========== FFTPACK Initialization ==========
@@ -40,8 +40,9 @@ namespace dsp
40
40
  explicit FftpackContext(size_t n);
41
41
 
42
42
  // Forward/inverse real FFT
43
- void rfft(const T *input, std::complex<T> *output);
44
- void irfft(const std::complex<T> *input, T *output);
43
+ // Note: input/output buffers must not overlap (restrict semantics)
44
+ void rfft(const T *__restrict input, std::complex<T> *__restrict output);
45
+ void irfft(const std::complex<T> *__restrict input, T *__restrict output);
45
46
 
46
47
  size_t size() const { return m_n; }
47
48
  size_t halfSize() const { return (m_n / 2) + 1; }